]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
PAHMA-963: Added support for easily configuring a new CollectionSpace instance to...
authorRichard Millet <remillet@berkeley.edu>
Fri, 20 Dec 2013 20:13:13 +0000 (12:13 -0800)
committerRichard Millet <remillet@berkeley.edu>
Fri, 20 Dec 2013 20:13:13 +0000 (12:13 -0800)
3rdparty/nuxeo/nuxeo-server/5.5-HF07/config/lifesci_domain-repo-config.xml
build.properties
build.xml
services/JaxRsServiceProvider/src/main/resources/log4j.properties
services/JaxRsServiceProvider/src/main/webapp/META-INF/context.xml
services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/NuxeoClientEmbedded.java

index d8cf0821013d3761212dc772e28b76f91f071ed7..2f835f1f89edc5d74ae3586fdf94a63a9dfdd544 100644 (file)
@@ -9,7 +9,7 @@
                        <binaryStore path="" />
                                <!-- The transactional datasource for Nuxeo -->
                                <xa-datasource>@XA_DATASOURCE@</xa-datasource>                          
-                               <property name="URL">jdbc:postgresql://localhost:5432/lifesci_domain</property>
+                               <property name="URL">jdbc:postgresql://@DB_SERVER_HOSTNAME@:5432/lifesci_domain</property>
                                <property name="ServerName">@DB_SERVER_HOSTNAME@</property>                             
                                <property name="DatabaseName">lifesci_domain</property>
                                <property name="User">@NUXEO_USER@</property>
index c7e0601531dfa0edb3bed63a010c9901fa577e19..980c446514446c35ad001786259935afbfefc50a 100644 (file)
@@ -120,7 +120,12 @@ db.nuxeo.user=nuxeo
 db.nuxeo.user.password=${env.DB_PASSWORD_NUXEO}\r
 db.cspace.user=cspace\r
 db.cspace.user.password=${env.DB_PASSWORD_CSPACE}\r
-db.host=localhost\r
+db.host=dba-postgres-qa-21.ist.berkeley.edu\r
 db.jdbc.baseurl=jdbc:${db}://${db.host}:${db.port}\r
+\r
+#\r
+# JDBC URL's.  The csadmin URL is needed to authenticate with the PostGreSQL server because an existing database must be supplied during authentication.\r
+#\r
+db.jdbc.csadmin.url=${db.jdbc.baseurl}/postgres\r
 db.jdbc.nuxeo.url=${db.jdbc.baseurl}/nuxeo\r
 db.jdbc.cspace.url=${db.jdbc.baseurl}/cspace\r
index 69401f117916bb774fe193c0c566d8486338c717..915ed94c9773df733b2c2ef62455f14e30e0a744 100644 (file)
--- a/build.xml
+++ b/build.xml
        <target name="create_nuxeo_db" \r
             description="create nuxeo database">\r
                <sql driver="${db.jdbc.driver.class}"\r
-             url="${db.jdbc.baseurl}"\r
+             url="${db.jdbc.csadmin.url}"\r
              userid="${db.user}"\r
              password="${db.user.password}"\r
                                                 autocommit="true"\r
        <target name="create_cspace_db" \r
                description="create cspace database">\r
                <sql driver="${db.jdbc.driver.class}"\r
-             url="${db.jdbc.baseurl}"\r
+             url="${db.jdbc.csadmin.url}"\r
              userid="${db.user}"\r
              password="${db.user.password}"\r
                                                 autocommit="true"\r
index 2ac8b420f352e9d3a54a667f350f90867c5d55fd..508a649030be0afca5b17b4583029ad3f80f088c 100644 (file)
@@ -53,7 +53,8 @@ log4j.additivity.perf.collectionspace=false
 # CollectionSpace loggers and default levels - all loggers using the rootLogger if not otherwise specified\r
 #\r
 log4j.logger.org.collectionspace=INFO\r
-log4j.logger.org.collectionspace.services.common.storage.JDBCTools=TRACE\r
+log4j.logger.org.collectionspace.services.nuxeo.client.java=TRACE\r
+log4j.logger.org.collectionspace.services.common.storage.JDBCTools=ERROR\r
 #log4j.logger.org.collectionspace.services.common.vocabulary.nuxeo=TRACE\r
 \r
 #\r
index cc1e9fb7dfe118dfb0c4032d7b74777515cc7a16..a534188f69c20225742ee77eaa7c4b597cfba6bc 100644 (file)
@@ -67,7 +67,7 @@
            username="${db.user}"
            password="${db.user.password}"
            driverClassName="${db.jdbc.driver.class}"
-           url="jdbc:${db}://${db.host}:${db.port}/cspace"
+           url="${db.jdbc.cspace.url}"
            maxActive="8"
            maxIdle="4"/>
                
@@ -87,7 +87,7 @@
     username="${db.user}"
     password="${db.user.password}"
     driverClassName="${db.jdbc.driver.class}"
-    url="jdbc:${db}://${db.host}:${db.port}"
+    url="${db.jdbc.csadmin.url}"
     maxActive="8"
     maxIdle="4"/>      
   
index 1f2330ab684dcaa2129d6040e6ceef6d15bbd281..c9d6ed6dae476f7f757c32305c9a496acb3621cd 100644 (file)
@@ -22,37 +22,22 @@ package org.collectionspace.services.nuxeo.client.java;
 import java.util.Collection;\r
 import java.util.HashMap;\r
 import java.util.Iterator;\r
-import java.util.Map;\r
 import java.util.Map.Entry;\r
 \r
-import javax.security.auth.login.AppConfigurationEntry;\r
 import javax.transaction.TransactionManager;\r
 \r
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
 import org.collectionspace.services.config.tenant.RepositoryDomainType;\r
 import org.jboss.remoting.InvokerLocator;\r
-import org.nuxeo.common.collections.ListenerList;\r
 import org.nuxeo.ecm.core.api.repository.Repository;\r
 import org.nuxeo.ecm.core.api.repository.RepositoryInstance;\r
 import org.nuxeo.ecm.core.api.repository.RepositoryInstanceHandler;\r
 import org.nuxeo.ecm.core.api.repository.RepositoryManager;\r
-import org.nuxeo.ecm.core.client.ConnectionListener;\r
 import org.nuxeo.ecm.core.client.DefaultLoginHandler;\r
 import org.nuxeo.ecm.core.client.LoginHandler;\r
 //import org.nuxeo.ecm.core.repository.RepositoryDescriptor;\r
-import org.nuxeo.ecm.core.schema.SchemaManager;\r
-import org.nuxeo.ecm.core.schema.SchemaManagerImpl;\r
-import org.nuxeo.ecm.core.schema.TypeProvider;\r
 import org.nuxeo.runtime.api.Framework;\r
-import org.nuxeo.runtime.api.ServiceDescriptor;\r
-import org.nuxeo.runtime.api.ServiceManager;\r
-import org.nuxeo.runtime.api.login.LoginComponent;\r
-import org.nuxeo.runtime.api.login.LoginService;\r
-import org.nuxeo.runtime.api.login.SecurityDomain;\r
-import org.nuxeo.runtime.config.AutoConfigurationService;\r
-import org.nuxeo.runtime.remoting.RemotingService;\r
-import org.nuxeo.runtime.services.streaming.StreamingService;\r
 import org.nuxeo.runtime.transaction.TransactionHelper;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
@@ -69,14 +54,8 @@ public final class NuxeoClientEmbedded {
 \r
     private final HashMap<String, RepositoryInstance> repositoryInstances;\r
 \r
-    private final ListenerList connectionListeners;\r
-\r
     private InvokerLocator locator;\r
 \r
-    private String serverName;\r
-\r
-    private final AutoConfigurationService cfg;\r
-\r
     private RepositoryManager repositoryMgr;\r
 \r
     private static final NuxeoClientEmbedded instance = new NuxeoClientEmbedded();\r
@@ -88,8 +67,6 @@ public final class NuxeoClientEmbedded {
      * of this constructor is recommended.\r
      */\r
     public NuxeoClientEmbedded() {\r
-        connectionListeners = new ListenerList();\r
-        cfg = new AutoConfigurationService();\r
         loginHandler = loginHandler == null ? new DefaultLoginHandler()\r
                 : loginHandler;\r
         repositoryInstances = new HashMap<String, RepositoryInstance>();\r
@@ -99,14 +76,6 @@ public final class NuxeoClientEmbedded {
         return instance;\r
     }\r
 \r
-    @Deprecated\r
-    private synchronized void disconnect() throws Exception {\r
-        if (locator == null) {\r
-            throw new IllegalStateException("Client is not connected");\r
-        }\r
-        doDisconnect();\r
-    }\r
-\r
     public synchronized void tryDisconnect() throws Exception {\r
         if (locator == null) {\r
             return; // do nothing\r
@@ -116,7 +85,6 @@ public final class NuxeoClientEmbedded {
 \r
     private void doDisconnect() throws Exception {\r
         locator = null;\r
-        serverName = null;\r
         // close repository sessions if any\r
         Iterator<Entry<String, RepositoryInstance>> it = repositoryInstances.entrySet().iterator();\r
         while (it.hasNext()) {\r
@@ -132,21 +100,6 @@ public final class NuxeoClientEmbedded {
         repositoryMgr = null;\r
     }\r
 \r
-    public synchronized String getServerName() {\r
-        if (locator == null) {\r
-            throw new IllegalStateException("Client is not connected");\r
-        }\r
-        if (serverName == null) {\r
-            if (cfg == null) { // compatibility\r
-                serverName = RemotingService.ping(locator.getHost(),\r
-                        locator.getPort());\r
-            } else {\r
-                serverName = cfg.getServerConfiguration().getProductInfo();\r
-            }\r
-        }\r
-        return serverName;\r
-    }\r
-\r
     public synchronized boolean isConnected() {\r
         return true;\r
     }\r
@@ -230,26 +183,41 @@ public final class NuxeoClientEmbedded {
                }\r
        }\r
        \r
-       //  REM 10/29/2013 - We may want to add this clause if (!TransactionHelper.isTransactionActive()) {\r
-       boolean startTransaction = TransactionHelper.startTransaction();\r
-       if (startTransaction == false) {\r
-               logger.warn("Could not start a Nuxeo transaction with the TransactionHelper class.");\r
+       boolean startedTransaction = false;\r
+       if (TransactionHelper.isTransactionActive() == false) {\r
+               startedTransaction = TransactionHelper.startTransaction();\r
+               if (startedTransaction == false) {\r
+                       String errMsg = "Could not start a Nuxeo transaction with the TransactionHelper class.";\r
+                       logger.error(errMsg);\r
+                       throw new Exception(errMsg);\r
+               }\r
+       } else {\r
+               logger.warn("A request to start a new transaction was made, but a transaction is already open.");\r
        }\r
        \r
         Repository repository = null;\r
         if (repoName != null) {\r
                repository = getRepositoryManager().getRepository(repoName);\r
         } else {\r
-               repository = getRepositoryManager().getDefaultRepository(); // Add a log info statement here stating that since no repo name was given we'll use the default repo instead\r
+               repository = getRepositoryManager().getDefaultRepository();\r
+               logger.warn(String.format("Using default repository '%s' because no name was specified.", repository.getName()));\r
         }\r
         \r
         if (repository != null) {\r
                result = newRepositoryInstance(repository);\r
-               String key = result.getSessionId();\r
-               repositoryInstances.put(key, result);\r
-               if (logger.isTraceEnabled()) {\r
-                       logger.trace("Added a new repository instance to our repo list.  Current count is now: "\r
-                                       + repositoryInstances.size());\r
+               if (result != null) {\r
+                       String key = result.getSessionId();\r
+                       repositoryInstances.put(key, result);\r
+                       if (logger.isTraceEnabled()) {\r
+                               logger.trace(String.format("A new transaction was started on thread '%d' : %s.",\r
+                                               Thread.currentThread().getId(), startedTransaction ? "true" : "false"));\r
+                               logger.trace(String.format("Added a new repository instance to our repo list.  Current count is now: %d",\r
+                                               repositoryInstances.size()));\r
+                       }\r
+               } else {\r
+                       String errMsg = String.format("Could not create a new repository instance for '%s' repository.", repository.getName());\r
+                       logger.error(errMsg);\r
+                       throw new Exception(errMsg);\r
                }\r
         } else {\r
                String errMsg = String.format("Could not open a session to the Nuxeo repository='%s'", repoName);\r
@@ -280,8 +248,10 @@ public final class NuxeoClientEmbedded {
                                        + repositoryInstances.size());\r
                }\r
             }\r
-            //if (TransactionHelper.isTransactionActiveOrMarkedRollback())\r
-            TransactionHelper.commitOrRollbackTransaction();\r
+            if (TransactionHelper.isTransactionActiveOrMarkedRollback() == true) {\r
+               TransactionHelper.commitOrRollbackTransaction();\r
+               logger.trace(String.format("Transaction closed on thread '%d'", Thread.currentThread().getId()));\r
+            }\r
         }\r
     }\r
 \r