<schema name="dublincore" />
<schema name="collectionspace_core" />
</doctype>
-
+
<!-- A facet for marking blobs/images that came from extern URLs -->
<facet name="URLSourcedPicture">
- </facet>
+ </facet>
</extension>
-
+
<!-- A schema def and doctype def for the "Subitem" document type. -->
<extension target="org.nuxeo.ecm.core.schema.TypeService" point="schema">
<schema name="subitem" prefix="subitem" src="schemas/subitem.xsd" />
</extension>
-
+
<extension target="org.nuxeo.ecm.core.schema.TypeService" point="doctype">
<doctype name="Subitem" extends="CollectionSpaceDocument">
<schema name="common" />
<schema name="subitem" />
</doctype>
</extension>
-
+
+ <!--
+ As of Nuxeo 9.3, Nuxeo does not do sparse updates by default.
+ Set clearComplexPropertyBeforeSet to false to restore this behavior.
+ -->
+ <extension target="org.nuxeo.ecm.core.schema.TypeService" point="configuration">
+ <configuration>
+ <clearComplexPropertyBeforeSet>false</clearComplexPropertyBeforeSet> <!-- false is DEPRECATED since 9.3 -->
+ </configuration>
+ </extension>
+
<!--
Register new MIME types that are not in the default set
-->
import javax.ws.rs.core.HttpHeaders;
import org.apache.commons.lang3.StringUtils;
+
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
<parent>
<artifactId>org.collectionspace.services.3rdparty.nuxeo.listener</artifactId>
<groupId>org.collectionspace.services</groupId>
- <version>5.2-SNAPSHOT</version>
+ <version>5.2-SNAPSHOT</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<name>org.collectionspace.services.listener.botgarden</name>
<url>http://maven.apache.org</url>
-
+
<dependencies>
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<dependency>
<groupId>org.nuxeo.ecm.platform</groupId>
<artifactId>nuxeo-platform-filemanager-api</artifactId>
- <version>${nuxeo.platform.version}</version>
+ <version>${nuxeo.platform.version}</version>
</dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
</dependency>
</dependencies>
-
+
<build>
<resources>
<resource>
</plugin>
</plugins>
</build>
-
+
</project>
<name>org.collectionspace.services.listener.naturalhistory</name>
<url>http://maven.apache.org</url>
-
+
<dependencies>
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<dependency>
<groupId>org.nuxeo.ecm.platform</groupId>
<artifactId>nuxeo-platform-filemanager-api</artifactId>
- <version>${nuxeo.platform.version}</version>
+ <version>${nuxeo.platform.version}</version>
</dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
</dependency>
</dependencies>
-
+
<build>
<resources>
<resource>
</plugin>
</plugins>
</build>
-
+
</project>
<artifactId>nuxeo-platform-filemanager-api</artifactId>
<version>${nuxeo.platform.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.nuxeo.ecm.platform</groupId>
+ <artifactId>nuxeo-platform-imaging-api</artifactId>
+ <version>${nuxeo.platform.version}</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
</project>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
</plugin>
</plugins>
</build>
-
+
</project>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
-
+
<dependencies>
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<dependency>
<groupId>org.nuxeo.ecm.platform</groupId>
<artifactId>nuxeo-platform-filemanager-api</artifactId>
- <version>${nuxeo.platform.version}</version>
+ <version>${nuxeo.platform.version}</version>
</dependency>
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<artifactId>nuxeo-core-convert</artifactId>
<version>${nuxeo.core.version}</version>
</dependency>
- <dependency>
- <groupId>org.nuxeo.ecm.platform</groupId>
- <artifactId>nuxeo-platform-imaging-core</artifactId>
- <version>${nuxeo.platform.version}</version>
- </dependency>
+ <dependency>
+ <groupId>org.nuxeo.ecm.platform</groupId>
+ <artifactId>nuxeo-platform-imaging-core</artifactId>
+ <version>${nuxeo.platform.version}</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
-
+
<build>
<resources>
<resource>
</plugin>
</plugins>
</build>
-
+
</project>
httpEnabled="true" />
</extension>
-->
-
- <extension target="org.nuxeo.elasticsearch.ElasticSearchComponent"
+
+ <!-- <extension target="org.nuxeo.elasticsearch.ElasticSearchComponent"
point="elasticSearchRemote">
<elasticSearchRemote
clusterName="elasticsearch"
clientTransportIgnoreClusterName="false"
clientTransportPingTimeout="5s"
clientTransportNodesSamplerInterval="5s" />
- </extension>
+ </extension> -->
+
+ <!-- <extension target="org.nuxeo.elasticsearch.ElasticSearchComponent" point="elasticSearchClient">
+ <elasticSearchClient class="org.nuxeo.elasticsearch.client.ESRestClientFactory">
+ <option name="addressList">http://localhost:9200</option>
+ <option name="connection.timeout.ms">5000</option>
+ <option name="socket.timeout.ms">20000</option>
+ </elasticSearchClient>
+ </extension> -->
%elasticSearchIndex_extensions%
</component>
-
--- /dev/null
+This folder contains the Nuxeo modules
+These modules are required to run the nuxeo framework
--- /dev/null
+<?xml version="1.0"?>
+<component name="org.nuxeo.ecm.core.convert.config">
+ <extension target="org.nuxeo.ecm.core.convert.service.ConversionServiceImpl"
+ point="configuration">
+ <configuration>
+ <!-- define directory location for caching : As of Nuxeo 7, defaults to ${NUXEO_HOME}/data/convertcache -->
+ <!-- <cachingDirectory>full-path-to-a-directory</cachingDirectory> -->
+
+ <!-- GC (garbage collection) interval in minutes (default = 10 minutes ) -->
+ <!-- Garbage collector will empty the dir and sub-dirs of all files -->
+ <gcInterval>60</gcInterval>
+
+ <!-- maximum size for disk cache in KB (default to 10*1024) -->
+ <diskCacheSize>10240</diskCacheSize>
+
+ <!-- Enables or disables caching (default = true)-->
+ <enableCache>true</enableCache>
+ </configuration>
+ </extension>
+</component>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>
+<component name="org.nuxeo.ecm.platform.query.api.PageProviderservice.replacers.defaultConfig">
+
+ <extension target="org.nuxeo.ecm.platform.query.api.PageProviderService" point="replacers">
+
+ <replacer withClass="org.nuxeo.elasticsearch.provider.ElasticSearchNxqlPageProvider"
+ enabled="${elasticsearch.enabled:=true}">
+ <provider>default_search</provider>
+ </replacer>
+
+ </extension>
+</component>
--- /dev/null
+<?xml version="1.0"?>
+
+<!--
+ This is the configuration the CollectionSpace services used when it was deployed on the JBoss AS. However,
+ it still works (and is required) in our Apache Tomcat deployment.
+
+ 12/8/2011 - We need to confirm with Nuxeo that this is correct configuration for their LoginComponent.
+ -->
+<component name="org.nuxeo.ecm.platform.login.LoginConfig"
+ version="1.0">
+ <documentation>
+ Login modules used on JBoss
+ @author Bogdan Stefanescu (bs@nuxeo.com)
+ </documentation>
+
+
+ <extension target="org.nuxeo.runtime.LoginComponent" point="domains">
+
+ <domain name="nuxeo-system-login">
+ <login-module code="org.nuxeo.runtime.api.login.SystemLoginModule"
+ flag="required" />
+ <login-module code="org.nuxeo.ecm.core.api.local.ClientLoginModule"
+ flag="required">
+ <option name="password-stacking">true</option>
+ <option name="multi-threaded">true</option>
+ </login-module>
+ </domain>
+
+
+ <domain name="nuxeo-webengine">
+ <login-module code="org.nuxeo.ecm.platform.login.NuxeoLoginModule"
+ flag="required">
+ <option name="principalClassName">org.nuxeo.ecm.platform.login.NuxeoPrincipal
+ </option>
+ <option name="useUserIdentificationInfoCB">true</option>
+ </login-module>
+ <!--login-module code="org.nuxeo.ecm.core.api.local.ClientLoginModule"
+ flag="required"> <option name="password-stacking">true</option> <option name="multi-threaded">true</option>
+ </login-module -->
+ </domain>
+
+ </extension>
+
+
+</component>
--- /dev/null
+NuxeoContainer.autoactivation=true
--- /dev/null
+# application instance config
+org.nuxeo.ecm.instance.host=localhost
+
+# enable/disable Elasticsearch
+elasticsearch.enabled=false
+audit.elasticsearch.enabled=false
+
+# runtime remoting config
+org.nuxeo.runtime.server.locator=socket://0.0.0.0:62474/?datatype=nuxeo
+org.nuxeo.runtime.server.enabled=false
+org.nuxeo.runtime.server.host=${org.nuxeo.ecm.instance.host}
+
+# streaming config
+org.nuxeo.runtime.streaming.isServer=false
+org.nuxeo.runtime.streaming.serverLocator=socket://${org.nuxeo.ecm.instance.host}:62474/?datatype=nuxeo
+
+# runtime management config
+org.nuxeo.runtime.management.exist=false
+org.nuxeo.runtime.management.serverRmiPort=2100
+
+# needed for the JNDI auto configuration of clients
+# you need to change this if using JNDI through HTTP
+nuxeo-client-jndi.java.naming.provider.url=jnp://%s:%s
+nuxeo-client-jndi.java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
+nuxeo-client-jndi.java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
+
+# for email attachment, to decode the encoded(utf) filenames.
+mail.mime.decodefilename=true
+
+# LiveEdit configuration detection (client/server/both)
+org.nuxeo.ecm.platform.liveedit.config=client
+
+# Uncomment to activate Nuxeo Runtime REST API for Management
+# accessible via http://server:port/nuxeo/site/server/html on JBoss
+#org.nuxeo.runtime.rest.management=true
+
+# size limit to use the specific download servlet for big files (use SI or IEC prefix)
+#org.nuxeo.big.file.size.limit=5Mi
+
+###
+# Older settings that were used with CollectionSpace and Nuxeo v5.5
+###
+
+#org.nuxeo.ecm.instance.name=Nuxeo 5.5
+#org.nuxeo.ecm.instance.description=Nuxeo ECM server
+
+# product config
+#org.nuxeo.ecm.product.name=Nuxeo 5.5
+#org.nuxeo.ecm.product.version=5.5
+
+# which sample to run
+#org.nuxeo.ecm.sample.class=org.nuxeo.ecm.sample.streaming.StreamingExample
+
+# avoid initializing nuxeo relations at startup (for faster startup)
+#org.nuxeo.ecm.platform.relations.initOnStartup=false
+
+# context path of the application
+#org.nuxeo.ecm.contextPath=/nuxeo
--- /dev/null
+<?xml version="1.0"?>
+<component name="org.nuxeo.runtime.datasource.testsci.contrib">
+
+ <extension target="org.nuxeo.runtime.datasource" point="datasources">
+ <datasource name="jdbc/testsci_domain" driverClassName="org.postgresql.Driver"
+ maxPoolSize="100" minPoolSize="5" blockingTimeoutMillis="10000"
+ url="jdbc:postgresql://localhost:5432/testsci_domain" validationQuery=""
+ username="nuxeo6" password="nuxeo6"
+ accessToUnderlyingConnectionAllowed="true" >
+ </datasource>
+ <link name="jdbc/repository_testsci_domain" global="jdbc/testsci_domain" type="javax.sql.DataSource" />
+
+ <!--
+ These links need to be moved into the context.xml file and become <Resource> instead of <link>
+ -->
+ <link name="jdbc/repository_default" global="jdbc/default" type="javax.sql.DataSource" />
+ <link name="jdbc/repository_default" global="jdbc/default" type="javax.sql.DataSource"/>
+ <link name="jdbc/NuxeoDS" global="jdbc/default" type="javax.sql.DataSource" />
+ <link name="jdbc/nxsqldirectory" global="jdbc/default" type="javax.sql.DataSource" />
+ <link name="jdbc/nxrelations-default-jena" global="jdbc/default" type="javax.sql.DataSource" />
+ <link name="jdbc/comment-relations" global="jdbc/default" type="javax.sql.DataSource" />
+ <link name="jdbc/nxaudit-logs" global="jdbc/default" type="javax.sql.DataSource" />
+ <link name="jdbc/nxjbpm" global="jdbc/default" type="javax.sql.DataSource" />
+ <link name="jdbc/placeful_service_ds" global="jdbc/default" type="javax.sql.DataSource" />
+ <link name="jdbc/nxwebwidgets" global="jdbc/default" type="javax.sql.DataSource" />
+ <link name="jdbc/nxuidsequencer" global="jdbc/default" type="javax.sql.DataSource" />
+
+ <!-- These properties are passed into the CSpace code that generates the final version
+ of this Nuxeo configuration file.
+ -->
+ <property name="ServerName">@DB_SERVER_HOSTNAME@</property>
+ <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>
+ </extension>
+</component>
--- /dev/null
+<?xml version="1.0"?>
+<component name="org.nuxeo.elasticsearch.defaultConfig">
+ <require>org.nuxeo.elasticsearch.ElasticSearchComponent</require>
+
+ <!--
+ <extension target="org.nuxeo.elasticsearch.ElasticSearchComponent"
+ point="elasticSearchEmbeddedServer">
+ <elasticSearchLocal
+ clusterName="elasticsearch"
+ nodeName="nuxeoNode"
+ pathData="/usr/local/share/apache-tomcat-8.5.40/nuxeo-server/data/elasticsearch"
+ pathLogs="/usr/local/share/apache-tomcat-8.5.40/nuxeo-server/log/elasticsearch"
+ httpEnabled="true" />
+ </extension>
+ -->
+
+ <extension target="org.nuxeo.elasticsearch.ElasticSearchComponent" point="elasticSearchClient">
+ <elasticSearchClient class="org.nuxeo.elasticsearch.client.ESRestClientFactory">
+ <option name="addressList">http://localhost:9200</option>
+ </elasticSearchClient>
+ </extension>
+
+ %elasticSearchIndex_extensions%
+
+ </component>
--- /dev/null
+<extension target="org.nuxeo.elasticsearch.ElasticSearchComponent" point="elasticSearchIndex">
+ <elasticSearchIndex name="index_name_placeholder" type="doc" repository="repository_name_placeholder">
+ <fetchFromSource>
+ <include>ecm:*</include>
+ <include>dc:*</include>
+ <exclude>ecm:binarytext</exclude>
+ </fetchFromSource>
+
+ <settings>
+ {
+ "analysis" : {
+ "char_filter" : {
+ "refname_displayname" : {
+ "type" : "pattern_replace",
+ "pattern" : "^.*?'(.*)'$",
+ "replacement" : "$1"
+ },
+ "refname_shortid" : {
+ "type" : "pattern_replace",
+ "pattern" : "^.*:item:name\\((.*)\\).*$",
+ "replacement" : "$1"
+ },
+ "doctype_tenant_unqualified" : {
+ "type" : "pattern_replace",
+ "pattern" : "^(.*?)(Tenant.*)?$",
+ "replacement" : "$1"
+ }
+ },
+ "filter" : {
+ "en_stem_filter" : {
+ "name" : "minimal_english",
+ "type" : "stemmer"
+ },
+ "en_stop_filter" : {
+ "stopwords" : [
+ "_english_"
+ ],
+ "type" : "stop"
+ },
+ "fr_elision_filter" : {
+ "articles" : [
+ "c",
+ "l",
+ "m",
+ "t",
+ "qu",
+ "n",
+ "s",
+ "j"
+ ],
+ "type" : "elision"
+ },
+ "fr_stem_filter" : {
+ "name" : "minimal_french",
+ "type" : "stemmer"
+ },
+ "fr_stop_filter" : {
+ "stopwords" : [
+ "_french_"
+ ],
+ "type" : "stop"
+ }
+ },
+ "tokenizer" : {
+ "path_tokenizer" : {
+ "delimiter" : "/",
+ "type" : "path_hierarchy"
+ }
+ },
+ "analyzer" : {
+ "en_analyzer" : {
+ "alias" : "fulltext",
+ "filter" : [
+ "lowercase",
+ "en_stop_filter",
+ "en_stem_filter",
+ "asciifolding"
+ ],
+ "type" : "custom",
+ "tokenizer" : "standard"
+ },
+ "fr_analyzer" : {
+ "filter" : [
+ "lowercase",
+ "fr_stop_filter",
+ "fr_stem_filter",
+ "asciifolding",
+ "fr_elision_filter"
+ ],
+ "type" : "custom",
+ "tokenizer" : "standard"
+ },
+ "path_analyzer" : {
+ "type" : "custom",
+ "tokenizer" : "path_tokenizer"
+ },
+ "refname_displayname_analyzer" : {
+ "type" : "custom",
+ "tokenizer" : "keyword",
+ "char_filter" : ["refname_displayname"]
+ },
+ "refname_displayname_fulltext_analyzer" : {
+ "char_filter" : ["refname_displayname"],
+ "filter" : [
+ "lowercase",
+ "en_stop_filter",
+ "en_stem_filter",
+ "asciifolding"
+ ],
+ "type" : "custom",
+ "tokenizer" : "standard"
+ },
+ "refname_shortid_analyzer" : {
+ "type" : "custom",
+ "tokenizer" : "keyword",
+ "char_filter" : ["refname_shortid"]
+ },
+ "doctype_analyzer" : {
+ "type" : "custom",
+ "tokenizer" : "keyword",
+ "char_filter" : ["doctype_tenant_unqualified"]
+ },
+ "sorting_analyzer" : {
+ "filter" : [
+ "lowercase",
+ "asciifolding"
+ ],
+ "type" : "custom",
+ "tokenizer" : "keyword"
+ },
+ "default" : {
+ "type" : "custom",
+ "tokenizer" : "keyword"
+ }
+ }
+ }
+ }
+ </settings>
+
+ <mapping>
+ {
+ "_size" : {
+ "enabled" : true
+ },
+ "_all" : {
+ "analyzer" : "fulltext"
+ },
+ "properties" : {
+ "ecm:currentLifeCycleState": {
+ "type": "string",
+ "include_in_all": "false"
+ },
+ "ecm:primaryType": {
+ "type": "string",
+ "analyzer" : "doctype_analyzer",
+ "include_in_all": "false"
+ }
+ }
+ }
+ </mapping>
+ </elasticSearchIndex>
+</extension>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>
+<!--
+ This is a prototype/template file for Nuxeo repository configuration files.
+ For each tenant that has their own repository specified in the CollectionSpace
+ tenant bindings file, we will create a corresponding Nuxeo repository config-
+ uration file. You won't have to change the value for most of these elements
+ and attributes because they will be set when CollectionSpace starts.
+
+ *** NOTE *** One value you may want to change is the 'binaryStore' path which is the location
+ that Nuxeo places binary files like images and PDF documents. Be sure to read the comment to
+ the right of the <binaryStore> element below.
+-->
+
+<!-- *** WARNING *** Don't manually change the values here unless you know exactly what you're doing. -->
+
+<!-- Values in the following elements are primarily added during execution -->
+<!-- of the 'ant deploy' command, within the Services source code tree. -->
+<!-- (Several values are also added during system startup, into repository-specific -->
+<!-- 'clones' of this prototype configuration file, as noted below.) -->
+<!-- See http://doc.nuxeo.com/display/ADMINDOC/VCS+Configuration for more config details -->
+<component name="config:default-repository">
+ <extension target="org.nuxeo.ecm.core.blob.BlobManager" point="configuration">
+ <blobprovider name="default">
+ <class>org.nuxeo.ecm.core.blob.binary.DefaultBinaryManager</class>
+ <property name="path"></property>
+ <property name="key"></property>
+ </blobprovider>
+ </extension>
+ <extension target="org.nuxeo.ecm.core.storage.sql.RepositoryService" point="repository">
+ <repository name="default" factory="org.nuxeo.ecm.core.storage.sql.ra.PoolingRepositoryFactory">
+ <pool minPoolSize="0" maxPoolSize="20" blockingTimeoutMillis="100" idleTimeoutMinutes="10"/>
+ <clustering enabled="false" delay="1000"/>
+ <xa-datasource>@XA_DATASOURCE@</xa-datasource> <!-- The transactional datasource for Nuxeo -->
+ <noDDL>false</noDDL>
+ <sqlInitFile>vcsconfig.sql.txt</sqlInitFile> <!-- see https://doc.nuxeo.com/display/ADMINDOC/VCS+Configuration#VCSConfiguration-DatabaseCreationOption -->
+ <aclOptimizations enabled="true"/>
+ <pathOptimizations enabled="true"/>
+ <idType>varchar</idType>
+ <indexing>
+ <fulltext disabled="false" analyzer="english">
+ <index name="default">
+ <!-- all props implied -->
+ </index>
+ <index name="title">
+ <field>dc:title</field>
+ </index>
+ <index name="description">
+ <field>dc:description</field>
+ </index>
+ </fulltext>
+ </indexing>
+ <usersSeparator key="," />
+ <property name="ServerName">@DB_SERVER_HOSTNAME@</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>
+ </extension>
+</component>
\ No newline at end of file
--- /dev/null
+nuxeo.s3storage.bucket=__bucketname__
+nuxeo.s3storage.awsid=__AWSAccessKeyId__
+nuxeo.s3storage.awssecret=__AWSSecretKey__
--- /dev/null
+#
+# A place to modify the Nuxeo database with SQL statements.
+# See https://doc.nuxeo.com/display/ADMINDOC/VCS+Configuration#VCSConfiguration-DatabaseCreationOption
+# or https://doc.nuxeo.com/nxdoc/repository-configuration/#page-title
+#
+
+#CATEGORY: afterTableCreation
+
+#
+# Add a unique constraint to the report 'name' column of the reports_common table.
+#
+LOG.INFO Adding a unique constraint to the report 'name' column of the reports_common table
+
+#TEST:
+SELECT constraint_name FROM information_schema.constraint_column_usage WHERE table_name = 'reports_common' AND constraint_name = 'reportname_unique';
+
+#IF: emptyResult
+ALTER TABLE reports_common add CONSTRAINT reportname_unique UNIQUE (name);
+
+#
+# Add a unique constraint to the batch job 'name' column of the batch_common table.
+#
+LOG.INFO Adding a unique constraint to the batch 'name' column of the batch_common table
+
+#TEST:
+SELECT constraint_name FROM information_schema.constraint_column_usage WHERE table_name = 'batch_common' AND constraint_name = 'batchname_unique';
+
+#IF: emptyResult
+ALTER TABLE batch_common add CONSTRAINT batchname_unique UNIQUE (name);
+
+#
+# Add constraint to the relations table to prevent duplicate relationships
+#
+#LOG.INFO Adding constraint to the relations table to prevent duplicate relationships
+
+#TEST:
+SELECT constraint_name FROM information_schema.constraint_column_usage WHERE table_name = 'relations_common' AND constraint_name = 'relations_unique';
+
+#IF: emptyResult
+ALTER TABLE relations_common add CONSTRAINT relations_unique UNIQUE (subjectcsid, subjectrefname, relationshiptype, objectcsid, objectrefname, active);
--- /dev/null
+org.nuxeo.app.bundles=bundles/*:plugins/*
--- /dev/null
+This folder contains static libraries used by nuxeo components
--- /dev/null
+This folder contains the external modules on top of the nuxeo platform
\ No newline at end of file
--- /dev/null
+org.nuxeo.launcher.libdirs=lib
<groupId>org.collectionspace.services</groupId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.3rdparty</artifactId>
<name>services.3rdparty</name>
<modules>
<module>nuxeo</module>
</modules>
-
+
<dependencyManagement>
<dependencies>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
--->
+-->
</build>
</project>
cspace.ui.js=${cspace.ui.webapp.name}@${cspace.ui.version}.min.js
#nuxeo
-nuxeo.release=7.10-HF17
+nuxeo.release=9.10-HF30
nuxeo.ear=nuxeo.ear
nuxeo.system=bundles
dist.deploy.nuxeo.plugins=${dist.deploy.nuxeo}/${nuxeo.plugins}
#JEE Application Server
-jee.release=apache-tomcat-7.0.64
+jee.release=apache-tomcat-8.5.40
jee.dir=${env.CSPACE_JEESERVER_HOME}
jee.home=${jee.dir}
jee.bin=${jee.home}/bin
<scope>provided</scope>
<version>4.7.2</version>
</dependency>
-
+
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
<scope>test</scope>
</dependency>
- <!-- CollectionSpace dependencies -->
+ <!-- CollectionSpace dependencies -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authorization.service</artifactId>
<artifactId>jsf-api</artifactId>
<groupId>com.sun.faces</groupId>
</exclusion>
- <exclusion>
- <artifactId>jersey-server</artifactId>
- <groupId>com.sun.jersey</groupId>
- </exclusion>
- <exclusion>
- <artifactId>jersey-servlet</artifactId>
- <groupId>com.sun.jersey</groupId>
- </exclusion>
- <exclusion>
- <artifactId>jersey-core</artifactId>
- <groupId>com.sun.jersey</groupId>
- </exclusion>
<exclusion>
<artifactId>lucene-sandbox</artifactId>
<groupId>org.apache.lucene</groupId>
<groupId>com.sun.xml.bind</groupId>
</exclusion>
</exclusions>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.account.service</artifactId>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authorization-mgt.import</artifactId>
</exclusion>
- </exclusions>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.systeminfo.service</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
+ <dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.media.service</artifactId>
<version>${project.version}</version>
</exclusion>
</exclusions>
</dependency>
-
+
<!-- AspectJ dependencies -->
<dependency>
<groupId>org.aspectj</groupId>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
- </dependency>
+ </dependency>
<!-- javax -->
<dependency>
- <artifactId>servlet-api</artifactId>
- <groupId>javax.servlet</groupId>
- <scope>provided</scope>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-servlet-api</artifactId>
+ <version>${tomcat.version}</version>
+ <scope>provided</scope>
</dependency>
<!-- jboss -->
<version>2.2.2.SP8</version>
<scope>provided</scope>
</dependency>
-
- <!-- nuxeo -->
+
+ <!-- nuxeo -->
<dependency>
<groupId>org.nuxeo.common</groupId>
<artifactId>nuxeo-common</artifactId>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</exclusion>
- </exclusions>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<dependency>
<groupId>org.nuxeo.lib.core</groupId>
<artifactId>nuxeo-core-storage-sql-extensions</artifactId>
- <version>${nuxeo.core.version}</version>
+ <version>${nuxeo.core.version}</version>
</dependency>
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<artifactId>nuxeo-core-query</artifactId>
- <version>${nuxeo.core.version}</version>
+ <version>${nuxeo.core.version}</version>
</dependency>
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<version>5.5-NXP-8140</version>
need to use this patched Nuxeo artifact that is only available on our public Maven
repository -see http://nightly.collectionspace.org:8081/artifactory
-
+
Once the issue is resolved and a public version of the artifact becomes available, we
should revert this dependency's version to be the following:
<version>${nuxeo.core.version}</version>
<dependency>
<groupId>org.nuxeo.ecm.platform</groupId>
<artifactId>nuxeo-platform-imaging-core</artifactId>
- <version>${nuxeo.core.version}</version>
+ <version>${nuxeo.platform.version}</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.nuxeo.ecm.platform</groupId>
<artifactId>nuxeo-platform-audit-api</artifactId>
<version>${nuxeo.core.version}</version>
- <exclusions>
- <exclusion>
- <artifactId>jersey-client</artifactId>
- <groupId>com.sun.jersey</groupId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.nuxeo.runtime</groupId>
<artifactId>nuxeo-runtime-osgi</artifactId>
- <version>${nuxeo.core.version}</version>
+ <version>${nuxeo.core.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
<artifactId>qdox</artifactId>
<version>1.6.1</version>
</dependency>
- <!--
+ <!--
<dependency>
<groupId>apache-xerces</groupId>
<artifactId>xml-apis</artifactId>
</pluginManagement>
</build>
</project>
-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<cspace.services.version>5.2-SNAPSHOT</cspace.services.version>
<cspace.services.client.version>5.2-SNAPSHOT</cspace.services.client.version>
- <nuxeo.general.release>7.10-HF17</nuxeo.general.release>
+ <nuxeo.general.release>9.10</nuxeo.general.release>
<nuxeo.shell.version>${nuxeo.general.release}</nuxeo.shell.version>
<nuxeo.platform.version>${nuxeo.general.release}</nuxeo.platform.version>
<nuxeo.core.version>${nuxeo.general.release}</nuxeo.core.version>
<repository>
<id>public-snapshot</id>
- <url>http://maven.nuxeo.org/public-snapshot</url>
+ <url>https://maven-eu.nuxeo.org/nexus/content/repositories/public-snapshots</url>
<!-- Nuxeo Snapshots Repository is disabled. -->
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
- <enabled>false</enabled>
<!--<updatePolicy>never</updatePolicy> -->
</snapshots>
</repository>
<repository>
<id>public</id>
- <url>http://maven.nuxeo.org/public</url>
+ <url>https://maven-eu.nuxeo.org/nexus/content/repositories/public-releases</url>
+ <!-- Nuxeo Releases Repository is disabled. -->
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+
+ <repository>
+ <id>vendor-releases</id>
+ <url>https://maven-eu.nuxeo.org/nexus/content/repositories/vendor-releases</url>
<!-- Nuxeo Releases Repository is disabled. -->
<releases>
<enabled>true</enabled>
<version>3.0</version>
<scope>provided</scope>
</dependency>
+
+ <!-- Start of Nuxeo dependencies -->
+ <dependency>
+ <groupId>org.nuxeo.ecm.automation</groupId>
+ <artifactId>nuxeo-automation-io</artifactId>
+ <version>${nuxeo.core.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-server</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-servlet</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.ecm.core</groupId>
+ <artifactId>nuxeo-core</artifactId>
+ <version>${nuxeo.core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.ecm.core</groupId>
+ <artifactId>nuxeo-core-api</artifactId>
+ <version>${nuxeo.core.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-servlet</artifactId>
+ </exclusion>
+ <!-- <exclusion>
+ <artifactId>jboss-remoting</artifactId>
+ <groupId>jboss</groupId>
+ </exclusion> -->
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.common</groupId>
+ <artifactId>nuxeo-common</artifactId>
+ <version>${nuxeo.core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.ecm.platform</groupId>
+ <artifactId>nuxeo-platform-imaging-core</artifactId>
+ <version>${nuxeo.platform.version}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-server</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-servlet</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.runtime</groupId>
+ <artifactId>nuxeo-runtime</artifactId>
+ <version>${nuxeo.core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.ecm.core</groupId>
+ <artifactId>nuxeo-core-schema</artifactId>
+ <version>${nuxeo.core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.ecm.core</groupId>
+ <artifactId>nuxeo-core-storage-sql</artifactId>
+ <version>${nuxeo.core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.ecm.core</groupId>
+ <artifactId>nuxeo-core-storage-sql-ra</artifactId>
+ <version>${nuxeo.core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.ecm.core</groupId>
+ <artifactId>nuxeo-core-io</artifactId>
+ <version>${nuxeo.core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.ecm.core</groupId>
+ <artifactId>nuxeo-core-convert</artifactId>
+ <version>${nuxeo.core.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.ecm.core</groupId>
+ <artifactId>nuxeo-opencmis-impl</artifactId>
+ <version>${nuxeo.core.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-server</artifactId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jersey-servlet</artifactId>
+ <groupId>com.sun.jersey</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.ecm.core</groupId>
+ <artifactId>nuxeo-opencmis-bindings</artifactId>
+ <version>${nuxeo.core.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.runtime</groupId>
+ <artifactId>nuxeo-runtime-jtajca</artifactId>
+ <version>${nuxeo.core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.nuxeo.runtime</groupId>
+ <artifactId>nuxeo-runtime-datasource</artifactId>
+ <version>${nuxeo.core.version}</version>
+ </dependency>
+ <!-- End of Nuxeo dependencies -->
+
+ <!-- Tomcat -->
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-dbcp</artifactId>
+ <version>${tomcat.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-catalina</artifactId>
+ <version>${tomcat.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-servlet-api</artifactId>
+ <version>${tomcat.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
</dependencies>
</dependencyManagement>
<artifactId>org.collectionspace.services.main</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.IntegrationTests</artifactId>
<name>services.IntegrationTests</name>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.client</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.relation.client</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<!-- External dependencies -->
<dependency>
<groupId>commons-cli</groupId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<scope>test</scope>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-IntegrationTests</finalName>
<plugins>
</plugins>
</build>
</project>
-
<scope>provided</scope>
<version>4.7.2</version>
</dependency>
-
+
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
<scope>test</scope>
</dependency>
- <!-- CollectionSpace dependencies -->
+ <!-- CollectionSpace dependencies -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authorization.service</artifactId>
<artifactId>jsf-api</artifactId>
<groupId>com.sun.faces</groupId>
</exclusion>
- <exclusion>
- <artifactId>jersey-server</artifactId>
- <groupId>com.sun.jersey</groupId>
- </exclusion>
- <exclusion>
- <artifactId>jersey-servlet</artifactId>
- <groupId>com.sun.jersey</groupId>
- </exclusion>
- <exclusion>
- <artifactId>jersey-core</artifactId>
- <groupId>com.sun.jersey</groupId>
- </exclusion>
<exclusion>
<artifactId>lucene-sandbox</artifactId>
<groupId>org.apache.lucene</groupId>
<groupId>com.sun.xml.bind</groupId>
</exclusion>
</exclusions>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.account.service</artifactId>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authorization-mgt.import</artifactId>
</exclusion>
- </exclusions>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.systeminfo.service</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
+ <dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.media.service</artifactId>
<version>${project.version}</version>
</exclusion>
</exclusions>
</dependency>
-
+
<!-- AspectJ dependencies -->
<dependency>
<groupId>org.aspectj</groupId>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
- </dependency>
+ </dependency>
<!-- javax -->
<dependency>
- <artifactId>servlet-api</artifactId>
- <groupId>javax.servlet</groupId>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-servlet-api</artifactId>
+ <version>${tomcat.version}</version>
<scope>provided</scope>
</dependency>
<version>2.2.2.SP8</version>
<scope>provided</scope>
</dependency>
-
- <!-- nuxeo -->
+
+ <!-- nuxeo -->
<dependency>
<groupId>org.nuxeo.common</groupId>
<artifactId>nuxeo-common</artifactId>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</exclusion>
- </exclusions>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<groupId>org.nuxeo.ecm.core</groupId>
<artifactId>nuxeo-core-convert</artifactId>
</dependency>
- <dependency>
- <groupId>org.nuxeo.lib.core</groupId>
- <artifactId>nuxeo-core-storage-sql-extensions</artifactId>
- <version>${nuxeo.core.version}</version>
- </dependency>
- <dependency>
- <groupId>org.nuxeo.ecm.core</groupId>
- <artifactId>nuxeo-core-storage-sql-ra</artifactId>
- </dependency>
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<artifactId>nuxeo-core-query</artifactId>
- <version>${nuxeo.core.version}</version>
+ <version>${nuxeo.core.version}</version>
</dependency>
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<version>5.5-NXP-8140</version>
need to use this patched Nuxeo artifact that is only available on our public Maven
repository -see http://nightly.collectionspace.org:8081/artifactory
-
+
Once the issue is resolved and a public version of the artifact becomes available, we
should revert this dependency's version to be the following:
<version>${nuxeo.core.version}</version>
<dependency>
<groupId>org.nuxeo.ecm.platform</groupId>
<artifactId>nuxeo-platform-imaging-core</artifactId>
- <version>${nuxeo.core.version}</version>
+ <version>${nuxeo.platform.version}</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.nuxeo.ecm.platform</groupId>
<artifactId>nuxeo-platform-audit-api</artifactId>
<version>${nuxeo.core.version}</version>
- <exclusions>
- <exclusion>
- <artifactId>jersey-client</artifactId>
- <groupId>com.sun.jersey</groupId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.nuxeo.runtime</groupId>
<artifactId>nuxeo-runtime-osgi</artifactId>
- <version>${nuxeo.core.version}</version>
+ <version>${nuxeo.core.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
<artifactId>qdox</artifactId>
<version>1.6.1</version>
</dependency>
- <!--
+ <!--
<dependency>
<groupId>apache-xerces</groupId>
<artifactId>xml-apis</artifactId>
</pluginManagement>
</build>
</project>
-
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
- license agreements. See the NOTICE file distributed with this work for additional
- information regarding copyright ownership. The ASF licenses this file to You under
- the Apache License, Version 2.0 (the "License"); you may not use this file except
- in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software distributed under
- the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
- OF ANY KIND, either express or implied. See the License for the specific language
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
+ license agreements. See the NOTICE file distributed with this work for additional
+ information regarding copyright ownership. The ASF licenses this file to You under
+ the Apache License, Version 2.0 (the "License"); you may not use this file except
+ in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software distributed under
+ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied. See the License for the specific language
governing permissions and limitations under the License. -->
<Context antiResourceLocking="false" privileged="true" path="/cspace-services"
docBase="cspace-services">
<!-- define custom loader that is responsible to start nuxeo runtime (it extends the default one) -->
- <!-- Disabled since these are specific to the default Nuxeo DM webapp
+ <!-- Disabled since these are specific to the default Nuxeo DM webapp
<Loader className="org.nuxeo.runtime.tomcat.NuxeoWebappLoader"
loaderClass="org.nuxeo.runtime.tomcat.NuxeoWebappClassLoader" />
-
+
<Listener className="org.nuxeo.runtime.tomcat.NuxeoLauncher" home="${catalina.base}/nxserver" />
-->
For example java:comp/env/jdbc/nxsqldirectory This means you need to update corresponding
JNDI bindings in nuxeo data source definitions in the config directory -->
-<!--
+<!--
<ResourceLink name="jdbc/nxsqldirectory" global="jdbc/nuxeo" type="javax.sql.DataSource"/>
<ResourceLink name="jdbc/nxrelations-default-jena" global="jdbc/nuxeo" type="javax.sql.DataSource"/>
<ResourceLink name="jdbc/comment-relations" global="jdbc/nuxeo" type="javax.sql.DataSource"/>
<Listener className="org.nuxeo.runtime.tomcat.ContextSecurityGrabber" />
-<!--
+<!--
<Resource name="TransactionManager" auth="Container" type="javax.transaction.TransactionManager"
factory="org.nuxeo.runtime.jtajca.NuxeoTransactionManagerFactory"
transactionTimeoutSeconds="300"/>
<Transaction factory="org.nuxeo.runtime.jtajca.NuxeoUserTransactionFactory"/>
-
+
<Resource name="NuxeoConnectionManager" auth="Container"
type="javax.resource.spi.ConnectionManager"
factory="org.nuxeo.runtime.jtajca.NuxeoConnectionManagerFactory" minPoolSize="0"
transactionTimeoutSeconds="300" />
<Transaction factory="org.nuxeo.runtime.jtajca.NuxeoUserTransactionFactory" />
- <!--
+ <!--
For CollectionSpace services
-->
-
+
<Resource name="jdbc/CspaceDS"
auth="Container"
type="javax.sql.DataSource"
password="${db.cspace.user.password}"
driverClassName="${db.jdbc.driver.class}"
url="${db.jdbc.cspace.url.encoded}"
- maxActive="8"
+ maxTotal="8"
maxIdle="4"
testWhileIdle="true"
validationQuery="SELECT 1"
logAbandoned="true"/>
-
+
<Resource name="jdbc/NuxeoDS_CS"
auth="Container"
type="javax.sql.DataSource"
password="${db.nuxeo.user.password}"
driverClassName="${db.jdbc.driver.class}"
url="${db.jdbc.nuxeo.url.encoded}"
- maxActive="8"
+ maxTotal="8"
maxIdle="4"
testWhileIdle="true"
validationQuery="SELECT 1"
password="${db.csadmin.user.password}"
driverClassName="${db.jdbc.driver.class}"
url="${db.jdbc.csadmin.url.encoded}"
- maxActive="8"
+ maxTotal="8"
maxIdle="4"
testWhileIdle="true"
validationQuery="SELECT 1"
logAbandoned="true"/>
-
+
<Resource name="jdbc/NuxeoReaderDS"
auth="Container"
type="javax.sql.DataSource"
password="${db.reader.user.password}"
driverClassName="${db.jdbc.driver.class}"
url="${db.jdbc.nuxeo.url.encoded}"
- maxActive="8"
+ maxTotal="8"
maxIdle="4"
testWhileIdle="true"
validationQuery="SELECT 1"
<groupId>org.collectionspace.services</groupId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.PerformanceTests</artifactId>
<packaging>jar</packaging>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-PerformanceTests</finalName>
<plugins>
</build>
</profile>
</profiles>
-
-</project>
+</project>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.hyperjaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authorization.jaxb</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<filtering>true</filtering>
</resource>
</resources>
-
+
</build>
</project>
-
<artifactId>slf4j-log4j12</artifactId>
<scope>provided</scope>
</dependency>
-
+
<!-- CollectionSpace Dependencies -->
-
+
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<artifactId>org.collectionspace.services.authentication.service</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
- </dependency>
+ </dependency>
<!-- External dependencies -->
-
+
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
</plugins>
</build>
</project>
-
<artifactId>org.collectionspace.services.acquisition.client</artifactId>
<name>services.acquisition.client</name>
<packaging>jar</packaging>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-acquisition-client</finalName>
<plugins>
</plugins>
</build>
</project>
-
<artifactId>org.collectionspace.services.authentication</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.authentication.service</artifactId>
<name>services.authentication.service</name>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
- </dependency>
+ </dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
- <version>7.0.64</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-dbcp</artifactId>
- <version>7.0.64</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.security</groupId>
<artifactId>jbosssx</artifactId>
<scope>provided</scope>
- <version>2.0.3.SP1</version>
+ <version>2.0.3.SP1</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<finalName>cspace-services-authn</finalName>
</build>
</project>
-
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.collectionspace.services</groupId>
<!-- javax -->
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-servlet-api</artifactId>
+ <version>${tomcat.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<scope>provided</scope>
</dependency>
</dependencies>
-
+
<modules>
<module>jaxb</module>
<module>service</module>
</modules>
-
- </project>
+ </project>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.vocabulary.client</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<!-- javax -->
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-servlet-api</artifactId>
+ <version>${tomcat.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.nuxeo.ecm.platform</groupId>
<artifactId>nuxeo-platform-imaging-core</artifactId>
<version>${nuxeo.platform.version}</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.nuxeo.ecm.platform</groupId>
<artifactId>nuxeo-platform-imaging-api</artifactId>
<version>${nuxeo.platform.version}</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.nuxeo.ecm.platform</groupId>
<groupId>org.nuxeo.ecm.core</groupId>
<artifactId>nuxeo-core-storage-sql</artifactId>
</dependency>
- <!--
+ <!--
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<artifactId>nuxeo-core-io</artifactId>
</dependency>
</dependencies>
</project>
-
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
</dependency>
- <!--
+ <!--
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</build>
</project>
-
<version>1.0</version>
<scope>provided</scope>
</dependency>
- <!--dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId>
+ <!--dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId>
<version>${spring.version}</version> <scope>provided</scope> </dependency -->
<dependency>
<groupId>org.jboss.security</groupId>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
</systemProperties>
</configuration>
<dependencies>
- <!-- <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId>
+ <!-- <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId>
<version>${mysql.driver.version}</version> </dependency> -->
<dependency>
<groupId>org.postgresql</groupId>
</plugins>
</build>
</project>
-
<!-- utilities -->
- <!-- slf4j not available due to classloading issues running in system classpath
+ <!-- slf4j not available due to classloading issues running in system classpath
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>org.collectionspace.services.authentication.service</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authorization.jaxb</artifactId>
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.batch.client</artifactId>
<name>services.batch.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<artifactId>org.collectionspace.services.person.client</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-batch-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.batch</artifactId>
+ <artifactId>org.collectionspace.services.batch</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.batch.service</artifactId>
<name>services.batch.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authorization.service</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<artifactId>org.collectionspace.services.taxonomy.service</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.0</version>
- <scope>provided</scope>
+ <scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</exclusions>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-batch</finalName>
</build>
</project>
-
import java.util.Map;
import java.util.Set;
+import org.apache.commons.lang.StringUtils;
+
import org.collectionspace.services.client.PayloadOutputPart;
import org.collectionspace.services.client.PoxPayloadOut;
import org.collectionspace.services.client.RelationClient;
import org.dom4j.Element;
import org.dom4j.Node;
-import org.nuxeo.common.utils.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* emitted and no action is taken. If a source is successfully merged into the
* target, all references to the source are transferred to the target, and the
* source record is soft-deleted.
- *
+ *
* The context (singleCSID or listCSIDs of the batch invocation payload
* specifies the source record(s).
- *
+ *
* The following parameters are allowed:
- *
+ *
* targetCSID: The csid of the target record. Only one target may be supplied.
*
* @author ray
String docType = null;
String targetCsid = null;
List<String> sourceCsids = new ArrayList<String>();
-
+
for (Param param : this.getParams()) {
String key = param.getKey();
-
+
// I don't want this batch job to appear in the UI, since it won't run successfully without parameters.
// That means it can't be registered with any docType. But if the invocation payload contains a docType,
// it will be checked against the null registered docType, and will fail. So docType should be passed as a
// parameter instead.
-
+
if (key.equals("docType")) {
docType = param.getValue();
}
if (targetCsid == null || targetCsid.equals("")) {
throw new Exception("a target csid parameter (targetCSID) must be supplied");
}
-
+
if (sourceCsids.size() == 0) {
throw new Exception("a source csid must be supplied");
}
-
+
InvocationResults results = merge(docType, targetCsid, sourceCsids);
setResults(results);
public InvocationResults merge(String docType, String targetCsid, String sourceCsid) throws URISyntaxException, DocumentException {
return merge(docType, targetCsid, Arrays.asList(sourceCsid));
}
-
+
public InvocationResults merge(String docType, String targetCsid, List<String> sourceCsids) throws URISyntaxException, DocumentException {
logger.debug("Merging docType=" + docType + " targetCsid=" + targetCsid + " sourceCsids=" + StringUtils.join(sourceCsids, ","));
-
+
String serviceName = getAuthorityServiceNameForDocType(docType);
-
+
PoxPayloadOut targetItemPayload = findAuthorityItemByCsid(serviceName, targetCsid);
List<PoxPayloadOut> sourceItemPayloads = new ArrayList<PoxPayloadOut>();
return merge(docType, targetItemPayload, sourceItemPayloads);
}
-
+
private InvocationResults merge(String docType, PoxPayloadOut targetItemPayload, List<PoxPayloadOut> sourceItemPayloads) throws URISyntaxException, DocumentException {
int numAffected = 0;
List<String> userNotes = new ArrayList<String>();
String targetCsid = getCsid(targetItemPayload);
String targetRefName = getRefName(targetItemPayload);
String inAuthority = getFieldValue(targetItemPayload, "inAuthority");
-
+
logger.debug("Merging term groups");
-
+
for (PoxPayloadOut sourceItemPayload : sourceItemPayloads) {
String sourceCsid = getCsid(sourceItemPayload);
Element sourceTermGroupListElement = getTermGroupListElement(sourceItemPayload);
-
+
logger.debug("Merging term groups from source " + sourceCsid + " into target " + targetCsid);
-
+
try {
mergeTermGroupLists(mergedTermGroupListElement, sourceTermGroupListElement);
}
throw new RuntimeException("Error merging source record " + sourceCsid + " into target record " + targetCsid + ": " + e.getMessage(), e);
}
}
-
+
logger.debug("Updating target: docType=" + docType + " inAuthority=" + inAuthority + " targetCsid=" + targetCsid);
-
+
updateAuthorityItem(docType, inAuthority, targetCsid, getUpdatePayload(targetTermGroupListElement, mergedTermGroupListElement));
-
+
userNotes.add("The target record with CSID " + targetCsid + " (" + targetRefName + ") was updated.");
numAffected++;
-
+
String serviceName = getAuthorityServiceNameForDocType(docType);
logger.debug("Updating references");
-
+
for (PoxPayloadOut sourceItemPayload : sourceItemPayloads) {
String sourceCsid = getCsid(sourceItemPayload);
String sourceRefName = getRefName(sourceItemPayload);
-
+
InvocationResults results = updateReferences(serviceName, inAuthority, sourceCsid, sourceRefName, targetRefName);
-
+
userNotes.add(results.getUserNote());
numAffected += results.getNumAffected();
}
-
+
logger.debug("Deleting source items");
-
+
for (PoxPayloadOut sourceItemPayload : sourceItemPayloads) {
String sourceCsid = getCsid(sourceItemPayload);
String sourceRefName = getRefName(sourceItemPayload);
InvocationResults results = deleteAuthorityItem(docType, getFieldValue(sourceItemPayload, "inAuthority"), sourceCsid);
-
+
userNotes.add(results.getUserNote());
numAffected += results.getNumAffected();
}
-
+
InvocationResults results = new InvocationResults();
results.setNumAffected(numAffected);
results.setUserNote(StringUtils.join(userNotes, "\n"));
return results;
}
-
+
private InvocationResults updateReferences(String serviceName, String inAuthority, String sourceCsid, String sourceRefName, String targetRefName) throws URISyntaxException, DocumentException {
logger.debug("Updating references: serviceName=" + serviceName + " inAuthority=" + inAuthority + " sourceCsid=" + sourceCsid + " sourceRefName=" + sourceRefName + " targetRefName=" + targetRefName);
-
+
int pageNum = 0;
int pageSize = 100;
List<AuthorityRefDocList.AuthorityRefDocItem> items;
-
+
int loopCount = 0;
int numUpdated = 0;
-
+
logger.debug("Looping with pageSize=" + pageSize);
-
+
do {
loopCount++;
-
+
// The pageNum/pageSize parameters don't work properly for refobj requests!
// It should be safe to repeatedly fetch page 0 for a large-ish page size,
// and update that page, until no references are left.
-
+
items = findReferencingFields(serviceName, inAuthority, sourceCsid, null, pageNum, pageSize);
Map<String, ReferencingRecord> referencingRecordsByCsid = new LinkedHashMap<String, ReferencingRecord>();
-
+
logger.debug("Loop " + loopCount + ": " + items.size() + " items found");
-
+
for (AuthorityRefDocList.AuthorityRefDocItem item : items) {
// If a record contains a reference to the record multiple times, multiple items are returned,
// but only the first has a non-null workflow state. A bug?
-
+
String itemCsid = item.getDocId();
ReferencingRecord record = referencingRecordsByCsid.get(itemCsid);
-
+
if (record == null) {
if (item.getWorkflowState() != null && !item.getWorkflowState().equals(WorkflowClient.WORKFLOWSTATE_DELETED)) {
record = new ReferencingRecord(item.getUri());
referencingRecordsByCsid.put(itemCsid, record);
}
}
-
+
if (record != null) {
String[] sourceFieldElements = item.getSourceField().split(":");
String partName = sourceFieldElements[0];
String fieldName = sourceFieldElements[1];
-
+
Map<String, Set<String>> fields = record.getFields();
Set<String> fieldsInPart = fields.get(partName);
-
+
if (fieldsInPart == null) {
fieldsInPart = new HashSet<String>();
fields.put(partName, fieldsInPart);
}
-
+
fieldsInPart.add(fieldName);
}
}
-
+
List<ReferencingRecord> referencingRecords = new ArrayList<ReferencingRecord>(referencingRecordsByCsid.values());
-
+
logger.debug("Loop " + loopCount + ": updating " + referencingRecords.size() + " records");
for (ReferencingRecord record : referencingRecords) {
}
}
while (items.size() > 0);
-
+
InvocationResults results = new InvocationResults();
results.setNumAffected(numUpdated);
- results.setUserNote(numUpdated > 0 ?
+ results.setUserNote(numUpdated > 0 ?
numUpdated + " records that referenced the source record with CSID " + sourceCsid + " were updated." :
"No records referenced the source record with CSID " + sourceCsid + ".");
-
+
return results;
}
-
+
private InvocationResults updateReferencingRecord(ReferencingRecord record, String fromRefName, String toRefName) throws URISyntaxException, DocumentException {
String fromRefNameStem = RefNameUtils.stripAuthorityTermDisplayName(fromRefName);
// String toRefNameStem = RefNameUtils.stripAuthorityTermDisplayName(toRefName);
-
+
logger.debug("Updating references: record.uri=" + record.getUri() + " fromRefName=" + fromRefName + " toRefName=" + toRefName);
-
+
Map<String, Set<String>> fields = record.getFields();
-
+
PoxPayloadOut recordPayload = findByUri(record.getUri());
Document recordDocument = recordPayload.getDOMDocument();
Document newDocument = (Document) recordDocument.clone();
Element rootElement = newDocument.getRootElement();
-
+
for (Element partElement : (List<Element>) rootElement.elements()) {
String partName = partElement.getName();
-
+
if (fields.containsKey(partName)) {
for (String fieldName : fields.get(partName)) {
List<Node> nodes = partElement.selectNodes("descendant::" + fieldName);
-
+
for (Node node : nodes) {
String text = node.getText();
String refNameStem = null;
-
+
try {
refNameStem = RefNameUtils.stripAuthorityTermDisplayName(text);
}
AuthorityTermInfo termInfo = RefNameUtils.parseAuthorityTermInfo(text);
// String newRefName = toRefNameStem + "'" + termInfo.displayName + "'";
String newRefName = toRefName;
-
+
node.setText(newRefName);
}
}
rootElement.remove(partElement);
}
}
-
+
String payload = newDocument.asXML();
-
+
return updateUri(record.getUri(), payload);
}
-
+
private InvocationResults updateUri(String uri, String payload) throws URISyntaxException {
String[] uriParts = uri.split("/");
-
+
if (uriParts.length == 3) {
String serviceName = uriParts[1];
String csid = uriParts[2];
-
+
NuxeoBasedResource resource = (NuxeoBasedResource) getResourceMap().get(serviceName);
-
+
resource.update(getResourceMap(), createUriInfo(), csid, payload);
}
else if (uriParts.length == 5) {
String vocabularyCsid = uriParts[2];
String items = uriParts[3];
String csid = uriParts[4];
-
+
if (items.equals("items")) {
AuthorityResource<?, ?> resource = (AuthorityResource<?, ?>) getResourceMap().get(serviceName);
-
+
resource.updateAuthorityItem(getResourceMap(), createUriInfo(), vocabularyCsid, csid, payload);
}
}
else {
throw new IllegalArgumentException("Invalid uri " + uri);
}
-
+
logger.debug("Updated referencing record " + uri);
-
+
InvocationResults results = new InvocationResults();
results.setNumAffected(1);
results.setUserNote("Updated referencing record " + uri);
-
+
return results;
}
-
+
private void updateAuthorityItem(String docType, String inAuthority, String csid, String payload) throws URISyntaxException {
String serviceName = getAuthorityServiceNameForDocType(docType);
AuthorityResource<?, ?> resource = (AuthorityResource<?, ?>) getResourceMap().get(serviceName);
-
+
resource.updateAuthorityItem(getResourceMap(), createUriInfo(), inAuthority, csid, payload);
}
-
+
private InvocationResults deleteAuthorityItem(String docType, String inAuthority, String csid) throws URISyntaxException {
int numAffected = 0;
List<String> userNotes = new ArrayList<String>();
-
+
// If the item is the broader context of any items, warn and do nothing.
-
+
List<String> narrowerItemCsids = findNarrower(csid);
-
+
if (narrowerItemCsids.size() > 0) {
logger.debug("Item " + csid + " has narrower items -- not deleting");
-
+
userNotes.add("The source record with CSID " + csid + " was not deleted because it has narrower context items.");
}
else {
// If the item has a broader context, delete the relation.
-
+
List<String> relationCsids = new ArrayList<String>();
for (RelationsCommonList.RelationListItem item : findRelated(csid, null, "hasBroader", null, null)) {
relationCsids.add(item.getCsid());
}
-
+
if (relationCsids.size() > 0) {
RelationResource relationResource = (RelationResource) getResourceMap().get(RelationClient.SERVICE_NAME);
for (String relationCsid : relationCsids) {
logger.debug("Deleting hasBroader relation " + relationCsid);
-
+
relationResource.delete(relationCsid);
-
+
userNotes.add("The broader relation with CSID " + relationCsid + " was deleted.");
numAffected++;
}
}
-
+
String serviceName = getAuthorityServiceNameForDocType(docType);
AuthorityResource<?, ?> resource = (AuthorityResource<?, ?>) getResourceMap().get(serviceName);
logger.debug("Soft deleting: docType=" + docType + " inAuthority=" + inAuthority + " csid=" + csid);
resource.updateItemWorkflowWithTransition(null, inAuthority, csid, "delete");
-
+
userNotes.add("The source record with CSID " + csid + " was soft deleted.");
numAffected++;
}
-
+
InvocationResults results = new InvocationResults();
results.setNumAffected(numAffected);
results.setUserNote(StringUtils.join(userNotes, "\n"));
-
+
return results;
}
-
+
/**
* @param Returns a map of the term groups in term group list, keyed by display name.
* If multiple groups have the same display name, an exception is thrown.
private Map<String, Element> getTermGroups(Element termGroupListElement) {
Map<String, Element> termGroups = new LinkedHashMap<String, Element>();
Iterator<Element> childIterator = termGroupListElement.elementIterator();
-
+
while (childIterator.hasNext()) {
Element termGroupElement = childIterator.next();
String displayName = getDisplayName(termGroupElement);
-
+
if (termGroups.containsKey(displayName)) {
// Two term groups in the same item have identical display names.
-
+
throw new RuntimeException("multiple terms have display name \"" + displayName + "\"");
}
else {
termGroups.put(displayName, termGroupElement);
}
}
-
+
return termGroups;
}
-
+
private String getDisplayName(Element termGroupElement) {
Node displayNameNode = termGroupElement.selectSingleNode("termDisplayName");
String displayName = (displayNameNode == null) ? "" : displayNameNode.getText();
-
+
return displayName;
}
-
+
private Element getTermGroupListElement(PoxPayloadOut itemPayload) {
Element termGroupListElement = null;
Element commonPartElement = findCommonPartElement(itemPayload);
-
+
if (commonPartElement != null) {
termGroupListElement = findTermGroupListElement(commonPartElement);
}
-
+
return termGroupListElement;
}
-
+
private Element findCommonPartElement(PoxPayloadOut itemPayload) {
Element commonPartElement = null;
-
+
for (PayloadOutputPart candidatePart : itemPayload.getParts()) {
Element candidatePartElement = candidatePart.asElement();
-
+
if (candidatePartElement.getName().endsWith("_common")) {
commonPartElement = candidatePartElement;
break;
return commonPartElement;
}
-
+
private Element findTermGroupListElement(Element contextElement) {
Element termGroupListElement = null;
Iterator<Element> childIterator = contextElement.elementIterator();
-
+
while (childIterator.hasNext()) {
Element candidateElement = childIterator.next();
-
+
if (candidateElement.getName().endsWith("TermGroupList")) {
termGroupListElement = candidateElement;
break;
}
}
-
+
return termGroupListElement;
}
-
+
private void mergeTermGroupLists(Element targetTermGroupListElement, Element sourceTermGroupListElement) {
Map<String, Element> sourceTermGroups;
-
+
try {
sourceTermGroups = getTermGroups(sourceTermGroupListElement);
}
catch(RuntimeException e) {
throw new RuntimeException("a problem was found in the source record: " + e.getMessage(), e);
}
-
+
for (Element targetTermGroupElement : (List<Element>) targetTermGroupListElement.elements()) {
String displayName = getDisplayName(targetTermGroupElement);
-
+
if (sourceTermGroups.containsKey(displayName)) {
logger.debug("Merging in existing term \"" + displayName + "\"");
-
+
try {
mergeTermGroups(targetTermGroupElement, sourceTermGroups.get(displayName));
}
catch(RuntimeException e) {
throw new RuntimeException("could not merge term groups with display name \"" + displayName + "\": " + e.getMessage(), e);
}
-
+
sourceTermGroups.remove(displayName);
}
}
-
+
for (Element sourceTermGroupElement : sourceTermGroups.values()) {
logger.debug("Adding new term \"" + getDisplayName(sourceTermGroupElement) + "\"");
-
+
targetTermGroupListElement.add(sourceTermGroupElement.createCopy());
}
}
-
+
private void mergeTermGroups(Element targetTermGroupElement, Element sourceTermGroupElement) {
// This function assumes there are no nested repeating groups.
-
+
for (Element sourceChildElement : (List<Element>) sourceTermGroupElement.elements()) {
String sourceValue = sourceChildElement.getText();
-
+
if (sourceValue == null) {
sourceValue = "";
}
-
+
if (sourceValue.length() > 0) {
String name = sourceChildElement.getName();
Element targetChildElement = targetTermGroupElement.element(name);
-
+
if (targetChildElement == null) {
targetTermGroupElement.add(sourceChildElement.createCopy());
}
else {
String targetValue = targetChildElement.getText();
-
+
if (targetValue == null) {
targetValue = "";
}
-
+
if (!targetValue.equals(sourceValue)) {
if (targetValue.length() > 0) {
throw new RuntimeException("merge conflict in field " + name + ": source value \"" + sourceValue + "\" differs from target value \"" + targetValue +"\"");
}
-
+
targetTermGroupElement.remove(targetChildElement);
targetTermGroupElement.add(sourceChildElement.createCopy());
}
}
}
}
-
+
private String getUpdatePayload(Element originalTermGroupListElement, Element updatedTermGroupListElement) {
List<Element> parents = new ArrayList<Element>();
-
+
for (Element e = originalTermGroupListElement; e != null; e = e.getParent()) {
parents.add(e);
}
-
+
Collections.reverse(parents);
-
+
// Remove the original termGroupList element
parents.remove(parents.size() - 1);
-
+
// Remove the root
Element rootElement = parents.remove(0);
-
+
// Copy the root to a new document
Document document = DocumentHelper.createDocument(copyElement(rootElement));
Element current = document.getRootElement();
-
+
// Copy the remaining parents
for (Element parent : parents) {
Element parentCopy = copyElement(parent);
-
+
current.add(parentCopy);
current = parentCopy;
}
-
+
// Add the updated termGroupList element
-
+
current.add(updatedTermGroupListElement);
-
+
String payload = document.asXML();
return payload;
}
-
+
private Element copyElement(Element element) {
Element copy = DocumentHelper.createElement(element.getQName());
copy.appendAttributes(element);
-
+
return copy;
}
-
+
private class ReferencingRecord {
private String uri;
- private Map<String, Set<String>> fields;
-
+ private Map<String, Set<String>> fields;
+
public ReferencingRecord(String uri) {
this.uri = uri;
this.fields = new HashMap<String, Set<String>>();
return fields;
}
}
-}
\ No newline at end of file
+}
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.blob.client</artifactId>
<name>services.blob.client</name>
-
+
<dependencies>
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<artifactId>nuxeo-core-storage-sql-management</artifactId>
<version>${nuxeo.general.release}</version>
</dependency>
-
+
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
-<!--
+<!--
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
<version>${project.version}</version>
</dependency>
- -->
+ -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.client</artifactId>
<artifactId>org.collectionspace.services.person.client</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-blob-client</finalName>
</build>
<artifactId>testng</artifactId>
</dependency>
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-servlet-api</artifactId>
+ <version>${tomcat.version}</version>
+ <scope>provided</scope>
</dependency>
<!-- javax -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<finalName>collectionspace-services-blob</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.citation.client</artifactId>
<name>services.citation.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.citation.jaxb</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-citation-client</finalName>
<plugins>
</plugins>
</build>
</project>
-
<artifactId>org.collectionspace.services.citation</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.citation.service</artifactId>
<name>services.citation.service</name>
<packaging>jar</packaging>
-
+
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
- <!-- CollectionSpace dependencies -->
+ <!-- CollectionSpace dependencies -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<artifactId>org.collectionspace.services.citation.client</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- apache -->
<dependency>
<groupId>commons-beanutils</groupId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-citation</finalName>
<plugins>
</plugins>
</build>
</project>
-
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.claim.client</artifactId>
<name>services.claim.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<artifactId>org.collectionspace.services.person.client</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<version>3.1</version>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-claim-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.claim</artifactId>
+ <artifactId>org.collectionspace.services.claim</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.claim.service</artifactId>
<name>services.claim.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<artifactId>dom4j</artifactId>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</exclusions>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-claim</finalName>
</build>
</project>
-
<artifactId>slf4j-log4j12</artifactId>
<scope>provided</scope>
</dependency>
-
+
<!-- CollectionSpace dependencies -->
<dependency>
<artifactId>org.collectionspace.services.common-api</artifactId>
<version>${project.version}</version>
</dependency>
-
+
<!-- External dependencies -->
<dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
- <version>4.3.3</version>
+ <version>4.5.3</version>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.11.0</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.1.4.GA</version>
- <scope>runtime</scope>
+ <scope>runtime</scope>
</dependency>
<!-- Set TestNG scope to default (compile), rather than test -->
<!-- to allow import(s) in AbstractServiceTest class -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
- </dependency>
+ </dependency>
</dependencies>
<build>
</plugins>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.collectionobject.client</artifactId>
<name>services.collectionobject.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.client</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>cspace-services-collectionobject-client</finalName>
<plugins>
</configuration>
</plugin>
</plugins>
-
+
</build>
</project>
<artifactId>org.collectionspace.services.collectionobject</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.collectionobject.service</artifactId>
<name>services.collectionobject.service</name>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
-<!-- CollectionSpace dependencies -->
+<!-- CollectionSpace dependencies -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.collectionobject.client</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.intake.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.intake.service</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.relation.service</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- apache -->
<dependency>
<groupId>commons-beanutils</groupId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</exclusions>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-collectionobject</finalName>
</build>
</project>
-
<artifactId>slf4j-log4j12</artifactId>
<scope>provided</scope>
</dependency>
-
+
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
</exec>
</target>
+ <target name="deploy_nuxeo"
+ description="deploy nuxeo binaries in ${jee.server.cspace}">
+ <copy todir="${jee.server.cspace}/lib">
+ <fileset dir="${basedir}/lib/nuxeo"/>
+ </copy>
+ </target>
+
<target name="deploy_spring"
description="deploy spring binaries in ${jee.server.cspace}">
<copy todir="${jee.server.cspace}/lib">
<fileset dir="${basedir}/lib/spring"/>
</copy>
</target>
-
+
<target name="deploy_aspectj"
description="deploy AspectJ binaries in ${jee.server.cspace}">
<copy todir="${jee.server.cspace}/lib">
<fileset dir="${basedir}/lib/slf4j"/>
</copy>
</target>
-
+
<target name="deploy_xmlmerge"
description="deploy XMLMerge binaries in ${jee.server.cspace}">
<copy todir="${jee.server.cspace}/lib">
<fileset dir="${basedir}/lib/xmlmerge"/>
</copy>
</target>
-
+
<target name="deploy_tenantconfig"
description="deploy tenant configuration">
<copy todir="${jee.server.cspace}/cspace/config/services">
-->
<copy todir="${jee.server.cspace}/cspace/config/services/resources">
<fileset dir="${basedir}/src/main/cspace/config/services/resources"/>
- </copy>
+ </copy>
</target>
<target name="deploy" depends="install"
-->
<copy file="${basedir}/target/${common.jar}" todir="${jee.server.cspace}/lib"/>
- <antcall target="deploy_aspectj" />
+ <antcall target="deploy_nuxeo" />
+ <antcall target="deploy_aspectj" />
<antcall target="deploy_spring" />
<antcall target="deploy_slf4j" />
<antcall target="deploy_xmlmerge" />
<target name="undeploy"
description="undeploy common elements from ${jee.server.cspace}">
+ <antcall target="undeploy_nuxeo" />
<antcall target="undeploy_aspectj" />
<antcall target="undeploy_spring" />
<antcall target="undeploy_slf4j" />
<delete failonerror="false" dir="${jee.server.cspace}/cspace/config/services"/>
</target>
+ <target name="undeploy_nuxeo"
+ description="undeploy nuxeo binaries from ${jee.server.cspace}">
+ <delete>
+ <fileset dir="${jee.server.cspace}/lib" includes="nuxeo-*.jar"/>
+ </delete>
+ </target>
+
<target name="undeploy_spring"
description="undeploy spring binaries from ${jee.server.cspace}">
<delete>
<fileset dir="${jee.server.cspace}/lib" includes="stax2-api-*.jar"/>
</delete>
</target>
-
+
<target name="undeploy_aspectj"
description="undeploy AspectJ binaries from ${jee.server.cspace}">
<delete>
<fileset dir="${jee.server.cspace}/lib" includes="aspectj*-*.jar"/>
</delete>
</target>
-
+
<target name="undeploy_slf4j"
description="undeploy SLF4J binaries from ${jee.server.cspace}">
<delete>
- <fileset dir="${jee.server.cspace}/lib" includes="slf4j*.jar"/>
+ <fileset dir="${jee.server.cspace}/lib" includes="slf4j-*.jar"/>
+ <fileset dir="${jee.server.cspace}/lib" includes="log4j-*.jar"/>
+ <fileset dir="${jee.server.cspace}/lib" includes="jcl-over-slf4j-*.jar"/>
</delete>
</target>
-
+
<target name="undeploy_xmlmerge"
description="undeploy XMLMerge binaries from ${jee.server.cspace}">
<delete>
<fileset dir="${jee.server.cspace}/lib" includes="module-xml_merge*.jar"/>
</delete>
</target>
-
+
<target name="dist_spring"
description="dist spring binaries in ${dist.server.cspace}">
<copy todir="${services.trunk}/${dist.server.cspace}/lib">
<antcall target="dist_spring" />
<copy todir="${services.trunk}/${dist.server.cspace}/cspace/config/services">
<fileset dir="${basedir}/src/main/cspace/config/services"/>
- </copy>
+ </copy>
</target>
</project>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.relation.client</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.systeminfo.client</artifactId>
<artifactId>org.collectionspace.services.publicitem.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- <dependency> <groupId>org.collectionspace.services</groupId> <artifactId>org.collectionspace.services.3rdparty.nuxeo.quote-api</artifactId>
+ <!-- <dependency> <groupId>org.collectionspace.services</groupId> <artifactId>org.collectionspace.services.3rdparty.nuxeo.quote-api</artifactId>
<version>${project.version}</version> </dependency> -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authorization.service</artifactId>
<version>${project.version}</version>
</dependency>
-<!--
+<!--
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authorization-common</artifactId>
<version>${project.version}</version>
</dependency>
- -->
+ -->
<!-- Utilities -->
<!-- For NuxeoRESTClient.java class -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-dbcp</artifactId>
- <version>7.0.64</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
- <version>7.0.64</version>
<scope>provided</scope>
</dependency>
<!-- javax -->
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-servlet-api</artifactId>
+ <version>${tomcat.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.nuxeo.ecm.platform</groupId>
<artifactId>nuxeo-platform-imaging-core</artifactId>
<version>${nuxeo.platform.version}</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.nuxeo.ecm.platform</groupId>
<artifactId>nuxeo-platform-imaging-api</artifactId>
<version>${nuxeo.platform.version}</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.nuxeo.ecm.platform</groupId>
<groupId>org.nuxeo.ecm.core</groupId>
<artifactId>nuxeo-core-storage-sql</artifactId>
</dependency>
- <dependency>
- <groupId>org.nuxeo.ecm.core</groupId>
- <artifactId>nuxeo-core-storage-sql-ra</artifactId>
- </dependency>
- <!--
+ <!--
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<artifactId>nuxeo-core-io</artifactId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
-
+
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
+ <artifactId>jackson-core</artifactId>
<version>2.8.0</version>
</dependency>
-
+
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
</plugins>
</build>
</project>
-
import javax.sql.DataSource;
import org.apache.commons.io.FileUtils;
-import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
+import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;
import org.collectionspace.authentication.AuthN;
/**
* Main class for Services layer. It reads configuration and performs service
* level initialization. It is a singleton.
- * @author
+ * @author
*/
public class ServiceMain {
/**
* For some reason, we have trouble getting logging from this class directed to
* the tomcat/catalina console log file. So we do it explicitly with this method.
- *
+ *
* @param str
*/
private static void mirrorToStdOut(String str) {
private static final String SERVER_HOME_PROPERTY = "catalina.base";
private static final boolean USE_APP_GENERATED_CONFIG = true;
-
+
private static ServletContext servletContext = null;
-
+
private NuxeoConnectorEmbedded nuxeoConnector;
private String serverRootDir = null;
private ServicesConfigReaderImpl servicesConfigReader;
private TenantBindingConfigReaderImpl tenantBindingConfigReader;
private UriTemplateRegistry uriTemplateRegistry = new UriTemplateRegistry();
-
+
private static final String DROP_DATABASE_SQL_CMD = "DROP DATABASE";
private static final String DROP_DATABASE_IF_EXISTS_SQL_CMD = DROP_DATABASE_SQL_CMD + " IF EXISTS %s;";
private static final String DROP_USER_SQL_CMD = "DROP USER";
private ServiceMain() {
// Intentionally blank
}
-
+
/*
- *
+ *
* Set this singletons ServletContext without any call to initialize
*/
private static void setServletContext(ServletContext servletContext) {
}
}
}
-
+
public String getCspaceDatabaseName() {
return getServiceConfig().getDbCspaceName();
}
-
+
public boolean inServletContext() {
return ServiceMain.servletContext != null;
}
-
+
public static ServiceMain getInstance(ServletContext servletContext) {
setServletContext(servletContext);
return ServiceMain.getInstance();
}
-
+
/**
* getInstance returns the ServiceMain singleton instance after proper
* initialization in a thread-safe manner
}
}
}
-
+
if (instance == null) {
throw new RuntimeException("Could not initialize the CollectionSpace services. Please see the CollectionSpace services log file(s) for details.");
}
-
+
return instance;
}
private void initialize() throws Exception {
// set our root directory
setServerRootDir();
-
+
// read in and set our Services config
readAndSetServicesConfig();
// Set our AuthN's datasource to for the cspaceDataSource
AuthN.setDataSource(JDBCTools.getDataSource(JDBCTools.CSPACE_DATASOURCE_NAME));
-
+
// In each tenant, set properties that don't already have values
// to their default values.
propagateConfiguredProperties();
-
+
// Create or update Nuxeo's per-repository configuration files.
createOrUpdateNuxeoDatasourceConfigFiles();
createOrUpdateNuxeoRepositoryConfigFiles();
createOrUpdateNuxeoElasticsearchConfigFiles();
-
+
// Create the Nuxeo-managed databases, along with the requisite
// access rights to each.
HashSet<String> dbsCheckedOrCreated = createNuxeoDatabases();
-
+
// Update the SQL script that drops databases and users,
// to include DROP statements for each of the Nuxeo-managed
// database names and for each relevant datasource user.
String[] dataSourceNames = {JDBCTools.NUXEO_DATASOURCE_NAME, JDBCTools.NUXEO_READER_DATASOURCE_NAME};
updateInitializationScript(getNuxeoDatabasesInitScriptFilename(),
dbsCheckedOrCreated, dataSourceNames);
-
+
//
// Start up and initialize our embedded Nuxeo instance.
//
//
throw new RuntimeException("Unknown CollectionSpace services client type: " + getClientType());
}
-
+
//
//
//
- initializeEventListeners();
-
+ initializeEventListeners();
+
//
// Mark if a tenant's bindings have changed since the last time we started, by comparing the MD5 hash of each tenant's bindings with that of
// the bindings the last time we started/launch.
AuthorizationCommon.setTenantConfigMD5Hash(tenantId, currentMD5Hash); // store this for later. We'll persist this info with the tenant record.
tenantBinding.setConfigChangedSinceLastStart(hasConfigChanged(tenantBinding, persistedMD5Hash, currentMD5Hash));
}
-
+
//
// Create all the tenant records, default user accounts, roles, and permissions. Since some of our "cspace" database config files
// for Spring need to be created at build time, the "cspace" database already will be suffixed with the
try {
jpaTransactionContext.beginTransaction();
DatabaseProductType databaseProductType = JDBCTools.getDatabaseProductType(JDBCTools.CSPACE_DATASOURCE_NAME,
- cspaceDatabaseName);
+ cspaceDatabaseName);
AuthorizationCommon.createTenants(tenantBindingConfigReader, databaseProductType, cspaceDatabaseName);
AuthorizationCommon.createDefaultWorkflowPermissions(jpaTransactionContext, tenantBindingConfigReader, databaseProductType, cspaceDatabaseName);
AuthorizationCommon.createDefaultAccounts(tenantBindingConfigReader, databaseProductType, cspaceDatabaseName);
//
showTenantStatus();
}
-
+
/**
* Returns the primary repository name for a tenant -there's usually just one.
* @param tenantBinding
* @return
* @throws InstantiationException
*/
-
+
protected String getPrimaryRepositoryName(TenantBindingType tenantBinding) throws InstantiationException {
String result = "default";
-
+
List<RepositoryDomainType> repositoryDomainList = tenantBinding.getRepositoryDomain();
if (repositoryDomainList != null && repositoryDomainList.isEmpty() == false) {
String repositoryName = repositoryDomainList.get(PRIMARY_REPOSITORY_DOMAIN).getRepositoryName();
logger.error(msg);
throw new InstantiationException(msg);
}
-
+
return result;
}
-
+
/**
* Initialize the event listeners. We're essentially registering listeners with tenants. This ensures that listeners ignore events
* caused by other tenants.
*/
private void initializeEventListeners() {
Hashtable<String, TenantBindingType> tenantBindings = this.tenantBindingConfigReader.getTenantBindings();
-
+
for (TenantBindingType tenantBinding : tenantBindings.values()) {
EventListenerConfigurations eventListenerConfigurations = tenantBinding.getEventListenerConfigurations();
if (eventListenerConfigurations != null) {
if (eventListenerConfig.isRequired() == true) {
throw new RuntimeException(String.format("Required event listener '%s' missing or could not be instantiated.", eventListenerConfig.getId()));
}
-
+
}
private void showTenantStatus() {
"Version");
mirrorToStdOut(header);
mirrorToStdOut(headerUnderscore);
-
+
for (String tenantId : tenantBindingsList.keySet()) {
TenantBindingType tenantBinding = tenantBindingsList.get(tenantId);
String statusLine = String.format(headerTemplate,
// footer
mirrorToStdOut("++++++++++++++++ ........................................ ++++++++++++++++++++++++");
}
-
+
/**
* release releases all resources occupied by service layer infrastructure
* but not necessarily those occupied by individual services
//read service config
servicesConfigReader = new ServicesConfigReaderImpl(getServerRootDir());
servicesConfigReader.read(USE_APP_GENERATED_CONFIG);
-
+
Boolean useAppGeneratedBindings = servicesConfigReader.getConfiguration().isUseAppGeneratedTenantBindings();
- tenantBindingConfigReader = new TenantBindingConfigReaderImpl(getServerRootDir());
+ tenantBindingConfigReader = new TenantBindingConfigReaderImpl(getServerRootDir());
tenantBindingConfigReader.read(useAppGeneratedBindings);
}
-
+
/*
* Returns 'true' if the tenant bindings have change since we last started up the Services layer of if the 'forceUpdate' field in the bindings
* has been set to 'true'
- *
+ *
*/
private static boolean hasConfigChanged(TenantBindingType tenantBinding, String persistedMD5Hash,
String currentMD5Hash) {
boolean result = false;
-
+
if (persistedMD5Hash == null || tenantBinding.isForceUpdate() == true) {
result = true;
} else {
result = !persistedMD5Hash.equals(currentMD5Hash); // if the two hashes don't match, the tenant bindings have changed so we'll return 'true'
}
-
+
return result;
}
-
+
private void propagateConfiguredProperties() {
List<PropertyType> repoPropListHolder =
}
}
}
-
+
/**
* Create required indexes (aka indices) in database tables not associated
* with any specific tenant.
- *
+ *
* We need to loop over each repository/db declared in the tenant bindings.
* The assumption here is that each repo/db is a Nuxeo repo/DB.
- *
+ *
* @throws Exception
*/
void createRequiredIndices() throws Exception {
final String COLLECTIONSPACE_CORE_TABLE_NAME = "collectionspace_core";
final String NUXEO_FULLTEXT_TABLE_NAME = "fulltext";
final String NUXEO_HIERARCHY_TABLE_NAME = "hierarchy";
-
+
Map<Integer, List<String>> fieldsToIndex = new HashMap<Integer, List<String>>();
fieldsToIndex.put(1, new ArrayList<String>(Arrays.asList(COLLECTIONSPACE_CORE_TABLE_NAME, "tenantid")));
fieldsToIndex.put(2, new ArrayList<String>(Arrays.asList(COLLECTIONSPACE_CORE_TABLE_NAME, "updatedat")));
fieldsToIndex.put(3, new ArrayList<String>(Arrays.asList(NUXEO_FULLTEXT_TABLE_NAME, "jobid")));
fieldsToIndex.put(4, new ArrayList<String>(Arrays.asList(NUXEO_HIERARCHY_TABLE_NAME, "name")));
-
+
// Invoke existing post-init code to create these indexes,
// sending in the set of values above, in contrast to
// drawing these values from per-tenant configuration.
public NuxeoConnectorEmbedded getNuxeoConnector() {
return nuxeoConnector;
}
-
+
/**
* @return the serverRootDir
*/
private String getCspaceServicesConfigDir() {
return getServerRootDir() + File.separator + JEEServerDeployment.CSPACE_CONFIG_SERVICES_DIR_PATH;
}
-
+
private String getNuxeoConfigDir() {
return getServerRootDir() + File.separator + JEEServerDeployment.NUXEO_SERVER_CONFIG_DIR;
}
-
+
private String getNuxeoProtoConfigFilename() {
return JEEServerDeployment.NUXEO_PROTOTYPE_REPO_CONFIG_FILENAME;
}
-
+
private String getNuxeoProtoDatasourceFilename() {
return JEEServerDeployment.NUXEO_PROTOTYPE_DATASOURCE_FILENAME;
}
-
+
private String getNuxeoProtoElasticsearchConfigFilename() {
return JEEServerDeployment.NUXEO_PROTO_ELASTICSEARCH_CONFIG_FILENAME;
- }
+ }
private String getNuxeoProtoElasticsearchExtensionFilename() {
return JEEServerDeployment.NUXEO_PROTO_ELASTICSEARCH_EXTENSION_FILENAME;
- }
+ }
private String getDatabaseScriptsPath() {
DatabaseProductType dbType;
return databaseScriptsPath;
}
-
+
/**
* Returns the full filesystem path to the Nuxeo databases initialization script file.
- *
+ *
* @return the full path to the Nuxeo databases initialization script file.
* Returns an empty String for the path if the database scripts path is null or empty.
*/
return Tools.notBlank(getDatabaseScriptsPath()) ?
getDatabaseScriptsPath() + File.separator + JEEServerDeployment.NUXEO_DB_INIT_SCRIPT_FILENAME : "";
}
-
+
/**
* @return the server resources path
*/
public String getServerResourcesPath() {
return getServerRootDir() + File.separator + ConfigReader.RESOURCES_DIR_PATH + File.separator;
}
-
+
public InputStream getResourceAsStream(String resourceName) throws FileNotFoundException {
InputStream result = new FileInputStream(new File(getServerResourcesPath() + resourceName));
return result;
- }
-
+ }
+
public String getCspaceInstanceId() {
String result = getServiceConfig().getCspaceInstanceId();
-
+
if (result == null || result.trim().isEmpty()) {
result = ""; //empty string
}
-
+
return result;
}
/*
* Get the NuxeoDS info and create the necessary databases.
* Consider the tenant bindings to find and get the data sources for each tenant.
* There may be only one, one per tenant, or something in between.
- *
+ *
*/
private HashSet<String> createNuxeoDatabases() throws Exception {
String nuxeoUser = getBasicDataSourceUsername(JDBCTools.NUXEO_DATASOURCE_NAME);
String readerUser = getBasicDataSourceUsername(JDBCTools.NUXEO_READER_DATASOURCE_NAME);
String readerPW = getBasicDataSourcePassword(JDBCTools.NUXEO_READER_DATASOURCE_NAME);
-
+
DatabaseProductType dbType = JDBCTools.getDatabaseProductType(JDBCTools.CSADMIN_DATASOURCE_NAME,
getServiceConfig().getDbCsadminName());
for (TenantBindingType tenantBinding : tenantBindings.values()) {
String tId = tenantBinding.getId();
String tName = tenantBinding.getName();
-
+
List<RepositoryDomainType> repoDomainList = tenantBinding.getRepositoryDomain();
for (RepositoryDomainType repoDomain : repoDomainList) {
String repoDomainName = repoDomain.getName();
}
} // Loop on repos for tenant
} // Loop on tenants
-
+
return nuxeoDBsChecked;
-
+
}
-
+
/**
* Creates a Nuxeo-managed database, sets up an owner for that
* database, and adds (at least) connection privileges to a reader
* of that database.
- *
+ *
* @param conn
* @param dbType
* @param dbName
* @param ownerPW
* @param readerName
* @param readerPW
- * @throws Exception
+ * @throws Exception
*/
private void createDatabaseWithRights(DatabaseProductType dbType, String dbName, String ownerName,
String ownerPW, String readerName, String readerPW) throws Exception {
}
}
-
+
private BasicDataSource getBasicDataSource(String dataSourceName) {
BasicDataSource basicDataSource = null;
if (Tools.isBlank(dataSourceName)) {
}
return basicDataSource;
}
-
+
private String getBasicDataSourceUsername(String dataSourceName) {
String username = null;
BasicDataSource basicDataSource = getBasicDataSource(dataSourceName);
username = basicDataSource.getUsername();
return username;
}
-
+
private String getBasicDataSourcePassword(String dataSourceName) {
String password = null;
BasicDataSource basicDataSource = getBasicDataSource(dataSourceName);
password = basicDataSource.getPassword();
return password;
}
-
+
/*
* This might be useful for something, but the reader grants are better handled in the ReportPostInitHandler.
- *
- *
+ *
+ *
*/
-/*
+/*
private void handlePostNuxeoInitDBTasks() throws Exception {
Statement stmt = null;
Connection conn = null;
-
+
try {
DataSource nuxeoMgrDataSource = JDBCTools.getDataSource(JDBCTools.NUXEO_MANAGER_DATASOURCE_NAME);
DataSource nuxeoReaderDataSource = JDBCTools.getDataSource(JDBCTools.NUXEO_READER_DATASOURCE_NAME);
-
+
if(nuxeoReaderDataSource!=null) {
// We need to fetch the user name and password from the nuxeoDataSource, to do grants below
org.apache.tomcat.dbcp.dbcp.BasicDataSource tomcatDataSource =
DatabaseProductType dbType = JDBCTools.getDatabaseProductType(
JDBCTools.CSPACE_DATASOURCE_NAME,
JDBCTools.DEFAULT_CSPACE_DATABASE_NAME); // only returns PG or MYSQL
-
+
conn = nuxeoMgrDataSource.getConnection();
stmt = conn.createStatement();
if(dbType==DatabaseProductType.POSTGRESQL) {
}
*/
-
+
private void setServerRootDir() {
serverRootDir = System.getProperty(SERVER_HOME_PROPERTY);
if (serverRootDir == null) {
public TenantBindingConfigReaderImpl getTenantBindingConfigReader() {
return tenantBindingConfigReader;
}
-
+
public ResourceMap getJaxRSResourceMap() {
ResourceMap result;
-
+
result = ResteasyProviderFactory.getContextData(ResourceMap.class);
-
+
return result;
}
-
+
/**
* Populate a registry of URI templates by querying each resource
* for its own entries in the registry.
- *
+ *
* These entries consist of one or more URI templates associated
* with that resource, for building URIs to access that resource.
*/
}
return uriTemplateRegistry;
}
-
+
/**
- *
+ *
*/
private void createOrUpdateNuxeoDatasourceConfigFiles() throws Exception {
// Get the prototype copy of the Nuxeo datasource config file.
}
}
}
-
+
private File getProtoElasticsearchConfigFile() throws Exception {
File result = new File(getCspaceServicesConfigDir() + File.separator
+ getNuxeoProtoElasticsearchConfigFilename());
return result;
}
-
+
private File getProtoElasticsearchExtensionFile() throws Exception {
File result = new File(getCspaceServicesConfigDir() + File.separator
+ getNuxeoProtoElasticsearchExtensionFilename());
}
return result;
- }
-
+ }
+
private void createOrUpdateNuxeoElasticsearchConfigFiles() throws Exception {
//
// Get the prototype copy of the Nuxeo Elasticsearch extension element and
} else {
logger.debug(String.format("Repository name is %s", repositoryName));
Document protoElasticsearchExtensionDoc = XmlTools.fileToXMLDocument(protoElasticsearchExtensionFile);
-
+
protoElasticsearchExtensionDoc = updateElasticSearchExtensionDoc(protoElasticsearchExtensionDoc, repositoryName, this.getCspaceInstanceId(), tbt.getElasticSearchIndexConfig());
if (logger.isDebugEnabled()) {
String extension = protoElasticsearchExtensionDoc.asXML();
logger.trace(String.format("Updated Elasticsearch extension for '%s' repository: contents=\n", repositoryName, extension));
}
- //extensionList.append(protoElasticsearchExtensionDoc.asXML() + '\n');
- extensionList.append(XmlTools.asXML(protoElasticsearchExtensionDoc, true) + '\n');
+ //extensionList.append(protoElasticsearchExtensionDoc.asXML() + '\n');
+ extensionList.append(XmlTools.asXML(protoElasticsearchExtensionDoc, true) + '\n');
}
}
}
}
-
+
//
// Create the final Nuxeo Elasticsearch configuration file and deploy it to the Nuxeo server.
//
FileUtilities.StringToFile(str, elasticSearchConfigFile);
} else {
logger.error("Could not create Elasticsearch configuration files. Check that the prototype configuration files are properly formatted and in the correct location.");
- }
+ }
}
-
+
/**
* Ensure that Nuxeo repository configuration files exist for each repository
* specified in tenant bindings. Create or update these files, as needed.
*/
private void createOrUpdateNuxeoRepositoryConfigFiles() throws Exception {
-
+
// Get the prototype copy of the Nuxeo repository config file.
File prototypeNuxeoConfigFile =
new File(getCspaceServicesConfigDir() + File.separator + getNuxeoProtoConfigFilename());
throw new RuntimeException(msg);
}
if (logger.isInfoEnabled()) {
- logger.info(String.format("Using prototype Nuxeo config file at path %s",
+ logger.info(String.format("Using prototype Nuxeo config file at path %s",
prototypeNuxeoConfigFile.getAbsolutePath()));
}
-
+
//
// Create the xml config file and fill in the correct values.
//
}
}
}
-
+
/*
* This method is filling out the proto-repo-config.xml file with tenant specific repository information.
*/
repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc, "/component", "name",
String.format("config:%s-repository", repositoryName));
-
+
repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,
ConfigUtils.CONFIGURATION_EXTENSION_POINT_XPATH + "/blobprovider", "name",
repositoryName);
-
+
repoConfigDoc = XmlTools.setElementValue(repoConfigDoc,
ConfigUtils.CONFIGURATION_EXTENSION_POINT_XPATH + "/blobprovider/property[@name='path']",
Tools.isBlank(binaryStorePath) ? repositoryName : binaryStorePath);
-
+
// Text substitutions within first extension point, "repository"
repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,
ConfigUtils.REPOSITORY_EXTENSION_POINT_XPATH + "/repository", "name",
repositoryName);
-
+
// repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,
// ConfigUtils.REPOSITORY_EXTENSION_POINT_XPATH + "/repository/binaryStore", "path",
// Tools.isBlank(binaryStorePath) ? repositoryName : binaryStorePath); // Can be either partial or full path. Partial path will be relative to Nuxeo's data directory
String jdbcOptions = XmlTools.getElementValue(repoConfigDoc,
ConfigUtils.REPOSITORY_EXTENSION_POINT_XPATH + "/repository/property[@name='JDBCOptions']");
jdbcOptions = Tools.isBlank(jdbcOptions) ? "" : "?" + jdbcOptions;
-
+
repoConfigDoc = XmlTools.setElementValue(repoConfigDoc,
ConfigUtils.REPOSITORY_EXTENSION_POINT_XPATH + "/repository/property[@name='DatabaseName']",
databaseName + jdbcOptions);
-
+
return repoConfigDoc;
}
-
+
/*
* This method is filling out the proto-datasource-config.xml file with tenant specific repository information.
*/
repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc, "/component", "name",
String.format("config:%s-datasource", repositoryName));
-
+
// Set the <datasource> element's name attribute
String datasoureName = "jdbc/" + repositoryName;
repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,
ConfigUtils.DATASOURCE_EXTENSION_POINT_XPATH + "/datasource", "name", datasoureName);
-
+
// Get the DB server name
String serverName = XmlTools.getElementValue(repoConfigDoc,
ConfigUtils.DATASOURCE_EXTENSION_POINT_XPATH + "/property[@name='ServerName']");
// Build the JDBC URL from the parts
String jdbcUrl = String.format("jdbc:postgresql://%s:%s/%s%s", //FIXME: 'postgresql' string should not be hard coded here
serverName, portNumber, databaseName, jdbcOptions);
-
+
// Set the <datasource> element's url attribute
repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,
ConfigUtils.DATASOURCE_EXTENSION_POINT_XPATH + "/datasource", "url", jdbcUrl);
logger.debug(String.format("Built up the following JDBC url: %s", jdbcUrl));
-
+
// Get the DB username
String username = XmlTools.getElementValue(repoConfigDoc,
ConfigUtils.DATASOURCE_EXTENSION_POINT_XPATH + "/property[@name='User']");
// Set the <datasource> element's user attribute
repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,
ConfigUtils.DATASOURCE_EXTENSION_POINT_XPATH + "/datasource", "username", username);
-
+
// Get the DB password
String password = XmlTools.getElementValue(repoConfigDoc,
ConfigUtils.DATASOURCE_EXTENSION_POINT_XPATH + "/property[@name='Password']");
// Set the <datasource> element's password attribute
repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,
ConfigUtils.DATASOURCE_EXTENSION_POINT_XPATH + "/datasource", "password", password);
-
+
// Set the <link> element's name attribute
repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,
ConfigUtils.DATASOURCE_EXTENSION_POINT_XPATH + "/link", "name", "jdbc/repository_" + repositoryName);
// Set the <link> element's global attribute
repoConfigDoc = XmlTools.setAttributeValue(repoConfigDoc,
ConfigUtils.DATASOURCE_EXTENSION_POINT_XPATH + "/link", "global", datasoureName);
-
+
return repoConfigDoc;
}
-
+
private String getElasticsearchIndexName(Document repoConfigDoc, String repositoryName,
String cspaceInstanceId) {
String result = ConfigUtils.DEFAULT_ELASTICSEARCH_INDEX_NAME;
-
+
if (repositoryName.equalsIgnoreCase(ConfigUtils.DEFAULT_NUXEO_REPOSITORY_NAME) == false) {
return repositoryName;
}
-
+
return result;
}
-
+
/*
* This method is filling out the elasticsearch-config.xml file with tenant specific repository information.
*/
private Document updateElasticSearchExtensionDoc(Document elasticsearchConfigDoc, String repositoryName,
String cspaceInstanceId, ElasticSearchIndexConfig elasticSearchIndexConfig) {
-
+
// Set the <elasticSearchIndex> element's name attribute
String indexName = getElasticsearchIndexName(elasticsearchConfigDoc, repositoryName, cspaceInstanceId);
elasticsearchConfigDoc = XmlTools.setAttributeValue(elasticsearchConfigDoc,
ConfigUtils.ELASTICSEARCH_INDEX_EXTENSION_XPATH + "/elasticSearchIndex", "name", indexName);
-
+
// Set the <elasticSearchIndex> element's repository attribute
elasticsearchConfigDoc = XmlTools.setAttributeValue(elasticsearchConfigDoc,
ConfigUtils.ELASTICSEARCH_INDEX_EXTENSION_XPATH + "/elasticSearchIndex", "repository", repositoryName);
-
+
if (elasticSearchIndexConfig != null) {
String settings = elasticSearchIndexConfig.getSettings();
String mapping = elasticSearchIndexConfig.getMapping();
XmlTools.setElementValue(elasticsearchConfigDoc, ConfigUtils.ELASTICSEARCH_INDEX_EXTENSION_XPATH + "/elasticSearchIndex/mapping", mapping);
}
}
-
+
return elasticsearchConfigDoc;
}
/**
* Update the current copy of the Nuxeo databases initialization script file by
- *
+ *
* <ul>
* <li>Removing all existing DROP DATABASE commands</li>
* <li>Removing all existing DROP USER commands</li>
* <li>Adding a DROP DATABASE command for each current database, at the top of that file.</li>
* <li>Adding DROP USER commands for each provided datasource, following the DROP DATABASE commands.</li>
* </ul>
- *
+ *
* @param dbInitializationScriptFilePath
- * @param dbsCheckedOrCreated
- * @throws Exception
+ * @param dbsCheckedOrCreated
+ * @throws Exception
*/
private void updateInitializationScript(String dbInitializationScriptFilePath, HashSet<String> dbsCheckedOrCreated,
String[] dataSourceNames) throws Exception {
}
}
}
-
+
// Add back the comment elided above
List<String> replacementLines = new ArrayList<String>();
replacementLines.add(DROP_OBJECTS_SQL_COMMENT);
replacementLines.add(String.format(DROP_DATABASE_IF_EXISTS_SQL_CMD, dbName));
}
}
-
+
// Add new DROP USER commands for every provided datasource.
String username;
for (String dataSourceName : dataSourceNames) {
replacementLines.add(String.format(DROP_USER_IF_EXISTS_SQL_CMD, username));
}
}
-
+
// Now append all existing lines from that file, except for
// any lines that were elided above.
if (lines != null && !lines.isEmpty()) {
replacementLines.addAll(lines);
}
-
+
if (!nuxeoDatabasesInitScriptFile.canWrite()) {
String msg = String.format(
"Could not find and/or write the Nuxeo databases initialization script file '%s'",
public static String getJeeContainPath() throws Exception {
String result = System.getenv(CSPACE_JEESERVER_HOME);
-
+
if (result == null) {
throw new Exception();
}
-
+
return result;
}
}
package org.collectionspace.services.common.profile;
+import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
+
+import org.apache.commons.lang.NotImplementedException;
+
import java.io.ByteArrayInputStream;
/* Subclass of ServletInputStream needed by the servlet engine.
public class BufferedServletInputStream extends ServletInputStream {
ByteArrayInputStream bais;
+
public BufferedServletInputStream(ByteArrayInputStream bais) {
this.bais = bais;
}
public int read(byte[] buf, int off, int len) {
return bais.read(buf, off, len);
}
-}
+ @Override
+ public boolean isFinished() {
+ return false;
+ }
+
+ @Override
+ public boolean isReady() {
+ return false;
+ }
+
+ @Override
+ public void setReadListener(ReadListener listener) {
+ throw new NotImplementedException();
+ }
+}
import java.io.*;
import javax.servlet.*;
+import org.apache.commons.lang.NotImplementedException;
+
public class BufferedServletOutputStream extends ServletOutputStream {
// the actual buffer
private ByteArrayOutputStream bos = new ByteArrayOutputStream( );
// no way to resize an existing ByteArrayOutputStream
this.bos = new ByteArrayOutputStream(size);
}
-}
\ No newline at end of file
+
+ @Override
+ public boolean isReady() {
+ return false;
+ }
+
+ @Override
+ public void setWriteListener(WriteListener listener) {
+ throw new NotImplementedException();
+ }
+}
import javax.sql.rowset.RowSetFactory;
import javax.sql.rowset.RowSetProvider;
-import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
+import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;
/**
* User: laramie
final static Logger logger = LoggerFactory.getLogger(JDBCTools.class);
private static final CharSequence URL_DATABASE_NAME = "${DatabaseName}";
private static String JDBC_URL_DATABASE_SEPARATOR = "\\/";
-
+
//
// As a side-effect of calling JDBCTools.getDataSource(...), the DataSource instance will be
// cached in a static hash map of the JDBCTools class. This will speed up lookups as well as protect our
// code from JNDI lookup problems -for example, if the JNDI context gets stepped on or corrupted.
- //
+ //
public static DataSource getDataSource(String dataSourceName) throws NamingException {
DataSource result = null;
-
+
//
// First, see if we already have this DataSource instance cached
//
result = cachedDataSources.get(dataSourceName);
- if (result == null) {
+ if (result == null) {
InitialContext ctx = new InitialContext();
Context envCtx = null;
if (logger.isDebugEnabled() == true) {
logger.debug("Looking up DataSource instance in JNDI with name: " + dataSourceName);
}
-
- try {
- envCtx = (Context) ctx.lookup("java:comp/env");
- DataSource ds = (DataSource) envCtx.lookup("jdbc/" + dataSourceName);
- if (ds == null) {
- throw new IllegalArgumentException("DataSource instance not found: " + dataSourceName);
- } else {
- result = ds;
- // now cache this DataSource instance for future references
- cachedDataSources.put(dataSourceName, result);
- }
- } finally {
- if (ctx != null) {
- try {
- ctx.close();
- } catch (Exception e) {
- logger.error("Error getting DataSource for: " + dataSourceName, e);
- }
- }
- if (envCtx != null) {
- try {
- envCtx.close();
- } catch (Exception e) {
- logger.error("Error getting DataSource for: " + dataSourceName, e);
- }
- }
- }
+
+ envCtx = (Context) ctx.lookup("java:comp/env");
+ DataSource ds = (DataSource) envCtx.lookup("jdbc/" + dataSourceName);
+ if (ds == null) {
+ throw new IllegalArgumentException("DataSource instance not found: " + dataSourceName);
+ } else {
+ result = ds;
+ // now cache this DataSource instance for future references
+ cachedDataSources.put(dataSourceName, result);
+ }
}
-
+
if (result != null) {
// DataSource resultClone = result.
}
-
+
return result;
}
-
+
//
// Use this version of the getConnection() method when you don't want to qualify the database name
// with a CollectionSpace instance ID.
String databaseName) throws NamingException, SQLException {
return getConnection(dataSourceName, databaseName, null);
}
-
+
public static Connection getConnection(String dataSourceName,
String repositoryName,
String cspaceInstanceId) throws NamingException, SQLException {
Connection result = null;
-
+
if (Tools.isEmpty(dataSourceName) || Tools.isEmpty(repositoryName)) {
String errMsg = String.format(
- "The getConnection() method was called with an empty or null repository name = '%s' and/or data source name = '%s'.",
+ "The getConnection() method was called with an empty or null repository name = '%s' and/or data source name = '%s'.",
dataSourceName, repositoryName);
logger.error(errMsg);
throw new NamingException(errMsg);
}
-
+
/*
* We synch this block as a workaround to not have separate DataSource instances for
* each Nuxeo repo/DB. Ideally, we should replace the need for this synch block by
* registering a separate DataSource for each repo/db at init/start-up time.
- *
+ *
* We need to sync because we're changing the URL of the datasource inorder to get the correct
* connection. The synch prevents different threads from getting the incorrect connection -i.e., one pointing
* to the wrong URL.
// Turns out the Tomcat BasicDataSource used a connection pool, so changing the url does not
// get you a corresponding connection. Use the more basic implementation for now, unless
// and until we do things right by creating additional JNDI data sources.
-
+
//dataSource.setUrl(connectionUrl);
String user = dataSource.getUsername();
String password = dataSource.getPassword();
-
+
try {
//conn = dataSource.getConnection();
conn = DriverManager.getConnection(connectionUrl, user, password);
dataSource.setUrl(urlTemplate); // Reset the data source URL value back to the template value
}
}
-
+
return result;
}
try {
conn = getConnection(dataSourceName, repositoryName, cspaceInstanceId);
stmt = conn.createStatement();
-
+
RowSetFactory rowSetFactory = RowSetProvider.newFactory();
CachedRowSet crs = rowSetFactory.createCachedRowSet();
}
}
}
-
+
public static CachedRowSet executePreparedQuery(final PreparedStatementBuilder builder,
String dataSourceName, String repositoryName, String cspaceInstanceId) throws Exception {
Connection conn = null;
}
}
}
-
+
// FIXME: This method's code significantly overlaps that of executePrepareQuery(), above,
// and the two could be refactored into a single method, if desired.
public static List<CachedRowSet> executePreparedQueries(final List<PreparedStatementBuilder> builders,
}
public static int executeUpdate(String dataSourceName,
- String repositoryName,
- String cspaceInstanceId,
+ String repositoryName,
+ String cspaceInstanceId,
String sql) throws Exception {
Connection conn = null;
Statement stmt = null;
/**
* Returns the database product name, from the metadata for a
* JDBC connection to the default repository.
- *
+ *
* Assumes that the database product name will be the same for the
* default repository and for all other repositories to which JDBC
* connections will be made, through the methods of this class.
- *
+ *
* @return the database product name
*/
public static String getDatabaseProductName(String dataSourceName,
String repositoryName,
String cspaceInstanceId) throws Exception {
-
+
@SuppressWarnings("unused")
Object driver = Class.forName("org.postgresql.Driver"); // For some reason, we need to make sure the org.postgresql.Driver class in on the classpath
-
+
if (DBProductName == null) {
Connection conn = null;
try {
}
}
}
-
+
return DBProductName;
}
/**
* Returns an enumerated value uniquely identifying the database product type;
* e.g. MySQL, PostgreSQL, based on the database product name.
- *
+ *
* @return an enumerated value identifying the database product type
- * @throws Exception
+ * @throws Exception
*/
public static DatabaseProductType getDatabaseProductType(String dataSourceName,
String repositoryName,
String cspaceInstanceId) throws Exception {
DatabaseProductType result = DatabaseProductType.UNRECOGNIZED;
-
+
String productName = getDatabaseProductName(dataSourceName, repositoryName, cspaceInstanceId);
if (productName.matches("(?i).*mysql.*")) {
result = DatabaseProductType.MYSQL;
} else {
throw new Exception("Unrecognized database system " + productName);
}
-
+
return result;
}
-
+
//
// Same as method above except the cspace instance ID is not needed.
//
public static DatabaseProductType getDatabaseProductType(String dataSourceName,
String repositoryName) throws Exception {
DatabaseProductType result = DatabaseProductType.UNRECOGNIZED;
-
+
String productName = getDatabaseProductName(dataSourceName, repositoryName, null);
if (productName.matches("(?i).*mysql.*")) {
result = DatabaseProductType.MYSQL;
} else {
throw new Exception("Unrecognized database system " + productName);
}
-
+
return result;
}
-
+
/*
* By convention, the repository name and database name are the same. However, this
* call encapulates that convention and allows overrides.
*/
public static String getDatabaseName(String repoName, String cspaceInstanceId) {
String result = repoName;
-
+
//
// Insert code here if you want to map the repo name to a database name -otherwise
// we'll assume they are the same thing.
if (repoName.equalsIgnoreCase(DEFAULT_NUXEO_REPOSITORY_NAME)) {
result = DEFAULT_NUXEO_DATABASE_NAME;
}
-
+
//
// If we have a non-null 'cspaceInstanceId' instance ID then we need to append it
// as a suffix to the database name.
result = result + cspaceInstanceId;
}
}
-
+
return result;
}
-
+
/**
* Returns the catalog/database name for an open JDBC connection.
- *
+ *
* @param conn an open JDBC Connection
* @return the catalog name.
- * @throws SQLException
+ * @throws SQLException
*/
public static String getDatabaseName(String dataSourceName,
String repositoryName,
String cspaceInstanceId,
Connection conn) throws Exception {
String databaseName = null;
-
+
if (conn != null) {
DatabaseMetaData metadata = conn.getMetaData();
String urlStr = metadata.getURL();
-
+
// Format of the PostgreSQL JDBC URL:
// http://jdbc.postgresql.org/documentation/80/connect.html
if (getDatabaseProductType(dataSourceName, repositoryName, cspaceInstanceId) == DatabaseProductType.POSTGRESQL) {
databaseName = tokens[tokens.length - 1];
}
}
-
+
return databaseName;
}
-
+
/**
* Grant a specified privilege to a database user. This privilege will
* be applied to all 'public' schema tables within the specified repository.
- *
+ *
* @param dataSourceName a JDBC datasource name.
* @param repositoryName a repository (e.g. RDBMS database) name.
* @param cspaceInstanceId a CollectionSpace instance identifier.
if (hasDatabaseUser(dataSourceName, repositoryName, cspaceInstanceId,
databaseProductType, databaseUserName)) {
conn = getConnection(dataSourceName, repositoryName, cspaceInstanceId);
- stmt = conn.createStatement();
+ stmt = conn.createStatement();
stmt.execute(sql);
}
}
-
+
} catch (SQLException sqle) {
SQLException tempException = sqle;
// SQLExceptions can be chained. Loop to log all.
}
}
}
-
+
/**
* Create a database user, if that user doesn't already exist.
- *
+ *
* @param conn a database connection.
* @param dbType a database product type.
* @param username the name of the database user to create.
}
}
}
-
+
/**
* Identify whether a database exists.
- *
+ *
* @param dbType a database product type.
* @param dbName a database product name.
* @return true if a database with that name exists, false if that database does not exit.
}
}
}
-
+
/**
* Identify whether a database user exists.
- *
+ *
* @param dataSourceName a JDBC datasource name.
* @param repositoryName a repository (e.g. RDBMS database) name.
* @param cspaceInstanceId a CollectionSpace instance identifier.
}
}
}
-
-
+
+
// -----------------------------
// Utility methods for debugging
// -----------------------------
* Prints metadata, such as database username and connection URL,
* for an open JDBC connection. This is a utility method for use
* during debugging.
- *
+ *
* @param conn an open JDBC Connection
- * @throws SQLException
+ * @throws SQLException
*/
private static void printConnectionMetaData(Connection conn) throws SQLException {
if (conn != null) {
System.out.println("database url=" + metadata.getURL());
}
}
-
+
/**
* Prints metadata related to a JDBC ResultSet, such as column names.
* This is a utility method for use during debugging.
- *
+ *
* @param rs a ResultSet.
- * @throws SQLException
+ * @throws SQLException
*/
public static void printResultSetMetaData(ResultSet rs) throws SQLException {
if (rs == null) {
// Insert other debug statements to retrieve additional per-column metadata here ...
}
}
-
+
}
import org.collectionspace.services.common.document.DocumentWrapper;
import org.collectionspace.services.common.document.DocumentWrapperImpl;
import org.collectionspace.services.common.document.JaxbUtils;
-import org.hsqldb.lib.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* create/post inserts multiple tuples between the given object and subjects
* get retrieves all subjects for the given object in relationship
* delete deletes all subjects for the given object in relationship
- * @author
+ * @author
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class JpaRelationshipStorageClient<T> extends JpaStorageClientImpl {
private final Logger logger = LoggerFactory.getLogger(JpaRelationshipStorageClient.class);
-
+
public JpaRelationshipStorageClient() {
//empty
}
DocumentHandler handler) throws BadRequestException,
DocumentException {
String result = null;
-
- JPATransactionContext jpaTransactionContext = (JPATransactionContext)ctx.openConnection();
+
+ JPATransactionContext jpaTransactionContext = (JPATransactionContext)ctx.openConnection();
try {
jpaTransactionContext.beginTransaction();
handler.prepare(Action.CREATE);
JaxbUtils.setValue(relationship, "setCreatedAtItem", Date.class, new Date());
jpaTransactionContext.persist(relationship);
}
- handler.complete(Action.CREATE, wrapDoc);
+ handler.complete(Action.CREATE, wrapDoc);
jpaTransactionContext.commitTransaction();
result = "0"; // meaningless result
} catch (BadRequestException bre) {
}
ctx.closeConnection();
}
-
+
return result;
}
logger.error(msg);
throw new DocumentNotFoundException(msg);
}
-
+
String objectId = getObjectId(ctx);
DocumentFilter docFilter = handler.getDocumentFilter();
if (docFilter == null) {
docFilter = handler.createDocumentFilter();
}
-
+
handler.prepare(Action.GET);
StringBuilder queryStrBldr = new StringBuilder("SELECT a FROM ");
queryStrBldr.append(getEntityName(ctx));
queryStrBldr.append(" a");
-
+
String joinFetch = docFilter.getJoinFetchClause();
if (Tools.notBlank(joinFetch)) {
queryStrBldr.append(" " + joinFetch);
ctx.closeConnection();
}
}
-
+
/**
* Gets the id.
*
*/
private Long getId(T relationship) {
Long result = null;
-
+
if (relationship != null) {
if (relationship instanceof AccountRoleRel) {
AccountRoleRel accountRoleRel = (AccountRoleRel)relationship;
result = permissionRoleRel.getHjid();
}
}
-
+
return result;
}
-
+
/**
* Gets the relationship.
*
private T getRelationship(JPATransactionContext jpaTransactionContext, T relationship)
throws DocumentNotFoundException {
Long id = getId(relationship);
-
+
T relationshipFound = (T)jpaTransactionContext.find(relationship.getClass(), id);
if (relationshipFound == null) {
String msg = "Could not find relationship with id=" + id;
}
throw new DocumentNotFoundException(msg);
}
-
+
return relationshipFound;
}
logger.error(msg);
throw new DocumentNotFoundException(msg);
}
-
+
String objectId = getObjectId(ctx);
if (logger.isDebugEnabled()) {
logger.debug("delete: using objectId=" + objectId);
if (logger.isDebugEnabled()) {
logger.debug("delete: using object class=" + objectClass.getName());
}
-
- JPATransactionContext jpaConnectionContext = (JPATransactionContext)ctx.openConnection();
+
+ JPATransactionContext jpaConnectionContext = (JPATransactionContext)ctx.openConnection();
try {
StringBuilder deleteStr = new StringBuilder("DELETE FROM ");
String entityName = getEntityName(ctx);
public boolean delete(ServiceContext ctx, String id, DocumentHandler handler)
throws DocumentNotFoundException, DocumentException {
boolean result = true;
-
- JPATransactionContext jpaTransactionContext = (JPATransactionContext)ctx.openConnection();
+
+ JPATransactionContext jpaTransactionContext = (JPATransactionContext)ctx.openConnection();
try {
jpaTransactionContext.beginTransaction();
handler.prepare(Action.DELETE);
} finally {
ctx.closeConnection();
}
-
+
return result;
}
*/
protected String getObjectId(ServiceContext ctx) {
String objectId = (String) ctx.getProperty(ServiceContextProperties.OBJECT_ID);
-
+
if (objectId == null) {
String msg = ServiceContextProperties.OBJECT_ID + " property is missing in the context";
logger.error(msg);
*/
protected Class getObjectClass(ServiceContext ctx) {
Class objectClass = (Class) ctx.getProperty(ServiceContextProperties.OBJECT_CLASS);
-
+
if (objectClass == null) {
String msg = ServiceContextProperties.OBJECT_CLASS + " property is missing in the context";
logger.error(msg);
throw new IllegalArgumentException(msg);
}
-
+
return objectClass;
}
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
+import javax.servlet.ReadListener;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletRequest;
import javax.xml.stream.XMLStreamException;
import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.apache.commons.lang.NotImplementedException;
/**
- * <p>A filter that translates JSON requests to XML.</p>
- *
- * <p>This filter only has an effect if the content of the request (determined from
+ * <p>
+ * A filter that translates JSON requests to XML.
+ * </p>
+ *
+ * <p>
+ * This filter only has an effect if the content of the request (determined from
* the Content-type header) is JSON. If the content is JSON, the request is
- * wrapped.</p>
- *
- * <p>The request wrapper changes the Content-type header to XML, and provides an
+ * wrapped.
+ * </p>
+ *
+ * <p>
+ * The request wrapper changes the Content-type header to XML, and provides an
* input stream containing an XML translation of the original JSON request
- * content.</p>
+ * content.
+ * </p>
*/
public class JsonToXmlFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
-
+
@Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+ throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
-
+
if (RequestUtils.isJsonContent(httpRequest)) {
// The request contains a JSON payload. Wrap the request.
-
+
RequestWrapper requestWrapper = new RequestWrapper(httpRequest);
chain.doFilter(requestWrapper, response);
- }
- else {
+ } else {
// The request doesn't contain a JSON payload. Just pass it along.
-
+
chain.doFilter(request, response);
}
}
public void destroy() {
}
-
+
/**
- * A request wrapper that has a content type of XML, and replaces the
- * wrapped input stream with an XML translation.
+ * A request wrapper that has a content type of XML, and replaces the wrapped
+ * input stream with an XML translation.
*/
public class RequestWrapper extends HttpServletRequestWrapper {
public RequestWrapper(HttpServletRequest request) {
@Override
public ServletInputStream getInputStream() throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
-
+
try {
JsonToXmlStreamConverter converter = new JsonToXmlStreamConverter(super.getInputStream(), out);
converter.convert();
} catch (XMLStreamException e) {
throw new IOException("error converting JSON stream to XML", e);
}
-
+
return new InputStreamWrapper(out.toInputStream());
}
}
-
+
/**
* A ServletInputStream that wraps another input stream.
*/
* The wrapped input stream.
*/
private InputStream in;
-
+
/**
* Creates an InputStreamWrapper that wraps a given input stream.
- *
+ *
* @param in the input stream to wrap
*/
public InputStreamWrapper(InputStream in) {
this.in = in;
}
-
+
@Override
public int read() throws IOException {
return in.read();
}
+
+ @Override
+ public boolean isFinished() {
+ return false;
+ }
+
+ @Override
+ public boolean isReady() {
+ return false;
+ }
+
+ @Override
+ public void setReadListener(ReadListener listener) {
+ throw new NotImplementedException();
+ }
}
}
* translator. It is instead a lightweight processor tuned for the kinds
* of JSON generated by CSpace, and the particular transformations needed
* to generate XML for CSpace.</p>
- *
+ *
* <p>
* The conversion is performed as follows:
* <ul>
*
* <p>This implementation is schema-unaware. It operates by examining only the input
* document, without utilizing any XML schema information.</p>
- *
+ *
* <p>Example:</p>
*
* <p>
* }
* </pre>
* </p>
- *
+ *
* <p>
* XML
* <pre>
* </document>
* </pre>
* </p>
- *
+ *
* <p>This implementation uses a streaming JSON parser and a streaming
* XML writer to do a direct stream-to-stream conversion, without
* building a complete in-memory representation of the document.</p>
*/
public class JsonToXmlStreamConverter {
-
+
/**
* The JSON parser used to parse the input stream.
*/
protected JsonParser jsonParser;
-
+
/**
* The XML writer used to write to the output stream.
*/
protected XMLStreamWriter xmlWriter;
-
+
/**
* A stack used to track the state of JSON parsing.
* JsonField instances are pushed onto the stack as fields
* representation of the JSON document in memory.
*/
protected Stack<JsonField> stack = new Stack<JsonField>();
-
+
/**
* Creates an JsonToXmlStreamConverter that reads JSON from an input stream,
* and writes XML to an output stream.
- *
+ *
* @param in the JSON input stream
* @param out the XML output stream
* @throws JsonParseException
jsonParser = jsonFactory.createParser(in);
xmlWriter = xmlFactory.createXMLStreamWriter(out);
}
-
+
/**
* Performs the conversion.
- *
+ *
* @throws JsonParseException
* @throws IOException
* @throws XMLStreamException
*/
public void convert() throws JsonParseException, IOException, XMLStreamException {
xmlWriter.writeStartDocument();
-
+
// Read tokens from the input stream, and dispatch to handlers.
// Handlers may write XML to the output stream.
-
+
while (jsonParser.nextToken() != null) {
JsonToken token = jsonParser.currentToken();
-
+
switch(token) {
case FIELD_NAME:
onFieldName(jsonParser.getText());
default:
}
}
-
+
xmlWriter.writeEndDocument();
}
/**
* Event handler executed when a field name is encountered
* in the input stream.
- *
+ *
* @param name the field name
*/
public void onFieldName(String name) {
// Push the field onto the stack.
-
+
stack.push(new JsonField(name));
}
-
+
/**
* Event handler executed when a scalar field value is encountered
* in the input stream. Boolean, integer, float, and null values are
* converted to strings prior to being passed in.
- *
+ *
* @param value the scalar value, as a string
* @throws XMLStreamException
* @throws IOException
public void onScalar(String value) throws XMLStreamException, IOException {
JsonField field = stack.peek();
String name = field.getName();
-
+
if (field.isScalar() && isXmlAttribute(name)) {
// We're in a scalar field whose name looks like an XML attribute
// or namespace declaration.
-
+
if (isXmlNamespace(name)) {
// It looks like a namespace declaration.
// Output an XML namespace declaration.
-
+
String prefix = jsonFieldNameToXmlNamespacePrefix(name);
String namespaceUri = value;
-
+
xmlWriter.writeNamespace(prefix, namespaceUri);
}
else {
// It looks like an attribute.
// Output an XML attribute.
-
+
String localName = jsonFieldNameToXmlAttributeName(name);
-
+
xmlWriter.writeAttribute(localName, value);
}
}
// It doesn't look like an XML attribute or namespace declaration.
// Output an XML element with the same name as the field, whose
// contents are the value.
-
+
xmlWriter.writeStartElement(name);
xmlWriter.writeCharacters(value);
xmlWriter.writeEndElement();
if (!field.isArray()) {
// If the field we're in is not an array, we're done with it.
// Pop it off the stack.
-
+
// If it is an array, there may be more values to come. The
// field shouldn't be popped until the end of array is
// found.
-
+
stack.pop();
}
}
-
+
/**
* Event handler executed when an object start ({) is encountered
* in the input stream.
- *
+ *
* @throws XMLStreamException
*/
public void onStartObject() throws XMLStreamException {
if (stack.isEmpty()) {
// This is the root object. Do nothing.
-
+
return;
}
-
+
JsonField field = stack.peek();
-
+
if (field.isArray()) {
// If we're in an array, an object should be expanded
// into a field with the same name as the array.
-
+
field = new JsonField(field.getName());
stack.push(field);
}
-
+
field.setType(JsonField.Type.OBJECT);
-
+
// Write an XML start tag to the output stream.
-
+
xmlWriter.writeStartElement(field.getName());
}
-
+
/**
* Event handler executed when an object end (}) is encountered
* in the input stream.
public void onEndObject() throws XMLStreamException {
if (stack.isEmpty()) {
// This is the root object. Do nothing.
-
+
return;
}
// Pop the current field off the stack.
-
+
stack.pop();
-
+
// Write an XML end tag to the output stream.
-
+
xmlWriter.writeEndElement();
}
-
+
/**
* Event handler executed when an array start ([) is encountered
* in the input stream.
*/
public void onStartArray() throws IOException, XMLStreamException {
// Set the current field type to array.
-
+
JsonField field = stack.peek();
-
+
field.setType(JsonField.Type.ARRAY);
}
-
+
/**
* Event handler executed when an array end (]) is encountered
* in the input stream.
*/
public void onEndArray() throws XMLStreamException {
// Pop the current field off the stack.
-
+
stack.pop();
}
}
-
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
+import javax.servlet.WriteListener;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.apache.commons.lang.NotImplementedException;
import org.apache.commons.lang3.StringUtils;
/**
- * <p>A filter that translates XML responses to JSON.</p>
- *
- * <p>This filter only has an effect if the preferred content type of the response
+ * <p>
+ * A filter that translates XML responses to JSON.
+ * </p>
+ *
+ * <p>
+ * This filter only has an effect if the preferred content type of the response
* (determined from the Accept header) is JSON. If JSON is preferred, both the
- * request and response are wrapped.</p>
- *
- * <p>The request wrapper modifies the Accept header, ensuring that XML is accepted
+ * request and response are wrapped.
+ * </p>
+ *
+ * <p>
+ * The request wrapper modifies the Accept header, ensuring that XML is accepted
* in addition to (but at a lower quality factor than) JSON. This handles the
* case where the original request only accepts JSON. In that case, XML should
* also be accepted, so that the XML response may be translated to JSON on the
- * way back.</p>
- *
- * <p>The response wrapper provides a buffered output stream, so that XML output
- * is captured before being sent over the network. If the content type of the
+ * way back.
+ * </p>
+ *
+ * <p>
+ * The response wrapper provides a buffered output stream, so that XML output is
+ * captured before being sent over the network. If the content type of the
* response is XML, the content type is changed to JSON, the content of the
* buffer is translated to JSON, and the JSON is written to the original output
* stream. If the content type of the response is not XML, the content type is
- * not changed, and the content of the buffer is written to the original
- * output stream unchanged.</p>
+ * not changed, and the content of the buffer is written to the original output
+ * stream unchanged.
+ * </p>
*/
public class XmlToJsonFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
-
+
@Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+ throws IOException, ServletException {
if (RequestUtils.isJsonPreferred((HttpServletRequest) request)) {
// The request prefers a JSON response. Wrap the request and response.
-
+
RequestWrapper requestWrapper = new RequestWrapper((HttpServletRequest) request);
ResponseWrapper responseWrapper = new ResponseWrapper((HttpServletResponse) response);
chain.doFilter(requestWrapper, responseWrapper);
-
+
if (StringUtils.equals(responseWrapper.getContentType(), MediaType.APPLICATION_XML)) {
// Got an XML response. Translate it to JSON.
-
+
response.setContentType(MediaType.APPLICATION_JSON);
-
+
try {
InputStream xmlInputStream = responseWrapper.getBuffer().toInputStream();
-
+
if (xmlInputStream != null) {
OutputStream jsonOutputStream = response.getOutputStream();
- XmlToJsonStreamConverter converter = new XmlToJsonStreamConverter(xmlInputStream, jsonOutputStream);
-
+ XmlToJsonStreamConverter converter = new XmlToJsonStreamConverter(xmlInputStream,
+ jsonOutputStream);
+
converter.convert();
}
- }
- catch (XMLStreamException e) {
+ } catch (XMLStreamException e) {
throw new WebApplicationException("Error generating JSON", e);
}
- }
- else {
+ } else {
// Didn't get an XML response. Just pass it along.
-
+
if (responseWrapper.getBuffer() != null) {
InputStream inputStream = responseWrapper.getBuffer().toInputStream();
-
+
IOUtils.copy(inputStream, response.getOutputStream());
}
}
- }
- else {
+ } else {
// The request doesn't prefer a JSON response. Just pass it along.
-
+
chain.doFilter(request, response);
}
}
public void destroy() {
}
-
+
/**
- * A request wrapper that enhances the original Accept header so that
- * it accepts XML (if it did not already accept XML).
+ * A request wrapper that enhances the original Accept header so that it accepts
+ * XML (if it did not already accept XML).
*/
public class RequestWrapper extends HttpServletRequestWrapper {
private String xmlEnsuredAccept;
-
+
public RequestWrapper(HttpServletRequest request) {
super(request);
-
+
xmlEnsuredAccept = RequestUtils.getXmlEnsuredAccept(request);
}
return super.getHeaders(name);
}
}
-
+
/**
* A response wrapper that replaces the wrapped output stream with a buffered
* stream so that output is captured.
public class ResponseWrapper extends HttpServletResponseWrapper {
private BufferedServletOutputStream outputStream;
private PrintWriter writer;
-
+
public ResponseWrapper(HttpServletResponse response) {
super(response);
}
if (writer != null) {
throw new IllegalStateException("getWriter has already been called on this response");
}
-
+
if (outputStream == null) {
outputStream = new BufferedServletOutputStream();
}
-
+
return outputStream;
}
if (outputStream != null && writer == null) {
throw new IllegalStateException("getOutputStream has already been called on this response");
}
-
+
if (outputStream == null) {
outputStream = new BufferedServletOutputStream();
}
-
+
if (writer == null) {
writer = new PrintWriter(outputStream);
}
return writer;
}
-
+
/**
* Returns the internal buffer stream.
- *
+ *
* @return the buffer stream
*/
public ByteArrayOutputStream getBuffer() {
if (outputStream == null) {
return null;
}
-
+
return outputStream.getBuffer();
}
}
-
+
/**
- * A ServletOutputStream that wraps a ByteArrayOutputStream.
- * Any bytes written are sent to the ByteArrayOutputStream,
- * which acts as a buffer.
+ * A ServletOutputStream that wraps a ByteArrayOutputStream. Any bytes written
+ * are sent to the ByteArrayOutputStream, which acts as a buffer.
*/
public class BufferedServletOutputStream extends ServletOutputStream {
/*
* The buffer.
- *
- * ByteArrayOutputStream from commons-io provides better
- * performance than the one from java.io.
+ *
+ * ByteArrayOutputStream from commons-io provides better performance than the
+ * one from java.io.
*/
private ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-
+
@Override
public void write(int b) throws IOException {
buffer.write(b);
}
-
+
/**
* Returns the buffer stream.
- *
+ *
* @return the buffer stream
*/
public ByteArrayOutputStream getBuffer() {
return buffer;
}
+
+ @Override
+ public boolean isReady() {
+ return false;
+ }
+
+ @Override
+ public void setWriteListener(WriteListener listener) {
+ throw new NotImplementedException();
+ }
}
}
import javax.servlet.ServletContext;
+import org.apache.catalina.util.ServerInfo;
import org.collectionspace.services.common.api.JEEServerDeployment;
import org.collectionspace.services.config.RepositoryClientConfigType;
import org.collectionspace.services.config.tenant.RepositoryDomainType;
import org.nuxeo.ecm.core.api.SystemPrincipal;
import org.nuxeo.ecm.core.api.repository.Repository;
import org.nuxeo.ecm.core.api.repository.RepositoryManager;
-import org.nuxeo.osgi.application.FrameworkBootstrap;
+import org.nuxeo.osgi.application.MutableClassLoaderDelegate;
import org.nuxeo.runtime.api.Framework;
+import org.nuxeo.runtime.transaction.TransactionHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public final static String NUXEO_CLIENT_DIR = JEEServerDeployment.NUXEO_CLIENT_DIR;
public final static String NUXEO_SERVER_DIR = JEEServerDeployment.NUXEO_SERVER_DIR;
private final static String ERROR_CONNECTOR_NOT_INITIALIZED = "NuxeoConnector is not initialized!";
-
+
private final static String CSPACE_NUXEO_HOME = "CSPACE_NUXEO_HOME";
-
+
private static final NuxeoConnectorEmbedded self = new NuxeoConnectorEmbedded();
private NuxeoClientEmbedded client;
private volatile boolean initialized = false; // use volatile for lazy
// initialization in
// singleton
- public FrameworkBootstrap fb;
+ public NuxeoFrameworkBootstrap fb;
private ServletContext servletContext;
private RepositoryClientConfigType repositoryClientConfig;
public final static NuxeoConnectorEmbedded getInstance() {
return self;
}
-
+
private String getNuxeoServerPath(String serverRootPath) throws IOException {
String result = null;
//
//
result = serverRootPath + "/" + NUXEO_SERVER_DIR;
}
-
+
return result;
}
-
+
private File getNuxeoServerDir(String serverRootPath) throws IOException {
File result = null;
String errMsg = null;
-
+
String path = getNuxeoServerPath(serverRootPath);
if (path != null) {
File temp = new File(path);
errMsg = "The Nuxeo EP configuration directory is missing or inaccessible at: '" + path + "'.";
}
}
-
+
if (result == null) {
if (errMsg == null) {
path = path != null ? path : "<empty>";
}
throw new IOException(errMsg);
}
-
+
return result;
}
logger.info("Starting Nuxeo EP server from configuration at: "
+ nuxeoHomeDir.getCanonicalPath());
}
-
- fb = new FrameworkBootstrap(NuxeoConnectorEmbedded.class.getClassLoader(),
- nuxeoHomeDir);
+
+ ClassLoader cl = NuxeoConnectorEmbedded.class.getClassLoader();
+
+ fb = new NuxeoFrameworkBootstrap(cl, nuxeoHomeDir);
fb.setHostName("Tomcat");
- fb.setHostVersion("7.0.64"); //FIXME: Should not be hard coded.
-
+ fb.setHostVersion(ServerInfo.getServerNumber());
+
fb.initialize();
- fb.start();
-
+ fb.start(new MutableClassLoaderDelegate(cl));
+
// Test to see if we can connect to the default repository
+ boolean transactionStarted = false;
+
+ if (!TransactionHelper.isTransactionActiveOrMarkedRollback()) {
+ transactionStarted = TransactionHelper.startTransaction();
+ }
+
CoreSession coreSession = null;
+
try {
Repository defaultRepo = Framework.getService(RepositoryManager.class).getDefaultRepository();
coreSession = CoreInstance.openCoreSession(defaultRepo.getName(), new SystemPrincipal(null));
if (coreSession != null) {
CoreInstance.closeCoreSession(coreSession);
}
+
+ if (transactionStarted) {
+ TransactionHelper.commitOrRollbackTransaction();
+ }
}
}
/**
* release releases resources occupied by Nuxeo remoting client runtime
- *
+ *
* @throws java.lang.Exception
*/
public void release() throws Exception {
}
}
}
-
+
/**
* releaseRepositorySession releases given repository session
- *
+ *
* @param repoSession
* @throws java.lang.Exception
*/
/**
* getRepositorySession get session to default repository
- *
+ *
* @return RepositoryInstance
* @throws java.lang.Exception
*/
public CoreSessionInterface getRepositorySession(RepositoryDomainType repoDomain) throws Exception {
CoreSessionInterface repoSession = getClient().openRepository(repoDomain);
-
+
if (logger.isDebugEnabled() && repoSession != null) {
String repoName = repoDomain.getRepositoryName();
- logger.debug("getRepositorySession() opened repository session on: %s repo",
- repoName != null ? repoName : "unknown");
+ logger.debug("getRepositorySession() opened repository session on: %s repo",
+ repoName != null ? repoName : "unknown");
}
-
+
return repoSession;
}
-
+
// TODO: Remove after CSPACE-6375 issue is resolved.
// public List<RepositoryDescriptor> getRepositoryDescriptor(String name) throws Exception {
// RepositoryDescriptor repo = null;
//
// return repo;
// }
-
+
/**
* getClient get Nuxeo client for accessing Nuxeo services remotely using
* Nuxeo Java (EJB) Remote APIS
- *
+ *
* @return NuxeoClient
* @throws java.lang.Exception
*/
logger.error(ERROR_CONNECTOR_NOT_INITIALIZED);
throw new IllegalStateException(ERROR_CONNECTOR_NOT_INITIALIZED);
}
-
+
void releaseClient() throws Exception {
if (initialized == true) {
// Do nothing.
/**
* retrieveWorkspaceIds retrieves all workspace ids from default repository
- *
+ *
* @param repoDomain
* a repository domain for a given tenant - see the tenant bindings XML file for details
* @return
Iterator<DocumentModel> witer = domainChildrenList.iterator();
while (witer.hasNext()) {
DocumentModel childNode = witer.next();
- if (NuxeoUtils.Workspaces.equalsIgnoreCase(childNode.getName())) {
+ if (NuxeoUtils.Workspaces.equalsIgnoreCase(childNode.getName())) {
DocumentModelList workspaceList = repoSession
.getChildren(childNode.getRef());
Iterator<DocumentModel> wsiter = workspaceList
releaseRepositorySession(repoSession);
}
}
-
+
return workspaceIds;
- }
+ }
}
--- /dev/null
+/**
+ * This document is a part of the source code and related artifacts
+ * for CollectionSpace, an open source collections management system
+ * for museums and related institutions:
+
+ * http://www.collectionspace.org
+ * http://wiki.collectionspace.org
+
+ * Copyright 2019 LYRASIS
+
+ * Licensed under the Educational Community License (ECL), Version 2.0.
+ * You may not use this file except in compliance with this License.
+
+ * You may obtain a copy of the ECL 2.0 License at
+
+ * https://source.collectionspace.org/collection-space/LICENSE.txt
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.collectionspace.services.nuxeo.client.java;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Method;
+
+import javax.management.JMException;
+
+import org.nuxeo.osgi.application.FrameworkBootstrap;
+import org.nuxeo.osgi.application.MutableClassLoader;
+
+public class NuxeoFrameworkBootstrap extends FrameworkBootstrap {
+ public NuxeoFrameworkBootstrap(ClassLoader cl, File home) throws IOException {
+ super(cl, home);
+ }
+
+ public NuxeoFrameworkBootstrap(MutableClassLoader loader, File home) throws IOException {
+ super(loader, home);
+ }
+
+ @Override
+ public void start(MutableClassLoader cl) throws ReflectiveOperationException, IOException, JMException {
+ if (frameworkLoaderClass == null) {
+ throw new IllegalStateException("Framework Loader was not initialized. Call initialize() method first");
+ }
+ Method start = frameworkLoaderClass.getMethod("start");
+ start.invoke(null);
+ printStartedMessage();
+ }
+
+ @Override
+ public void stop(MutableClassLoader cl) throws ReflectiveOperationException, JMException {
+ if (frameworkLoaderClass == null) {
+ throw new IllegalStateException("Framework Loader was not initialized. Call initialize() method first");
+ }
+ Method stop = frameworkLoaderClass.getMethod("stop");
+ stop.invoke(null);
+ }
+}
* $LastChangedRevision: $ $LastChangedDate: $
*/
public class NuxeoRepositoryClientImpl implements RepositoryClient<PoxPayloadIn, PoxPayloadOut> {
-
+
/**
* The logger.
*/
public static final String ENDING_ANCHOR_CHAR = "$";
public static final String ENDING_ANCHOR_CHAR_REGEX = BACKSLASH + ENDING_ANCHOR_CHAR;
-
+
/**
* Instantiates a new repository java client impl.
*/
DocumentModel wspaceDoc = repoSession.getDocument(nuxeoWspace);
String wspacePath = wspaceDoc.getPathAsString();
//give our own ID so PathRef could be constructed later on
- String id = IdUtils.generateId(UUID.randomUUID().toString());
+ String id = IdUtils.generateId(UUID.randomUUID().toString(), "-", true, 24);
// create document model
DocumentModel doc = repoSession.createDocumentModel(wspacePath, id, docType);
/* Check for a versioned document, and check In and Out before we proceed.
doc = repoSession.createDocument(doc);
repoSession.save();
// TODO for sub-docs need to call into the handler to let it deal with subitems. Pass in the id,
- // and assume the handler has the state it needs (doc fragments).
+ // and assume the handler has the state it needs (doc fragments).
handler.complete(Action.CREATE, wrapDoc);
return id;
} catch (BadRequestException bre) {
}
}
}
-
+
@Override
public boolean reindex(DocumentHandler handler, String indexid) throws DocumentNotFoundException, DocumentException
{
return reindex(handler, null, indexid);
}
-
+
@Override
public boolean reindex(DocumentHandler handler, String csid, String indexid) throws DocumentNotFoundException, DocumentException
{
boolean result = true;
CoreSessionInterface repoSession = null;
ServiceContext<PoxPayloadIn, PoxPayloadOut> ctx = handler.getServiceContext();
-
+
try {
String queryString = handler.getDocumentsToIndexQuery(indexid, csid);
repoSession = getRepositorySession(ctx);
releaseRepositorySession(ctx, repoSession);
}
}
-
+
return result;
}
-
+
@Override
public boolean synchronize(ServiceContext ctx, Object specifier, DocumentHandler handler)
throws DocumentNotFoundException, TransactionException, DocumentException {
boolean result = false;
-
+
if (handler == null) {
throw new IllegalArgumentException("RepositoryJavaClient.get: handler is missing");
}
releaseRepositorySession(ctx, repoSession);
}
}
-
+
return result;
}
-
+
@Override
public boolean synchronizeItem(ServiceContext ctx, AuthorityItemSpecifier itemSpecifier, DocumentHandler handler)
throws DocumentNotFoundException, TransactionException, DocumentException {
boolean result = false;
-
+
if (handler == null) {
throw new IllegalArgumentException(
"RepositoryJavaClient.get: handler is missing");
releaseRepositorySession(ctx, repoSession);
}
}
-
+
return result;
}
-
+
/**
* get document from the Nuxeo repository
*
private DocumentModelList getFilteredCMISForSubjectOrObject(CoreSessionInterface repoSession,
ServiceContext<PoxPayloadIn, PoxPayloadOut> ctx, DocumentHandler handler, QueryContext queryContext) throws DocumentNotFoundException, DocumentException {
DocumentModelList result = null;
-
+
if (isSubjectOrObjectQuery(ctx) == true) {
MultivaluedMap<String, String> queryParams = ctx.getQueryParams();
String asEitherCsid = (String)queryParams.getFirst(IQueryManager.SEARCH_RELATED_TO_CSID_AS_EITHER);
-
+
queryParams.remove(IQueryManager.SEARCH_RELATED_TO_CSID_AS_SUBJECT);
queryParams.remove(IQueryManager.SEARCH_RELATED_TO_CSID_AS_OBJECT);
queryParams.addFirst(IQueryManager.SEARCH_RELATED_TO_CSID_AS_SUBJECT, asEitherCsid);
DocumentModelList subjectDocList = getFilteredCMIS(repoSession, ctx, handler, queryContext);
queryParams.remove(IQueryManager.SEARCH_RELATED_TO_CSID_AS_SUBJECT);
-
+
//
// Next query for objectCsid results.
//
//
result = mergeDocumentModelLists(subjectDocList, objectDocList);
}
-
+
return result;
}
private DocumentModelList mergeDocumentModelLists(DocumentModelList subjectDocList,
DocumentModelList objectDocList) {
DocumentModelList result = null;
-
+
if (subjectDocList == null || subjectDocList.isEmpty()) {
return objectDocList;
}
-
+
if (objectDocList == null || objectDocList.isEmpty()) {
return subjectDocList;
}
-
+
result = new DocumentModelListImpl();
-
+
// Add the subject list
Iterator<DocumentModel> iterator = subjectDocList.iterator();
while (iterator.hasNext()) {
DocumentModel dm = iterator.next();
addToResults(result, dm);
}
-
+
// Add the object list
iterator = objectDocList.iterator();
while (iterator.hasNext()) {
private void addToResults(DocumentModelList result, DocumentModel dm) {
Iterator<DocumentModel> iterator = result.iterator();
boolean found = false;
-
+
while (iterator.hasNext()) {
DocumentModel existingDm = iterator.next();
if (existingDm.getId().equals(dm.getId())) {
break;
}
}
-
+
if (found == false) {
result.add(dm);
}
try {
repoSession = getRepositorySession(ctx);
- wrapDoc = findDocs(ctx,
- repoSession,
- docTypes,
- whereClause,
+ wrapDoc = findDocs(ctx,
+ repoSession,
+ docTypes,
+ whereClause,
null,
- pageNum,
+ pageNum,
pageSize,
useDefaultOrderByClause,
computeTotal);
* A method to find a CollectionSpace document (of any type) given just a service context and
* its CSID. A search across *all* service workspaces (within a given tenant context) is performed to find
* the document
- *
+ *
* This query searches Nuxeo's Hierarchy table where our CSIDs are stored in the "name" column.
*/
@Override
IterableQueryResult result = null;
/** Threshold over which temporary files are not kept in memory. */
final int THRESHOLD = 1024 * 1024;
-
+
try {
logger.debug(String.format("Performing a CMIS query on Nuxeo repository named %s",
repoSession.getRepositoryName()));
new NuxeoCmisServiceFactory(),
streamFactory);
callContext.put(CallContext.USERNAME, repoSession.getPrincipal().getName());
-
+
NuxeoCmisService cmisService = new NuxeoCmisService(repoSession.getCoreSession());
result = repoSession.queryAndFetch(query, "CMISQL", cmisService);
} catch (ClientException e) {
if (isSubjectOrObjectQuery(ctx)) {
docList = getFilteredCMISForSubjectOrObject(repoSession, ctx, handler, queryContext);
} else {
- docList = getFilteredCMIS(repoSession, ctx, handler, queryContext);
+ docList = getFilteredCMIS(repoSession, ctx, handler, queryContext);
}
// NXQL query
} else {
/**
* Perform a database query, via JDBC and SQL, to retrieve matching records
* based on filter criteria.
- *
+ *
* Although this method currently has a general-purpose name, it is
* currently dedicated to a specific task: that of improving performance
* for partial term matching queries on authority items / terms, via
* the use of a hand-tuned SQL query, rather than via the generated SQL
* produced by Nuxeo from an NXQL query. (See CSPACE-6361 for a task
* to generalize this method.)
- *
+ *
* @param repoSession a repository session.
* @param ctx the service context.
* @param handler a relevant document handler.
* @return a list of document models matching the search criteria.
- * @throws Exception
+ * @throws Exception
*/
- private DocumentModelList getFilteredJDBC(CoreSessionInterface repoSession, ServiceContext<PoxPayloadIn, PoxPayloadOut> ctx,
+ private DocumentModelList getFilteredJDBC(CoreSessionInterface repoSession, ServiceContext<PoxPayloadIn, PoxPayloadOut> ctx,
DocumentHandler handler) throws Exception {
DocumentModelList result = new DocumentModelListImpl();
final String IN_AUTHORITY_PARAM = "IN_AUTHORITY";
// Get this from a constant in AuthorityResource or equivalent
final String PARENT_WILDCARD = "_ALL_";
-
+
// Build two SQL statements, to be executed within a single transaction:
// the first statement to control join order, and the second statement
// representing the actual 'get filtered' query
-
+
// Build the join control statement
//
// Per http://www.postgresql.org/docs/9.2/static/runtime-config-query.html#GUC-JOIN-COLLAPSE-LIMIT
// in consistently slower-than-desired query performance where zero or
// very few records were retrieved. See notes on CSPACE-5945. - ADR 2013-04-09
// String joinControlSql = "SET LOCAL join_collapse_limit TO 1;";
-
+
// Build the query statement
//
// Start with the default query
String selectStatement =
"SELECT DISTINCT commonschema.id"
+ " FROM " + handler.getServiceContext().getCommonPartLabel() + " commonschema";
-
+
String joinClauses =
" INNER JOIN misc"
+ " ON misc.id = commonschema.id"
whereClause =
" WHERE (termgroup.termdisplayname ILIKE ?)";
}
-
+
// At present, results are ordered in code, below, rather than in SQL,
// and the orderByClause below is thus intentionally blank.
//
// 'ORDER BY termgroup.termdisplayname', the relevant column
// must be returned by the SELECT statement.
String orderByClause = "";
-
+
String limitClause;
TenantBindingConfigReaderImpl tReader =
ServiceMain.getInstance().getTenantBindingConfigReader();
IQueryManager.MAX_LIST_ITEMS_RETURNED_LIMIT_ON_JDBC_QUERIES);
limitClause =
" LIMIT " + getMaxItemsLimitOnJdbcQueries(maxListItemsLimit); // implicit int-to-String conversion
-
+
// After building the individual parts of the query, set the values
// of replaceable parameters that will be inserted into that query
// and optionally add restrictions
-
+
List<String> params = new ArrayList<>();
-
+
if (Tools.notBlank(whereClause)) {
-
+
// Read tenant bindings configuration to determine whether
// to automatically insert leading, as well as trailing, wildcards
// into the term matching string.
}
params.add(partialTerm);
}
-
+
// Optionally add restrictions to the default query, based on variables
// in the current request
-
+
// Restrict the query to filter out deleted records, if requested
String includeDeleted = queryParams.getFirst(WorkflowClient.WORKFLOW_QUERY_DELETED_QP);
if (includeDeleted != null && includeDeleted.equalsIgnoreCase(Boolean.FALSE.toString())) {
params.add(inAuthorityValue); // Value for replaceable parameter 2 in the query
}
}
-
+
// Restrict the query further to return only records pertaining to
// the current tenant, unless:
// * Data for this service, in this tenant, is stored in its own,
// separate repository, rather than being intermingled with other
// tenants' data in the default repository; or
// * Restriction by tenant ID in JDBC queries has been disabled,
- // via configuration for this tenant,
+ // via configuration for this tenant,
if (restrictJDBCQueryByTenantID(tenantBinding, ctx)) {
joinClauses = joinClauses
+ " INNER JOIN collectionspace_core core"
+ " AND (core.tenantid = ?)";
params.add(ctx.getTenantId()); // Value for replaceable parameter 3 in the query
}
-
+
// Piece together the SQL query from its parts
String querySql = selectStatement + joinClauses + whereClause + orderByClause + limitClause;
-
+
// Note: PostgreSQL 9.2 introduced a change that may improve performance
// of certain queries using JDBC PreparedStatements. See comments on
// CSPACE-5943 for details.
// out as per comments above) will not return results, so query results
// will be the first set of results (rowSet) returned in the list
CachedRowSet queryResults = resultsList.get(0);
-
+
// If the result from executing the query is null or contains zero rows,
// return an empty list of document models
if (queryResults == null) {
} catch (SQLException sqle) {
logger.warn("Could not obtain document IDs via SQL query '" + querySql + "': " + sqle.getMessage());
return result; // return an empty list of document models
- }
+ }
// Get a list of document models, using the list of IDs obtained from the query
//
result.add(docModel);
}
}
-
+
// Order the results
final String COMMON_PART_SCHEMA = handler.getServiceContext().getCommonPartLabel();
final String DISPLAY_NAME_XPATH =
return result;
}
-
- private DocumentModelList getFilteredCMIS(CoreSessionInterface repoSession,
+
+ private DocumentModelList getFilteredCMIS(CoreSessionInterface repoSession,
ServiceContext<PoxPayloadIn, PoxPayloadOut> ctx, DocumentHandler handler, QueryContext queryContext)
throws DocumentNotFoundException, DocumentException {
}
// Check for a versioned document, and check In and Out before we proceed.
if (((DocumentModelHandler) handler).supportsVersioning()) {
- /* Once we advance to 5.5 or later, we can add this.
+ /* Once we advance to 5.5 or later, we can add this.
* See also https://jira.nuxeo.com/browse/NXP-8506
if(!doc.isVersionable()) {
throw new NuxeoDocumentException("Configuration for: "
}
@Override
- public void deleteWithWhereClause(@SuppressWarnings("rawtypes") ServiceContext ctx, String whereClause,
- @SuppressWarnings("rawtypes") DocumentHandler handler) throws
+ public void deleteWithWhereClause(@SuppressWarnings("rawtypes") ServiceContext ctx, String whereClause,
+ @SuppressWarnings("rawtypes") DocumentHandler handler) throws
DocumentNotFoundException, DocumentException {
if (ctx == null) {
throw new IllegalArgumentException(
if (logger.isDebugEnabled()) {
logger.debug("Deleting document with whereClause=" + whereClause);
}
-
+
DocumentWrapper<DocumentModel> foundDocWrapper = this.findDoc(ctx, whereClause);
if (foundDocWrapper != null) {
DocumentModel docModel = foundDocWrapper.getWrappedObject();
this.delete(ctx, csid, handler);
}
}
-
+
/**
* delete a document from the Nuxeo repository
*
public boolean delete(ServiceContext ctx, List<String> idList, DocumentHandler handler) throws DocumentNotFoundException,
DocumentException, TransactionException {
boolean result = true;
-
+
if (ctx == null) {
throw new IllegalArgumentException(
"delete(ctx, ix, handler): ctx is missing");
throw new IllegalArgumentException(
"delete(ctx, ix, handler): handler is missing");
}
-
+
CoreSessionInterface repoSession = null;
try {
handler.prepare(Action.DELETE);
repoSession = getRepositorySession(ctx);
-
+
for (String id : idList) {
if (logger.isDebugEnabled()) {
logger.debug("Deleting document with CSID=" + id);
}
} catch (org.nuxeo.ecm.core.api.DocumentNotFoundException ce) {
String msg = logException(ce,
- String.format("Could not find %s resource/record to delete with CSID=%s", ctx.getDocumentType(), id));
+ String.format("Could not find %s resource/record to delete with CSID=%s", ctx.getDocumentType(), id));
throw new DocumentNotFoundException(msg, ce);
}
repoSession.save();
releaseRepositorySession(ctx, repoSession);
}
}
-
+
return result;
}
-
+
/**
* delete a document from the Nuxeo repository
*
@Override
public boolean delete(ServiceContext ctx, String id, DocumentHandler handler) throws DocumentNotFoundException,
DocumentException, TransactionException {
- boolean result;
-
+ boolean result;
+
List<String> idList = new ArrayList<String>();
idList.add(id);
result = delete(ctx, idList, handler);
-
+
return result;
}
logger.error(errMsg);
throw new Exception(errMsg);
}
-
+
if (repoSession == null) {
//
// If we couldn't find a repoSession from the service context (or the context was null) then we need to create a new one using
if (cause != null) {
causeMsg = cause.getMessage();
}
-
+
TransactionException te; // a CollectionSpace specific tx exception
if (causeMsg != null) {
te = new TransactionException(causeMsg, tre);
} else {
te = new TransactionException(tre);
}
-
+
logger.error(te.getMessage(), tre); // Log the standard transaction exception message, plus an exception-specific stack trace
throw te;
} catch (Exception e) {
}
return partialTerm;
}
-
+
/**
* Replaces user-supplied wildcards with SQL wildcards, in a partial term
* matching search expression.
- *
+ *
* The scope of this replacement excludes the beginning character
* in that search expression, as that character is treated specially.
- *
+ *
* @param partialTerm
* @return the partial term, with any user-supplied wildcards replaced
* by SQL wildcards.
/**
* Identifies whether a restriction on tenant ID - to return only records
* pertaining to the current tenant - is required in a JDBC query.
- *
+ *
* @param tenantBinding a tenant binding configuration.
* @param ctx a service context.
* @return true if a restriction on tenant ID is required in the query;
}
return restrict;
}
-
+
private void rollbackTransaction(CoreSessionInterface repoSession) {
if (repoSession != null) {
repoSession.setTransactionRollbackOnly();
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.concept.client</artifactId>
<name>services.concept.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.concept.jaxb</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-concept-client</finalName>
<plugins>
</plugins>
</build>
</project>
-
<artifactId>org.collectionspace.services.concept</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.concept.service</artifactId>
<name>services.concept.service</name>
<packaging>jar</packaging>
-
+
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
-<!-- CollectionSpace dependencies -->
+<!-- CollectionSpace dependencies -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<artifactId>org.collectionspace.services.contact.service</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- apache -->
<dependency>
<groupId>commons-beanutils</groupId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-concept</finalName>
<plugins>
</plugins>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.conditioncheck.client</artifactId>
<name>services.conditioncheck.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<artifactId>org.collectionspace.services.person.client</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-conditioncheck-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.conditioncheck</artifactId>
+ <artifactId>org.collectionspace.services.conditioncheck</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.conditioncheck.service</artifactId>
<name>services.conditioncheck.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-conditioncheck</finalName>
</build>
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.conservation.client</artifactId>
<name>services.conservation.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
-<!-- External dependencies -->
+ </dependency>
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-conservation-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.conservation</artifactId>
+ <artifactId>org.collectionspace.services.conservation</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.conservation.service</artifactId>
<name>services.conservation.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-conservation</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.contact.client</artifactId>
<name>services.contact.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.client</artifactId>
<version>${project.version}</version>
- <!--
+ <!--
<exclusions>
<exclusion>
<artifactId>xml-apis</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-contact-client</finalName>
</build>
</project>
-
<groupId>org.collectionspace.services</groupId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.contact.service</artifactId>
<name>services.contact.service</name>
<artifactId>org.collectionspace.services.authority.service</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
--> <dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
- </dependency>
+ </dependency>
<!-- javax -->
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-contact</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.dimension.client</artifactId>
<name>services.dimension.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
</dependency>
- <!--
+ <!--
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.IntegrationTests</artifactId>
<version>${project.version}</version>
</dependency>
-->
-
+
<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-dimension-client</finalName>
</build>
</project>
-
<artifactId>org.collectionspace.services.dimension</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.dimension.service</artifactId>
<name>services.dimension.service</name>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
-
+
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<artifactId>nuxeo-core-api</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-dimension</finalName>
</build>
</project>
-
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.exhibition.client</artifactId>
<name>services.exhibition.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<artifactId>org.collectionspace.services.person.client</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<version>3.1</version>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-exhibition-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.exhibition</artifactId>
+ <artifactId>org.collectionspace.services.exhibition</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.exhibition.service</artifactId>
<name>services.exhibition.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-exhibition</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.group.client</artifactId>
<name>services.group.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<artifactId>org.collectionspace.services.person.client</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-group-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.group</artifactId>
+ <artifactId>org.collectionspace.services.group</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.group.service</artifactId>
<name>services.group.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId> <!-- FIXME: REM - Is this really a required dependency? -->
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-group</finalName>
</build>
</project>
-
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.imports</artifactId>
+ <artifactId>org.collectionspace.services.imports</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.imports.service</artifactId>
<name>services.imports.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId> <!-- FIXME: REM - Is this really a required dependency? -->
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
- <artifactId>servlet-api</artifactId>
- <groupId>javax.servlet</groupId>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-servlet-api</artifactId>
+ <version>${tomcat.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- Nuxeo -->
<dependency>
<artifactId>nuxeo-importer-xml-parser</artifactId>
<version>${nuxeo.platform.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.nuxeo.ecm.core</groupId>
<artifactId>nuxeo-core-api</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-imports</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.index.client</artifactId>
<name>services.index.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.dimension.client</artifactId> <!-- Dimension instances are used as a unit-tests targets -->
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-index-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.index</artifactId>
+ <artifactId>org.collectionspace.services.index</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.index.service</artifactId>
<name>services.index.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</exclusions>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-index</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.intake.client</artifactId>
<name>services.intake.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.intake.jaxb</artifactId>
<artifactId>org.collectionspace.services.organization.client</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-intake-client</finalName>
</build>
</project>
-
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.intake</artifactId>
+ <artifactId>org.collectionspace.services.intake</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.intake.service</artifactId>
<name>services.intake.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.intake.client</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-intake</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.loanin.client</artifactId>
<name>services.loanin.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
-<!-- External dependencies -->
+ </dependency>
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-loanin-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.loanin</artifactId>
+ <artifactId>org.collectionspace.services.loanin</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.loanin.service</artifactId>
<name>services.loanin.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
-
+
<!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-loanin</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.loanout.client</artifactId>
<name>services.loanout.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<artifactId>org.collectionspace.services.person.client</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-loanout-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.loanout</artifactId>
+ <artifactId>org.collectionspace.services.loanout</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.loanout.service</artifactId>
<name>services.loanout.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.loanout.client</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</exclusions>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-loanout</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.location.client</artifactId>
<name>services.location.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.location.jaxb</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-location-client</finalName>
<plugins>
</plugins>
</build>
</project>
-
<artifactId>org.collectionspace.services.location</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.location.service</artifactId>
<name>services.location.service</name>
<packaging>jar</packaging>
-
+
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
-<!-- CollectionSpace dependencies -->
+<!-- CollectionSpace dependencies -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<artifactId>org.collectionspace.services.contact.service</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- apache -->
<dependency>
<groupId>commons-beanutils</groupId>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-location</finalName>
<plugins>
</plugins>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.material.client</artifactId>
<name>services.material.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.material.jaxb</artifactId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-material-client</finalName>
<plugins>
</plugins>
</build>
</project>
-
<artifactId>org.collectionspace.services.material</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.material.service</artifactId>
<name>services.material.service</name>
<packaging>jar</packaging>
-
+
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
-<!-- CollectionSpace dependencies -->
+<!-- CollectionSpace dependencies -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- apache -->
<dependency>
<groupId>commons-beanutils</groupId>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-material</finalName>
<plugins>
</plugins>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.media.client</artifactId>
<name>services.media.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<artifactId>org.collectionspace.services.person.client</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-media-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.media</artifactId>
+ <artifactId>org.collectionspace.services.media</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.media.service</artifactId>
<name>services.media.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-servlet-api</artifactId>
+ <version>${tomcat.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
<dependency>
<groupId>javax.security</groupId>
<artifactId>jaas</artifactId>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</exclusions>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-media</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.movement.client</artifactId>
<name>services.movement.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<artifactId>org.collectionspace.services.person.client</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-movement-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.movement</artifactId>
+ <artifactId>org.collectionspace.services.movement</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.movement.service</artifactId>
<name>services.movement.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</exclusions>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-movement</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.note.client</artifactId>
<name>services.note.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
</dependency>
<!-- External dependencies -->
-
+
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<version>3.1</version>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-note-client</finalName>
</build>
</project>
-
<groupId>org.collectionspace.services</groupId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.note.service</artifactId>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
- </dependency>
+ </dependency>
<!-- javax -->
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-note</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.objectexit.client</artifactId>
<name>services.objectexit.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<artifactId>org.collectionspace.services.person.client</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-objectexit-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.objectexit</artifactId>
+ <artifactId>org.collectionspace.services.objectexit</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.objectexit.service</artifactId>
<name>services.objectexit.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId> <!-- FIXME: REM - Is this really a required dependency? -->
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-objectexit</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.organization.client</artifactId>
<name>services.organization.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.client</artifactId>
</dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.contact.client</artifactId>
+ <artifactId>org.collectionspace.services.contact.client</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-organization-client</finalName>
</build>
</project>
-
<artifactId>org.collectionspace.services.organization</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.organization.service</artifactId>
<name>services.organization.service</name>
<artifactId>org.collectionspace.services.authority.service</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<artifactId>org.collectionspace.services.contact.service</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- apache -->
<dependency>
<groupId>commons-beanutils</groupId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-organization</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.person.client</artifactId>
<name>services.person.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.person.jaxb</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-person-client</finalName>
<plugins>
</plugins>
</build>
</project>
-
<artifactId>org.collectionspace.services.person</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.person.service</artifactId>
<name>services.person.service</name>
<packaging>jar</packaging>
-
+
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
-<!-- CollectionSpace dependencies -->
+<!-- CollectionSpace dependencies -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<artifactId>org.collectionspace.services.contact.service</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- apache -->
<dependency>
<groupId>commons-beanutils</groupId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-person</finalName>
<plugins>
</plugins>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.place.client</artifactId>
<name>services.place.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.place.jaxb</artifactId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-place-client</finalName>
<plugins>
</plugins>
</build>
</project>
-
<artifactId>org.collectionspace.services.place</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.place.service</artifactId>
<name>services.place.service</name>
<packaging>jar</packaging>
-
+
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
-<!-- CollectionSpace dependencies -->
+<!-- CollectionSpace dependencies -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- apache -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1</version>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-place</finalName>
<plugins>
</plugins>
</build>
</project>
-
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services</artifactId>
- <version>5.2-SNAPSHOT</version>
- </parent>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.collectionspace.services</groupId>
+ <artifactId>org.collectionspace.services</artifactId>
+ <version>5.2-SNAPSHOT</version>
+ </parent>
- <modelVersion>4.0.0</modelVersion>
- <artifactId>org.collectionspace.services.main</artifactId>
- <name>services.main</name>
- <packaging>pom</packaging>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.collectionspace.services.main</artifactId>
+ <name>services.main</name>
+ <packaging>pom</packaging>
<properties>
<annox.version>0.5.0</annox.version>
<resteasy.version>3.0.19.Final</resteasy.version>
<mysql.driver.version>5.1.8</mysql.driver.version>
<postgres.driver.version>42.2.1</postgres.driver.version>
+ <tomcat.version>8.5.40</tomcat.version>
<!-- The default life cycle policy for Nuxeo document types -->
<Lifecycle>cs_default</Lifecycle>
</properties>
- <!--
+ <!--
!!!!!PLEASE READ!!!!!
Make sure you add modules below in the order of dependency. Security and
infrastructure modules should be built first. For example the authorization-mgt
module would also import default permissions. Domain specific services should only
be built after the security module and common modules are built
-->
- <modules>
- <module>config</module>
- <module>common-api</module>
- <module>authentication</module>
+ <modules>
+ <module>config</module>
+ <module>common-api</module>
+ <module>authentication</module>
<module>authorization-common</module>
- <module>authorization</module>
- <module>blob</module>
- <module>client</module>
- <module>jaxb</module>
- <module>hyperjaxb</module>
- <module>common</module>
- <module>structureddate</module>
- <module>systeminfo</module>
- <module>authority</module>
- <module>authorization-mgt</module> <!-- relies on authorization -->
- <module>common-test</module>
- <module>account</module> <!-- relies on authorization-mgt.import -->
- <!--
+ <module>authorization</module>
+ <module>blob</module>
+ <module>client</module>
+ <module>jaxb</module>
+ <module>hyperjaxb</module>
+ <module>common</module>
+ <module>structureddate</module>
+ <module>systeminfo</module>
+ <module>authority</module>
+ <module>authorization-mgt</module> <!-- relies on authorization -->
+ <module>common-test</module>
+ <module>account</module> <!-- relies on authorization-mgt.import -->
+ <!--
<module>note</module>
-->
- <module>relation</module>
- <module>query</module>
- <module>acquisition</module>
- <module>vocabulary</module>
- <module>organization</module>
- <module>person</module>
- <module>citation</module>
- <module>id</module>
- <module>collectionobject</module>
- <module>servicegroup</module>
- <module>group</module>
- <module>intake</module>
- <module>loanin</module>
- <module>loanout</module>
- <module>claim</module>
- <module>exhibition</module>
- <module>conditioncheck</module>
- <module>conservation</module>
- <module>valuationcontrol</module>
- <module>objectexit</module>
- <module>propagation</module>
- <module>pottag</module>
- <module>batch</module>
- <module>imports</module>
- <module>location</module>
- <module>place</module>
- <module>work</module>
- <module>material</module>
- <module>concept</module>
- <module>taxonomy</module>
- <module>movement</module>
- <module>report</module>
- <module>dimension</module>
- <module>contact</module>
- <module>workflow</module>
- <module>index</module>
- <module>media</module>
- <module>uoc</module>
- <module>publicitem</module>
- <module>IntegrationTests</module>
- <module>PerformanceTests</module>
- <module>security</module>
- <module>JaxRsServiceProvider</module>
- </modules>
+ <module>relation</module>
+ <module>query</module>
+ <module>acquisition</module>
+ <module>vocabulary</module>
+ <module>organization</module>
+ <module>person</module>
+ <module>citation</module>
+ <module>id</module>
+ <module>collectionobject</module>
+ <module>servicegroup</module>
+ <module>group</module>
+ <module>intake</module>
+ <module>loanin</module>
+ <module>loanout</module>
+ <module>claim</module>
+ <module>exhibition</module>
+ <module>conditioncheck</module>
+ <module>conservation</module>
+ <module>valuationcontrol</module>
+ <module>objectexit</module>
+ <module>propagation</module>
+ <module>pottag</module>
+ <module>batch</module>
+ <module>imports</module>
+ <module>location</module>
+ <module>place</module>
+ <module>work</module>
+ <module>material</module>
+ <module>concept</module>
+ <module>taxonomy</module>
+ <module>movement</module>
+ <module>report</module>
+ <module>dimension</module>
+ <module>contact</module>
+ <module>workflow</module>
+ <module>index</module>
+ <module>media</module>
+ <module>uoc</module>
+ <module>publicitem</module>
+ <module>IntegrationTests</module>
+ <module>PerformanceTests</module>
+ <module>security</module>
+ <module>JaxRsServiceProvider</module>
+ </modules>
- <dependencies>
- <dependency>
- <groupId>org.testng</groupId>
- <artifactId>testng</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>org.testng</groupId>
+ <artifactId>testng</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
- <repositories> </repositories>
+ <repositories></repositories>
- <pluginRepositories>
- </pluginRepositories>
+ <pluginRepositories>
+ </pluginRepositories>
- <build>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>3.0.0-M1</version>
- <configuration>
- <systemProperties>
- <property>
- <name>log4j.configuration</name>
- <value>file:${project.build.directory}/test-classes/log4j.properties</value>
- </property>
- <property>
- <name>maven.basedir</name>
- <value>${basedir}</value>
- </property>
- </systemProperties>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>properties-maven-plugin</artifactId>
- <version>1.0-alpha-2</version>
- </plugin>
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>3.0.0-M1</version>
+ <configuration>
+ <systemProperties>
+ <property>
+ <name>log4j.configuration</name>
+ <value>file:${project.build.directory}/test-classes/log4j.properties</value>
+ </property>
+ <property>
+ <name>maven.basedir</name>
+ <value>${basedir}</value>
+ </property>
+ </systemProperties>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>properties-maven-plugin</artifactId>
+ <version>1.0-alpha-2</version>
+ </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>jboss-maven-plugin</artifactId>
- <version>1.4</version>
- <configuration>
- <jbossHome>${jboss.dir}</jbossHome>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.jvnet.hyperjaxb3</groupId>
- <artifactId>maven-hyperjaxb3-plugin</artifactId>
- <version>0.6.0</version>
- <executions>
- <execution>
- <goals>
- <goal>generate</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <bindingIncludes>
- <include>bindings.xjb</include>
- </bindingIncludes>
- <args>
- <arg>-Xannotate</arg>
- </args>
- <extension>true</extension>
- <jdk5>true</jdk5>
- <ejb3>false</ejb3>
- <persistenceUnitName>garbage</persistenceUnitName>
- </configuration>
- </plugin>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jboss-maven-plugin</artifactId>
+ <version>1.4</version>
+ <configuration>
+ <jbossHome>${jboss.dir}</jbossHome>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.jvnet.hyperjaxb3</groupId>
+ <artifactId>maven-hyperjaxb3-plugin</artifactId>
+ <version>0.6.0</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <bindingIncludes>
+ <include>bindings.xjb</include>
+ </bindingIncludes>
+ <args>
+ <arg>-Xannotate</arg>
+ </args>
+ <extension>true</extension>
+ <jdk5>true</jdk5>
+ <ejb3>false</ejb3>
+ <persistenceUnitName>garbage</persistenceUnitName>
+ </configuration>
+ </plugin>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
</schemaIncludes>
<bindingDirectory>src/main/resources</bindingDirectory>
<bindingIncludes>
- <include>bindings.xml</include>
- </bindingIncludes>
+ <include>bindings.xml</include>
+ </bindingIncludes>
<args>
<arg>-extension</arg>
<arg>-Xnamespace-prefix</arg>
- <arg>-Xannotate</arg>
- <arg>-verbose</arg>
+ <arg>-Xannotate</arg>
+ <arg>-verbose</arg>
<!-- <arg>-XtoString</arg> -->
<arg>-Xequals</arg>
<arg>-XhashCode</arg>
<!-- <arg>-Xcopyable</arg> -->
</args>
<plugins>
- <plugin>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>${jaxb.version}</version>
- </plugin>
- <plugin>
- <groupId>org.jvnet.jaxb2_commons</groupId>
- <artifactId>jaxb2-basics-annotate</artifactId>
+ <plugin>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ <version>${jaxb.version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.jvnet.jaxb2_commons</groupId>
+ <artifactId>jaxb2-basics-annotate</artifactId>
<version>${jaxb2-basics.version}</version>
- </plugin>
+ </plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
- <artifactId>jaxb2-namespace-prefix</artifactId> <!-- Used to force a specific namespace prefix specified in src/main/resource/bindings.xml -->
+ <artifactId>jaxb2-namespace-prefix</artifactId> <!-- Used to force a specific namespace prefix specified in src/main/resource/bindings.xml -->
<version>1.4-SNAPSHOT</version>
</dependency>
</dependencies>
</plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>exec-maven-plugin</artifactId>
- <version>1.1</version>
- <configuration>
- <systemProperties>
- <systemProperty>
- <key>log4j.configuration</key>
- <value>file:${project.build.directory}/classes/log4j.properties</value>
- </systemProperty>
- </systemProperties>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>1.1</version>
+ <configuration>
+ <systemProperties>
+ <systemProperty>
+ <key>log4j.configuration</key>
+ <value>file:${project.build.directory}/classes/log4j.properties</value>
+ </systemProperty>
+ </systemProperties>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-site-plugin</artifactId>
- <configuration>
- <unzipCommand>/usr/bin/unzip -o > err.txt</unzipCommand>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-site-plugin</artifactId>
+ <configuration>
+ <unzipCommand>/usr/bin/unzip -o > err.txt</unzipCommand>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <!--show>public</show-->
- </configuration>
- </plugin>
- <!--plugin>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <!--show>public</show-->
+ </configuration>
+ </plugin>
+ <!--plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>taglist-maven-plugin</artifactId>
<version>2.1</version>
<onlyAnalyze>org.collectionspace.*</onlyAnalyze>
</configuration>
</plugin-->
- <!--<plugin>
+ <!--<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.1</version>
</configuration>
</plugin>-->
- </plugins>
- </reporting>
-
- <dependencyManagement>
- <dependencies>
+ </plugins>
+ </reporting>
+
+ <dependencyManagement>
+ <dependencies>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<version>${project.version}</version>
<exclusions>
<exclusion>
- <artifactId>jersey-server</artifactId>
<groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-server</artifactId>
</exclusion>
<exclusion>
- <artifactId>jersey-servlet</artifactId>
<groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-servlet</artifactId>
</exclusion>
<exclusion>
- <artifactId>jersey-core</artifactId>
<groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<artifactId>ehcache</artifactId>
<version>2.10.2</version>
</dependency>
- <dependency>
- <artifactId>servlet-api</artifactId>
- <groupId>javax.servlet</groupId>
- <version>2.5</version>
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-servlet-api</artifactId>
+ <version>${tomcat.version}</version>
+ <scope>provided</scope>
</dependency>
- <!-- Start of Nuxeo dependencies -->
<dependency>
- <groupId>org.nuxeo.ecm.core</groupId>
- <artifactId>nuxeo-core</artifactId>
- <version>${nuxeo.core.version}</version>
+ <groupId>net.java.dev.jaxb2-commons</groupId>
+ <artifactId>jaxb-fluent-api</artifactId>
+ <version>2.0.2</version>
</dependency>
- <dependency>
- <groupId>org.nuxeo.ecm.core</groupId>
- <artifactId>nuxeo-core-api</artifactId>
- <version>${nuxeo.core.version}</version>
- </dependency>
<dependency>
- <groupId>org.nuxeo.common</groupId>
- <artifactId>nuxeo-common</artifactId>
- <version>${nuxeo.core.version}</version>
+ <groupId>org.jvnet.jaxb2_commons</groupId>
+ <artifactId>jaxb2-basics</artifactId>
+ <version>${jaxb2-basics.version}</version>
</dependency>
<dependency>
- <groupId>org.nuxeo.runtime</groupId>
- <artifactId>nuxeo-runtime</artifactId>
- <version>${nuxeo.core.version}</version>
+ <groupId>org.jvnet.jaxb2-commons</groupId>
+ <artifactId>property-listener-injector</artifactId>
+ <version>1.0</version>
</dependency>
<dependency>
- <groupId>org.nuxeo.ecm.core</groupId>
- <artifactId>nuxeo-core-schema</artifactId>
- <version>${nuxeo.core.version}</version>
+ <groupId>org.jvnet.jaxb2_commons</groupId>
+ <artifactId>jaxb2-basics-runtime</artifactId>
+ <version>${jaxb2-basics.version}</version>
</dependency>
<dependency>
- <groupId>org.nuxeo.ecm.core</groupId>
- <artifactId>nuxeo-core-storage-sql</artifactId>
- <version>${nuxeo.core.version}</version>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-jaxrs</artifactId>
+ <version>${resteasy.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>tjws</groupId>
+ <artifactId>webserver</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>org.nuxeo.ecm.core</groupId>
- <artifactId>nuxeo-core-storage-sql-ra</artifactId>
- <version>${nuxeo.core.version}</version>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-jaxb-provider</artifactId>
+ <version>${resteasy.version}</version>
</dependency>
<dependency>
- <groupId>org.nuxeo.ecm.core</groupId>
- <artifactId>nuxeo-core-io</artifactId>
- <version>${nuxeo.core.version}</version>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-multipart-provider</artifactId>
+ <version>${resteasy.version}</version>
</dependency>
<dependency>
- <groupId>org.nuxeo.ecm.core</groupId>
- <artifactId>nuxeo-core-convert</artifactId>
- <version>${nuxeo.core.version}</version>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
</dependency>
<dependency>
- <groupId>org.nuxeo.ecm.core</groupId>
- <artifactId>nuxeo-opencmis-impl</artifactId>
- <version>${nuxeo.core.version}</version>
- </dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.5</version>
+ </dependency>
<dependency>
- <groupId>org.nuxeo.ecm.core</groupId>
- <artifactId>nuxeo-opencmis-bindings</artifactId>
- <version>${nuxeo.core.version}</version>
+ <groupId>commons-cli</groupId>
+ <artifactId>commons-cli</artifactId>
+ <version>1.2</version>
</dependency>
<dependency>
- <groupId>org.nuxeo.runtime</groupId>
- <artifactId>nuxeo-runtime-jtajca</artifactId>
- <version>${nuxeo.core.version}</version>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-core</artifactId>
+ <version>${jaxb.version}</version>
</dependency>
<dependency>
- <groupId>org.nuxeo.runtime</groupId>
- <artifactId>nuxeo-runtime-datasource</artifactId>
- <version>${nuxeo.core.version}</version>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>${jaxb.version}</version>
</dependency>
- <!-- End of Nuxeo dependencies -->
-
- <dependency>
- <groupId>net.java.dev.jaxb2-commons</groupId>
- <artifactId>jaxb-fluent-api</artifactId>
- <version>2.0.2</version>
- </dependency>
<dependency>
- <groupId>org.jvnet.jaxb2_commons</groupId>
- <artifactId>jaxb2-basics</artifactId>
- <version>${jaxb2-basics.version}</version>
+ <groupId>javax.persistence</groupId>
+ <artifactId>persistence-api</artifactId>
+ <version>1.0</version>
</dependency>
- <dependency>
- <groupId>org.jvnet.jaxb2-commons</groupId>
- <artifactId>property-listener-injector</artifactId>
- <version>1.0</version>
- </dependency>
<dependency>
- <groupId>org.jvnet.jaxb2_commons</groupId>
- <artifactId>jaxb2-basics-runtime</artifactId>
- <version>${jaxb2-basics.version}</version>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ <version>3.4.0.GA</version>
</dependency>
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-jaxrs</artifactId>
- <version>${resteasy.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-jaxb-provider</artifactId>
- <version>${resteasy.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-multipart-provider</artifactId>
- <version>${resteasy.version}</version>
- </dependency>
- <dependency>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- <version>3.1</version>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.5</version>
- </dependency>
- <dependency>
- <groupId>commons-cli</groupId>
- <artifactId>commons-cli</artifactId>
- <version>1.2</version>
- </dependency>
<dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-core</artifactId>
- <version>${jaxb.version}</version>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-c3p0</artifactId>
+ <version>3.6.10.Final</version>
</dependency>
<dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb.version}</version>
+ <groupId>org.jvnet.hyperjaxb3</groupId>
+ <!-- for time type adapters -->
+ <artifactId>hyperjaxb3-ejb-runtime</artifactId>
+ <version>0.6.0</version>
+ </dependency>
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>${mysql.driver.version}</version>
</dependency>
- <dependency>
- <groupId>javax.persistence</groupId>
- <artifactId>persistence-api</artifactId>
- <version>1.0</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <version>3.4.0.GA</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-c3p0</artifactId>
- <version>3.6.10.Final</version>
- </dependency>
- <dependency>
- <groupId>org.jvnet.hyperjaxb3</groupId>
- <!-- for time type adapters -->
- <artifactId>hyperjaxb3-ejb-runtime</artifactId>
- <version>0.6.0</version>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>${mysql.driver.version}</version>
- </dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgres.driver.version}</version>
</dependency>
<dependency>
- <groupId>dom4j</groupId>
- <artifactId>dom4j</artifactId>
- <version>1.6.1</version>
- <scope>compile</scope>
- <exclusions>
- <exclusion>
- <artifactId>xml-apis</artifactId>
- <groupId>xml-apis</groupId>
- </exclusion>
- </exclusions>
- </dependency>
- </dependencies>
- </dependencyManagement>
+ <groupId>dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ <version>1.6.1</version>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <artifactId>xml-apis</artifactId>
+ <groupId>xml-apis</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
</project>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.pottag.client</artifactId>
<name>services.pottag.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
-<!-- External dependencies -->
+ </dependency>
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<version>3.1</version>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-pottag-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.pottag</artifactId>
+ <artifactId>org.collectionspace.services.pottag</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.pottag.service</artifactId>
<name>services.pottag.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<artifactId>dom4j</artifactId>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-pottag</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.propagation.client</artifactId>
<name>services.propagation.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
-<!-- External dependencies -->
+ </dependency>
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<version>3.1</version>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-propagation-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.propagation</artifactId>
+ <artifactId>org.collectionspace.services.propagation</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.propagation.service</artifactId>
<name>services.propagation.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<artifactId>dom4j</artifactId>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-propagation</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.publicitem.client</artifactId>
<name>services.publicitem.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
-<!-- External dependencies -->
+ </dependency>
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-publicitem-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.publicitem</artifactId>
+ <artifactId>org.collectionspace.services.publicitem</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.publicitem.service</artifactId>
<name>services.publicitem.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-publicitem</finalName>
</build>
</project>
-
<artifactId>org.collectionspace.services.query</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.query.service</artifactId>
<name>services.query.service</name>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- apache -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1</version>
</dependency>
-
+
<!-- RESTEasy -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-query</finalName>
</build>
</project>
-
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.client</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>org.collectionspace.services.relation</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.relation.service</artifactId>
<name>services.relation.service</name>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.person.client</artifactId>
<version>${project.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.citation.client</artifactId>
<version>${project.version}</version>
- </dependency>
-
+ </dependency>
+
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.organization.client</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-relation</finalName>
</build>
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.report.client</artifactId>
<name>services.report.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.report.jaxb</artifactId>
<artifactId>org.collectionspace.services.organization.client</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-report-client</finalName>
</build>
</project>
-
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.report</artifactId>
+ <artifactId>org.collectionspace.services.report</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.report.service</artifactId>
<name>services.report.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-report</finalName>
</build>
</project>
-
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
</plugins>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.servicegroup.client</artifactId>
<name>services.servicegroup.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.servicegroup.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-servicegroup-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.servicegroup</artifactId>
+ <artifactId>org.collectionspace.services.servicegroup</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.servicegroup.service</artifactId>
<name>services.servicegroup.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.servicegroup.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-servicegroup</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.structureddate.client</artifactId>
<name>services.structureddate.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>slf4j-log4j12</artifactId>
<scope>test</scope>
</dependency>
-
+
<!-- CollectionSpace dependencies -->
-
+
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.client</artifactId>
</dependency>
<!-- External dependencies -->
-
+
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-structureddate-client</finalName>
</build>
</project>
-
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.structureddate</artifactId>
+ <artifactId>org.collectionspace.services.structureddate</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.structureddate.service</artifactId>
<name>services.structureddate.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.structureddate.client</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.structureddate.structureddate</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
</dependencies>
-
+
<build>
<finalName>collectionspace-services-structureddate-service</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.systeminfo.client</artifactId>
<name>services.systeminfo.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>slf4j-log4j12</artifactId>
<scope>test</scope>
</dependency>
-
+
<!-- CollectionSpace dependencies -->
-
+
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.client</artifactId>
</dependency>
<!-- External dependencies -->
-
+
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-systeminfo-client</finalName>
</build>
</project>
-
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.systeminfo</artifactId>
+ <artifactId>org.collectionspace.services.systeminfo</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.systeminfo.service</artifactId>
<name>services.systeminfo.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.systeminfo.client</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<!-- External dependencies -->
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
</dependencies>
-
+
<build>
<finalName>collectionspace-services-systeminfo-service</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.taxonomy.client</artifactId>
<name>services.taxonomy.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.taxonomy.jaxb</artifactId>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.client</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-taxonomy-client</finalName>
<plugins>
</plugins>
</build>
</project>
-
<artifactId>org.collectionspace.services.taxonomy</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.taxonomy.service</artifactId>
<name>services.taxonomy.service</name>
<packaging>jar</packaging>
-
+
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
- <!-- CollectionSpace dependencies -->
+ <!-- CollectionSpace dependencies -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<artifactId>org.collectionspace.services.authority.service</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- apache -->
<dependency>
<groupId>commons-beanutils</groupId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-taxonomy</finalName>
<plugins>
</plugins>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.uoc.client</artifactId>
<name>services.uoc.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
-<!-- External dependencies -->
+ </dependency>
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-uoc-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.uoc</artifactId>
+ <artifactId>org.collectionspace.services.uoc</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.uoc.service</artifactId>
<name>services.uoc.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
-
+
<!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-uoc</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.valuationcontrol.client</artifactId>
<name>services.valuationcontrol.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<artifactId>org.collectionspace.services.person.client</artifactId>
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-valuationcontrol-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.valuationcontrol</artifactId>
+ <artifactId>org.collectionspace.services.valuationcontrol</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.valuationcontrol.service</artifactId>
<name>services.valuationcontrol.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.collectionobject.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-valuationcontrol</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.vocabulary.client</artifactId>
<name>services.vocabulary.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-vocabulary-client</finalName>
</build>
</project>
-
<artifactId>org.collectionspace.services.vocabulary</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.vocabulary.service</artifactId>
<name>services.vocabulary.service</name>
<packaging>jar</packaging>
-
+
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>org.collectionspace.services.vocabulary.client</artifactId>
<version>${project.version}</version>
</dependency>
-
+
<!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- apache -->
<dependency>
<groupId>commons-beanutils</groupId>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-vocabulary</finalName>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.work.client</artifactId>
<name>services.work.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.work.jaxb</artifactId>
<artifactId>org.collectionspace.services.authority.jaxb</artifactId>
<optional>true</optional>
<version>${project.version}</version>
- </dependency>
+ </dependency>
<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-work-client</finalName>
<plugins>
</plugins>
</build>
</project>
-
<artifactId>org.collectionspace.services.work</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.work.service</artifactId>
<name>services.work.service</name>
<packaging>jar</packaging>
-
+
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
-<!-- CollectionSpace dependencies -->
+<!-- CollectionSpace dependencies -->
<dependency>
<groupId>org.collectionspace.services</groupId>
<artifactId>org.collectionspace.services.common</artifactId>
<optional>true</optional>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- apache -->
<dependency>
<groupId>commons-beanutils</groupId>
<version>1.0.01</version>
<scope>provided</scope>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-work</finalName>
<plugins>
</plugins>
</build>
</project>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.workflow.client</artifactId>
<name>services.workflow.client</name>
-
+
<dependencies>
<!-- keep slf4j dependencies on the top -->
<dependency>
<artifactId>org.collectionspace.services.dimension.client</artifactId> <!-- Dimension instances are used as a unit-tests targets -->
<version>${project.version}</version>
</dependency>
-<!-- External dependencies -->
+<!-- External dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-workflow-client</finalName>
</build>
<parent>
<groupId>org.collectionspace.services</groupId>
- <artifactId>org.collectionspace.services.workflow</artifactId>
+ <artifactId>org.collectionspace.services.workflow</artifactId>
<version>5.2-SNAPSHOT</version>
</parent>
-
+
<modelVersion>4.0.0</modelVersion>
<artifactId>org.collectionspace.services.workflow.service</artifactId>
<name>services.workflow.service</name>
- <packaging>jar</packaging>
+ <packaging>jar</packaging>
<dependencies>
<dependency>
<artifactId>org.collectionspace.services.jaxb</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- External dependencies -->
+ <!-- External dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
-
+
<!-- javax -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
</dependency>
-
+
<!-- jboss -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>tjws</groupId>
- <artifactId>webserver</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
-
+
<!-- nuxeo -->
<dependency>
</exclusions>
</dependency>
</dependencies>
-
+
<build>
<finalName>collectionspace-services-workflow</finalName>
</build>
</project>
-