<auth ID="admin@core.collectionspace.org">YWRtaW5AY29yZS5jb2xsZWN0aW9uc3BhY2Uub3JnOkFkbWluaXN0cmF0b3I=</auth>\r
</auths>\r
<testGroup ID="testSingle" autoDeletePOSTS="true">\r
- <test ID="createCollObj1" auth="test">\r
+ <test ID="createBatch1" auth="test">\r
<method>POST</method>\r
<uri>/cspace-services/batch/</uri>\r
<filename>batch/batch1.xml</filename>\r
</test>\r
- <test ID="createCollObj2" auth="test">\r
+ <test ID="createBatch2" auth="test">\r
<method>POST</method>\r
<uri>/cspace-services/batch/</uri>\r
<filename>batch/batch1.xml</filename>\r
</test>\r
<test ID="testInvokeSingle" auth="test" autoDeletePOSTS="false">\r
<method>POST</method>\r
- <uri>/cspace-services/batch/${createCollObj1.CSID}</uri>\r
+ <uri>/cspace-services/batch/${createBatch1.CSID}</uri>\r
<filename>batch/batchInvContextSingle.xml</filename>\r
<vars>\r
<var ID="CollObj1">${createBatch.CSID}</var>\r
</test>\r
<test ID="testInvokeList" auth="test" autoDeletePOSTS="false">\r
<method>POST</method>\r
- <uri>/cspace-services/batch/${createCollObj1.CSID}</uri>\r
+ <uri>/cspace-services/batch/${createBatch1.CSID}</uri>\r
<filename>batch/batchInvContextList.xml</filename>\r
<vars>\r
<var ID="CollObj1">${createBatch.CSID}</var>\r
<test ID="testBadInvoke" auth="test" autoDeletePOSTS="false">\r
<method>POST</method>\r
<expectedCodes>400</expectedCodes>\r
- <uri>/cspace-services/batch/${createCollObj1.CSID}</uri>\r
+ <uri>/cspace-services/batch/${createBatch1.CSID}</uri>\r
<filename>batch/batchBadInvContext.xml</filename>\r
<vars>\r
<var ID="CollObj1">${createBatch.CSID}</var>\r
<test ID="testInvokeEmptyList" auth="test" autoDeletePOSTS="false">\r
<method>POST</method>\r
<expectedCodes>400</expectedCodes>\r
- <uri>/cspace-services/batch/${createCollObj1.CSID}</uri>\r
+ <uri>/cspace-services/batch/${createBatch1.CSID}</uri>\r
<filename>batch/batchBadInvContextList.xml</filename>\r
<vars>\r
<var ID="CollObj1">${createBatch.CSID}</var>\r
<testGroup ID="cleanup" autoDeletePOSTS="true">\r
<test ID="cl1" auth="test">\r
<method>DELETE</method>\r
- <uri>/cspace-services/batch/${createCollObj1.CSID}</uri>\r
+ <uri>/cspace-services/batch/${createBatch1.CSID}</uri>\r
</test>\r
<test ID="cl2" auth="test">\r
<method>DELETE</method>\r
xmlns:ns3="http://collectionspace.org/services/jaxb">\r
<name>TestCreateAndLinkLoanOutBatchJob</name>\r
<notes>This should be interesting</notes>\r
- <forDocType>CollectionObject</forDocType>\r
+ <forDocTypes>\r
+ <forDocType>CollectionObject</forDocType>\r
+ </forDocTypes>\r
<supportsSingleDoc>true</supportsSingleDoc>\r
<supportsDocList>true</supportsDocList>\r
<createsNewFocus>true</createsNewFocus>\r
xmlns:ns2="http://collectionspace.org/services/report">\r
<name>Acquisition Summary</name>\r
<notes>Just a few fields about a single acquisition</notes>\r
- <forDocType>Acquisition</forDocType>\r
+ <forDocTypes>\r
+ <forDocType>Acquisition</forDocType>\r
+ </forDocTypes>\r
<supportsSingleDoc>true</supportsSingleDoc>\r
<supportsDocList>false</supportsDocList>\r
<supportsGroup>false</supportsGroup>\r
\r
<xs:element name="name" type="xs:string"/>\r
<xs:element name="notes" type="xs:string"/>\r
- <xs:element name="forDocType" type="xs:string"/>\r
+ <xs:element name="forDocTypes">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="forDocType" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
<xs:element name="supportsNoContext" type="xs:boolean"/>\r
<xs:element name="supportsSingleDoc" type="xs:boolean"/>\r
<xs:element name="supportsDocList" type="xs:boolean"/>\r
<!-- See http://wiki.collectionspace.org/display/collectionspace/Loans+Out+Schema -->
<!-- batch -->
- <xs:element name="batch_common">
- <xs:complexType>
- <xs:sequence>
- <!-- Batch Information Group -->
- <xs:element name="name" type="xs:string"/>
- <xs:element name="notes" type="xs:string"/>
- <xs:element name="forDocType" type="xs:string"/>
- <xs:element name="supportsNoContext" type="xs:boolean"/>
- <xs:element name="forSingleDoc" type="xs:boolean"/>
- <xs:element name="createsNewFocus" type="xs:boolean"/>
- <xs:element name="className" type="xs:string"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
+ <xs:element name="batch_common">
+ <xs:complexType>
+ <xs:sequence>
+ <!-- Batch Information Group -->
+ <xs:element name="name" type="xs:string" />
+ <xs:element name="notes" type="xs:string" />
+ <xs:element name="forDocTypes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="forDocType" type="xs:string"
+ minOccurs="1" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="supportsNoContext" type="xs:boolean" />
+ <xs:element name="forSingleDoc" type="xs:boolean" />
+ <xs:element name="createsNewFocus" type="xs:boolean" />
+ <xs:element name="className" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
- <!-- This is the base class for paginated lists -->
+ <!-- This is the base class for paginated lists -->
<xs:complexType name="abstractCommonList">
<xs:annotation>
<xs:appinfo>
</xs:complexType>
- <!-- batch records, as in nuxeo repository -->
+ <!-- batch records, as in nuxeo repository -->
<xs:element name="batch-common-list">
<xs:complexType>
<xs:complexContent>
throw new RuntimeException("No docType specified.");
}
String ptClause = COMMON_SCHEMA + ":"
- + BatchJAXBSchema.FOR_DOC_TYPE
+ + BatchJAXBSchema.FOR_DOC_TYPES
+ "='" + trimmed + "'";
return ptClause;
}
+invocationMode);
}
if(checkDocType) {
- String forDocType =
- (String)docModel.getPropertyValue(BatchJAXBSchema.FOR_DOC_TYPE);
- if(!forDocType.equalsIgnoreCase(invContext.getDocType())) {
+ List<String> forDocTypeList =
+ (List<String>)docModel.getPropertyValue(BatchJAXBSchema.FOR_DOC_TYPES);
+ if(forDocTypeList==null
+ || !forDocTypeList.contains(invContext.getDocType())) {
throw new BadRequestException(
"BatchResource: Invoked with unsupported document type: "
+invContext.getDocType());
<service:params>
<service:SchemaName>batch</service:SchemaName>
<service:DublinCoreTitle>batch</service:DublinCoreTitle>
- <service:SummaryFields>name|forDocType|uri|csid</service:SummaryFields>
+ <service:SummaryFields>name|uri|csid</service:SummaryFields>
<service:AbstractCommonListClassname>org.collectionspace.services.batch.BatchCommonList</service:AbstractCommonListClassname>
<service:CommonListItemClassname>org.collectionspace.services.batch.BatchCommonList$BatchListItem</service:CommonListItemClassname>
<service:ListResultsItemMethodName>getBatchListItem</service:ListResultsItemMethodName>
<service:xpath>name</service:xpath>
<service:setter>setName</service:setter>
</service:ListResultField>
- <service:ListResultField>
- <service:element>forDocType</service:element>
- <service:xpath>forDocType</service:xpath>
- <service:setter>setForDocType</service:setter>
- </service:ListResultField>
</service:ListResultsFields>
</service:params>
</service:DocHandlerParams>
</service:uriPath>-->
<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.report.nuxeo.ReportDocumentModelHandler</service:documentHandler>
+ <!--
+ <service:DocHandlerParams xmlns:service="http://collectionspace.org/services/common/service">
+ <service:classname>org.collectionspace.services.report.nuxeo.ReportDocumentModelHandler</service:classname>
+ <service:params>
+ <service:SchemaName>reports</service:SchemaName>
+ <service:DublinCoreTitle>reports</service:DublinCoreTitle>
+ <service:SummaryFields>name|uri|csid</service:SummaryFields>
+ <service:AbstractCommonListClassname />
+ <service:CommonListItemClassname />
+ <service:ListResultsItemMethodName></service:ListResultsItemMethodName>
+ <service:ListResultsFields>
+ <service:ListResultField>
+ <service:element>name</service:element>
+ <service:xpath>name</service:xpath>
+ </service:ListResultField>
+ </service:ListResultsFields>
+ </service:params>
+ </service:DocHandlerParams>
+ -->
<service:validatorHandler xmlns:service="http://collectionspace.org/services/common/service">org.collectionspace.services.report.nuxeo.ReportValidatorHandler</service:validatorHandler>
<service:initHandler xmlns:service="http://collectionspace.org/services/common/service">
<service:classname>org.collectionspace.services.report.nuxeo.ReportPostInitHandler</service:classname>
if (schema==null || schema.isEmpty()) {\r
throw new RuntimeException("No match schema specified.");\r
}\r
- String wClause = schema+":"+InvocableJAXBSchema.FOR_DOC_TYPE + " = '" + trimmed + "'";\r
+ String wClause = schema+":"+InvocableJAXBSchema.FOR_DOC_TYPES + " = '" + trimmed + "'";\r
return wClause;\r
}\r
\r
package org.collectionspace.services.jaxb;
public interface InvocableJAXBSchema {
- final static String FOR_DOC_TYPE = "forDocType";
+ final static String FOR_DOC_TYPES = "forDocTypes";
final static String SUPPORTS_SINGLE_DOC = "supportsSingleDoc";
final static String SUPPORTS_DOC_LIST = "supportsDocList";
final static String SUPPORTS_GROUP = "supportsGroup";
\r
<xs:element name="name" type="xs:string"/>\r
<xs:element name="notes" type="xs:string"/>\r
- <xs:element name="forDocType" type="xs:string"/>\r
+ <xs:element name="forDocTypes">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="forDocType" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
<xs:element name="supportsNoContext" type="xs:boolean"/>\r
<xs:element name="supportsSingleDoc" type="xs:boolean"/>\r
<xs:element name="supportsDocList" type="xs:boolean"/>\r
*/
package org.collectionspace.services.client.test;
+import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
* @return the multipart output
*/
private PoxPayloadOut createReportInstance(String identifier) {
+ List<String> docTypes = new ArrayList<String>();
+ docTypes.add(testDocType);
return createReportInstance(
"Acquisition Summary",
- testDocType, true, false, false, true,
+ docTypes, true, false, false, true,
"acq_basic.jasper",
"application/pdf");
}
* @return the multipart output
*/
private PoxPayloadOut createReportInstance(String name,
- String forDocType,
+ List<String> forDocTypeList,
boolean supportsSingle, boolean supportsList,
boolean supportsGroup, boolean supportsNoContext,
String filename,
String outputMIME) {
ReportsCommon reportCommon = new ReportsCommon();
reportCommon.setName(name);
- reportCommon.setForDocType(forDocType);
+ ReportsCommon.ForDocTypes forDocTypes = new ReportsCommon.ForDocTypes();
+ List<String> docTypeList = forDocTypes.getForDocType();
+ docTypeList.addAll(forDocTypeList);
+ reportCommon.setForDocTypes(forDocTypes);
reportCommon.setSupportsSingleDoc(supportsSingle);
reportCommon.setSupportsDocList(supportsList);
reportCommon.setSupportsGroup(supportsGroup);
<!-- See http://wiki.collectionspace.org/display/collectionspace/Report+Schema -->
<!-- report -->
- <xs:element name="reports_common">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="csid" type="xs:string" />
- <xs:element name="name" type="xs:string"/>
- <xs:element name="notes" type="xs:string"/>
- <xs:element name="forDocType" type="xs:string"/>
- <xs:element name="supportsNoContext" type="xs:boolean"/>
- <xs:element name="supportsSingleDoc" type="xs:boolean"/>
- <xs:element name="supportsDocList" type="xs:boolean"/>
- <xs:element name="supportsGroup" type="xs:boolean"/>
- <!-- NYI <xs:element name="supportsQuery" type="xs:boolean"/> -->
- <xs:element name="filename" type="xs:string"/>
- <xs:element name="outputMIME" type="xs:string"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
+ <xs:element name="reports_common">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="csid" type="xs:string" />
+ <xs:element name="name" type="xs:string" />
+ <xs:element name="notes" type="xs:string" />
+ <xs:element name="forDocTypes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="forDocType" type="xs:string"
+ minOccurs="1" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="supportsNoContext" type="xs:boolean" />
+ <xs:element name="supportsSingleDoc" type="xs:boolean" />
+ <xs:element name="supportsDocList" type="xs:boolean" />
+ <xs:element name="supportsGroup" type="xs:boolean" />
+ <!-- NYI <xs:element name="supportsQuery" type="xs:boolean"/> -->
+ <xs:element name="filename" type="xs:string" />
+ <xs:element name="outputMIME" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
<!-- This is the base class for paginated lists -->
<xs:complexType name="abstractCommonList">
+invocationMode);
}
if(checkDocType) {
- String forDocType =
- (String)docModel.getPropertyValue(InvocableJAXBSchema.FOR_DOC_TYPE);
- if(!forDocType.equalsIgnoreCase(invContext.getDocType())) {
+ List<String> forDocTypeList =
+ (List<String>)docModel.getPropertyValue(InvocableJAXBSchema.FOR_DOC_TYPES);
+ if(forDocTypeList==null
+ || !forDocTypeList.contains(invContext.getDocType())) {
throw new BadRequestException(
"ReportResource: Invoked with unsupported document type: "
+invContext.getDocType());
public ReportsCommonList extractCommonPartList(DocumentWrapper<DocumentModelList> wrapDoc) throws Exception {
ReportsCommonList coList = this.extractPagingInfo(new ReportsCommonList(), wrapDoc);
AbstractCommonList commonList = (AbstractCommonList) coList;
- commonList.setFieldsReturned("name|outputMIME|forDocType|forSingleDoc|uri|csid");
+ commonList.setFieldsReturned("name|uri|csid");
List<ReportsCommonList.ReportListItem> list = coList.getReportListItem();
Iterator<DocumentModel> iter = wrapDoc.getWrappedObject().iterator();
String label = getServiceContext().getCommonPartLabel();
ReportListItem ilistItem = new ReportListItem();
ilistItem.setName((String) docModel.getProperty(label,
ReportJAXBSchema.NAME));
- ilistItem.setOutputMIME((String) docModel.getProperty(label,
- ReportJAXBSchema.OUTPUT_MIME));
- ilistItem.setForDocType((String) docModel.getProperty(label,
- ReportJAXBSchema.FOR_DOC_TYPE));
- ilistItem.setSupportsSingleDoc((Boolean) docModel.getProperty(label,
- ReportJAXBSchema.SUPPORTS_SINGLE_DOC));
- ilistItem.setSupportsDocList((Boolean) docModel.getProperty(label,
- ReportJAXBSchema.SUPPORTS_DOC_LIST));
- ilistItem.setSupportsGroup((Boolean) docModel.getProperty(label,
- ReportJAXBSchema.SUPPORTS_GROUP));
String id = getCsid(docModel);//NuxeoUtils.extractId(docModel.getPathAsString());
ilistItem.setUri(getServiceContextPath() + id);
ilistItem.setCsid(id);