CdmApplicationRemoteController : directly loads CdmApplicationRemoteConfiguration...
[taxeditor.git] / eu.etaxonomy.taxeditor.cdmlib / src / main / java / eu / etaxonomy / cdm / api / application / CdmApplicationRemoteController.java
index 2afb681918a286ced8b1350fe6157864674024c9..c25b01ca6f5430a264b69a4eed2887f90fdb43e4 100644 (file)
@@ -14,6 +14,8 @@ 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.MutablePropertyValues;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
@@ -29,6 +31,7 @@ import eu.etaxonomy.cdm.remote.ICdmRemoteSource;
 
 /**
  * CDM Application Controller class for remoting clients
+ * 
  * FIXME:Remoting extending {@link CdmApplicationController} is a temporary workaround.
  * The {@link CdmApplicationController} should be split into a CdmApplicationControllerBase
  * class with {@link CdmApplicationController} and this class as subclasses
@@ -38,7 +41,8 @@ public class CdmApplicationRemoteController  extends CdmApplicationController {
        
     private static final Logger logger = Logger.getLogger(CdmApplicationRemoteController.class);
 
-    public static final String DEFAULT_APPLICATION_CONTEXT_RESOURCE = "/eu/etaxonomy/cdm/remoteApplicationContext.xml";
+    public static final Resource DEFAULT_REMOTE_APPLICATION_CONTEXT_RESOURCE = 
+               new ClassPathResource("/eu/etaxonomy/cdm/remotingApplicationContext.xml");
     private final Resource applicationContextResource;
     private final IProgressMonitor progressMonitor;
     
@@ -63,6 +67,28 @@ public class CdmApplicationRemoteController  extends CdmApplicationController {
                        progressMonitor, 
                                listeners);
        
+    }
+    /**
+     * Creates new instance of CdmApplicationRemoteController
+     * 
+     * @param applicationContextResource
+     * @param remoteSource
+     * @param omitTermLoading
+     * @param progressMonitor
+     * @param listeners
+     * @return
+     */
+    public static CdmApplicationRemoteController NewInstance(ICdmRemoteSource remoteSource,                            
+                       boolean omitTermLoading, 
+                       IProgressMonitor progressMonitor, 
+                       List<ApplicationListener> listeners) {
+       
+       return new CdmApplicationRemoteController(DEFAULT_REMOTE_APPLICATION_CONTEXT_RESOURCE, 
+                       remoteSource, 
+                       omitTermLoading, 
+                       progressMonitor, 
+                               listeners);
+       
     }
     
        /**
@@ -80,21 +106,15 @@ public class CdmApplicationRemoteController  extends CdmApplicationController {
                                IProgressMonitor progressMonitor, 
                                List<ApplicationListener> listeners){
                logger.info("Start CdmApplicationRemoteController with remote source: " + remoteSource.getName());
-        this.applicationContextResource = applicationContextResource != null ? applicationContextResource : getClasspathResource();
+        this.applicationContextResource = 
+                       applicationContextResource != null ? applicationContextResource : DEFAULT_REMOTE_APPLICATION_CONTEXT_RESOURCE;
         this.progressMonitor = progressMonitor != null ? progressMonitor : new NullProgressMonitor();
 
         setNewRemoteSource(remoteSource, omitTermLoading, listeners);
                
        }
        
-    /**
-     * Returns classpath resource for application context config file
-     * 
-     * @return
-     */
-    protected static ClassPathResource getClasspathResource() {
-        return new ClassPathResource(DEFAULT_APPLICATION_CONTEXT_RESOURCE);
-    }
+
     
     
     /**
@@ -164,6 +184,8 @@ public class CdmApplicationRemoteController  extends CdmApplicationController {
     @Override
     protected void init(){    
         configuration = (ICdmApplicationConfiguration)applicationContext.getBean("cdmApplicationRemoteConfiguration");
+               AbstractLazyInitializer.setConfiguration(this);
+               AbstractPersistentCollection.setConfiguration(this);
 
     }