Merge branch 'release/5.0.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.cdmlib / src / main / java / eu / etaxonomy / cdm / api / application / CdmApplicationRemoteController.java
index a0fa11a365a6e7ff7e9a79f86b7ee802c63aa88f..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.cdm.ext.geo.IEditGeoService;
 import eu.etaxonomy.cdm.io.service.IIOService;
-import eu.etaxonomy.taxeditor.remoting.cache.CdmRemoteCacheManager;
 import eu.etaxonomy.taxeditor.remoting.source.ICdmRemoteSource;
 import eu.etaxonomy.taxeditor.service.ICachedCommonService;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager;
@@ -49,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;
 
 
     /**
@@ -125,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);
 
     }
@@ -146,40 +146,16 @@ public class CdmApplicationRemoteController  extends CdmApplicationController {
 
         logger.info("Connecting to '" + remoteSource.getName() + "'");
 
-        GenericApplicationContext applicationContext =  new GenericApplicationContext();
-
-        int nTasks = 3;
+        int nTasks = 2;
 
         progressMonitor.beginTask("Connecting to '" + remoteSource.getName() + "'", nTasks);
 
         progressMonitor.subTask("Initialising CDM Model Cache ...");
         CdmRemoteCacheManager.getInstance();
-
-        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);
-            }
-        }
+        CdmRemoteCacheManager.removeEntityCaches();
         progressMonitor.worked(1);
-
         progressMonitor.subTask("Starting application context ...");
-        applicationContext.refresh();
-        applicationContext.start();
-        setApplicationContext(applicationContext);
+        init();
         progressMonitor.worked(1);
         progressMonitor.done();
         return true;
@@ -192,14 +168,10 @@ public class CdmApplicationRemoteController  extends CdmApplicationController {
      */
     @Override
     protected void init(){
-
-        // retrieving the application configuration
-        configuration = (ICdmApplicationConfiguration)applicationContext.getBean("cdmApplicationRemoteConfiguration");
+        configuration = new CdmApplicationRemoteConfiguration(remoteSource);
+        ((CdmApplicationRemoteConfiguration)configuration).setApplicationContext(applicationContext);
         AbstractLazyInitializer.setConfiguration((CdmApplicationRemoteConfiguration)configuration);
         AbstractPersistentCollection.setConfiguration((CdmApplicationRemoteConfiguration)configuration);
-
-
-
     }
 
     public ICdmEntitySessionManager getCdmEntitySessionManager() {
@@ -207,14 +179,22 @@ public class CdmApplicationRemoteController  extends CdmApplicationController {
     }
 
     public IIOService getIOService(){
-        return (IIOService) getBean("ioService");
+        return ((CdmApplicationRemoteConfiguration)configuration).getIOService();
+    }
+
+    public ILongRunningTasksService getLongRunningTasksService(){
+        return ((CdmApplicationRemoteConfiguration)configuration).getLongRunningTasksService();
     }
 
     public ITestService getTestService(){
-        return (ITestService) getBean("testService");
+        return ((CdmApplicationRemoteConfiguration)configuration).getTestService();
     }
 
     public ICachedCommonService getCachedCommonService(){
-        return (ICachedCommonService) getBean("cachedCommonService");
+        return ((CdmApplicationRemoteConfiguration)configuration).getCachedCommonService();
+    }
+
+    public IEditGeoService getEditGeoService() {
+        return ((CdmApplicationRemoteConfiguration)configuration).getEditGeoService();
     }
 }