updated CDMServer and corresponding test files to use dbunit datasets with the possib...
[taxeditor.git] / eu.etaxonomy.taxeditor.remoting / src / test / java / eu / etaxonomy / taxeditor / httpinvoker / BaseRemotingTest.java
index 4700471afa8b85a7e38c6ced216938d4817ccd25..858a1800cd62a7e5fdc82e4e9bcb2ea1c3db37b0 100644 (file)
@@ -8,6 +8,8 @@
  */
 package eu.etaxonomy.taxeditor.httpinvoker;
 
+import java.lang.reflect.Field;
+
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.junit.AfterClass;
@@ -15,10 +17,13 @@ import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Ignore;
 import org.junit.Test;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
 import org.unitils.UnitilsJUnit4;
 import org.unitils.database.DatabaseUnitils;
 import org.unitils.database.annotations.Transactional;
 import org.unitils.database.util.TransactionMode;
+import org.unitils.spring.annotation.SpringApplicationContext;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationRemoteController;
 import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
@@ -37,31 +42,43 @@ import eu.etaxonomy.cdm.remote.ICdmRemoteSource;
  *
  */
 @Transactional(TransactionMode.DISABLED)
+@SpringApplicationContext("file:./target/test-classes/eu/etaxonomy/cdm/testRemotingApplicationContext.xml")
 public class BaseRemotingTest extends UnitilsJUnit4 {
-    private static final Logger logger = Logger.getLogger(BaseRemotingTest.class);
+    //private static final Logger logger = Logger.getLogger(BaseRemotingTest.class);
+
+    private static final Resource TEST_REMOTE_APPLICATION_CONTEXT_RESOURCE =
+            new ClassPathResource("/eu/etaxonomy/cdm/testRemotingApplicationContext.xml");
 
     private static ICdmApplicationConfiguration remoteApplicationController;
     private static ICdmRemoteSource cdmRemoteSource;
     private static CdmPersistentRemoteSource remotePersistentSource;
 
-    private static boolean stoppingServer = false;
+    public static boolean useManagedServer = false;
 
     @BeforeClass
-    public static void  initializeBaseRemotingTest() {
-        Logger.getRootLogger().setLevel(Level.INFO);
-
-        //DatabaseUnitils.disableConstraints();
-        try {
-            CDMServer.getInstance().start();
-        } catch (Exception e) {
-            e.printStackTrace();
-            Assert.fail("Server failed to start. Reason : " + e.getMessage());
-        }
-        cdmRemoteSource = CdmRemoteSource.NewInstance(CDMServer.getInstance().getName(),
+    public static void initializeBaseRemotingTest() {
+        //Logger.getRootLogger().setLevel(Level.INFO);
+        useManagedServer = (System.getProperty("use.managed.server") == null) ? useManagedServer : Boolean.valueOf(System.getProperty("use.managed.server"));
+        if(useManagedServer) {
+            try {
+                CDMServer.getInstance().start();
+            } catch (Exception e) {
+                e.printStackTrace();
+                Assert.fail("Server failed to start. Reason : " + e.getMessage());
+            }
+
+        initializeController(CDMServer.getInstance().getName(),
                 CDMServer.getInstance().getHost(),
                 CDMServer.getInstance().getPort(),
                 CDMServer.getInstance().getContextPath(),
                 NomenclaturalCode.ICNAFP);
+        }
+    }
+
+
+    public static void initializeController(String sourceName, String host, int port, String contextPath, NomenclaturalCode ncode) {
+
+        cdmRemoteSource = CdmRemoteSource.NewInstance(sourceName, host, port, contextPath, ncode);
         remoteApplicationController =
                 CdmApplicationRemoteController.NewInstance(cdmRemoteSource,
                         false,
@@ -69,7 +86,7 @@ public class BaseRemotingTest extends UnitilsJUnit4 {
                         null);
 
         try {
-            remotePersistentSource = CdmPersistentRemoteSource.NewInstance("default");
+            remotePersistentSource = CdmPersistentRemoteSource.NewInstance(sourceName);
         } catch (CdmRemoteSourceException e) {
             Assert.fail("Default Remote Persistent Source failed to load. Reason : " + e.getMessage());
         }
@@ -77,6 +94,7 @@ public class BaseRemotingTest extends UnitilsJUnit4 {
     }
 
 
+
     protected static ICdmApplicationConfiguration getRemoteApplicationController() {
         return remoteApplicationController;
     }
@@ -99,4 +117,25 @@ public class BaseRemotingTest extends UnitilsJUnit4 {
     }
 
 
+    protected static Object getFieldValueViaReflection(Object object, String fieldName) {
+        Class<?> clazz = object.getClass();
+        try {
+            Field field = clazz.getDeclaredField(fieldName);
+            field.setAccessible(true);
+            return field.get(object);
+        } catch (NoSuchFieldException e) {
+            e.printStackTrace();
+        } catch (SecurityException e) {
+            e.printStackTrace();
+        } catch (IllegalArgumentException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+
+
 }