Source:
public final DataCleanerConfiguration getDataCleanerConfiguration(@Undecorated DataCleanerConfiguration c, UserPreferences userPreferences, InjectionManagerFactory injectionManagerFactory) { if (_configuration == null) { synchronized (DCModuleImpl.class) { if (_configuration == null) { final DomConfigurationWriter configurationWriter = createConfigurationWriter(); final MutableDatastoreCatalog datastoreCatalog = new MutableDatastoreCatalog( c.getDatastoreCatalog(), configurationWriter, userPreferences); final MutableReferenceDataCatalog referenceDataCatalog = new MutableReferenceDataCatalog( c.getReferenceDataCatalog(), configurationWriter, userPreferences, new LifeCycleHelper( injectionManagerFactory.getInjectionManager(c, null), true)); final MutableServerInformationCatalog serverInformationCatalog = new MutableServerInformationCatalog(c.getServerInformationCatalog(), configurationWriter); final DescriptorProvider descriptorProvider = c.getEnvironment().getDescriptorProvider(); final ExtensionReader extensionReader = new ExtensionReader(); final List<ExtensionPackage> internalExtensions = extensionReader.getInternalExtensions(); for (ExtensionPackage extensionPackage : internalExtensions) { extensionPackage.loadDescriptors(descriptorProvider); } final List<ExtensionPackage> extensionPackages = userPreferences.getExtensionPackages(); for (ExtensionPackage extensionPackage : extensionPackages) { extensionPackage.loadDescriptors(descriptorProvider); } final StorageProvider storageProvider = c.getEnvironment().getStorageProvider(); final TaskRunner taskRunner = c.getEnvironment().getTaskRunner(); final RemoteServerConfiguration remoteServerConfiguration = new MutableRemoteServerConfigurationImpl( c.getEnvironment().getRemoteServerConfiguration().getServerList(), c.getEnvironment().getTaskRunner(), configurationWriter); final DataCleanerEnvironment environment = new DataCleanerEnvironmentImpl(taskRunner, descriptorProvider, storageProvider, injectionManagerFactory, remoteServerConfiguration); _configuration = new DataCleanerConfigurationImpl(environment, DataCleanerHome.getAsDataCleanerHomeFolder(), datastoreCatalog, referenceDataCatalog, serverInformationCatalog); } } } if (_configuration instanceof DataCleanerConfigurationImpl) { final DataCleanerEnvironment environment = _configuration.getEnvironment(); if (environment.getInjectionManagerFactory() != injectionManagerFactory) { final DataCleanerEnvironment replacementEnvironment = new DataCleanerEnvironmentImpl(environment) .withInjectionManagerFactory(injectionManagerFactory); return ((DataCleanerConfigurationImpl) _configuration).withEnvironment(replacementEnvironment); } } return _configuration; }

Target:
public final DataCleanerConfiguration getDataCleanerConfiguration(@Undecorated DataCleanerConfiguration c, UserPreferences userPreferences, InjectionManagerFactory injectionManagerFactory) { if (_configuration == null) { synchronized (DCModuleImpl.class) { if (_configuration == null) { final DomConfigurationWriter configurationWriter = createConfigurationWriter(); final MutableDatastoreCatalog datastoreCatalog = new MutableDatastoreCatalog( c.getDatastoreCatalog(), configurationWriter, userPreferences); final MutableReferenceDataCatalog referenceDataCatalog = new MutableReferenceDataCatalog( c.getReferenceDataCatalog(), configurationWriter, userPreferences, new LifeCycleHelper( injectionManagerFactory.getInjectionManager(c, null), true)); final MutableServerInformationCatalog serverInformationCatalog = new MutableServerInformationCatalog(c.getServerInformationCatalog(), configurationWriter); final DescriptorProvider descriptorProvider = c.getEnvironment().getDescriptorProvider(); final ExtensionReader extensionReader = new ExtensionReader(); final List<ExtensionPackage> internalExtensions = extensionReader.getInternalExtensions(); for (ExtensionPackage extensionPackage : internalExtensions) { extensionPackage.loadDescriptors(descriptorProvider); } final List<ExtensionPackage> extensionPackages = userPreferences.getExtensionPackages(); for (ExtensionPackage extensionPackage : extensionPackages) { extensionPackage.loadDescriptors(descriptorProvider); } final StorageProvider storageProvider = c.getEnvironment().getStorageProvider(); final TaskRunner taskRunner = c.getEnvironment().getTaskRunner(); final RemoteServerConfiguration remoteServerConfiguration = new MutableRemoteServerConfigurationImpl( c.getEnvironment().getRemoteServerConfiguration().getServerList(), taskRunner, configurationWriter); final DataCleanerEnvironment environment = new DataCleanerEnvironmentImpl(taskRunner, descriptorProvider, storageProvider, injectionManagerFactory, remoteServerConfiguration); _configuration = new DataCleanerConfigurationImpl(environment, DataCleanerHome.getAsDataCleanerHomeFolder(), datastoreCatalog, referenceDataCatalog, serverInformationCatalog); } } } if (_configuration instanceof DataCleanerConfigurationImpl) { final DataCleanerEnvironment environment = _configuration.getEnvironment(); if (environment.getInjectionManagerFactory() != injectionManagerFactory) { final DataCleanerEnvironment replacementEnvironment = new DataCleanerEnvironmentImpl(environment) .withInjectionManagerFactory(injectionManagerFactory); return ((DataCleanerConfigurationImpl) _configuration).withEnvironment(replacementEnvironment); } } return _configuration; }