]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-6405: For the v4.x code base, add support for JDBC options. See CSPACE-6404.
authorRichard Millet <remillet@berkeley.edu>
Thu, 9 Oct 2014 21:17:39 +0000 (14:17 -0700)
committerRichard Millet <remillet@berkeley.edu>
Thu, 9 Oct 2014 21:17:39 +0000 (14:17 -0700)
12 files changed:
3rdparty/nuxeo/build.xml
3rdparty/nuxeo/nuxeo-server/5.5-HF07/config/proto-repo-config.xml
build.properties
installer/build.xml
services/JaxRsServiceProvider/src/main/resources/META-INF/persistence.xml
services/JaxRsServiceProvider/src/main/webapp/META-INF/context.xml
services/account/client/build.xml
services/account/client/src/test/resources/META-INF/persistence.xml
services/account/pstore/build.xml
services/authorization-mgt/import/build.xml
services/authorization/service/src/main/resources/applicationContext-authorization.xml
services/common/src/main/java/org/collectionspace/services/common/ServiceMain.java

index c02d9b6755ce7f4ae2e659aa1a526c6b1559b833..71eb3207dbde961f446032cdf5bf6c3cc35710f9 100644 (file)
-\r
 <project name="nuxeo" default="package" basedir=".">\r
-    <description>\r
-        collectionspace nuxeo\r
-    </description>\r
+    <description> collectionspace nuxeo </description>\r
     <!-- set global properties for this build -->\r
     <property name="services.trunk" value="../.."/>\r
     <!-- environment should be declared before reading build.properties -->\r
-    <property environment="env" />\r
-    <property file="${services.trunk}/build.properties" />\r
-    <property name="mvn.opts" value="-V" />\r
+    <property environment="env"/>\r
+    <property file="${services.trunk}/build.properties"/>\r
+    <property name="mvn.opts" value="-V"/>\r
     <property name="src" location="src"/>\r
     <property name="build" location="build"/>\r
-    <property name="dist"  location="dist"/>\r
+    <property name="dist" location="dist"/>\r
 \r
     <condition property="osfamily-unix">\r
-        <os family="unix" />\r
+        <os family="unix"/>\r
     </condition>\r
     <condition property="osfamily-windows">\r
-        <os family="windows" />\r
+        <os family="windows"/>\r
     </condition>\r
 \r
     <target name="init">\r
-    <!-- Create the time stamp -->\r
+        <!-- Create the time stamp -->\r
         <tstamp/>\r
-    <!-- Create the build directory structure used by compile -->\r
+        <!-- Create the build directory structure used by compile -->\r
         <mkdir dir="${build}"/>\r
-\r
     </target>\r
 \r
     <target name="package" depends="package-unix,package-windows"\r
-       description="Package CollectionSpace Services" />\r
+        description="Package CollectionSpace Services"/>\r
     <target name="package-unix" if="osfamily-unix">\r
         <exec executable="mvn" failonerror="true">\r
-            <arg value="package" />\r
-            <arg value="-Dmaven.test.skip=true" />\r
-            <arg value="-f" />\r
-            <arg value="${basedir}/pom.xml" />\r
-            <arg value="-N" />\r
-            <arg value="${mvn.opts}" />\r
+            <arg value="package"/>\r
+            <arg value="-Dmaven.test.skip=true"/>\r
+            <arg value="-f"/>\r
+            <arg value="${basedir}/pom.xml"/>\r
+            <arg value="-N"/>\r
+            <arg value="${mvn.opts}"/>\r
         </exec>\r
     </target>\r
     <target name="package-windows" if="osfamily-windows">\r
         <exec executable="cmd" failonerror="true">\r
-            <arg value="/c" />\r
-            <arg value="mvn.bat" />\r
-            <arg value="package" />\r
-            <arg value="-Dmaven.test.skip=true" />\r
-            <arg value="-f" />\r
-            <arg value="${basedir}/pom.xml" />\r
-            <arg value="-N" />\r
-            <arg value="${mvn.opts}" />\r
+            <arg value="/c"/>\r
+            <arg value="mvn.bat"/>\r
+            <arg value="package"/>\r
+            <arg value="-Dmaven.test.skip=true"/>\r
+            <arg value="-f"/>\r
+            <arg value="${basedir}/pom.xml"/>\r
+            <arg value="-N"/>\r
+            <arg value="${mvn.opts}"/>\r
         </exec>\r
     </target>\r
 \r
-    <target name="install" depends="package,install-unix,install-windows"\r
-       description="Install" />\r
+    <target name="install" depends="package,install-unix,install-windows" description="Install"/>\r
     <target name="install-unix" if="osfamily-unix">\r
         <exec executable="mvn" failonerror="true">\r
-            <arg value="install" />\r
-            <arg value="-Dmaven.test.skip=true" />\r
-            <arg value="-f" />\r
-            <arg value="${basedir}/pom.xml" />\r
-            <arg value="-N" />\r
-            <arg value="${mvn.opts}" />\r
+            <arg value="install"/>\r
+            <arg value="-Dmaven.test.skip=true"/>\r
+            <arg value="-f"/>\r
+            <arg value="${basedir}/pom.xml"/>\r
+            <arg value="-N"/>\r
+            <arg value="${mvn.opts}"/>\r
         </exec>\r
     </target>\r
     <target name="install-windows" if="osfamily-windows">\r
         <exec executable="cmd" failonerror="true">\r
-            <arg value="/c" />\r
-            <arg value="mvn.bat" />\r
-            <arg value="install" />\r
-            <arg value="-Dmaven.test.skip=true" />\r
-            <arg value="-f" />\r
-            <arg value="${basedir}/pom.xml" />\r
-            <arg value="-N" />\r
-            <arg value="${mvn.opts}" />\r
+            <arg value="/c"/>\r
+            <arg value="mvn.bat"/>\r
+            <arg value="install"/>\r
+            <arg value="-Dmaven.test.skip=true"/>\r
+            <arg value="-f"/>\r
+            <arg value="${basedir}/pom.xml"/>\r
+            <arg value="-N"/>\r
+            <arg value="${mvn.opts}"/>\r
         </exec>\r
     </target>\r
 \r
-    <target name="clean" depends="clean-unix,clean-windows"\r
-       description="Delete target directories" >\r
+    <target name="clean" depends="clean-unix,clean-windows" description="Delete target directories">\r
         <delete dir="${build}"/>\r
     </target>\r
     <target name="clean-unix" if="osfamily-unix">\r
         <exec executable="mvn" failonerror="true">\r
-            <arg value="clean" />\r
-            <arg value="${mvn.opts}" />\r
+            <arg value="clean"/>\r
+            <arg value="${mvn.opts}"/>\r
         </exec>\r
     </target>\r
     <target name="clean-windows" if="osfamily-windows">\r
         <exec executable="cmd" failonerror="true">\r
-            <arg value="/c" />\r
-            <arg value="mvn.bat" />\r
-            <arg value="clean" />\r
-            <arg value="${mvn.opts}" />\r
+            <arg value="/c"/>\r
+            <arg value="mvn.bat"/>\r
+            <arg value="clean"/>\r
+            <arg value="${mvn.opts}"/>\r
         </exec>\r
     </target>\r
 \r
-    <target name="test" depends="test-unix,test-windows" description="Run tests" />\r
+    <target name="test" depends="test-unix,test-windows" description="Run tests"/>\r
     <target name="test-unix" if="osfamily-unix">\r
         <exec executable="mvn" failonerror="true">\r
-            <arg value="test" />\r
-            <arg value="${mvn.opts}" />\r
+            <arg value="test"/>\r
+            <arg value="${mvn.opts}"/>\r
         </exec>\r
     </target>\r
     <target name="test-windows" if="osfamily-windows">\r
         <exec executable="cmd" failonerror="true">\r
-            <arg value="/c" />\r
-            <arg value="mvn.bat" />\r
-            <arg value="test" />\r
-            <arg value="${mvn.opts}" />\r
+            <arg value="/c"/>\r
+            <arg value="mvn.bat"/>\r
+            <arg value="test"/>\r
+            <arg value="${mvn.opts}"/>\r
         </exec>\r
     </target>\r
 \r
     <target name="deploy" depends="package"\r
-       description="deploy nuxeo server libs to ${jee.server.cspace}">\r
+        description="deploy nuxeo server libs to ${jee.server.cspace}">\r
         <copy todir="${jee.server.cspace}/nuxeo-server">\r
-           <fileset dir="${basedir}/nuxeo-server/${nuxeo.release}">\r
+            <fileset dir="${basedir}/nuxeo-server/${nuxeo.release}">\r
                 <exclude name="**/config/*-repo-config.xml"/>\r
-           </fileset>\r
+            </fileset>\r
         </copy>\r
         <echo message="Copying Nuxeo prototype repo config file ..."/>\r
         <copy todir="${jee.server.cspace}/cspace/config/services" overwrite="true">\r
             <fileset file="${basedir}/nuxeo-server/${nuxeo.release}/config/proto-repo-config.xml"/>\r
             <filterset>\r
-               <filter token="DB_NUXEO_NAME" value="${db.nuxeo.name}" />\r
-               <!-- The specific database name will be appended to the following JDBC URL during system -->\r
-               <!-- startup, within each repository-specific config file that is 'cloned' from the -->\r
-               <!-- prototype repo config file being written to here. -->\r
-               <filter token="DB_URL" value="jdbc:${db}://${db.host}:${db.port}/"/>\r
-               <filter token="DB_SERVER_HOSTNAME" value="${db.host}"/>\r
-               <filter token="XA_DATASOURCE" value="${db.xaDataSource}" />\r
-                <filter token="NUXEO_USER" value="${db.nuxeo.user}" />\r
-                <filter token="NUXEO_PW" value="${db.nuxeo.user.password}" />\r
+                <filter token="DB_NUXEO_NAME" value="${db.nuxeo.name}"/>\r
+                <!-- The actual database name will be substituted during system -->\r
+                <!-- startup, within each repository-specific config file that is 'cloned' from the -->\r
+                <!-- prototype repo config file being written to here. -->\r
+                <filter token="DB_SERVER_HOSTNAME" value="${db.host}"/>\r
+                <filter token="DB_PORT" value="${db.port}"/>\r
+                <filter token="DB_JDBC_OPTIONS" value="${db.jdbc.urloptions.encoded}"/>\r
+                <filter token="XA_DATASOURCE" value="${db.xaDataSource}"/>\r
+                <filter token="NUXEO_USER" value="${db.nuxeo.user}"/>\r
+                <filter token="NUXEO_PW" value="${db.nuxeo.user.password}"/>\r
             </filterset>\r
         </copy>\r
         <ant antfile="nuxeo-platform-collectionspace/build.xml" target="deploy" inheritall="false"/>\r
         <ant antfile="nuxeo-platform-listener/build.xml" target="deploy" inheritall="false"/>\r
-                               <!-- Disabled due to integration issues between ImageMagick and Ghostscript on Linux systems        \r
+        <!-- Disabled due to integration issues between ImageMagick and Ghostscript on Linux systems        \r
         <ant antfile="nuxeo-platform-thumbnail/build.xml" target="deploy" inheritall="false"/>\r
         -->\r
     </target>\r
 \r
-    <target name="undeploy"\r
-       description="undeploy nuxeo server libs from ${jee.server.cspace}">\r
+    <target name="undeploy" description="undeploy nuxeo server libs from ${jee.server.cspace}">\r
         <delete dir="${jee.server.cspace}/nuxeo-server/bundles"/>\r
         <delete dir="${jee.server.cspace}/nuxeo-server/config"/>\r
         <delete dir="${jee.server.cspace}/nuxeo-server/lib"/>\r
-        <delete file="${jee.server.cspace}/cspace/config/services/proto-repo-config.xml" failonerror="false"/>\r
+        <delete file="${jee.server.cspace}/cspace/config/services/proto-repo-config.xml"\r
+            failonerror="false"/>\r
         <ant antfile="nuxeo-platform-collectionspace/build.xml" target="undeploy" inheritall="false"/>\r
         <ant antfile="nuxeo-platform-listener/build.xml" target="undeploy" inheritall="false"/>\r
-               <ant antfile="nuxeo-platform-quote/build.xml" target="undeploy" inheritall="false"/>\r
-               <ant antfile="nuxeo-platform-quote-api/build.xml" target="undeploy" inheritall="false"/>\r
-               <!-- Disabled due to integration issues between ImageMagick and Ghostscript on Linux systems\r
+        <ant antfile="nuxeo-platform-quote/build.xml" target="undeploy" inheritall="false"/>\r
+        <ant antfile="nuxeo-platform-quote-api/build.xml" target="undeploy" inheritall="false"/>\r
+        <!-- Disabled due to integration issues between ImageMagick and Ghostscript on Linux systems\r
                <ant antfile="nuxeo-platform-thumbnail/build.xml" target="undeploy" inheritall="false"/>\r
                -->\r
     </target>\r
 \r
-    <target name="dist"\r
-       description="generate distribution for nuxeo server libs" depends="package">\r
+    <target name="dist" description="generate distribution for nuxeo server libs" depends="package">\r
         <copy todir="${services.trunk}/${dist.server.cspace}/nuxeo-server">\r
             <fileset dir="${basedir}/nuxeo-server"/>\r
         </copy>\r
index 5e927477632d48b95ded9f026876be8b6aa385d2..fa925a646955134d1e6d3d3e26311df670b2b215 100644 (file)
                 <clustering enabled="false" delay="1000" />                
                 <binaryStore path="" /> <!-- Default value will be repository/database name.  Can be partial or full system path.  Partial path is relative to Nuxeo's data dir -->
                 <xa-datasource>@XA_DATASOURCE@</xa-datasource> <!-- The transactional datasource for Nuxeo -->
-                <!-- While the following element's value is primarily inserted during 'ant deploy' -->
-                <!-- the database name at the end of this JDBC URL is added during system startup. -->                         
-                <property name="URL">@DB_URL@</property>
                 <property name="ServerName">@DB_SERVER_HOSTNAME@</property>
-                <!-- The value of the following element is added during system startup. -->                            
-                <property name="DatabaseName"></property>
+                <property name="DatabaseName"></property> <!-- The value of the database name element is inserted during system startup. -->
+                <property name="JDBCOptions">@DB_JDBC_OPTIONS@</property>
+                <property name="PortNumber">@DB_PORT@</property>
                 <property name="User">@NUXEO_USER@</property>
                 <property name="Password">@NUXEO_PW@</property>
             </repository>
index 176cf6a109d32b7cd33105b0c7b54033bafa0553..56e3e61878b35063794ddcd2b3fb484fb65100e5 100644 (file)
@@ -140,7 +140,38 @@ db.host=localhost
 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
+# JDBC options that can be added to the database URL.  We need to supply an "encoded" version\r
+# of the options for cases where the URL is processed inside of XML scripts/files\r
 #\r
-db.jdbc.csadmin.url=${db.jdbc.baseurl}/${db.csadmin.name}\r
-db.jdbc.cspace.url=${db.jdbc.baseurl}/${db.cspace.name}\r
+\r
+# Use the following JDBC options to enable CSpace to establish SSL\r
+# connections with the database server.\r
+#\r
+# ssl=true ;means we can talk SSL to the database server\r
+# sslfactory ;set this to the SSL factory class.  The default is to perform validation.  Use NonValidatingFactory class to skip validation\r
+# foo=true ;an extra "throw way" options seems to be needed to prevent parsing errors for some tools/code.  \r
+\r
+#\r
+# Here is an example of how to set the JDBC options for connecting to an SSL enabled\r
+# PostgreSQL server.\r
+#\r
+#db.jdbc.urloptions=ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory&foo=true\r
+#db.jdbc.urloptions.encoded=ssl=true&amp;sslfactory=org.postgresql.ssl.NonValidatingFactory&amp;foo=true\r
+\r
+#\r
+# By default, as placeholders, we'll supply meaningless JDBC options -both encoded and non-encode forms.\r
+#\r
+db.jdbc.urloptions=foo=true&bar=false\r
+db.jdbc.urloptions.encoded=foo=true&amp;bar=false\r
+\r
+#\r
+# JDBC urls that CollectionSpace needs to talk to the "admin" database, Nuxeo databases, and the "cspace" database (i.e., the AuthN/AuthZ database)\r
+#\r
+db.jdbc.csadmin.url=${db.jdbc.baseurl}/postgres?${db.jdbc.urloptions}\r
+db.jdbc.csadmin.url.encoded=${db.jdbc.baseurl}/postgres?${db.jdbc.urloptions.encoded}\r
+\r
+db.jdbc.nuxeo.url=${db.jdbc.baseurl}/${DatabaseName}?${db.jdbc.urloptions}\r
+db.jdbc.nuxeo.url.encoded=${db.jdbc.baseurl}/${DatabaseName}?${db.jdbc.urloptions.encoded}\r
+\r
+db.jdbc.cspace.url=${db.jdbc.baseurl}/cspace?${db.jdbc.urloptions}\r
+db.jdbc.cspace.url.encoded=${db.jdbc.baseurl}/cspace?${db.jdbc.urloptions.encoded}
\ No newline at end of file
index 87efe6251c64b1d7d0897799c8cf0386c27f9caa..20ac2d6f87a887cd4840ef3bac6b35741334b9fe 100644 (file)
@@ -59,7 +59,7 @@
                <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.encoded}"\r
                                                         userid="${db.csadmin.user}"\r
                                                         password="${db.csadmin.user.password}"\r
                                                         autocommit="true"\r
@@ -75,7 +75,7 @@
                <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.encoded}"\r
                                                         userid="${db.csadmin.user}"\r
                                                         password="${db.csadmin.user.password}"\r
                                                         autocommit="true"\r
index 4edec1614e318c7c5f33d259ea8662d550f9cbd7..430644f5b48278c25f8d955a35075464e9dbe9f2 100644 (file)
@@ -24,7 +24,7 @@
                        <property name="hibernate.connection.driver_class" value="${db.jdbc.driver.class}"/>\r
                        <property name="hibernate.connection.username" value="${db.cspace.user}"/>\r
                        <property name="hibernate.connection.password" value="${db.cspace.user.password}"/>\r
-                       <property name="hibernate.connection.url" value="jdbc:${db}://${db.host}:${db.port}/${db.cspace.name}"/>\r
+                       <property name="hibernate.connection.url" value="${db.jdbc.cspace.url.encoded}"/>\r
             <!--property name="hibernate.hbm2ddl.auto" value="create-drop"/-->\r
         </properties>\r
 \r
index 60608988be21e4554d3eab90190b254fb46836ab..39201643a339d2047cc28b963a8d07423c051d73 100644 (file)
@@ -69,7 +69,7 @@
                username="${db.cspace.user}"
                password="${db.cspace.user.password}"
                driverClassName="${db.jdbc.driver.class}"
-               url="${db.jdbc.cspace.url}"
+               url="${db.jdbc.cspace.url.encoded}"
                maxActive="8"
                maxIdle="4"
                testWhileIdle="true"
@@ -82,7 +82,7 @@
                username="${db.nuxeo.user}"
                password="${db.nuxeo.user.password}"
                driverClassName="${db.jdbc.driver.class}"
-               url="jdbc:${db}://${db.host}:${db.port}/${DatabaseName}"
+               url="${db.jdbc.nuxeo.url.encoded}"
                maxActive="8"
                maxIdle="4"
                testWhileIdle="true"
@@ -95,7 +95,7 @@
                username="${db.csadmin.user}"
                password="${db.csadmin.user.password}"
                driverClassName="${db.jdbc.driver.class}"
-               url="${db.jdbc.csadmin.url}"
+               url="${db.jdbc.csadmin.url.encoded}"
                maxActive="8"
                maxIdle="4"
                testWhileIdle="true"
                username="${db.reader.user}"
                password="${db.reader.user.password}"
                driverClassName="${db.jdbc.driver.class}"
-               url="jdbc:${db}://${db.host}:${db.port}/${DatabaseName}"
+               url="${db.jdbc.nuxeo.url.encoded}"
                maxActive="8"
                maxIdle="4"
                testWhileIdle="true"
index 83b2f3df9979769985f89cb16c242b2238141b21..914ced66487abc5896edefe37c170130e64e3617 100644 (file)
         <property name="src.hibernate.cfg" value="${basedir}/src/test/resources/hibernate.cfg.xml"/>\r
         <property name="dest.hibernate.cfg" value="${basedir}/target/test-classes/hibernate.cfg.xml"/>\r
         <delete file="${dest.hibernate.cfg}" verbose="true" />\r
-        <filter token="DB_CSPACE_URL" value="${db.jdbc.cspace.url}" />\r
+        <filter token="DB_CSPACE_URL" value="${db.jdbc.cspace.url.encoded}" />\r
         <filter token="DB_DRIVER_CLASS" value="${db.jdbc.driver.class}" />\r
         <filter token="DB_CSPACE_USER" value="${db.cspace.user}" />\r
         <filter token="DB_CSPACE_PASSWORD" value="${env.DB_CSPACE_PASSWORD}" /> <!-- double-sub from ${db.cspace.user.password} fails -->\r
index 8c4188508f142e6caccebedd4746322e9b9905cf..875a72f9a7a4f694b80108067f28828ac2763481 100644 (file)
@@ -16,7 +16,7 @@
             <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
             <property name="hibernate.connection.username" value="test"/>
             <property name="hibernate.connection.password" value="test"/>
-            <property name="hibernate.connection.url" value="jdbc:mysql://${db.host}:3306/cspace"/-->
+            <property name="hibernate.connection.url" value="${db.jdbc.cspace.url.encoded}"/-->
         </properties>
     </persistence-unit>
 </persistence>
index 01288538f25c38fb7b078c0c3f1ad2bcd0991d89..09106c56f915e125ff74c765455c5d1d90f04fc7 100644 (file)
         <property name="src.hibernate.cfg" value="${basedir}/src/test/resources/hibernate.cfg.xml"/>\r
         <property name="dest.hibernate.cfg" value="${basedir}/target/test-classes/hibernate.cfg.xml"/>\r
         <delete file="${dest.hibernate.cfg}" verbose="true" />\r
-        <filter token="DB_CSPACE_URL" value="${db.jdbc.cspace.url}" />\r
+        <filter token="DB_CSPACE_URL" value="${db.jdbc.cspace.url.encoded}" />\r
         <filter token="DB_DRIVER_CLASS" value="${db.jdbc.driver.class}" />\r
         <filter token="DB_CSPACE_USER" value="${db.cspace.user}" />\r
         <filter token="DB_CSPACE_PASSWORD" value="${env.DB_CSPACE_PASSWORD}" /> <!-- double-sub from ${db.cspace.user.password} fails -->\r
index 3acf32ec0ae4860dd2df04f5c23150b5fb67c034..c3b7594bd3725ff1cd538d9360b3dcc67235d89c 100644 (file)
         <property name="dest.appContext.cfg" value="${basedir}/target/classes/applicationContext-authorization-test.xml"/>\r
         <delete file="${dest.hibernate.cfg}" verbose="true" />\r
         <delete file="${dest.appContext.cfg}" verbose="true" />\r
-        <filter token="DB_CSPACE_URL" value="${db.jdbc.cspace.url}" />\r
+        <filter token="DB_CSPACE_URL" value="${db.jdbc.cspace.url.encoded}" />\r
         <filter token="DB_DRIVER_CLASS" value="${db.jdbc.driver.class}" />\r
         <filter token="DB_CSPACE_USER" value="${db.cspace.user}" />\r
         <filter token="DB_CSPACE_PASSWORD" value="${env.DB_CSPACE_PASSWORD}" /> <!-- double-sub from ${db.cspace.user.password} fails -->\r
index 866d555cc7c67e62e41024cd76744dc522a29a2d..d92c1735a4134b1d96fc344ed0e34c91e1ba28ae 100644 (file)
@@ -43,7 +43,7 @@
     
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
         <property name="driverClassName" value="${db.jdbc.driver.class}"/>
-        <property name="url" value="jdbc:${db}://${db.host}:${db.port}/${db.cspace.name}"/>
+        <property name="url" value="${db.jdbc.cspace.url.encoded}"/>
         <property name="username" value="${db.cspace.user}"/>
         <property name="password" value="${db.cspace.user.password}"/>
     </bean>    
index c8f8bb4723b645f896c6f0bd9482d6f485b8afd6..d08e8231a6760bc76df85af0c85d337638b9e7ac 100644 (file)
@@ -916,35 +916,44 @@ public class ServiceMain {
                String cspaceInstanceId, String binaryStorePath) {\r
         String databaseName = JDBCTools.getDatabaseName(repositoryName, cspaceInstanceId);\r
 \r
-        repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,\r
-                "/component", "name", String.format("config:%s-repository", repositoryName));\r
+        repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc, "/component", "name",\r
+                String.format("config:%s-repository", repositoryName));\r
+        \r
         // Text substitutions within first extension point, "repository"\r
         repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,\r
-                REPOSITORY_EXTENSION_POINT_XPATH + "/repository", "name", repositoryName);\r
+                REPOSITORY_EXTENSION_POINT_XPATH + "/repository", "name",\r
+                repositoryName);\r
+        \r
         repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,\r
-                REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository", "name", repositoryName);\r
+                REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository", "name",\r
+                repositoryName);\r
+        \r
         repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,\r
                 REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository/binaryStore", "path",\r
                 Tools.isBlank(binaryStorePath) ? repositoryName : binaryStorePath);  // Can be either partial or full path.  Partial path will be relative to Nuxeo's data directory\r
-        String url = XmlTools.getElementValue(repoConfigDoc,\r
-                REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository/property[@name='URL']");\r
-        if (! Tools.isBlank(url)) {\r
-            repoConfigDoc = XmlTools.setElementValue(repoConfigDoc,\r
-                    REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository/property[@name='URL']",\r
-                    url + databaseName);\r
-        }\r
+\r
+        /* Create the JDBC url options if any exist */\r
+        String jdbcOptions = XmlTools.getElementValue(repoConfigDoc,\r
+                REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository/property[@name='JDBCOptions']");\r
+        jdbcOptions = Tools.isBlank(jdbcOptions) ? "" : "?" + jdbcOptions;\r
+        \r
         repoConfigDoc = XmlTools.setElementValue(repoConfigDoc,\r
                 REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository/property[@name='DatabaseName']",\r
-                databaseName);\r
+                databaseName + jdbcOptions);\r
+        \r
         // Text substitutions within second extension point, "repositories" \r
         repoConfigDoc = XmlTools.setElementValue(repoConfigDoc,\r
                 REPOSITORIES_EXTENSION_POINT_XPATH + "/documentation",\r
                 String.format("The %s repository", repositoryName));\r
+        \r
         repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,\r
-                REPOSITORIES_EXTENSION_POINT_XPATH + "/repository", "name", repositoryName);\r
+                REPOSITORIES_EXTENSION_POINT_XPATH + "/repository", "name",\r
+                repositoryName);\r
+        \r
         repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,\r
                 REPOSITORIES_EXTENSION_POINT_XPATH + "/repository", "label",\r
                 String.format("%s Repository", repositoryName));\r
+        \r
         return repoConfigDoc;\r
     }\r
 \r