private void addConfigurations()

in src/main/java/org/apache/sling/feature/io/json/FeatureJSONReader.java [225:272]


    private void addConfigurations(final JsonObject json,
            final Artifact artifact,
            final Configurations container) throws IOException {
        final ConfigurationReader reader = org.apache.felix.cm.json.io.Configurations.buildReader()
                .verifyAsBundleResource(true)
                .withIdentifier(this.location)
                .withConfiguratorPropertyHandler(new ConfiguratorPropertyHandler(){

					@Override
					public void handleConfiguratorProperty(final String pid, final String property, final Object value) {
                        Configuration cfg = container.getConfiguration(pid);
                        if ( cfg == null ) {
                            cfg = new Configuration(pid);
                            container.add(cfg);
                        }                      
                        cfg.getProperties().put(Configuration.CONFIGURATOR_PREFIX.concat(property), value);						
					}                                    
                })
                .build(json);
        final ConfigurationResource rsrc = reader.readConfigurationResource();
        if ( !reader.getIgnoredErrors().isEmpty() ) {
            final StringBuilder builder = new StringBuilder(exceptionPrefix);
            builder.append("Errors in configurations:");
            for(final String w : reader.getIgnoredErrors()) {
                builder.append("\n");
                builder.append(w);
            }
            throw new IOException(builder.toString());
        }

        for(final Map.Entry<String, Hashtable<String, Object>> c : rsrc.getConfigurations().entrySet()) {
            Configuration config = container.getConfiguration(c.getKey());
            if ( config == null ) {
                config = new Configuration(c.getKey());
                container.add(config);
            }                      

            for(final Map.Entry<String, Object> prop : c.getValue().entrySet()) {
                config.getProperties().put(prop.getKey(), prop.getValue());
            }
            if ( config.getProperties().get(Configuration.PROP_ARTIFACT_ID) != null ) {
                throw new IOException(exceptionPrefix.concat("Configuration must not define property ").concat(Configuration.PROP_ARTIFACT_ID));
            }
            if ( artifact != null ) {
                config.getProperties().put(Configuration.PROP_ARTIFACT_ID, artifact.getId().toMvnId());
            }
        }
    }