corrected merge to latest snapshot version
authorCherian Mathew <c.mathew@bgbm.org>
Thu, 11 Jun 2015 08:50:35 +0000 (10:50 +0200)
committerCherian Mathew <c.mathew@bgbm.org>
Thu, 11 Jun 2015 08:50:35 +0000 (10:50 +0200)
updated hibernate config file and test db
setup testing framework with jetty and maven

19 files changed:
eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.cdmlib/build.properties
eu.etaxonomy.taxeditor.cdmlib/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml
eu.etaxonomy.taxeditor.test/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.test/pom.xml
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/api/cache/CdmClientCachingTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/PolytomousKeyTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/TaxonNameEditorTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/TaxonNavigatorTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/BaseRemotingTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/CDMServer.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/CdmServerTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/lazyloading/CdmEntityCacherTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/service/ServiceInterceptorTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManagerTest.java
eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.h2.db
eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.trace.db
eu.etaxonomy.taxeditor.test/src/test/resources/server.properties [new file with mode: 0644]
pom.xml

index 43256bc98e5de89d8fc41842a64df38e00187329..2580e87af2c482bc271f46a8f10d68920ceaef46 100644 (file)
@@ -205,6 +205,7 @@ Export-Package: com.google.api,
  net.sf.json;uses:="net.sf.json.processors,net.sf.json.util,org.apache.commons.lang.exception",
  org.aopalliance.aop,
  org.apache.commons.collections;uses:="org.apache.commons.collections.keyvalue,new org.apache.commons.collections",
+ org.apache.commons.collections.buffer,
  org.apache.commons.dbcp,
  org.apache.commons.io;uses:="org.apache.commons.io.filefilter",
  org.apache.commons.lang;uses:="org.apache.commons.lang.exception",
index 9144d3177c7590c26c7bd4ca88eb36d414bf8014..78ed69c09c7d10aaec99663468f6e8f74688ac33 100644 (file)
@@ -184,21 +184,13 @@ bin.includes = META-INF/,\
                lib/poi-ooxml-3.10-FINAL.jar,\\r
                lib/poi-ooxml-schemas-3.10-FINAL.jar,\\r
                lib/xmlbeans-2.3.0.jar,\\r
-               lib/cdmlib-commons-3.6.1-SNAPSHOT-sources.jar,\\r
                lib/cdmlib-commons-3.6.1-SNAPSHOT.jar,\\r
-               lib/cdmlib-ext-3.6.1-SNAPSHOT-sources.jar,\\r
                lib/cdmlib-ext-3.6.1-SNAPSHOT.jar,\\r
-               lib/cdmlib-io-3.6.1-SNAPSHOT-sources.jar,\\r
                lib/cdmlib-io-3.6.1-SNAPSHOT.jar,\\r
-               lib/cdmlib-model-3.6.1-SNAPSHOT-sources.jar,\\r
                lib/cdmlib-model-3.6.1-SNAPSHOT.jar,\\r
-               lib/cdmlib-persistence-3.6.1-SNAPSHOT-sources.jar,\\r
                lib/cdmlib-persistence-3.6.1-SNAPSHOT.jar,\\r
-               lib/cdmlib-print-3.6.1-SNAPSHOT-sources.jar,\\r
                lib/cdmlib-print-3.6.1-SNAPSHOT.jar,\\r
-               lib/cdmlib-remote-3.6.1-SNAPSHOT-sources.jar,\\r
                lib/cdmlib-remote-3.6.1-SNAPSHOT.jar,\\r
-               lib/cdmlib-services-3.6.1-SNAPSHOT-sources.jar,\\r
                lib/cdmlib-services-3.6.1-SNAPSHOT.jar,\\r
                lib/swagger-annotations-1.3.5.jar\r
 \r
index 655d87e6e17bb7313b602229c5c7ab2c2d3e99ed..e48ff8a305f33ce2b4a1c86c13b85be1ecf14929 100644 (file)
           in your hibernate configuration, using hibernate-specific configuration keys.\r
           All other properties must be defined as usual in a c3p0.properties file.\r
           This is confusing, and will hopefully be simplified some time in the future, but for now...\r
+          \r
+          DOCUMENTATION UPDATE (2015-05-22):\r
+          Hibernate's C3P0ConnectionProvider renames 7 c3p0 configuration properties, which, \r
+          if set in your hibernate configuration, will override any configuration you may have set \r
+          in a c3p0.properties file.\r
+          TODO: are points (2) and (3) still valid? I don't think so! (AK)\r
 \r
             hibernate.c3p0.acquire_increment\r
                        hibernate.c3p0.idle_test_period\r
       <mapping class="eu.etaxonomy.cdm.model.taxon.Taxon"/>\r
       <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonBase"/>\r
       <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonNode"/>\r
+      <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation"/>\r
       <mapping class="eu.etaxonomy.cdm.model.taxon.Classification"/>\r
       <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonRelationship"/>\r
       <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType"/>\r
index 89776c1ef1ea0a34745cc89a03ae73d4eb98fb22..7f2bd7c9d31b4d3e120003ae970bc05c09c3c2ea 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: eu.etaxonomy.taxeditor.test
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.test;singleton:=true
-Bundle-Version: 3.5.2.qualifier
+Bundle-Version: 3.6.1.qualifier
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: EDIT
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
index 6bf850435417960fd35e5647c76759a5fd53dfa1..eef8eb1612ecac250274595b1459d7df533f9b79 100644 (file)
@@ -4,7 +4,7 @@
   <parent>\r
     <groupId>eu.etaxonomy</groupId>\r
     <artifactId>taxeditor-parent</artifactId>\r
-    <version>3.5.2-SNAPSHOT</version>\r
+    <version>3.6.1-SNAPSHOT</version>\r
   </parent>\r
   <modelVersion>4.0.0</modelVersion>\r
   <artifactId>eu.etaxonomy.taxeditor.test</artifactId>\r
         <artifactId>tycho-surefire-plugin</artifactId>\r
         <version>${tycho.version}</version>\r
         <configuration>\r
-          <!-- currently we run only the non-ui unit tests so we don't  the harness-->\r
+          <!-- currently we run only the non-ui unit tests so we don't the \r
+            harness -->\r
           <!-- <useUIHarness>true</useUIHarness> -->\r
           <dependencies>\r
-          <!-- This will pull the feature and its dependent plugins into the classpath\r
-               for the tests. Note that this requires ALL taxeditor projects to be\r
-               installed. -->\r
+            <!-- This will pull the feature and its dependent plugins into \r
+              the classpath for the tests. Note that this requires ALL taxeditor projects \r
+              to be installed. -->\r
             <dependency>\r
               <type>eclipse-feature</type>\r
               <artifactId>eu.etaxonomy.taxeditor.feature</artifactId>\r
           </dependencies>\r
         </configuration>\r
       </plugin>\r
+      <plugin>\r
+        <groupId>org.eclipse.jetty</groupId>\r
+        <artifactId>jetty-maven-plugin</artifactId>\r
+        <version>9.2.9.v20150224</version>\r
+        <configuration>\r
+          <systemProperties>\r
+            <systemProperty>\r
+              <name>spring.profiles.active</name>\r
+              <value>remoting</value>\r
+            </systemProperty>\r
+            <systemProperty>\r
+              <name>cdm.beanDefinitionFile</name>\r
+              <value>${basedir}/src/test/resources/datasources.xml</value>\r
+            </systemProperty>\r
+            <systemProperty>\r
+              <name>cdm.datasource</name>\r
+              <value>cdmTest</value>\r
+            </systemProperty>\r
+          </systemProperties>\r
+          <stopPort>9191</stopPort>\r
+          <stopKey>jetty-cdm-server</stopKey>\r
+          <stopWait>10</stopWait>\r
+          <httpConnector>\r
+            <port>9090</port>\r
+          </httpConnector>\r
+          <war>${project.parent.basedir}/eu.etaxonomy.taxeditor.cdmlib/src/main/resources/etc/jetty/cdmlib-remote-webapp.war</war>\r
+          <daemon>true</daemon>\r
+        </configuration>\r
+        <executions>\r
+          <execution>\r
+            <id>start-jetty</id>\r
+            <phase>pre-integration-test</phase>\r
+            <goals>\r
+              <goal>deploy-war</goal>\r
+            </goals>\r
+            <configuration>\r
+              <scanIntervalSeconds>0</scanIntervalSeconds>              \r
+            </configuration>\r
+          </execution>\r
+          <execution>\r
+            <id>stop-jetty</id>\r
+            <phase>post-integration-test</phase>\r
+            <goals>\r
+              <goal>stop</goal>\r
+            </goals>\r
+          </execution>\r
+        </executions>\r
+      </plugin>\r
     </plugins>\r
   </build>\r
 </project>
\ No newline at end of file
index 095262f32cf7d8c35b6621b921c0b7adb87761e7..806f79b9533d5105383a7fd04d36fe9e53cbba72 100644 (file)
@@ -16,7 +16,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
-import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.junit.Assert;
 import org.junit.Before;
@@ -35,7 +34,6 @@ import eu.etaxonomy.cdm.model.description.KeyStatement;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.taxeditor.httpinvoker.BaseRemotingTest;
-import eu.etaxonomy.taxeditor.httpinvoker.CDMServer;
 import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
@@ -79,8 +77,7 @@ public class CdmClientCachingTest extends BaseRemotingTest {
 
     @BeforeClass
     public static void initializePolytomousKeyTest() {
-        logger.setLevel(Level.INFO);
-        CDMServer.getInstance().setKeepServerRunning(true);
+
     }
 
     @Before
index 899e02266411bf9ae1494c4c9fd0e18339be6889..f945be229e8d9b10f856793cc6d1833fa8b543d8 100644 (file)
@@ -16,7 +16,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
-import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.hibernate.collection.spi.PersistentCollection;
 import org.junit.Assert;
@@ -40,10 +39,8 @@ import eu.etaxonomy.cdm.model.description.KeyStatement;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.media.Rights;
-import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.httpinvoker.BaseRemotingTest;
-import eu.etaxonomy.taxeditor.httpinvoker.CDMServer;
 import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher;
 import eu.etaxonomy.taxeditor.remoting.cache.EntityCacherDebugResult;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
@@ -83,15 +80,6 @@ public class PolytomousKeyTest extends BaseRemotingTest {
 
     @BeforeClass
     public static void initializePolytomousKeyTest() {
-        logger.setLevel(Level.INFO);
-        CDMServer.getInstance().setKeepServerRunning(true);
-        initializeController("default",
-                "localhost",
-                8080,
-                "",
-                NomenclaturalCode.ICNAFP,
-                "admin",
-                "00000");
     }
 
     @Before
index 6f60a6f5c259d7e052221aa945d5cf729499e30b..ee12ee448c579e81d0b44fe27a3b7f023b5aea52 100644 (file)
@@ -29,14 +29,12 @@ import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.name.BotanicalName;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
-import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.editor.name.operation.CreateSynonymInExistingHomotypicalGroupOperation;
-import eu.etaxonomy.taxeditor.httpinvoker.CDMServer;
 import eu.etaxonomy.taxeditor.operations.OperationTestBase;
 import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
@@ -69,15 +67,6 @@ public class TaxonNameEditorTest extends OperationTestBase {
 
     @BeforeClass
     public static void initializePolytomousKeyTest() {
-        //logger.setLevel(Level.INFO);
-        CDMServer.getInstance().setKeepServerRunning(true);
-        initializeController("default",
-                "localhost",
-                8080,
-                "",
-                NomenclaturalCode.ICNAFP,
-                "admin",
-                "00000");
     }
 
     @Before
index 485f27241a59d67e92f44fe9fd508e4bcd48091e..caad4929f4289968d9abe7f7620086ee66dcba27 100644 (file)
@@ -9,7 +9,6 @@
 */
 package eu.etaxonomy.cdm.model;
 
-import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.junit.Before;
 import org.junit.BeforeClass;
@@ -19,8 +18,6 @@ import eu.etaxonomy.cdm.api.service.IClassificationService;
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
-import eu.etaxonomy.taxeditor.httpinvoker.CDMServer;
 import eu.etaxonomy.taxeditor.operations.OperationTestBase;
 import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
@@ -54,15 +51,6 @@ public class TaxonNavigatorTest extends OperationTestBase {
 
     @BeforeClass
     public static void initializePolytomousKeyTest() {
-        logger.setLevel(Level.INFO);
-        CDMServer.getInstance().setKeepServerRunning(true);
-        initializeController("default",
-                "localhost",
-                8080,
-                "",
-                NomenclaturalCode.ICNAFP,
-                "admin",
-                "00000");
     }
 
 
index 7f566766a2780b02ebe5acf370e59c4009d01331..420dcb5f52c252e808e23b6106437d8368dee861 100644 (file)
@@ -8,9 +8,12 @@
  */
 package eu.etaxonomy.taxeditor.httpinvoker;
 
+import java.io.InputStream;
 import java.lang.reflect.Field;
 import java.util.Map;
+import java.util.Properties;
 
+import org.apache.log4j.Logger;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
@@ -48,21 +51,27 @@ import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager;
  */
 @Transactional(TransactionMode.DISABLED)
 @SpringApplicationContext("file:./target/classes/eu/etaxonomy/cdm/testRemotingApplicationContext.xml")
-public abstract class BaseRemotingTest extends UnitilsJUnit4 {
-    //private static final Logger logger = Logger.getLogger(BaseRemotingTest.class);
+public class BaseRemotingTest extends UnitilsJUnit4 {
+    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");
+
+    public static final Resource SERVER_PROPERTIES_FILE =
+            new ClassPathResource("server.properties");
 
     private static CdmApplicationRemoteController remoteApplicationController;
     private static ICdmRemoteSource cdmRemoteSource;
     private static CdmPersistentRemoteSource remotePersistentSource;
 
-    public static boolean useManagedServer = false;
+    public static boolean useManagedServer = true;
 
 
     protected static ICdmEntitySessionManager cdmEntitySessionManager;
 
+    private final static String DEFAULT_USER = "admin";
+    private final static String DEFAULT_PASSWORD = "00000";
+
+    private static String user = DEFAULT_USER;
+    private static String password = DEFAULT_PASSWORD;
 
     @BeforeClass
     public static void initializeBaseRemotingTest() {
@@ -74,7 +83,35 @@ public abstract class BaseRemotingTest extends UnitilsJUnit4 {
         useManagedServer = (System.getProperty("use.managed.server") == null) ? useManagedServer : Boolean.valueOf(System.getProperty("use.managed.server"));
         if(useManagedServer) {
             try {
-                CDMServer.getInstance().start();
+                CDMServer cdmServer = CDMServer.getInstance();
+                Properties prop = new Properties();
+                InputStream inputStream = SERVER_PROPERTIES_FILE.getInputStream();
+
+                if (inputStream != null) {
+                    prop.load(inputStream);
+                }
+
+                if(prop.getProperty("httpPort") != null) {
+                    cdmServer.setHttpPort(Integer.valueOf(prop.getProperty("httpPort")));
+                }
+
+                if(prop.getProperty("stopPort") != null) {
+                    cdmServer.setStopPort(Integer.valueOf(prop.getProperty("stopPort")));
+                }
+
+                if(prop.getProperty("stopKey") != null) {
+                    cdmServer.setStopKey(prop.getProperty("stopKey"));
+                }
+
+                if(prop.getProperty("user") != null) {
+                   user = prop.getProperty("user");
+                }
+
+                if(prop.getProperty("password") != null) {
+                    password = prop.getProperty("password");
+                 }
+
+                cdmServer.start();
             } catch (Exception e) {
                 e.printStackTrace();
                 Assert.fail("Server failed to start. Reason : " + e.getMessage());
@@ -85,8 +122,8 @@ public abstract class BaseRemotingTest extends UnitilsJUnit4 {
                 CDMServer.getInstance().getPort(),
                 CDMServer.getInstance().getContextPath(),
                 NomenclaturalCode.ICNAFP,
-                "admin",
-                "00000");
+                user,
+                password);
         }
 
 
@@ -100,8 +137,12 @@ public abstract class BaseRemotingTest extends UnitilsJUnit4 {
        DatabaseUnitils.disableConstraints();
     }
 
+
     public static void initializeController(String sourceName, String host, int port, String contextPath, NomenclaturalCode ncode, String username, String password) {
 
+        if(remoteApplicationController != null) {
+            return;
+        }
         cdmRemoteSource = CdmRemoteSource.NewInstance(sourceName, host, port, contextPath, ncode);
         remoteApplicationController =
                 CdmApplicationRemoteController.NewInstance(cdmRemoteSource,
index cdb5abea841289d6dbcd085549e8592ab28aebc4..a6f5fd509f5924780e7c45946f1f091d3f0ed8fa 100644 (file)
@@ -12,11 +12,18 @@ package eu.etaxonomy.taxeditor.httpinvoker;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import java.net.Socket;
 
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanException;
+import javax.management.MBeanServerConnection;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
 import javax.sql.DataSource;
 
-import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
@@ -48,25 +55,14 @@ public class CDMServer {
 
     private final String name = "default";
     private final String host = "127.0.0.1";
-    private final int port = 9090;
-    private final int stopPort = 9191;
-    private final String stopKey = "jetty-cdm-server";
+    private int httpPort = 9090;
+    private int stopPort = 9191;
+    private String stopKey = "jetty-cdm-server";
     private final String contextPath = "";
 
-    private boolean keepServerRunning = false;
-
     public static final Resource DEFAULT_CDM_WEBAPP_RESOURCE =
             new ClassPathResource("/etc/jetty/cdmlib-remote-webapp.war");
 
-    public static final Resource DEFAULT_JETTY_CONFIG_RESOURCE =
-            new ClassPathResource("/etc/jetty/jetty.xml");
-
-    public static final Resource DEFAULT_JETTY_TEMP_RESOURCE =
-            new ClassPathResource("/etc/jetty/temp");
-
-    public static final Resource DEFAULT_JETTY_TEMP_WAR_LIB_RESOURCE =
-            new ClassPathResource("/etc/jetty/temp/webapp/WEB-INF/lib");
-
     public static final Resource DEFAULT_DATASOURCE_FILE =
             new ClassPathResource("datasources.xml");
 
@@ -76,14 +72,10 @@ public class CDMServer {
     public static final Resource DEFAULT_JETTY_RESOURCE =
             new ClassPathResource("/etc/jetty/start-9.2.3.v20140905.jar");
 
-
-
     private static CDMServer cdmServer = null;
     private static CDMServerException cdmse = null;
 
-    private void CDMServer() {
-        logger.setLevel(Level.INFO);
-    }
+    private void CDMServer() {}
 
     public static CDMServer getInstance() {
         if(cdmServer == null) {
@@ -101,21 +93,26 @@ public class CDMServer {
     }
 
     public int getPort() {
-        return port;
+        return httpPort;
     }
 
     public String getContextPath() {
         return contextPath;
     }
 
-    public boolean getKeepServerRunning() {
-        return keepServerRunning;
+    public void setHttpPort(int port) {
+        this.httpPort = port;
+    }
+
+    public void setStopPort(int stopPort) {
+        this.stopPort = stopPort;
     }
 
-    public void setKeepServerRunning(boolean keepServerRunning) {
-        this.keepServerRunning = keepServerRunning;
+    public void setStopKey(String stopKey) {
+        this.stopKey = stopKey;
     }
 
+
     public static boolean isRunningInEclipse() {
         return (System.getProperty("sun.java.command") != null &&
                 System.getProperty("sun.java.command").startsWith("org.eclipse.jdt.internal.junit.runner.RemoteTestRunner"));
@@ -129,10 +126,9 @@ public class CDMServer {
         return sb.toString();
     }
 
-    private String getStartServerArgs() {
+    private String getStartServerArgs() throws IOException {
         StringBuilder sb = new StringBuilder();
-        sb.append(" --port ");
-        sb.append(port);
+        sb.append(" --port " + httpPort);
         return sb.toString();
     }
 
@@ -154,6 +150,7 @@ public class CDMServer {
         return sb.toString();
     }
 
+
     public void start() throws CDMServerException {
 
         /**
@@ -163,22 +160,15 @@ public class CDMServer {
          * has started but incorrectly, in which case we try to force stop it (if we can)
          * and start a new server.
          */
-        if(isRunning(1)) {
-            logger.info("[CDM-Server] Server already running @ " + host + ":" + port );
+        if(isStarted(1)) {
+            logger.info("[CDM-Server] Server already running @ " + host + ":" + httpPort );
             return;
-        } else if (isAvailable(1)){
-            logger.info("[CDM-Server] Server available, but not started correctly @ " + host + ":" + port );
-            logger.info("[CDM-Server] .... trying to force stop server @ " + host + ":" + port );
-            try {
-                stop(true);
-            } catch (Exception e) {
-                throw new CDMServerException("CDM Server could not be stopped : " + e.getMessage());
-            }
         }
 
         Thread t = new Thread() {
             @Override
             public void run() {
+
                 StringBuffer output = new StringBuffer();
                 try{
                     Process p;
@@ -193,19 +183,25 @@ public class CDMServer {
                     logger.info("[CDM-Server] Starting server with Command : " + command);
                     p = Runtime.getRuntime().exec(command);
 
-                    BufferedReader reader =
+                    BufferedReader inpReader =
                             new BufferedReader(new InputStreamReader(p.getInputStream()));
 
+                    BufferedReader errReader =
+                            new BufferedReader(new InputStreamReader(p.getErrorStream()));
+
                     String line = "";
-                    while ((line = reader.readLine())!= null) {
-                        logger.info("[CDM-Server] Start : " + line);
+                    while ((line = inpReader.readLine())!= null) {
+                        logger.info("[CDM-Server Start] : " + line);
+                    }
+
+                    while ((line = errReader.readLine())!= null) {
+                        logger.info("[CDM-Server Start] : " + line);
                     }
 
                 } catch (Exception e) {
                     e.printStackTrace();
                     cdmse = new CDMServerException(e);
                 }
-
             }
         };
 
@@ -213,8 +209,8 @@ public class CDMServer {
         cdmse = null;
         t.start();
 
-        if(isRunning(60)) {
-            logger.info("[CDM-Server] Started Server @ " + host + ":" + port );
+        if(isStarted(50)) {
+            logger.info("[CDM-Server] Server running @ " + host + ":" + httpPort );
         } else {
             logger.info("[CDM-Server] Server not started within given interval");
             // making sure to kill server if it is not started correctly
@@ -228,50 +224,11 @@ public class CDMServer {
 
     }
 
-    public boolean isAvailable(int checkingIntervals) throws CDMServerException {
-        int intervalsCount = 0;
-        do {
-            try {
-                Socket s = new Socket(host, port);
-                logger.info("[CDM-Server] Available @ " + host + ":" + port );
-                return true;
-            } catch (IOException ioe) {
 
-            }
-            try {
-                Thread.sleep(1000);
-            } catch (InterruptedException ie) {
-                throw new CDMServerException("Error checking CDM Server status", ie);
-            }
-            intervalsCount++;
-        } while (intervalsCount < checkingIntervals);
-
-        return false;
-    }
-
-    public boolean isStopped(int checkingIntervals) throws CDMServerException {
-        int intervalsCount = 0;
-        do {
-            try {
-                Socket s = new Socket(host, port);
-            } catch (IOException ioe) {
-                return true;
-            }
-            try {
-                Thread.sleep(1000);
-            } catch (InterruptedException ie) {
-                throw new CDMServerException("Error checking CDM Server status", ie);
-            }
-            intervalsCount++;
-        } while (intervalsCount < checkingIntervals);
-
-        return false;
-    }
-
-    public boolean isRunning(int checkingIntervals) throws CDMServerException  {
+    public boolean isStarted(int checkingIntervals) throws CDMServerException  {
         CdmRemoteSourceBase crsb = new CdmRemoteSourceBase("local-cdm-server",
                 host,
-                port,
+                httpPort,
                 contextPath,
                 null);
         int intervalsCount = 0;
@@ -282,7 +239,7 @@ public class CDMServer {
                 }
                 boolean check = crsb.checkConnection();
                 if(check) {
-                    logger.info("[CDM-Server] Running @ " + host + ":" + port );
+                    logger.info("[CDM-Server] Running @ " + host + ":" + httpPort );
                     return true;
                 }
             } catch (Exception e) {
@@ -301,19 +258,16 @@ public class CDMServer {
     public void stop() throws Exception {
         stop(false);
     }
+
     public void stop(boolean force) throws Exception {
 
         if(!force) {
-            if(!getInstance().isAvailable(1)) {
-                logger.info("[CDM-Server] Server already stopped @ " + host + ":" + port );
-                return;
-            }
-
-            if(getInstance().getKeepServerRunning()) {
-                logger.info("[CDM-Server] Server @ " + host + ":" + port + " is set to keep running");
+            if(!getInstance().isStarted(1)) {
+                logger.info("[CDM-Server] Server already stopped @ " + host + ":" + httpPort );
                 return;
             }
         }
+
         Thread t = new Thread() {
             @Override
             public void run() {
@@ -324,15 +278,25 @@ public class CDMServer {
                             + getStopServerArgs() + " --stop ";
                     logger.info("[CDM-Server] Stop Command : " + command);
                     p = Runtime.getRuntime().exec(command);
-                    p.waitFor();
-                    BufferedReader reader =
+
+                    BufferedReader inpReader =
                             new BufferedReader(new InputStreamReader(p.getInputStream()));
+
+                    BufferedReader errReader =
+                            new BufferedReader(new InputStreamReader(p.getErrorStream()));
+
                     String line = "";
-                    while ((line = reader.readLine())!= null) {
-                        logger.info("CDM-Server Stop : " + line + "\n");
+                    while ((line = inpReader.readLine())!= null) {
+                        logger.info("[CDM-Server Stop] : " + line);
+                    }
+
+                    while ((line = errReader.readLine())!= null) {
+                        logger.info("[CDM-Server Stop] : " + line);
                     }
+                    logger.info("CDM-Server Stopped : ");
                 } catch (Exception e) {
-                    e.printStackTrace();
+                    logger.info("[CDM-Server] Could not stop @ " + host + ":" + httpPort + ". Please kill it manually");
+
                 }
 
             }
@@ -341,10 +305,32 @@ public class CDMServer {
         t.setDaemon(true);
         t.start();
 
-        if(isStopped(5)) {
-            logger.info("[CDM-Server] Stopped Server @ " + host + ":" + port );
-        } else {
-            logger.info("[CDM-Server] Could not stop @ " + host + ":" + port + ". Please kill it manually");
+    }
+
+    public static void stopServerViaJMX(int jmxPort) throws CDMServerException  {
+        String JMX_URL = "service:jmx:rmi:///jndi/rmi://localhost:" + jmxPort + "/jmxrmi";
+        logger.warn("Shutting down Jetty instance ... ");
+
+        try {
+            JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL(JMX_URL), null);
+            connector.connect(null);
+            MBeanServerConnection connection = connector.getMBeanServerConnection();
+            ObjectName objectName = new ObjectName("org.eclipse.jetty.server:type=server,id=0");
+            connection.invoke(objectName, "stop", null, null);
+            logger.warn("Shutdown command sent");
+        } catch (InstanceNotFoundException e) {
+            throw new CDMServerException(e);
+        } catch (MBeanException e) {
+            throw new CDMServerException(e);
+        } catch (ReflectionException e) {
+            throw new CDMServerException(e);
+        } catch (IOException e) {
+            throw new CDMServerException(e);
+        } catch (MalformedObjectNameException e) {
+            throw new CDMServerException(e);
         }
+
+
+
     }
 }
index 816b18b0560bee3ea86d9161c6178ba077ac6f05..bca8d3530f4e6f16e2eb4e77e6afe482b823b2f5 100644 (file)
@@ -9,14 +9,12 @@
 */
 package eu.etaxonomy.taxeditor.httpinvoker;
 
-import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.unitils.UnitilsJUnit4;
 
-import eu.etaxonomy.taxeditor.lazyloading.AbstractLazyInitializerTest;
+import eu.etaxonomy.taxeditor.remoting.server.CDMServerException;
 
 /**
  * @author cmathew
@@ -27,13 +25,17 @@ public class CdmServerTest extends UnitilsJUnit4 {
     private static final Logger logger = Logger.getLogger(CdmServerTest.class);
 
 
+    @Test
+    public void startCdmServer() throws CDMServerException {
+        CDMServer.getInstance().start();
+    }
+
     @Test
     public void stopCdmServer() {
-        Logger.getRootLogger().setLevel(Level.INFO);
-        CDMServer.getInstance().setKeepServerRunning(false);
         try {
             CDMServer.getInstance().stop(true);
         } catch (Exception e) {
+            e.printStackTrace();
             Assert.fail("Server could not be stopped. Reason : " + e.getMessage());
         }
     }
index d935013bfb21ae27e2f746b385c8d68282475491..6639934751042dc7d875f6247bd51b9f206202be 100644 (file)
@@ -11,7 +11,6 @@ package eu.etaxonomy.taxeditor.lazyloading;
 
 import java.util.UUID;
 
-import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.hibernate.collection.spi.PersistentCollection;
 import org.junit.Assert;
@@ -26,7 +25,6 @@ import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.taxeditor.httpinvoker.BaseRemotingTest;
-import eu.etaxonomy.taxeditor.httpinvoker.CDMServer;
 
 /**
  * @author cmathew
@@ -49,10 +47,6 @@ public class CdmEntityCacherTest extends BaseRemotingTest {
 
     @BeforeClass
     public static void initializePolytomousKeyTest() {
-        logger.setLevel(Level.INFO);
-        CDMServer.getInstance().setKeepServerRunning(true);
-
-        //initializeController("default", "127.0.0.1", 8080, "", NomenclaturalCode.ICNAFP);
     }
 
     @Test
index 6e94ef56bc6e9936cdc7ad3c451ed93ff7a1f04b..85e6549d89a28cedc5677fdefaa793d2f8d5b482 100644 (file)
@@ -12,22 +12,20 @@ import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.taxeditor.httpinvoker.BaseRemotingTest;
-import eu.etaxonomy.taxeditor.httpinvoker.CDMServer;
 
 public class ServiceInterceptorTest extends BaseRemotingTest {
-       
+
         private static final Logger logger = Logger.getLogger(ServiceInterceptorTest.class);
         ITermService termService = getRemoteApplicationController().getTermService();
-        
+
            @BeforeClass
-           public static void initializeServiceInterceptorTest() {             
-               CDMServer.getInstance().setKeepServerRunning(true);       
+           public static void initializeServiceInterceptorTest() {
            }
-           
+
            @Test
            public void termServiceInterceptorTest() {
                List<DefinedTermBase<?>> terms = termService.listByTermType(TermType.Language, null, null, null, null);
                Assert.assertEquals(terms.size(),CdmCacher.getDefaultCache().getSize());
-               // TO DO : get the static termTypeMap from TermServiceRequestExecutor and check the size 
+               // TO DO : get the static termTypeMap from TermServiceRequestExecutor and check the size
            }
 }
index 92c00fe36bbabdb0ac593aa158bcd678e4ea7520..d8b0464011da42dcc74cf1f8dd786a49d7d14d09 100644 (file)
@@ -14,7 +14,6 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.taxeditor.httpinvoker.BaseRemotingTest;
-import eu.etaxonomy.taxeditor.httpinvoker.CDMServer;
 
 public class CdmEntitySessionManagerTest extends BaseRemotingTest {
 
@@ -31,8 +30,6 @@ public class CdmEntitySessionManagerTest extends BaseRemotingTest {
 
        @BeforeClass
        public static void initializeCdmEntitySessionManagerTest() {
-               CDMServer.getInstance().setKeepServerRunning(true);
-               //initializeController("default", "127.0.0.1", 8080, "", NomenclaturalCode.ICNAFP);
        }
 
        @Before
index e59bba4e322ad780fc108970a0a88532933794a9..638ef7abf3c59060e8dfe7b3c1b61a8f63b42d72 100644 (file)
Binary files a/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.h2.db and b/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.h2.db differ
index ed16291f59256bfe8c8015e2052d6667078de2b1..a5338e269cc6b13d29c4c00e8bd2ff1221a1638f 100644 (file)
Binary files a/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.trace.db and b/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.trace.db differ
diff --git a/eu.etaxonomy.taxeditor.test/src/test/resources/server.properties b/eu.etaxonomy.taxeditor.test/src/test/resources/server.properties
new file mode 100644 (file)
index 0000000..5b20cc4
--- /dev/null
@@ -0,0 +1,5 @@
+httpPort=9090
+stopPort=9191
+stopKey=jetty-cdm-server
+user=admin
+password=00000
diff --git a/pom.xml b/pom.xml
index 2e34d58d9051f1e222bc05eb7d37d00ef5e43fc6..abec18c89815ec337fd18b7521f6d20dac149ac8 100644 (file)
--- a/pom.xml
+++ b/pom.xml
       </url>
     </repository>
   </distributionManagement>
+
 </project>