From 16fec25b8cfa86f5fa551b968edd94e1be87ba1b Mon Sep 17 00:00:00 2001 From: Aron Roberts Date: Fri, 26 Jun 2009 15:57:29 +0000 Subject: [PATCH] CSPACE-245: Stubbed out initial "get next ID for a pattern" functionality in ID Service. --- .../collectionspace/services/IDResource.java | 56 ++++++++++++++++--- .../collectionspace/services/IDService.java | 28 +++++++++- .../services/IDServiceNuxeoImpl.java | 6 +- 3 files changed, 80 insertions(+), 10 deletions(-) diff --git a/services/id/service/src/main/java/org/collectionspace/services/IDResource.java b/services/id/service/src/main/java/org/collectionspace/services/IDResource.java index dfc5be286..82140940b 100644 --- a/services/id/service/src/main/java/org/collectionspace/services/IDResource.java +++ b/services/id/service/src/main/java/org/collectionspace/services/IDResource.java @@ -18,6 +18,14 @@ * $Date: 2009-06-19 19:03:38 -0700 (Fri, 19 Jun 2009) $ */ + // @TODO: Add Javadoc comments. + + // @TODO: Remove unused import statements. + + // @TODO: Replace wildcarded import statement for + // org.collectionspace.services.id.* with class-specific + // import statements. + package org.collectionspace.services; import java.util.Iterator; @@ -48,26 +56,60 @@ import org.dom4j.Element; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -@Path("/idpatterns") // Think long and hard about this ... +@Path("/ids") @Consumes("application/xml") @Produces("application/xml") public class IDResource { final Logger logger = LoggerFactory.getLogger(IDResource.class); - // This should be a DI wired by a container like Spring, Seam, or EJB3 - // final static CollectionObjectService service = new CollectionObjectServiceNuxeoImpl(); + // Richard's comment in the CollectionObject Resource class, from which + // this class was derived: This should be a DI wired by a container like + // Spring, Seam, or EJB3. + final static IDService service = new IDServiceJdbcImpl(); public IDResource() { // do nothing } - // Retrieve the next ID + // Retrieve the next available ID associated with a specified pattern. + // + // @TODO: We're currently using simple integer IDs. We'll need to + // handle both CSIDs, and URIs or another identifier type that we select, + // for uniquely identifying IDPatterns. @GET - @Path("/{csid}/ids/next") + @Path("/next/patterns/{id}") + // @TODO: Temporary during testing; to be changed to return XML @Produces("text/plain") - public String getCollectionObject(@PathParam("csid") String csid) { - return "foo"; // placeholder + public Response getNextID(@PathParam("csid") String csid) { + + Response response = null; + String nextId = ""; + String msg = ""; + + try { + + nextId = service.nextID(csid); + + // @TODO: An IllegalStateException often indicates an overflow + // of an IDPart. Consider whether returning a 400 Bad Request + // status code is warranted, or whether returning some other + // status would be more appropriate. + } catch (IllegalStateException ise) { + response = Response.status(Response.Status.BAD_REQUEST) + .entity(ise.getMessage()).type("text/plain").build(); + + } catch (IllegalArgumentException iae) { + response = Response.status(Response.Status.BAD_REQUEST) + .entity(iae.getMessage()).type("text/plain").build(); + + } catch (Exception e) { + response = Response.status(Response.Status.INTERNAL_SERVER_ERROR) + .entity(e.getMessage()).type("text/plain").build(); + } + + return response; + } /* diff --git a/services/id/service/src/main/java/org/collectionspace/services/IDService.java b/services/id/service/src/main/java/org/collectionspace/services/IDService.java index 903ccd6b2..d0b9a6077 100644 --- a/services/id/service/src/main/java/org/collectionspace/services/IDService.java +++ b/services/id/service/src/main/java/org/collectionspace/services/IDService.java @@ -29,7 +29,33 @@ import org.collectionspace.services.id.IDServiceNuxeoImpl; public interface IDService { - public final static String ID_SCHEMA_NAME = "id"; // Note to self: Where is this used? + // public final static String ID_SCHEMA_NAME = "id"; // Note to self: Where is this used? + + // ---------------------------------------- + // IDs + // ---------------------------------------- + + // Create + + // Read single object + public String nextID(String csid) throws IllegalArgumentException, IllegalStateException; + + // Read a list of objects (aka read multiple) + + // ---------------------------------------- + // ID Patterns + // ---------------------------------------- + + // Create + + // Read single object + + // Read a list of objects (aka read multiple) + + // Update + + // Delete (possibly not permitted - deactivate instead?) + /* // Create diff --git a/services/id/service/src/main/java/org/collectionspace/services/IDServiceNuxeoImpl.java b/services/id/service/src/main/java/org/collectionspace/services/IDServiceNuxeoImpl.java index feea99c02..d50cde5ae 100644 --- a/services/id/service/src/main/java/org/collectionspace/services/IDServiceNuxeoImpl.java +++ b/services/id/service/src/main/java/org/collectionspace/services/IDServiceNuxeoImpl.java @@ -4,6 +4,8 @@ * Implementation of Nuxeo-specific portions of the ID Service, * such as storing and retrieving documents from the Nuxeo repository. * + * NOTE: Placeholder class - not currently used. + * * Copyright 2009 Regents of the University of California * * Licensed under the Educational Community License (ECL), Version 2.0. @@ -19,7 +21,7 @@ * $Date: 2009-06-19 19:03:38 -0700 (Fri, 19 Jun 2009) $ */ -package org.collectionspace.services.id; +package org.collectionspace.services; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -38,7 +40,7 @@ import org.dom4j.DocumentException; import org.dom4j.io.SAXReader; // import org.restlet.resource.Representation; -public class IDServiceNuxeoImpl { // implements IDService { +public class IDServiceNuxeoImpl { // implements IDService { // Placeholder constructor. public void IDServiceNuxeoImpl() { -- 2.47.3