From: Richard Millet Date: Wed, 24 Mar 2010 08:06:15 +0000 (+0000) Subject: CSPACE-1273: CSID should be in the payload of term items for Person and Org services. X-Git-Url: https://git.aero2k.de/?a=commitdiff_plain;h=a196a518faab4afdf99ddb59c44b091d917e9eba;p=tmp%2Fjakarta-migration.git CSPACE-1273: CSID should be in the payload of term items for Person and Org services. --- diff --git a/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RemoteDocumentModelHandlerImpl.java b/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RemoteDocumentModelHandlerImpl.java index 435e2ae1d..452737406 100644 --- a/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RemoteDocumentModelHandlerImpl.java +++ b/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RemoteDocumentModelHandlerImpl.java @@ -80,24 +80,39 @@ public abstract class RemoteDocumentModelHandlerImpl for(InputPart part : inputParts){ String partLabel = part.getHeaders().getFirst("label"); ObjectPartType partMeta = partsMetaMap.get(partLabel); - extractPart(docModel, partLabel, partMeta); +// extractPart(docModel, partLabel, partMeta); + Map unQObjectProperties = extractPart(docModel, partLabel, partMeta); + addOutputPart(unQObjectProperties, partLabel, partMeta); } } - @Override - public void extractAllParts(DocumentWrapper wrapDoc) throws Exception { - - DocumentModel docModel = wrapDoc.getWrappedObject(); - String[] schemas = docModel.getDeclaredSchemas(); - Map partsMetaMap = getServiceContext().getPartsMetadata(); - for(String schema : schemas){ - ObjectPartType partMeta = partsMetaMap.get(schema); - if(partMeta == null){ - continue; //unknown part, ignore - } - extractPart(docModel, schema, partMeta); - } + private void addOutputPart(Map unQObjectProperties, String schema, ObjectPartType partMeta) + throws Exception { + 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 extractAllParts(DocumentWrapper wrapDoc) + throws Exception { + + DocumentModel docModel = wrapDoc.getWrappedObject(); + String[] schemas = docModel.getDeclaredSchemas(); + Map partsMetaMap = getServiceContext().getPartsMetadata(); + for (String schema : schemas) { + ObjectPartType partMeta = partsMetaMap.get(schema); + if (partMeta == null) { + continue; // unknown part, ignore + } + Map unQObjectProperties = extractPart(docModel, schema, partMeta); + addOutputPart(unQObjectProperties, schema, partMeta); + } + } @Override public void fillAllParts(DocumentWrapper wrapDoc) throws Exception { @@ -167,10 +182,12 @@ public abstract class RemoteDocumentModelHandlerImpl * @param partMeta metadata for the object to extract * @throws Exception */ - protected void extractPart(DocumentModel docModel, String schema, ObjectPartType partMeta) + protected Map extractPart(DocumentModel docModel, String schema, ObjectPartType partMeta) throws Exception { + Map result = null; + MediaType mt = MediaType.valueOf(partMeta.getContent().getContentType()); - if(mt.equals(MediaType.APPLICATION_XML_TYPE)){ + if (mt.equals(MediaType.APPLICATION_XML_TYPE)){ Map 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 +197,10 @@ public abstract class RemoteDocumentModelHandlerImpl 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( diff --git a/services/jaxb/.classpath b/services/jaxb/.classpath index bd6bf38eb..65161d26b 100644 --- a/services/jaxb/.classpath +++ b/services/jaxb/.classpath @@ -1,6 +1,7 @@ + diff --git a/services/organization/client/src/test/java/org/collectionspace/services/client/test/OrgAuthorityServiceTest.java b/services/organization/client/src/test/java/org/collectionspace/services/client/test/OrgAuthorityServiceTest.java index e749b73c4..32d6d6a38 100644 --- a/services/organization/client/src/test/java/org/collectionspace/services/client/test/OrgAuthorityServiceTest.java +++ b/services/organization/client/src/test/java/org/collectionspace/services/client/test/OrgAuthorityServiceTest.java @@ -524,6 +524,7 @@ public class OrgAuthorityServiceTest extends AbstractServiceTestImpl { Assert.assertNotNull(displayName, expectedDisplayName); // Update the shortName and verify the computed name is updated. + organization.setCsid(null); organization.setDisplayNameComputed(true); organization.setShortName("updated-" + TEST_ORG_SHORTNAME); expectedDisplayName = @@ -1017,6 +1018,7 @@ public class OrgAuthorityServiceTest extends AbstractServiceTestImpl { Assert.assertNotNull(organization); // Update the contents of this resource. + organization.setCsid(null); organization.setShortName("updated-" + organization.getShortName()); if(logger.isDebugEnabled()){ logger.debug("to be updated Organization"); diff --git a/services/organization/service/src/main/java/org/collectionspace/services/organization/nuxeo/OrganizationDocumentModelHandler.java b/services/organization/service/src/main/java/org/collectionspace/services/organization/nuxeo/OrganizationDocumentModelHandler.java index c5c399b3c..0465abe3e 100644 --- a/services/organization/service/src/main/java/org/collectionspace/services/organization/nuxeo/OrganizationDocumentModelHandler.java +++ b/services/organization/service/src/main/java/org/collectionspace/services/organization/nuxeo/OrganizationDocumentModelHandler.java @@ -25,11 +25,13 @@ package org.collectionspace.services.organization.nuxeo; import java.util.Iterator; import java.util.List; +import java.util.Map; import org.collectionspace.services.OrganizationJAXBSchema; import org.collectionspace.services.common.context.MultipartServiceContext; 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.organization.OrganizationsCommon; @@ -50,6 +52,10 @@ public class OrganizationDocumentModelHandler extends RemoteDocumentModelHandlerImpl { private final Logger logger = LoggerFactory.getLogger(OrganizationDocumentModelHandler.class); + /** + * Common part schema label + */ + private static final String COMMON_PART_LABEL = "organizations_common"; /** * organization is used to stash JAXB object to use when handle is called * for Action.CREATE, Action.UPDATE or Action.GET @@ -169,6 +175,20 @@ public class OrganizationDocumentModelHandler this.organizationList = organizationList; } + @Override + protected Map extractPart(DocumentModel docModel, String schema, ObjectPartType partMeta) + throws Exception { + Map 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 OrganizationsCommon extractCommonPart(DocumentWrapper wrapDoc) throws Exception { diff --git a/services/person/client/src/test/java/org/collectionspace/services/client/test/PersonAuthorityServiceTest.java b/services/person/client/src/test/java/org/collectionspace/services/client/test/PersonAuthorityServiceTest.java index 1fce517d4..828d5683a 100644 --- a/services/person/client/src/test/java/org/collectionspace/services/client/test/PersonAuthorityServiceTest.java +++ b/services/person/client/src/test/java/org/collectionspace/services/client/test/PersonAuthorityServiceTest.java @@ -549,6 +549,7 @@ public class PersonAuthorityServiceTest extends AbstractServiceTestImpl { Assert.assertNotNull(displayName, expectedDisplayName); // Update the shortName and verify the computed name is updated. + person.setCsid(null); person.setDisplayNameComputed(true); person.setForeName("updated-" + TEST_FORE_NAME); expectedDisplayName = @@ -1041,12 +1042,13 @@ public class PersonAuthorityServiceTest extends AbstractServiceTestImpl { Assert.assertNotNull(person); // Update the contents of this resource. + person.setCsid(null); person.setForeName("updated-" + person.getForeName()); if(logger.isDebugEnabled()){ logger.debug("to be updated Person"); logger.debug(objectAsXmlString(person, PersonsCommon.class)); - } + } // Submit the updated resource to the service and store the response. MultipartOutput output = new MultipartOutput(); diff --git a/services/person/service/src/main/java/org/collectionspace/services/person/nuxeo/PersonDocumentModelHandler.java b/services/person/service/src/main/java/org/collectionspace/services/person/nuxeo/PersonDocumentModelHandler.java index 2bf96742d..e77d5de3f 100644 --- a/services/person/service/src/main/java/org/collectionspace/services/person/nuxeo/PersonDocumentModelHandler.java +++ b/services/person/service/src/main/java/org/collectionspace/services/person/nuxeo/PersonDocumentModelHandler.java @@ -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 { 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 extractPart(DocumentModel docModel, String schema, ObjectPartType partMeta) + throws Exception { + Map 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 {