From 8334172385330452ae2c1cb9ffc7c07a5149e4a5 Mon Sep 17 00:00:00 2001 From: Sanjay Dalal Date: Mon, 27 Jul 2009 22:25:58 +0000 Subject: [PATCH] CSPACE-267 intake service refactored to use java or rest apis of nuxeo using new framework test: IntakeServiceTest _M services M services/JaxRsServiceProvider/src/main/java/org/collectionspace/services/jaxrs/CollectionSpaceJaxRsApplication.java M services/JaxRsServiceProvider/pom.xml M services/pom.xml _M services/intake/service D services/intake/service/src/main/java/org/collectionspace/services/IntakeResource.java A services/intake/service/src/main/java/org/collectionspace/services/intake A + services/intake/service/src/main/java/org/collectionspace/services/intake/IntakeResource.java A + services/intake/service/src/main/java/org/collectionspace/services/intake/IntakeService.java A + services/intake/service/src/main/java/org/collectionspace/services/intake/IntakeServiceNuxeoImpl.java D services/intake/service/src/main/java/org/collectionspace/services/IntakeService.java D services/intake/service/src/main/java/org/collectionspace/services/IntakeServiceNuxeoImpl.java M services/intake/client/src/test/java/org/collectionspace/services/client/test/IntakeServiceTest.java --- services/JaxRsServiceProvider/pom.xml | 17 +- .../CollectionSpaceJaxRsApplication.java | 3 +- .../client/test/IntakeServiceTest.java | 73 ++--- .../services/IntakeResource.java | 275 ------------------ .../services/intake/IntakeResource.java | 266 +++++++++++++++++ .../services/{ => intake}/IntakeService.java | 2 +- .../{ => intake}/IntakeServiceNuxeoImpl.java | 3 +- services/pom.xml | 31 ++ 8 files changed, 358 insertions(+), 312 deletions(-) delete mode 100644 services/intake/service/src/main/java/org/collectionspace/services/IntakeResource.java create mode 100644 services/intake/service/src/main/java/org/collectionspace/services/intake/IntakeResource.java rename services/intake/service/src/main/java/org/collectionspace/services/{ => intake}/IntakeService.java (90%) rename services/intake/service/src/main/java/org/collectionspace/services/{ => intake}/IntakeServiceNuxeoImpl.java (95%) diff --git a/services/JaxRsServiceProvider/pom.xml b/services/JaxRsServiceProvider/pom.xml index a57a6c969..a4c1e3d48 100644 --- a/services/JaxRsServiceProvider/pom.xml +++ b/services/JaxRsServiceProvider/pom.xml @@ -50,7 +50,6 @@ org.jboss.resteasy resteasy-jaxrs - 1.0.2.GA tjws @@ -75,6 +74,22 @@ test + + + + org.slf4j + slf4j-simple + test + 1.5.2 + + diff --git a/services/JaxRsServiceProvider/src/main/java/org/collectionspace/services/jaxrs/CollectionSpaceJaxRsApplication.java b/services/JaxRsServiceProvider/src/main/java/org/collectionspace/services/jaxrs/CollectionSpaceJaxRsApplication.java index d9f1845fe..2b2abb223 100644 --- a/services/JaxRsServiceProvider/src/main/java/org/collectionspace/services/jaxrs/CollectionSpaceJaxRsApplication.java +++ b/services/JaxRsServiceProvider/src/main/java/org/collectionspace/services/jaxrs/CollectionSpaceJaxRsApplication.java @@ -2,12 +2,13 @@ package org.collectionspace.services.jaxrs; import org.collectionspace.services.collectionobject.CollectionObjectResource; import org.collectionspace.services.id.IDResource; -import org.collectionspace.services.IntakeResource; +import org.collectionspace.services.intake.IntakeResource; import javax.ws.rs.core.Application; import java.util.HashSet; import java.util.Set; + public class CollectionSpaceJaxRsApplication extends Application { private Set singletons = new HashSet(); diff --git a/services/intake/client/src/test/java/org/collectionspace/services/client/test/IntakeServiceTest.java b/services/intake/client/src/test/java/org/collectionspace/services/client/test/IntakeServiceTest.java index e60f7345f..19b04a8a6 100644 --- a/services/intake/client/src/test/java/org/collectionspace/services/client/test/IntakeServiceTest.java +++ b/services/intake/client/src/test/java/org/collectionspace/services/client/test/IntakeServiceTest.java @@ -27,57 +27,64 @@ public class IntakeServiceTest { @Test public void createIntake() { - long identifier = this.createIdentifier(); - - Intake intake = createIntake(identifier); + long identifier = this.createIdentifier(); + + Intake intake = createIntake(identifier); ClientResponse res = intakeClient.createIntake(intake); + verbose("createIntake: status = " + res.getStatus()); Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode()); - + //store updateId locally for "update" test - if (updateId == null) { - updateId = extractId(res); - } else { - deleteId = extractId(res); - System.out.println("Set deleteId: " + deleteId); + if(updateId == null){ + updateId = extractId(res); + }else{ + deleteId = extractId(res); + System.out.println("Set deleteId: " + deleteId); } } @Test(dependsOnMethods = {"createIntake"}) public void updateIntake() { - ClientResponse res = intakeClient.getIntake(updateId); + ClientResponse res = intakeClient.getIntake(updateId); + Assert.assertEquals(res.getStatus(), Response.Status.OK.getStatusCode()); + verbose("getIntake: status = " + res.getStatus()); Intake intake = res.getEntity(); verbose("Got Intake to update with ID: " + updateId, - intake, Intake.class); - + intake, Intake.class); + //intake.setCsid("updated-" + updateId); intake.setEntryNumber("updated-" + intake.getEntryNumber()); intake.setEntryDate("updated-" + intake.getEntryDate()); - + // make call to update service res = intakeClient.updateIntake(updateId, intake); - + verbose("updateIntake: status = " + res.getStatus()); + Assert.assertEquals(res.getStatus(), Response.Status.OK.getStatusCode()); // check the response - Intake updatedIntake = res.getEntity(); + Intake updatedIntake = res.getEntity(); Assert.assertEquals(updatedIntake.getEntryDate(), intake.getEntryDate()); verbose("updateIntake: ", updatedIntake, Intake.class); - + return; } @Test(dependsOnMethods = {"createIntake"}) public void createCollection() { - for (int i = 0; i < 3; i++) { - this.createIntake(); - } + for(int i = 0; i < 3; i++){ + this.createIntake(); + } } - + @Test(dependsOnMethods = {"createCollection"}) public void getIntakeList() { //the resource method is expected to return at least an empty list - IntakeList coList = intakeClient.getIntakeList().getEntity(); + ClientResponse res = intakeClient.getIntakeList(); + verbose("getIntakeList: status = " + res.getStatus()); + Assert.assertEquals(res.getStatus(), Response.Status.OK.getStatusCode()); + IntakeList coList = res.getEntity(); List coItemList = coList.getIntakeListItem(); int i = 0; - for(IntakeList.IntakeListItem pli : coItemList) { + for(IntakeList.IntakeListItem pli : coItemList){ verbose("getIntakeList: list-item[" + i + "] csid=" + pli.getCsid()); verbose("getIntakeList: list-item[" + i + "] entryNumber=" + pli.getEntryNumber()); verbose("getIntakeList: list-item[" + i + "] URI=" + pli.getUri()); @@ -87,25 +94,25 @@ public class IntakeServiceTest { @Test(dependsOnMethods = {"createCollection"}) public void deleteIntake() { - System.out.println("Calling deleteIntake:" + deleteId); + System.out.println("Calling deleteIntake:" + deleteId); ClientResponse res = intakeClient.deleteIntake(deleteId); verbose("deleteIntake: csid=" + deleteId); verbose("deleteIntake: status = " + res.getStatus()); - Assert.assertEquals(res.getStatus(), Response.Status.NO_CONTENT.getStatusCode()); + Assert.assertEquals(res.getStatus(), Response.Status.OK.getStatusCode()); } private Intake createIntake(long identifier) { - Intake intake = createIntake("entryNumber-" + identifier, - "entryDate-" + identifier); + Intake intake = createIntake("entryNumber-" + identifier, + "entryDate-" + identifier); return intake; } private Intake createIntake(String entryNumber, String entryDate) { - Intake intake = new Intake(); - - intake.setEntryNumber(entryNumber); - intake.setEntryDate(entryDate); + Intake intake = new Intake(); + + intake.setEntryNumber(entryNumber); + intake.setEntryDate(entryDate); return intake; } @@ -142,9 +149,9 @@ public class IntakeServiceTest { verbose(" name=" + mentry.getKey() + " value=" + mentry.getValue()); } } - + private long createIdentifier() { - long identifier = System.currentTimeMillis(); - return identifier; + long identifier = System.currentTimeMillis(); + return identifier; } } diff --git a/services/intake/service/src/main/java/org/collectionspace/services/IntakeResource.java b/services/intake/service/src/main/java/org/collectionspace/services/IntakeResource.java deleted file mode 100644 index 906aef059..000000000 --- a/services/intake/service/src/main/java/org/collectionspace/services/IntakeResource.java +++ /dev/null @@ -1,275 +0,0 @@ -package org.collectionspace.services; - -import java.util.Iterator; -import java.util.List; -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.DELETE; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.PathParam; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.Marshaller; - -import org.collectionspace.services.IntakeService; -import org.collectionspace.services.intake.*; -import org.collectionspace.services.intake.IntakeList.*; -import org.collectionspace.services.IntakeJAXBSchema; - -import org.dom4j.Document; -import org.dom4j.Element; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@Path("/intakes") -@Consumes("application/xml") -@Produces("application/xml") -public class IntakeResource { - - final Logger logger = LoggerFactory - .getLogger(IntakeResource.class); - - // This should be a DI wired by a container like Spring, Seam, or EJB3 - final static IntakeService service = new IntakeServiceNuxeoImpl(); - - public IntakeResource() { - // do nothing - } - - @GET - public IntakeList getIntakeList(@Context UriInfo ui) { - IntakeList p = new IntakeList(); - try { - Document document = service.getIntakeList(); - Element root = document.getRootElement(); - - // debug - System.err.println(document.asXML()); - - List list = p - .getIntakeListItem(); - for (Iterator i = root.elementIterator(); i.hasNext();) { - Element element = (Element) i.next(); - // debug - System.err.println(); - element.asXML(); - - // set the Intake list item entity elements - IntakeListItem pli = new IntakeListItem(); - pli.setEntryNumber(element.attributeValue("entryNumber")); - pli.setUri(element.attributeValue("url")); - pli.setCsid(element.attributeValue("id")); - list.add(pli); - } - - } catch (Exception e) { - e.printStackTrace(); - } - - return p; - } - - @POST - public Response createIntake(Intake intake) { - - String csid = null; - try { - Document document = service.postIntake(intake); - Element root = document.getRootElement(); - for (Iterator i = root.elementIterator(); i.hasNext();) { - Element element = (Element) i.next(); - if ("docRef".equals(element.getName())) { - csid = (String) element.getData(); - intake.setCsid(csid); - } - } - } catch (Exception e) { - Response response = Response.status(Response.Status.NOT_FOUND) - .entity("Create failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - - verbose("createIntake: ", intake); - UriBuilder path = UriBuilder - .fromResource(IntakeResource.class); - path.path("" + csid); - Response response = Response.created(path.build()).build(); - - return response; - } - - @GET - @Path("{csid}") - public Intake getIntake(@PathParam("csid") String csid) { - - Intake intake = null; - try { - Document document = service.getIntake(csid); - Element root = document.getRootElement(); - intake = new Intake(); - - // TODO: recognize schema thru namespace uri - // Namespace ns = new Namespace("intake", - // "http://collectionspace.org/intake"); - - Iterator siter = root.elementIterator("schema"); - while (siter.hasNext()) { - - Element schemaElement = siter.next(); - System.err - .println("Intake.getIntake() called."); - - // TODO: recognize schema thru namespace uri - if (IntakeService.INTAKE_SCHEMA_NAME.equals(schemaElement.attribute("name") - .getValue())) { - Element ele = schemaElement - .element(IntakeJAXBSchema.CURRENT_OWNER); - if (ele != null) { - intake.setCurrentOwner((String) ele.getData()); - } - ele = schemaElement - .element(IntakeJAXBSchema.DEPOSITOR); - if (ele != null) { - intake.setDepositor((String) ele.getData()); - } - ele = schemaElement - .element(IntakeJAXBSchema.DEPOSITORS_REQUIREMENTS); - if (ele != null) { - intake.setDepositorsRequirements((String) ele.getData()); - } - ele = schemaElement - .element(IntakeJAXBSchema.ENTRY_DATE); - if (ele != null) { - intake.setEntryDate((String) ele.getData()); - } - ele = schemaElement - .element(IntakeJAXBSchema.ENTRY_METHOD); - if (ele != null) { - intake.setEntryMethod((String) ele.getData()); - } - ele = schemaElement - .element(IntakeJAXBSchema.ENTRY_NOTE); - if (ele != null) { - intake.setEntryNote((String) ele.getData()); - } - ele = schemaElement - .element(IntakeJAXBSchema.ENTRY_NUMBER); - if (ele != null) { - intake.setEntryNumber((String) ele.getData()); - } - ele = schemaElement - .element(IntakeJAXBSchema.ENTRY_REASON); - if (ele != null) { - intake.setEntryReason((String) ele.getData()); - } - ele = schemaElement - .element(IntakeJAXBSchema.PACKING_NOTE); - if (ele != null) { - intake.setPackingNote((String) ele.getData()); - } - ele = schemaElement - .element(IntakeJAXBSchema.RETURN_DATE); - if (ele != null) { - intake.setReturnDate((String) ele.getData()); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Get failed") - .type("text/plain").build(); - throw new WebApplicationException(response); - } - if (intake == null) { - Response response = Response.status(Response.Status.NOT_FOUND) - .entity( - "Get failed, the requested Intake CSID:" - + csid + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); - } - verbose("getIntake: ", intake); - - return intake; - } - - @PUT - @Path("{csid}") - public Intake updateIntake( - @PathParam("csid") String csid, Intake theUpdate) { - - verbose("updateIntake with input: ", theUpdate); - - String status = null; - try { - - Document document = service.putIntake(csid, theUpdate); - Element root = document.getRootElement(); - for (Iterator i = root.elementIterator(); i.hasNext();) { - Element element = (Element) i.next(); - if ("docRef".equals(element.getName())) { - status = (String) element.getData(); - verbose("updateIntake response: " + status); - } - } - } catch (Exception e) { - // FIXME: NOT_FOUND? - Response response = Response.status(Response.Status.NOT_FOUND) - .entity("Update failed ").type("text/plain").build(); - throw new WebApplicationException(response); - } - - return theUpdate; - } - - @DELETE - @Path("{csid}") - public void deleteIntake(@PathParam("csid") String csid) { - - verbose("deleteIntake with csid=" + csid); - try { - - Document document = service.deleteIntake(csid); - Element root = document.getRootElement(); - for (Iterator i = root.elementIterator(); i.hasNext();) { - Element element = (Element) i.next(); - if ("docRef".equals(element.getName())) { - String status = (String) element.getData(); - verbose("deleteIntaket response: " + status); - } - } - } catch (Exception e) { - // FIXME: NOT_FOUND? - Response response = Response.status(Response.Status.NOT_FOUND) - .entity("Delete failed ").type("text/plain").build(); - throw new WebApplicationException(response); - } - - } - - private void verbose(String msg, Intake intake) { - try { - verbose(msg); - JAXBContext jc = JAXBContext.newInstance(Intake.class); - - Marshaller m = jc.createMarshaller(); - m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); - m.marshal(intake, System.out); - } catch (Exception e) { - e.printStackTrace(); - } - } - - private void verbose(String msg) { - System.out.println("IntakeResource. " + msg); - } - -} diff --git a/services/intake/service/src/main/java/org/collectionspace/services/intake/IntakeResource.java b/services/intake/service/src/main/java/org/collectionspace/services/intake/IntakeResource.java new file mode 100644 index 000000000..028f7f5da --- /dev/null +++ b/services/intake/service/src/main/java/org/collectionspace/services/intake/IntakeResource.java @@ -0,0 +1,266 @@ +/** + * This document is a part of the source code and related artifacts + * for CollectionSpace, an open source collections management system + * for museums and related institutions: + + * http://www.collectionspace.org + * http://wiki.collectionspace.org + + * Copyright 2009 University of California at Berkeley + + * Licensed under the Educational Community License (ECL), Version 2.0. + * You may not use this file except in compliance with this License. + + * You may obtain a copy of the ECL 2.0 License at + + * https://source.collectionspace.org/collection-space/LICENSE.txt + + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.collectionspace.services.intake; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.DELETE; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.PathParam; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriBuilder; +import javax.ws.rs.core.UriInfo; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.Marshaller; + +import org.collectionspace.services.intake.IntakeList.*; + +import org.collectionspace.services.intake.nuxeo.IntakeConstants; +import org.collectionspace.services.intake.nuxeo.IntakeHandlerFactory; +import org.collectionspace.services.common.NuxeoClientType; +import org.collectionspace.services.common.ServiceMain; +import org.collectionspace.services.common.repository.DocumentNotFoundException; +import org.collectionspace.services.common.repository.DocumentHandler; +import org.collectionspace.services.common.repository.RepositoryClient; +import org.collectionspace.services.common.repository.RepositoryClientFactory; +import org.jboss.resteasy.util.HttpResponseCodes; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Path("/intakes") +@Consumes("application/xml") +@Produces("application/xml") +public class IntakeResource { + + public final static String INTAKE_SERVICE_NAME = "intakes"; + final Logger logger = LoggerFactory.getLogger(IntakeResource.class); + //FIXME retrieve client type from configuration + final static NuxeoClientType CLIENT_TYPE = ServiceMain.getInstance().getNuxeoClientType(); + + public IntakeResource() { + // do nothing + } + + @POST + public Response createIntake( + Intake intakeObject) { + + String csid = null; + try{ + RepositoryClientFactory clientFactory = RepositoryClientFactory.getInstance(); + RepositoryClient client = clientFactory.getClient(CLIENT_TYPE.toString()); + IntakeHandlerFactory handlerFactory = IntakeHandlerFactory.getInstance(); + DocumentHandler handler = (DocumentHandler) handlerFactory.getHandler(CLIENT_TYPE.toString()); + handler.setCommonObject(intakeObject); + csid = client.create(INTAKE_SERVICE_NAME, IntakeConstants.INTAKE_NUXEO_DOCTYPE, handler); + intakeObject.setCsid(csid); + if(logger.isDebugEnabled()){ + verbose("createIntake: ", intakeObject); + } + UriBuilder path = UriBuilder.fromResource(IntakeResource.class); + path.path("" + csid); + Response response = Response.created(path.build()).build(); + return response; + }catch(Exception e){ + if(logger.isDebugEnabled()){ + logger.debug("Caught exception in createIntake", e); + } + Response response = Response.status( + Response.Status.INTERNAL_SERVER_ERROR).entity("Create failed").type("text/plain").build(); + throw new WebApplicationException(response); + } + } + + @GET + @Path("{csid}") + public Intake getIntake( + @PathParam("csid") String csid) { + if(logger.isDebugEnabled()){ + verbose("getIntake with csid=" + csid); + } + if(csid == null || "".equals(csid)){ + logger.error("getIntake: missing csid!"); + Response response = Response.status(Response.Status.BAD_REQUEST).entity( + "get failed on Intake csid=" + csid).type( + "text/plain").build(); + throw new WebApplicationException(response); + } + Intake intakeObject = null; + try{ + RepositoryClientFactory clientFactory = RepositoryClientFactory.getInstance(); + RepositoryClient client = clientFactory.getClient(CLIENT_TYPE.toString()); + IntakeHandlerFactory handlerFactory = IntakeHandlerFactory.getInstance(); + DocumentHandler handler = (DocumentHandler) handlerFactory.getHandler(CLIENT_TYPE.toString()); + client.get(csid, handler); + intakeObject = (Intake) handler.getCommonObject(); + }catch(DocumentNotFoundException dnfe){ + if(logger.isDebugEnabled()){ + logger.debug("getIntake", dnfe); + } + Response response = Response.status(Response.Status.NOT_FOUND).entity( + "Get failed on Intake csid=" + csid).type( + "text/plain").build(); + throw new WebApplicationException(response); + }catch(Exception e){ + if(logger.isDebugEnabled()){ + logger.debug("getIntake", e); + } + Response response = Response.status( + Response.Status.INTERNAL_SERVER_ERROR).entity("Get failed").type("text/plain").build(); + throw new WebApplicationException(response); + } + + if(intakeObject == null){ + Response response = Response.status(Response.Status.NOT_FOUND).entity( + "Get failed, the requested Intake CSID:" + csid + ": was not found.").type( + "text/plain").build(); + throw new WebApplicationException(response); + } + if(logger.isDebugEnabled()){ + verbose("getIntake: ", intakeObject); + } + return intakeObject; + } + + @GET + public IntakeList getIntakeList(@Context UriInfo ui) { + IntakeList intakeObjectList = new IntakeList(); + try{ + RepositoryClientFactory clientFactory = RepositoryClientFactory.getInstance(); + RepositoryClient client = clientFactory.getClient(CLIENT_TYPE.toString()); + IntakeHandlerFactory handlerFactory = IntakeHandlerFactory.getInstance(); + DocumentHandler handler = (DocumentHandler) handlerFactory.getHandler(CLIENT_TYPE.toString()); + client.getAll(INTAKE_SERVICE_NAME, handler); + intakeObjectList = (IntakeList) handler.getCommonObjectList(); + }catch(Exception e){ + if(logger.isDebugEnabled()){ + logger.debug("Caught exception in getIntakeList", e); + } + Response response = Response.status( + Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); + throw new WebApplicationException(response); + } + return intakeObjectList; + } + + @PUT + @Path("{csid}") + public Intake updateIntake( + @PathParam("csid") String csid, + Intake theUpdate) { + if(logger.isDebugEnabled()){ + verbose("updateIntake with csid=" + csid); + } + if(csid == null || "".equals(csid)){ + logger.error("updateIntake: missing csid!"); + Response response = Response.status(Response.Status.BAD_REQUEST).entity( + "update failed on Intake csid=" + csid).type( + "text/plain").build(); + throw new WebApplicationException(response); + } + if(logger.isDebugEnabled()){ + verbose("updateIntake with input: ", theUpdate); + } + try{ + RepositoryClientFactory clientFactory = RepositoryClientFactory.getInstance(); + RepositoryClient client = clientFactory.getClient(CLIENT_TYPE.toString()); + IntakeHandlerFactory handlerFactory = IntakeHandlerFactory.getInstance(); + DocumentHandler handler = (DocumentHandler) handlerFactory.getHandler(CLIENT_TYPE.toString()); + handler.setCommonObject(theUpdate); + client.update(csid, handler); + }catch(DocumentNotFoundException dnfe){ + if(logger.isDebugEnabled()){ + logger.debug("caugth exception in updateIntake", dnfe); + } + Response response = Response.status(Response.Status.NOT_FOUND).entity( + "Update failed on Intake csid=" + csid).type( + "text/plain").build(); + throw new WebApplicationException(response); + }catch(Exception e){ + Response response = Response.status( + Response.Status.INTERNAL_SERVER_ERROR).entity("Update failed").type("text/plain").build(); + throw new WebApplicationException(response); + } + return theUpdate; + } + + @DELETE + @Path("{csid}") + public Response deleteIntake(@PathParam("csid") String csid) { + + if(logger.isDebugEnabled()){ + verbose("deleteIntake with csid=" + csid); + } + if(csid == null || "".equals(csid)){ + logger.error("deleteIntake: missing csid!"); + Response response = Response.status(Response.Status.BAD_REQUEST).entity( + "delete failed on Intake csid=" + csid).type( + "text/plain").build(); + throw new WebApplicationException(response); + } + try{ + RepositoryClientFactory clientFactory = RepositoryClientFactory.getInstance(); + RepositoryClient client = clientFactory.getClient(CLIENT_TYPE.toString()); + client.delete(csid); + return Response.status(HttpResponseCodes.SC_OK).build(); + }catch(DocumentNotFoundException dnfe){ + if(logger.isDebugEnabled()){ + logger.debug("caught exception in deleteIntake", dnfe); + } + Response response = Response.status(Response.Status.NOT_FOUND).entity( + "Delete failed on Intake csid=" + csid).type( + "text/plain").build(); + throw new WebApplicationException(response); + }catch(Exception e){ + Response response = Response.status( + Response.Status.INTERNAL_SERVER_ERROR).entity("Delete failed").type("text/plain").build(); + throw new WebApplicationException(response); + } + + } + + private void verbose(String msg, Intake intakeObject) { + try{ + verbose(msg); + JAXBContext jc = JAXBContext.newInstance( + Intake.class); + + Marshaller m = jc.createMarshaller(); + m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + m.marshal(intakeObject, System.out); + }catch(Exception e){ + e.printStackTrace(); + } + + } + + private void verbose(String msg) { + System.out.println("IntakeResource. " + msg); + } +} diff --git a/services/intake/service/src/main/java/org/collectionspace/services/IntakeService.java b/services/intake/service/src/main/java/org/collectionspace/services/intake/IntakeService.java similarity index 90% rename from services/intake/service/src/main/java/org/collectionspace/services/IntakeService.java rename to services/intake/service/src/main/java/org/collectionspace/services/intake/IntakeService.java index b972bae38..f74ff484a 100644 --- a/services/intake/service/src/main/java/org/collectionspace/services/IntakeService.java +++ b/services/intake/service/src/main/java/org/collectionspace/services/intake/IntakeService.java @@ -1,7 +1,7 @@ /** * */ -package org.collectionspace.services; +package org.collectionspace.services.intake; import java.io.IOException; import org.dom4j.Document; diff --git a/services/intake/service/src/main/java/org/collectionspace/services/IntakeServiceNuxeoImpl.java b/services/intake/service/src/main/java/org/collectionspace/services/intake/IntakeServiceNuxeoImpl.java similarity index 95% rename from services/intake/service/src/main/java/org/collectionspace/services/IntakeServiceNuxeoImpl.java rename to services/intake/service/src/main/java/org/collectionspace/services/intake/IntakeServiceNuxeoImpl.java index d882fb66b..63f5ee55c 100644 --- a/services/intake/service/src/main/java/org/collectionspace/services/IntakeServiceNuxeoImpl.java +++ b/services/intake/service/src/main/java/org/collectionspace/services/intake/IntakeServiceNuxeoImpl.java @@ -1,8 +1,9 @@ /** * */ -package org.collectionspace.services; +package org.collectionspace.services.intake; +import org.collectionspace.services.*; import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.ArrayList; diff --git a/services/pom.xml b/services/pom.xml index 388287501..b477b688f 100644 --- a/services/pom.xml +++ b/services/pom.xml @@ -145,6 +145,37 @@ + + + + + + org.codehaus.mojo + findbugs-maven-plugin + 2.0.1 + + org.collectionspace.* + + + + -- 2.47.3