+ (expectedCodes.size()>0 ? "; expected:"+expectedCodes : "")\r
+ ( Tools.notEmpty(responseMessage) ? "; msg:"+responseMessage : "" )\r
+"; URL:"+fullURL\r
- +"; auth: "+auth\r
+ //for auth, see detail() +"; auth: "+auth\r
+ ( Tools.notEmpty(error) ? "; ERROR:"+error : "" )\r
+ (verbosePartsSummary ? partsSummary(true) : partsSummary(false) )\r
+"}";\r
//System.out.println("\r\n---- REPLACE.init-uri: "+inputJexlExpression);\r
String result;\r
try {\r
+ jc.set("itemCSID", "${itemCSID}"); //noiseless passthru.\r
//System.out.println("eval :: serviceResultsMap "+serviceResultsMap.size());\r
for (ServiceResult serviceResult : serviceResultsMap.values()) {\r
jc.set(serviceResult.testID, serviceResult);\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- TODO: see note at top of 3.right.xml -->
+
+<document name="organizations">
+ <ns2:relations-common-list xmlns:ns2="http://collectionspace.org/services/relation" xmlns:ns3="http://collectionspace.org/services/jaxb">
+ <totalItems>4</totalItems>
+ <!--
+ This test was generated from actual CSIDs created on the server.
+ This test then compares to 3-right.xml which was also generated.
+ These CSIDs are long gone, but these two files are just used to
+ test XmlCompareJdom statically.
+
+ This file represents the expected response from test case
+ organization.xml ::
+ These are the vars that are available from the time Organization1 is created.
+ Organization1.CSID e6ee870c-0846-4f02-af9f
+ OrganizationParent.CSID e65d0867-3d10-4d2e-8eed
+ OrganizationChild1.CSID ba0c9e5f-0c00-4deb-b29d
+ OrganizationChild2.CSID 73487157-5110-4292-9cf8
+ OrganizationChild3.CSID 6884ecdc-e205-4407-b3f3
+ -->
+
+
+ <relation-list-item>
+ <subjectCsid>e6ee870c-0846-4f02-af9f</subjectCsid>
+ <objectCsid>e65d0867-3d10-4d2e-8eed</objectCsid>
+ <predicate>hasBroader</predicate>
+ <subject>
+ <csid>e6ee870c-0846-4f02-af9f</csid>
+ </subject>
+ <object>
+ <csid>e65d0867-3d10-4d2e-8eed</csid>
+ </object>
+ </relation-list-item>
+
+ <relation-list-item>
+ <subjectCsid>ba0c9e5f-0c00-4deb-b29d</subjectCsid>
+ <objectCsid>e6ee870c-0846-4f02-af9f</objectCsid>
+ <predicate>hasBroader</predicate>
+ <subject>
+ <csid>ba0c9e5f-0c00-4deb-b29d</csid>
+ </subject>
+ <object>
+ <csid>e6ee870c-0846-4f02-af9f</csid>
+ </object>
+ </relation-list-item>
+
+
+
+
+
+
+
+ <relation-list-item>
+ <subjectCsid>73487157-5110-4292-9cf8</subjectCsid>
+ <objectCsid>e6ee870c-0846-4f02-af9f</objectCsid>
+ <predicate>hasBroader</predicate>
+ <subject>
+ <csid>73487157-5110-4292-9cf8</csid>
+ </subject>
+ <object>
+ <csid>e6ee870c-0846-4f02-af9f</csid>
+ </object>
+ </relation-list-item>
+
+ <relation-list-item>
+ <subjectCsid>6884ecdc-e205-4407-b3f3</subjectCsid>
+ <objectCsid>e6ee870c-0846-4f02-af9f</objectCsid>
+ <predicate>hasBroader</predicate>
+ <subject>
+ <csid>6884ecdc-e205-4407-b3f3</csid>
+ </subject>
+ <object>
+ <csid>e6ee870c-0846-4f02-af9f</csid>
+ </object>
+ </relation-list-item>
+
+ </ns2:relations-common-list>
+</document>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<document name="organizations">
+
+
+<!--
+This test was generated from actual CSIDs created on the server.
+ This test then compares to 3-left.xml which was also generated.
+ These CSIDs are long gone, but these two files are just used to
+ test XmlCompareJdom statically.
+
+TODO: this file looks compatible with 3-left.xml,
+execept that it shows NESTED_ERRORs in the log.
+But the test succeeds, so somehow that nested item is not removed when they are in a different order
+when received from the server.
+-->
+
+
+ <ns2:relations-common-list xmlns:ns2="http://collectionspace.org/services/relation" xmlns:ns3="http://collectionspace.org/services/jaxb">
+ <pageNum>0</pageNum>
+ <pageSize>40</pageSize>
+ <itemsInPage>4</itemsInPage>
+ <totalItems>4</totalItems>
+ <fieldsReturned>subjectCsid|relationshipType|predicateDisplayName|objectCsid|uri|csid|subject|object</fieldsReturned>
+ <relation-list-item>
+ <uri>/relations/9fb18981-01b8-486f-8cf6</uri>
+ <csid>9fb18981-01b8-486f-8cf6</csid>
+ <subjectCsid>e6ee870c-0846-4f02-af9f</subjectCsid>
+ <relationshipType>hasBroader</relationshipType>
+ <predicate>hasBroader</predicate>
+ <objectCsid>e65d0867-3d10-4d2e-8eed</objectCsid>
+ <subject>
+ <uri>/organizations/e0a427ce-c8b5-4727-8077/items/e6ee870c-0846-4f02-af9f</uri>
+ <csid>e6ee870c-0846-4f02-af9f</csid>
+ <service>Organization</service>
+ <documentType>Organization</documentType>
+ <documentTypeFromModel>Organization</documentTypeFromModel>
+ </subject>
+ <object>
+ <uri>/cspace-services/orgauthorities/urn:cspace:name(CSPACE3739OrganizationAuthority)/items/e65d0867-3d10-4d2e-8eed</uri>
+ <csid>e65d0867-3d10-4d2e-8eed</csid>
+ <service>Organization</service>
+ <documentType>Organization</documentType>
+ <documentTypeFromModel>Organization</documentTypeFromModel>
+ </object>
+ </relation-list-item>
+
+
+
+ <relation-list-item>
+ <uri>/relations/a9c7f9f0-6cc6-4eaf-9b41</uri>
+ <csid>a9c7f9f0-6cc6-4eaf-9b41</csid>
+ <subjectCsid>ba0c9e5f-0c00-4deb-b29d</subjectCsid>
+ <relationshipType>hasBroader</relationshipType>
+ <predicate>hasBroader</predicate>
+ <objectCsid>e6ee870c-0846-4f02-af9f</objectCsid>
+ <subject>
+ <uri>/cspace-services/orgauthorities/urn:cspace:name(CSPACE3739OrganizationAuthority)/items/ba0c9e5f-0c00-4deb-b29d</uri>
+ <csid>ba0c9e5f-0c00-4deb-b29d</csid>
+ <service>Organization</service>
+ <documentType>Organization</documentType>
+ <documentTypeFromModel>Organization</documentTypeFromModel>
+ </subject>
+ <object>
+ <uri>/organizations/e0a427ce-c8b5-4727-8077/items/e6ee870c-0846-4f02-af9f</uri>
+ <csid>e6ee870c-0846-4f02-af9f</csid>
+ <service>Organization</service>
+ <documentType>Organization</documentType>
+ <documentTypeFromModel>Organization</documentTypeFromModel>
+ </object>
+ </relation-list-item>
+
+
+
+
+
+ <relation-list-item>
+ <uri>/relations/c882dfc1-1b72-4038-88f3</uri>
+ <csid>c882dfc1-1b72-4038-88f3</csid>
+ <subjectCsid>6884ecdc-e205-4407-b3f3</subjectCsid>
+ <relationshipType>hasBroader</relationshipType>
+ <predicate>hasBroader</predicate>
+ <objectCsid>e6ee870c-0846-4f02-af9f</objectCsid>
+ <subject>
+ <uri>/cspace-services/orgauthorities/urn:cspace:name(CSPACE3739OrganizationAuthority)/items/6884ecdc-e205-4407-b3f3</uri>
+ <csid>6884ecdc-e205-4407-b3f3</csid>
+ <service>Organization</service>
+ <documentType>Organization</documentType>
+ <documentTypeFromModel>Organization</documentTypeFromModel>
+ </subject>
+ <object>
+ <uri>/organizations/e0a427ce-c8b5-4727-8077/items/e6ee870c-0846-4f02-af9f</uri>
+ <csid>e6ee870c-0846-4f02-af9f</csid>
+ <service>Organization</service>
+ <documentType>Organization</documentType>
+ <documentTypeFromModel>Organization</documentTypeFromModel>
+ </object>
+ </relation-list-item>
+ <relation-list-item>
+ <uri>/relations/0793210a-a48c-4d26-a47b</uri>
+ <csid>0793210a-a48c-4d26-a47b</csid>
+ <subjectCsid>73487157-5110-4292-9cf8</subjectCsid>
+ <relationshipType>hasBroader</relationshipType>
+ <predicate>hasBroader</predicate>
+ <objectCsid>e6ee870c-0846-4f02-af9f</objectCsid>
+ <subject>
+ <uri>/cspace-services/orgauthorities/urn:cspace:name(CSPACE3739OrganizationAuthority)/items/73487157-5110-4292-9cf8</uri>
+ <csid>73487157-5110-4292-9cf8</csid>
+ <service>Organization</service>
+ <documentType>Organization</documentType>
+ <documentTypeFromModel>Organization</documentTypeFromModel>
+ </subject>
+ <object>
+ <uri>/organizations/e0a427ce-c8b5-4727-8077/items/e6ee870c-0846-4f02-af9f</uri>
+ <csid>e6ee870c-0846-4f02-af9f</csid>
+ <service>Organization</service>
+ <documentType>Organization</documentType>
+ <documentTypeFromModel>Organization</documentTypeFromModel>
+ </object>
+ </relation-list-item>
+ </ns2:relations-common-list>
+</document>
+
<protoHostPort>http://localhost:8180</protoHostPort>\r
\r
<!-- legal values for dumpServiceResult=[minimal,detailed,full,auto] -->\r
- <dump payloads="false" dumpServiceResult="detailed" />\r
+ <dump payloads="false" dumpServiceResult="auto" />\r
\r
<auths default="admin@collectionspace.org">\r
<auth ID="admin@collectionspace.org">YWRtaW5AY29sbGVjdGlvbnNwYWNlLm9yZzpBZG1pbmlzdHJhdG9y</auth>\r
<run controlFile="loanout/loanout.xml" testGroup="makeone" />\r
<run controlFile="objectexit/object-exit.xml" testGroup="checkList" />\r
<run controlFile="person/person.xml" testGroup="postPerson" />\r
+ \r
+ <run controlFile="relation/relation.xml" testGroup="makeRelations" />\r
+ <run controlFile="relation/relation.xml" testGroup="r2only" />\r
+ <run controlFile="person/person.xml" testGroup="postPerson" />\r
+ <run controlFile="person/person.xml" testGroup="updatePerson" />\r
+ <run controlFile="organization/organization-hierarchy.xml" testGroup="HierarchicOrganization" />\r
+ <run controlFile="location/location-hierarchy.xml" testGroup="HierarchicLocation" />\r
--> \r
\r
+ \r
\r
\r
\r
<predicate>hasBroader</predicate>\r
<subject>\r
<csid>${itemCSID}</csid>\r
- <documentType>Location</documentType>\r
+ <documentType>Locationitem</documentType>\r
</subject>\r
<object>\r
<csid>${parentCSID}</csid>\r
<uri>${parentUri}</uri>\r
- <documentType>Location</documentType>\r
+ <documentType>Locationitem</documentType>\r
</object>\r
</relation-list-item>\r
<relation-list-item>\r
<subject>\r
<csid>${childCSID}</csid>\r
<uri>${childUri}</uri>\r
- <documentType>Location</documentType>\r
+ <documentType>Locationitem</documentType>\r
</subject>\r
<object>\r
<csid>${itemCSID}</csid>\r
- <documentType>Location</documentType>\r
+ <documentType>Locationitem</documentType>\r
</object>\r
</relation-list-item>\r
<relation-list-item>\r
<subject>\r
<uri>${child2Uri}</uri>\r
<csid>${child2CSID}</csid>\r
- <documentType>Location</documentType>\r
+ <documentType>Locationitem</documentType>\r
</subject>\r
<object>\r
<csid>${itemCSID}</csid>\r
- <documentType>Location</documentType>\r
+ <documentType>Locationitem</documentType>\r
</object>\r
</relation-list-item>\r
<relation-list-item>\r
<subject>\r
<uri>${child3Uri}</uri>\r
<csid>${child3CSID}</csid>\r
- <documentType>Location</documentType>\r
+ <documentType>Locationitem</documentType>\r
</subject>\r
<object>\r
<csid>${itemCSID}</csid>\r
- <documentType>Location</documentType>\r
+ <documentType>Locationitem</documentType>\r
</object>\r
</relation-list-item>\r
</ns3:relations-common-list>\r
<?xml version="1.0" encoding="UTF-8"?>
<xmlReplay>
- <testGroup ID="HierarchicLocation" autoDeletePOSTS="true">
+ <testGroup ID="HierarchicLocation" autoDeletePOSTS="false">
<test ID="LocationAuth1" auth="admin@collectionspace.org">
<method>POST</method>
<filename>location/hierarchy/1-authority.xml</filename>
<vars>
<var ID="shortIdentifier">CSPACE3739LocationAuthority</var>
+ <var ID="displayName">LocationAuth1-displayName</var>
</vars>
</test>
<test ID="LocationChild1">
<filename>organization/hierarchy/1-authority.xml</filename>
<vars>
<var ID="shortIdentifier">CSPACE3739OrganizationAuthority</var>
+ <var ID="displayName">OrganizationAuth1-displayName</var>
</vars>
</test>
<test ID="OrganizationChild1">
\r
!-- ========================= POST a person ===================================================== -->\r
\r
- <testGroup ID="postPerson" autoDeletePOSTS="true">\r
+ <testGroup ID="postPerson" autoDeletePOSTS="false">\r
<test ID="PersonAuth1" auth="admin@collectionspace.org">\r
<method>POST</method>\r
<uri>/cspace-services/personauthorities/</uri>\r
<run controlFile="relation/relation.xml" testGroup="r2only" />\r
<run controlFile="person/person.xml" testGroup="postPerson" />\r
<run controlFile="person/person.xml" testGroup="updatePerson" />\r
+ <run controlFile="location/location-hierarchy.xml" testGroup="HierarchicLocation" />\r
+ <run controlFile="organization/organization-hierarchy.xml" testGroup="HierarchicOrganization" />\r
\r
\r
\r
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
this.inAuthority = inAuthority;
}
+ // Laramie20110510 CSPACE-3932
+ public static final String HACK_VOCABULARIES = "vocabularies"; //TODO: get rid of these.
+ //public static final String HACK_ORGANIZATIONS = "Organizations"; //TODO: get rid of these.
+ public static final String HACK_ORGAUTHORITIES = "orgauthorities"; //TODO: get rid of these.
+ public static final String HACK_PERSONAUTHORITIES = "personauthorities"; //TODO: get rid of these.
+ public static final String HACK_LOCATIONAUTHORITIES = "locationauthorities"; //TODO: get rid of these.
+ private final static Map<String,String> hackMap = new HashMap<String,String>();
+ static {
+ hackMap.put("persons", HACK_PERSONAUTHORITIES);
+ hackMap.put("organizations", HACK_ORGAUTHORITIES);
+ hackMap.put("vocabularies", HACK_VOCABULARIES);
+ hackMap.put("locations", HACK_LOCATIONAUTHORITIES);
+ }
@Override
public String getUri(DocumentModel docModel) {
- return getServiceContextPath()+inAuthority+"/"+ AuthorityClient.ITEMS+"/"+getCsid(docModel);
+ // Laramie20110510 CSPACE-3932
+ String serviceContextName = getServiceContext().getServiceName().toLowerCase();
+ String displayContextPath = hackMap.get(serviceContextName);
+ if (Tools.isEmpty(displayContextPath)){
+ displayContextPath = serviceContextName;
+ }
+ return "/"+displayContextPath+'/'+inAuthority+'/'+ AuthorityClient.ITEMS+'/'+getCsid(docModel);
}
import org.collectionspace.services.client.PoxPayloadIn;
import org.collectionspace.services.client.PoxPayloadOut;
import org.collectionspace.services.common.ServiceMain;
+import org.collectionspace.services.common.api.Tools;
import org.collectionspace.services.common.config.TenantBindingConfigReaderImpl;
import org.collectionspace.services.common.context.ServiceBindingUtils;
import org.collectionspace.services.common.relation.RelationJAXBSchema;
relationListItem.setSubject(subject);
String objectCsid = relationListItem.getObjectCsid();
- documentType = (String) docModel.getProperty(ctx.getCommonPartLabel(), RelationJAXBSchema.DOCUMENT_TYPE_2);
- RelationsDocListItem object = createRelationsDocListItem(ctx, sbt, objectCsid, tReader, documentType);
+ String documentType2 = (String) docModel.getProperty(ctx.getCommonPartLabel(), RelationJAXBSchema.DOCUMENT_TYPE_2);
+ RelationsDocListItem object = createRelationsDocListItem(ctx, sbt, objectCsid, tReader, documentType2);
String objectUri = (String) docModel.getProperty(ctx.getCommonPartLabel(), RelationJAXBSchema.objectUri);
object.setUri(objectUri);
String itemDocType = itemDocModel.getDocumentType().getName();
item.setDocumentTypeFromModel(itemDocType); //this one comes from the nuxeo documentType
+ System.out.println("\r\n******** AuthorityItemDocumentModelHandlder documentType **************\r\n\tdocModel: "+itemDocType+"\r\n\tpayload: "+documentType);
+ boolean usedDocumentTypeFromPayload = true;
+ if ( ! Tools.isBlank(documentType)){
+ if (documentType.equals(itemDocType)){
+ usedDocumentTypeFromPayload = true;
+ } else {
+ // Laramie20110510 CSPACE-3739 throw the exception for 3739, otherwise, don't throw it.
+ //throw new Exception("documentType supplied was wrong. supplied: "+documentType+" required: "+itemDocType+ " itemCsid: "+itemCsid );
+ }
+ } else {
+ usedDocumentTypeFromPayload = false;
+ item.setDocumentType(itemDocType);
+
+ }
+
+
//TODO: ensure that itemDocType is really the entry point, i.e. servicename==doctype
//ServiceBindingType itemSbt2 = tReader.getServiceBinding(ctx.getTenantId(), itemDocType);
ServiceBindingType itemSbt = tReader.getServiceBindingForDocType(ctx.getTenantId(), itemDocType);
}
} else {
item.setError("INVALID: related object is absent");
+ // Laramie20110510 CSPACE-3739 throw the exception for 3739, otherwise, don't throw it.
+ //throw new Exception("INVALID: related object is absent "+itemCsid);
}
return item;
}