Configurations readConfigurations()

in src/main/java/org/apache/sling/feature/io/json/ConfigurationJSONReader.java [54:87]


    Configurations readConfigurations(final String location, final Reader reader) throws IOException {
        final Configurations result = new Configurations();

        final ConfigurationReader cfgReader = org.apache.felix.cm.json.io.Configurations
            .buildReader()
            .withIdentifier(location)
            .verifyAsBundleResource(true)
            .withConfiguratorPropertyHandler(new ConfiguratorPropertyHandler() {

                @Override
                public void handleConfiguratorProperty(final String pid, final String property, final Object value) {
                    Configuration cfg = result.getConfiguration(pid);
                    if ( cfg == null ) {
                        cfg = new Configuration(pid);
                        result.add(cfg);
                    }                      
                    cfg.getProperties().put(Configuration.CONFIGURATOR_PREFIX.concat(property), value);						
                }                                    
            })
          .build(reader);
        final ConfigurationResource rsrc = cfgReader.readConfigurationResource();
        for(Map.Entry<String, Hashtable<String, Object>> entry : rsrc.getConfigurations().entrySet() ) {
            Configuration cf = result.getConfiguration(entry.getKey());
            if ( cf == null ) {
                cf = new Configuration(entry.getKey());
                result.add(cf);
            }                      
            for(final Map.Entry<String, Object> prop : entry.getValue().entrySet()) {
                cf.getProperties().put(prop.getKey(), prop.getValue());
            }
        }

        return result;
    }