1 package org.collectionspace.services.common.vocabulary.nuxeo;
3 import org.collectionspace.services.client.ContactClient;
4 import org.collectionspace.services.client.PayloadInputPart;
5 import org.collectionspace.services.client.PoxPayloadIn;
6 import org.collectionspace.services.client.PoxPayloadOut;
7 import org.collectionspace.services.common.context.ServiceContext;
8 import org.collectionspace.services.common.document.DocumentWrapper;
9 import org.collectionspace.services.common.vocabulary.AuthorityResourceWithContacts;
10 import org.nuxeo.ecm.core.api.DocumentModel;
12 public abstract class AuthorityItemWithContactsDocumentModelHandler<AICommon> extends AuthorityItemDocumentModelHandler<AICommon> {
14 public AuthorityItemWithContactsDocumentModelHandler(String authorityCommonSchemaName,
15 String authorityItemCommonSchemaName) {
16 super(authorityCommonSchemaName, authorityItemCommonSchemaName);
17 // TODO Auto-generated constructor stub
21 public void completeCreate(DocumentWrapper<DocumentModel> wrapDoc) throws Exception {
22 super.completeCreate(wrapDoc);
23 handleContactPayload(wrapDoc);
26 private void handleContactPayload(DocumentWrapper<DocumentModel> wrapDoc) throws Exception {
27 ContactClient contactClient = new ContactClient();
28 ServiceContext<PoxPayloadIn, PoxPayloadOut> ctx = getServiceContext();
29 PoxPayloadIn input = ctx.getInput();
30 PayloadInputPart contactPart = input.getPart(contactClient.getCommonPartName());
31 if (contactPart != null) {
32 DocumentModel docModel = wrapDoc.getWrappedObject();
33 String authorityCsid = this.getInAuthorityCsid();
34 String itemCsid = this.getCsid(docModel);
35 createContact(authorityCsid, itemCsid, contactPart);
39 private void createContact(String authorityCsid, String itemCsid, PayloadInputPart contactPart) throws Exception {
40 ContactClient contactClient = new ContactClient();
41 String payloadTemplate = "<?xml version='1.0' encoding='UTF-8'?><document>%s</document>";
42 String xmlPayload = String.format(payloadTemplate, contactPart.asXML());
43 PoxPayloadIn input = new PoxPayloadIn(xmlPayload);
45 AuthorityResourceWithContacts contactResource = (AuthorityResourceWithContacts) getServiceContext().getResource();
47 contactResource.createContact(getServiceContext(), authorityCsid, itemCsid, input, null);