package com.constellio.app.services.factories; import com.constellio.data.utils.Factory; public class SingletonConstellioFactoriesInstanceProvider implements ConstellioFactoriesInstanceProvider { ConstellioFactories instance; @Override public ConstellioFactories getInstance(Factory<ConstellioFactories> constellioFactoriesFactory) { if (instance == null) { boolean createdByThisThread = false; synchronized (SingletonConstellioFactoriesInstanceProvider.class) { if (instance == null) { ConstellioFactories instanceBeingInitialized = constellioFactoriesFactory.get(); instanceBeingInitialized.getAppLayerFactory().initialize(); instance = instanceBeingInitialized; createdByThisThread = true; } } if (createdByThisThread) { instance.getAppLayerFactory().postInitialization(); } //instance.getAppLayerFactory().initialize(); // ((PluginManagerImpl) instance.getAppLayerFactory().getPluginManager()).getPluginConfiguration() // .setConfiguration(ConstellioPlugin.class, "singletonInitializeMode", "true"); } return instance; } @Override public synchronized boolean isInitialized() { return instance != null; } @Override public void clear() { instance.getAppLayerFactory().close(); instance = null; } }