<artifactId>org.collectionspace.services.loanout.service</artifactId>\r
<version>${project.version}</version>\r
</dependency>\r
+ <dependency>\r
+ <groupId>org.collectionspace.services</groupId>\r
+ <artifactId>org.collectionspace.services.objectexit.service</artifactId>\r
+ <version>${project.version}</version>\r
+ </dependency>\r
<dependency>\r
<groupId>org.collectionspace.services</groupId>\r
<artifactId>org.collectionspace.services.location.service</artifactId>\r
import org.collectionspace.services.intake.IntakeResource;
import org.collectionspace.services.loanin.LoaninResource;
import org.collectionspace.services.loanout.LoanoutResource;
+import org.collectionspace.services.objectexit.ObjectExitResource;
import org.collectionspace.services.location.LocationAuthorityResource;
import org.collectionspace.services.movement.MovementResource;
import org.collectionspace.services.report.ReportResource;
singletons.add(new IntakeResource());
singletons.add(new LoaninResource());
singletons.add(new LoanoutResource());
+ singletons.add(new ObjectExitResource());
singletons.add(new LocationAuthorityResource());
singletons.add(new MovementResource());
singletons.add(new ReportResource());
<ant antfile="intake/build.xml" target="deploy" inheritAll="false"/>\r
<ant antfile="loanin/build.xml" target="deploy" inheritAll="false"/>\r
<ant antfile="loanout/build.xml" target="deploy" inheritAll="false"/>\r
+ <ant antfile="objectexit/build.xml" target="deploy" inheritAll="false"/>\r
<ant antfile="location/build.xml" target="deploy" inheritAll="false"/>\r
<ant antfile="movement/build.xml" target="deploy" inheritAll="false"/>\r
<ant antfile="report/build.xml" target="deploy" inheritAll="false"/>\r
<ant antfile="dimension/build.xml" target="undeploy" inheritAll="false"/>\r
<ant antfile="acquisition/build.xml" target="undeploy" inheritAll="false"/>\r
<ant antfile="location/build.xml" target="undeploy" inheritAll="false"/>\r
+ <ant antfile="objectexit/build.xml" target="undeploy" inheritAll="false"/>\r
<ant antfile="report/build.xml" target="undeploy" inheritAll="false"/>\r
<ant antfile="movement/build.xml" target="undeploy" inheritAll="false"/>\r
<ant antfile="loanout/build.xml" target="undeploy" inheritAll="false"/>\r
<ant antfile="loanin/build.xml" target="dist" inheritAll="false"/>\r
<ant antfile="loanout/build.xml" target="dist" inheritAll="false"/>\r
<ant antfile="location/build.xml" target="dist" inheritAll="false"/>\r
+ <ant antfile="objectexit/build.xml" target="dist" inheritAll="false"/>\r
<ant antfile="movement/build.xml" target="dist" inheritAll="false"/>\r
<ant antfile="report/build.xml" target="dist" inheritAll="false"/>\r
<ant antfile="vocabulary/build.xml" target="dist" inheritAll="false"/>\r
import org.jboss.resteasy.plugins.providers.multipart.MultipartInput;\r
import org.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\r
+import org.testng.Assert;\r
import org.testng.annotations.DataProvider;\r
import org.w3c.dom.Document;\r
\r
*\r
* @param expectedStatusCode A status code expected to be returned in the response.\r
*\r
- * @param serviceRequestType A type of service request (e.g. CREATE, DELETE).\r
+ * @param reqType A type of service request (e.g. CREATE, DELETE).\r
*/\r
protected void testSetup(\r
int expectedStatusCode,\r
* specific call to a service does not fall within a set of valid status\r
* codes for that service.\r
*\r
- * @param serviceRequestType A type of service request (e.g. CREATE, DELETE).\r
+ * @param requestType A type of service request (e.g. CREATE, DELETE).\r
*\r
* @param statusCode The invalid status code that was returned in the response,\r
* from submitting that type of request to the service.\r
"Exception during HTTP " + method + " request to "\r
+ url + ":", e);\r
} finally {\r
- httpMethod.releaseConnection();\r
+ if (httpMethod != null) httpMethod.releaseConnection();\r
}\r
return statusCode;\r
}\r
*\r
* @param mediaType The media type of the entity body to be submitted.\r
*\r
- * @param entity The contents of the entity body to be submitted.\r
+ * @param entityStr The contents of the entity body to be submitted.\r
*\r
* @return The status code received in the HTTP response.\r
*/\r
- protected int submitRequest(String method, String url, String mediaType,\r
- String entityStr) {\r
+ protected int submitRequest(String method, String url, String mediaType, String entityStr) {\r
int statusCode = 0;\r
EntityEnclosingMethod httpMethod = null;\r
try {\r
"Exception during HTTP " + method + " request to "\r
+ url + ":", e);\r
} finally {\r
- httpMethod.releaseConnection();\r
+ if (httpMethod != null) httpMethod.releaseConnection();\r
}\r
return statusCode;\r
}\r
if (logger.isDebugEnabled()) {\r
logger.debug("extracted part as str=\n" + partStr);\r
}\r
- obj = part.getBody(clazz, null);\r
- if (logger.isDebugEnabled()) {\r
- logger.debug("extracted part as obj=\n",\r
- objectAsXmlString(obj, clazz));\r
+ try {\r
+ obj = part.getBody(clazz, null);\r
+ if (logger.isDebugEnabled()) {\r
+ logger.debug("extracted part as obj="+objectAsXmlString(obj, clazz));\r
+ }\r
+ } catch (Throwable t) {\r
+ logger.error("Could not get part body based on content and classname. "+ clazz.getName()+ " error: "+t);\r
}\r
}\r
break;\r
try {\r
bais.close();\r
} catch (Exception e) {\r
- if (logger.isDebugEnabled() == true) {\r
+ if (logger.isDebugEnabled()) {\r
e.printStackTrace();\r
}\r
}\r
}\r
return className;\r
}\r
+\r
+ public void assertStatusCode(ClientResponse<?> res, String testName) {\r
+ int statusCode = res.getStatus();\r
+ // Check the status code of the response: does it match the expected response(s)?\r
+ logger.debug(testName + ": status = " + statusCode);\r
+ Assert.assertTrue(REQUEST_TYPE.isValidStatusCode(statusCode), invalidStatusCodeMessage(REQUEST_TYPE, statusCode));\r
+ Assert.assertEquals(statusCode, EXPECTED_STATUS_CODE);\r
+ }\r
+\r
+\r
}\r
</tenant:serviceBindings>
<!-- end loanout service meta-data -->
+ <!-- begin objectexit service meta-data -->
+ <tenant:serviceBindings name="ObjectExit" type="procedure" version="0.1">
+ <service:repositoryDomain xmlns:service='http://collectionspace.org/services/common/service'>
+ default-domain
+ </service:repositoryDomain>
+ <service:documentHandler xmlns:service='http://collectionspace.org/services/common/service'>
+ org.collectionspace.services.objectexit.nuxeo.ObjectExitDocumentModelHandler
+ </service:documentHandler>
+ <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
+ org.collectionspace.services.objectexit.nuxeo.ObjectExitValidatorHandler
+ </service:validatorHandler>
+ <service:object name="ObjectExit" version="0.1"
+ xmlns:service='http://collectionspace.org/services/common/service'>
+ <service:part id="0" control_group="Managed"
+ versionable="true" auditable="false"
+ label="objectexit-system" updated="" order="0">
+ <service:content contentType="application/xml">
+ <service:xmlContent
+ namespaceURI="http://collectionspace.org/services/common/system"
+ schemaLocation="http://collectionspace.org/services/common/system http://collectionspace.org/services/common/system/system-response.xsd">
+ </service:xmlContent>
+ </service:content>
+ </service:part>
+ <service:part id="1" control_group="Managed"
+ versionable="true" auditable="false"
+ label="objectexit_common" updated="" order="1">
+ <service:properties>
+ <types:item><types:key>authRef</types:key><types:value>currentOwner</types:value></types:item>
+ <types:item><types:key>authRef</types:key><types:value>depositor</types:value></types:item>
+ </service:properties>
+ <service:content contentType="application/xml">
+ <service:xmlContent
+ namespaceURI="http://collectionspace.org/services/objectexit"
+ schemaLocation="http://collectionspace.org/services/objectexit http://services.collectionspace.org/objectexit/objectexit_common.xsd">
+ </service:xmlContent>
+ </service:content>
+ </service:part>
+ </service:object>
+ </tenant:serviceBindings>
+ <!-- end objectexit service meta-data -->
+
<!-- begin movement service meta-data -->
<tenant:serviceBindings name="Movements" type="procedure" version="0.1">
<!-- other URI paths using which this service could be accessed -->
</service:object>
</tenant:serviceBindings>
<!-- end loanout service meta-data -->
+
+ <!-- begin objectexit service meta-data -->
+ <tenant:serviceBindings name="ObjectExit" type="procedure" version="0.1">
+ <service:repositoryDomain xmlns:service='http://collectionspace.org/services/common/service'>
+ default-domain
+ </service:repositoryDomain>
+ <service:documentHandler xmlns:service='http://collectionspace.org/services/common/service'>
+ org.collectionspace.services.objectexit.nuxeo.ObjectExitDocumentModelHandler
+ </service:documentHandler>
+ <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
+ org.collectionspace.services.objectexit.nuxeo.ObjectExitValidatorHandler
+ </service:validatorHandler>
+ <service:object name="ObjectExit" version="0.1"
+ xmlns:service='http://collectionspace.org/services/common/service'>
+ <service:part id="0" control_group="Managed"
+ versionable="true" auditable="false"
+ label="objectexit-system" updated="" order="0">
+ <service:content contentType="application/xml">
+ <service:xmlContent
+ namespaceURI="http://collectionspace.org/services/common/system"
+ schemaLocation="http://collectionspace.org/services/common/system http://collectionspace.org/services/common/system/system-response.xsd">
+ </service:xmlContent>
+ </service:content>
+ </service:part>
+ <service:part id="1" control_group="Managed"
+ versionable="true" auditable="false"
+ label="objectexit_common" updated="" order="1">
+ <service:properties>
+ <types:item><types:key>authRef</types:key><types:value>currentOwner</types:value></types:item>
+ <types:item><types:key>authRef</types:key><types:value>depositor</types:value></types:item>
+ </service:properties>
+ <service:content contentType="application/xml">
+ <service:xmlContent
+ namespaceURI="http://collectionspace.org/services/objectexit"
+ schemaLocation="http://collectionspace.org/services/objectexit http://services.collectionspace.org/objectexit/objectexit_common.xsd">
+ </service:xmlContent>
+ </service:content>
+ </service:part>
+ </service:object>
+ </tenant:serviceBindings>
+ <!-- end objectexit service meta-data -->
<!-- begin movement service meta-data -->
<tenant:serviceBindings name="Movements" type="procedure" version="0.1">
\r
import org.jboss.resteasy.plugins.providers.multipart.MultipartInput;\r
import org.jboss.resteasy.plugins.providers.multipart.MultipartOutput;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
\r
/**\r
* The Class AbstractMultiPartCollectionSpaceResourceImpl.\r
public abstract class AbstractMultiPartCollectionSpaceResourceImpl extends\r
AbstractCollectionSpaceResourceImpl<MultipartInput, MultipartOutput> {\r
\r
+ protected final Logger logger = LoggerFactory.getLogger(this.getClass());\r
+\r
@Override\r
public ServiceContextFactory<MultipartInput, MultipartOutput> getServiceContextFactory() {\r
- return (ServiceContextFactory<MultipartInput, MultipartOutput>)MultipartServiceContextFactory.get();\r
+ return MultipartServiceContextFactory.get();\r
}\r
\r
@Override\r
public DocumentHandler createDocumentHandler(ServiceContext<MultipartInput, MultipartOutput> ctx) throws Exception {\r
- DocumentHandler docHandler = createDocumentHandler(ctx, ctx.getCommonPartLabel(),\r
- getCommonPartClass());\r
- return docHandler;\r
+ return createDocumentHandler(ctx, ctx.getCommonPartLabel(),getCommonPartClass());\r
}\r
\r
/**\r
if (ctx.getInput() != null) {\r
commonPart = ctx.getInputPart(schemaName, commonClass);\r
}\r
- DocumentHandler docHandler = super.createDocumentHandler(ctx, commonPart);\r
- \r
- return docHandler;\r
+ return super.createDocumentHandler(ctx, commonPart);\r
}\r
\r
/**\r
<module>intake</module>
<module>loanin</module>
<module>loanout</module>
+ <module>objectexit</module>
<module>location</module>
<module>movement</module>
<module>report</module>