private void configure()

in src/main/java/org/apache/sling/feature/launcher/impl/launchers/AbstractRunner.java [273:299]


    private void configure(final Object configAdmin) {
        try {
            final Method createConfig = configAdmin.getClass().getDeclaredMethod("getConfiguration", String.class, String.class);
            final Method createFactoryConfig = configAdmin.getClass().getDeclaredMethod("getFactoryConfiguration", String.class, String.class, String.class);

            Method updateMethod = null;
            for(final Object[] obj : this.configurations) {
                final Object cfg;
                if ( obj[1] != null ) {
                    cfg = createFactoryConfig.invoke(configAdmin, obj[1], obj[0], null);
                } else {
                    cfg = createConfig.invoke(configAdmin, obj[0], null);
                }
                if ( updateMethod == null ) {
                    updateMethod = cfg.getClass().getDeclaredMethod("update", Dictionary.class);
                }
                updateMethod.invoke(cfg, obj[2]);
            }
        } catch ( final Exception e) {
            logger.error("Unable to create configurations", e);
            throw new RuntimeException(e);
        }
        final Thread t = new Thread(() -> { configAdminTracker.close(); configAdminTracker = null; });
        t.setDaemon(false);
        t.start();
        this.configurations.clear();
    }