public static Map sanitize()

in src/main/java/org/apache/sling/distribution/resources/impl/OsgiUtils.java [127:166]


    public static Map<String, Object> sanitize(Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        if (map == null) {
            return result;
        }

        for (Map.Entry<String, Object> entry : map.entrySet()) {
            if (entry.getValue() == null) {
                continue;
            }

            // skip jcr: stuff
            if (entry.getKey().contains(":")) {
                continue;
            }

            Class<?> valueClass = entry.getValue().getClass();
            Object value = entry.getValue();
            if (valueClass.isArray()) {
                valueClass = valueClass.getComponentType();

                // fix string arrays that come as Object[]
                if (valueClass.equals(Object.class)) {
                    Object[] array = (Object[]) value;
                    value = Arrays.asList(array).toArray(new String[array.length]);
                    valueClass = String.class;
                }
            }

            if (valueClass.isPrimitive()
                    || valueClass.equals(String.class)
                    || valueClass.equals(Boolean.class)
                    || valueClass.equals(Integer.class)) {
                result.put(entry.getKey(), value);
            }
        }

        return result;

    }