]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-1273: CSID should be in the payload of term items for Person and Org services.
authorRichard Millet <richard.millet@berkeley.edu>
Tue, 23 Mar 2010 22:44:59 +0000 (22:44 +0000)
committerRichard Millet <richard.millet@berkeley.edu>
Tue, 23 Mar 2010 22:44:59 +0000 (22:44 +0000)
services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RemoteDocumentModelHandlerImpl.java
services/person/service/src/main/java/org/collectionspace/services/person/nuxeo/PersonDocumentModelHandler.java

index 435e2ae1d2f02e5f848bc995d60090fce4e75b1a..0149ce943595d2a1f897be3133f69d62773862c9 100644 (file)
@@ -84,20 +84,29 @@ public abstract class RemoteDocumentModelHandlerImpl<T, TL>
         }
     }
 
-    @Override
-    public void extractAllParts(DocumentWrapper<DocumentModel> wrapDoc) throws Exception {
-
-        DocumentModel docModel = wrapDoc.getWrappedObject();
-        String[] schemas = docModel.getDeclaredSchemas();
-        Map<String, ObjectPartType> partsMetaMap = getServiceContext().getPartsMetadata();
-        for(String schema : schemas){
-            ObjectPartType partMeta = partsMetaMap.get(schema);
-            if(partMeta == null){
-                continue; //unknown part, ignore
-            }
-            extractPart(docModel, schema, partMeta);
-        }
-    }
+       @Override
+       public void extractAllParts(DocumentWrapper<DocumentModel> wrapDoc)
+                       throws Exception {
+
+               DocumentModel docModel = wrapDoc.getWrappedObject();
+               String[] schemas = docModel.getDeclaredSchemas();
+               Map<String, ObjectPartType> partsMetaMap = getServiceContext().getPartsMetadata();
+               for (String schema : schemas) {
+                       ObjectPartType partMeta = partsMetaMap.get(schema);
+                       if (partMeta == null) {
+                               continue; // unknown part, ignore
+                       }
+                       Map<String, Object> unQObjectProperties = extractPart(docModel,
+                                       schema, partMeta);
+                       Document doc = DocumentUtils.buildDocument(partMeta, schema,
+                                       unQObjectProperties);
+                       if (logger.isDebugEnabled()) {
+                               DocumentUtils.writeDocument(doc, System.out);
+                       }
+                       MultipartServiceContext ctx = (MultipartServiceContext) getServiceContext();
+                       ctx.addOutputPart(schema, doc, partMeta.getContent().getContentType());
+               }
+       }
 
     @Override
     public void fillAllParts(DocumentWrapper<DocumentModel> wrapDoc) throws Exception {
@@ -167,10 +176,12 @@ public abstract class RemoteDocumentModelHandlerImpl<T, TL>
      * @param partMeta metadata for the object to extract
      * @throws Exception
      */
-    protected void extractPart(DocumentModel docModel, String schema, ObjectPartType partMeta)
+    protected Map<String, Object> extractPart(DocumentModel docModel, String schema, ObjectPartType partMeta)
             throws Exception {
+       Map<String, Object> result = null;
+       
         MediaType mt = MediaType.valueOf(partMeta.getContent().getContentType());
-        if(mt.equals(MediaType.APPLICATION_XML_TYPE)){
+        if (mt.equals(MediaType.APPLICATION_XML_TYPE)){
             Map<String, Object> objectProps = docModel.getProperties(schema);
             //unqualify properties before sending the doc over the wire (to save bandwidh)
             //FIXME: is there a better way to avoid duplication of a collection?
@@ -180,13 +191,10 @@ public abstract class RemoteDocumentModelHandlerImpl<T, TL>
                 String unqProp = getUnQProperty(entry.getKey());
                 unQObjectProperties.put(unqProp, entry.getValue());
             }
-            Document doc = DocumentUtils.buildDocument(partMeta, schema, unQObjectProperties);
-            if(logger.isDebugEnabled()){
-                DocumentUtils.writeDocument(doc, System.out);
-            }
-            MultipartServiceContext ctx = (MultipartServiceContext) getServiceContext();
-            ctx.addOutputPart(schema, doc, partMeta.getContent().getContentType());
+            result = unQObjectProperties;
         } //TODO: handle other media types
+        
+        return result;
     }
     
     public AuthorityRefList getAuthorityRefs(
index 2bf96742d2c4de8daa70448448c6a45833de4129..e77d5de3f0138211466ab70c0c74b85cfce4850b 100644 (file)
@@ -27,10 +27,12 @@ import java.util.Iterator;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 import org.collectionspace.services.PersonJAXBSchema;
 import org.collectionspace.services.common.document.DocumentFilter;
 import org.collectionspace.services.common.document.DocumentWrapper;
+import org.collectionspace.services.common.service.ObjectPartType;
 import org.collectionspace.services.nuxeo.client.java.RemoteDocumentModelHandlerImpl;
 import org.collectionspace.services.nuxeo.util.NuxeoUtils;
 import org.collectionspace.services.person.PersonsCommon;
@@ -55,6 +57,11 @@ public class PersonDocumentModelHandler
         extends RemoteDocumentModelHandlerImpl<PersonsCommon, PersonsCommonList> {
 
     private final Logger logger = LoggerFactory.getLogger(PersonDocumentModelHandler.class);
+    /**
+     * Common part schema label
+     */
+    private static final String COMMON_PART_LABEL = "persons_common";
+    
     /**
      * person is used to stash JAXB object to use when handle is called
      * for Action.CREATE, Action.UPDATE or Action.GET
@@ -195,6 +202,20 @@ public class PersonDocumentModelHandler
         this.personList = personList;
     }
 
+    @Override
+    protected Map<String, Object> extractPart(DocumentModel docModel, String schema, ObjectPartType partMeta)
+            throws Exception {
+       Map<String, Object> unQObjectProperties = super.extractPart(docModel, schema, partMeta);
+       
+       // Add the CSID to the common part
+       if (partMeta.getLabel().equalsIgnoreCase(COMMON_PART_LABEL)) {
+               String csid = NuxeoUtils.extractId(docModel.getPathAsString());
+               unQObjectProperties.put("csid", csid);
+       }
+       
+       return unQObjectProperties;
+    }
+    
     @Override
     public PersonsCommon extractCommonPart(DocumentWrapper wrapDoc)
             throws Exception {