]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-3932 Fixed AuthorityItemDocumentModelHandler.java to correctly insert the...
authorLaramie Crocker <laramie@berkeley.edu>
Tue, 10 May 2011 12:37:37 +0000 (12:37 +0000)
committerLaramie Crocker <laramie@berkeley.edu>
Tue, 10 May 2011 12:37:37 +0000 (12:37 +0000)
12 files changed:
services/IntegrationTests/src/main/java/org/collectionspace/services/IntegrationTests/xmlreplay/ServiceResult.java
services/IntegrationTests/src/main/java/org/collectionspace/services/IntegrationTests/xmlreplay/XmlReplayEval.java
services/IntegrationTests/src/test/resources/test-data/xmlreplay/XmlCompareJdom/3-left.xml [new file with mode: 0644]
services/IntegrationTests/src/test/resources/test-data/xmlreplay/XmlCompareJdom/3-right.xml [new file with mode: 0644]
services/IntegrationTests/src/test/resources/test-data/xmlreplay/dev-master.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/location/hierarchy/3-locations_w_relations.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/location/location-hierarchy.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/organization/organization-hierarchy.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/person/person.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/xml-replay-master.xml
services/authority/src/main/java/org/collectionspace/services/common/vocabulary/nuxeo/AuthorityItemDocumentModelHandler.java
services/relation/service/src/main/java/org/collectionspace/services/relation/nuxeo/RelationDocumentModelHandler.java

index 38b20a42e9e19c4e1855506aeea55fce7a5bb497..26b877cec8ff4d56610f55cda102ab6708f8d634 100755 (executable)
@@ -246,7 +246,7 @@ public class ServiceResult {
                 + (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
index 2662413b2fb089d6ac00c5053138f90e02aa4009..bd34f2fa4b00494ce708794830ccaf1ae909449b 100755 (executable)
@@ -60,6 +60,7 @@ public class XmlReplayEval {
         //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
diff --git a/services/IntegrationTests/src/test/resources/test-data/xmlreplay/XmlCompareJdom/3-left.xml b/services/IntegrationTests/src/test/resources/test-data/xmlreplay/XmlCompareJdom/3-left.xml
new file mode 100644 (file)
index 0000000..4a2963e
--- /dev/null
@@ -0,0 +1,80 @@
+<?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>
diff --git a/services/IntegrationTests/src/test/resources/test-data/xmlreplay/XmlCompareJdom/3-right.xml b/services/IntegrationTests/src/test/resources/test-data/xmlreplay/XmlCompareJdom/3-right.xml
new file mode 100644 (file)
index 0000000..aca9003
--- /dev/null
@@ -0,0 +1,122 @@
+<?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>
+
index ea2cc929be3a5f9f7ecd38f4765e04c1992926e6..bcaa26c93d3f7f8e0dec2a8231ee1f3f489630c3 100644 (file)
@@ -12,7 +12,7 @@
     <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
index 53d56566323b6f48edb2b6af4cc7fa009033db62..766a8458eb661dc15ebb85af21a03dc1185e5b28 100755 (executable)
                <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
index cffe398859cd54ea2a2ab81e0cf2036eff50b381..0902c69eacd47e2a94e0862996899c7017c451fe 100644 (file)
@@ -1,6 +1,6 @@
 <?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>
@@ -8,6 +8,7 @@
             <filename>location/hierarchy/1-authority.xml</filename>
             <vars>
                <var ID="shortIdentifier">CSPACE3739LocationAuthority</var>
+               <var ID="displayName">LocationAuth1-displayName</var>
             </vars>
         </test>
         <test ID="LocationChild1">
index 724908b4cd60c25711483a0350cd736fd55192e7..b3ac368a86c3175ed5997f68111486b1f460f1f4 100644 (file)
@@ -8,6 +8,7 @@
             <filename>organization/hierarchy/1-authority.xml</filename>
             <vars>
                <var ID="shortIdentifier">CSPACE3739OrganizationAuthority</var>
+               <var ID="displayName">OrganizationAuth1-displayName</var>
             </vars>
         </test>
         <test ID="OrganizationChild1">
index 840bbc84ebf0014c9b0cb4bb84d2047c2c4a151a..b13b339cddcd29da8a963e8c31b3093e044b4a4e 100755 (executable)
        \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
index a267c369254c325843a7e6d50b9967f0fb274508..547d2ad29336eebe16eaed2649a8e4c5428641c0 100755 (executable)
@@ -43,6 +43,8 @@
     <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
index 63244eebd76dc7a560f138092933e1a08e26a24d..8bbfd41cfd8690b335c9e29bf74d96f64b1043fd 100644 (file)
@@ -25,6 +25,7 @@ package org.collectionspace.services.common.vocabulary.nuxeo;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
@@ -104,9 +105,28 @@ public abstract class AuthorityItemDocumentModelHandler<AICommon, AICommonList>
                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);
     }
 
 
index e6d08e973aa107396185e21c67189583c4e8d49e..5e48687dd05cd8c6424323e6f2fb6086fb53eb49 100644 (file)
@@ -28,6 +28,7 @@ import java.util.Iterator;
 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;
@@ -168,8 +169,8 @@ public class RelationDocumentModelHandler
         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);
@@ -195,6 +196,22 @@ public class RelationDocumentModelHandler
             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);
@@ -214,6 +231,8 @@ public class RelationDocumentModelHandler
             }
         } 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;
     }