Merge branch 'release/5.0.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.cdmlib / src / main / java / eu / etaxonomy / cdm / api / application / CdmApplicationRemoteController.java
index d0681e20c296d8da69e6f39a9c0cf49d45aa15d8..56aa1d483460a2c055050e8f8c7998b965033ada 100644 (file)
 package eu.etaxonomy.cdm.api.application;
 
 import java.util.List;
-import java.util.Properties;
 
 import org.apache.log4j.Logger;
 import org.hibernate.collection.internal.AbstractPersistentCollection;
 import org.hibernate.proxy.AbstractLazyInitializer;
-import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
 import org.springframework.context.ApplicationListener;
-import org.springframework.context.support.GenericApplicationContext;
-import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
 
+import eu.etaxonomy.cdm.api.longrunningService.ILongRunningTasksService;
+import eu.etaxonomy.cdm.api.service.ITestService;
+import eu.etaxonomy.cdm.cache.CdmRemoteCacheManager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.common.monitor.NullProgressMonitor;
-import eu.etaxonomy.taxeditor.remoting.cache.CdmModelCacher;
+import eu.etaxonomy.cdm.ext.geo.IEditGeoService;
+import eu.etaxonomy.cdm.io.service.IIOService;
 import eu.etaxonomy.taxeditor.remoting.source.ICdmRemoteSource;
+import eu.etaxonomy.taxeditor.service.ICachedCommonService;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager;
 
 /**
@@ -46,6 +47,7 @@ public class CdmApplicationRemoteController  extends CdmApplicationController {
             new ClassPathResource("/eu/etaxonomy/cdm/remotingApplicationContext.xml");
     private final Resource applicationContextResource;
     private final IProgressMonitor progressMonitor;
+    private final ICdmRemoteSource remoteSource;
 
 
     /**
@@ -122,6 +124,7 @@ public class CdmApplicationRemoteController  extends CdmApplicationController {
         this.applicationContextResource =
                 applicationContextResource != null ? applicationContextResource : DEFAULT_REMOTE_APPLICATION_CONTEXT_RESOURCE;
         this.progressMonitor = progressMonitor != null ? progressMonitor : new NullProgressMonitor();
+        this.remoteSource = remoteSource;
         setNewRemoteSource(remoteSource, validateXml, listeners);
 
     }
@@ -143,42 +146,18 @@ public class CdmApplicationRemoteController  extends CdmApplicationController {
 
         logger.info("Connecting to '" + remoteSource.getName() + "'");
 
-        GenericApplicationContext applicationContext =  new GenericApplicationContext();
-
-        int nTasks = 5;
+        int nTasks = 2;
 
         progressMonitor.beginTask("Connecting to '" + remoteSource.getName() + "'", nTasks);
 
-        progressMonitor.subTask("Loading context beans ...");
-        PropertySourcesPlaceholderConfigurer pspc = new PropertySourcesPlaceholderConfigurer();
-        Properties properties = new Properties();
-        properties.setProperty("remoteServer", remoteSource.getServer());
-        properties.setProperty("remotePort", String.valueOf(remoteSource.getPort()));
-        properties.setProperty("remoteContext", remoteSource.getContextPath());
-        pspc.setProperties(properties);
-        applicationContext.addBeanFactoryPostProcessor(pspc);
-        applicationContext.getEnvironment().setActiveProfiles("remoting");
-        XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(applicationContext);
-        if(!validateXml) {
-            xmlReader.setValidating(false);
-        }
-        xmlReader.loadBeanDefinitions(applicationContextResource);
-        if (listeners != null){
-            for(ApplicationListener listener : listeners){
-                applicationContext.addApplicationListener(listener);
-            }
-        }
-        progressMonitor.worked(1);
-
-        progressMonitor.subTask("Refreshing / Starting context ...");
-        applicationContext.refresh();
-        applicationContext.start();
+        progressMonitor.subTask("Initialising CDM Model Cache ...");
+        CdmRemoteCacheManager.getInstance();
+        CdmRemoteCacheManager.removeEntityCaches();
         progressMonitor.worked(1);
-
-        progressMonitor.subTask("Cleaning up ...");
-        setApplicationContext(applicationContext);
+        progressMonitor.subTask("Starting application context ...");
+        init();
         progressMonitor.worked(1);
-
+        progressMonitor.done();
         return true;
     }
 
@@ -189,21 +168,33 @@ public class CdmApplicationRemoteController  extends CdmApplicationController {
      */
     @Override
     protected void init(){
-        progressMonitor.subTask("Loading configuration ...");
-        configuration = (ICdmApplicationConfiguration)applicationContext.getBean("cdmApplicationRemoteConfiguration");
+        configuration = new CdmApplicationRemoteConfiguration(remoteSource);
+        ((CdmApplicationRemoteConfiguration)configuration).setApplicationContext(applicationContext);
         AbstractLazyInitializer.setConfiguration((CdmApplicationRemoteConfiguration)configuration);
         AbstractPersistentCollection.setConfiguration((CdmApplicationRemoteConfiguration)configuration);
-        progressMonitor.worked(1);
-
-        progressMonitor.subTask("Loading CDM config cache ...");
-        CdmModelCacher cmdmc = new CdmModelCacher();
-        cmdmc.cacheGetterFields();
-        progressMonitor.worked(1);
-
-        progressMonitor.done();
     }
 
     public ICdmEntitySessionManager getCdmEntitySessionManager() {
         return ((CdmApplicationRemoteConfiguration)configuration).getCdmEntitySessionManager();
     }
+
+    public IIOService getIOService(){
+        return ((CdmApplicationRemoteConfiguration)configuration).getIOService();
+    }
+
+    public ILongRunningTasksService getLongRunningTasksService(){
+        return ((CdmApplicationRemoteConfiguration)configuration).getLongRunningTasksService();
+    }
+
+    public ITestService getTestService(){
+        return ((CdmApplicationRemoteConfiguration)configuration).getTestService();
+    }
+
+    public ICachedCommonService getCachedCommonService(){
+        return ((CdmApplicationRemoteConfiguration)configuration).getCachedCommonService();
+    }
+
+    public IEditGeoService getEditGeoService() {
+        return ((CdmApplicationRemoteConfiguration)configuration).getEditGeoService();
+    }
 }