From: Laramie Crocker Date: Sat, 14 May 2011 06:29:40 +0000 (+0000) Subject: CSPACE-3175 Refactored *Resource classes to use functionality in two main base classe... X-Git-Url: https://git.aero2k.de/?a=commitdiff_plain;h=056aa6730c4dd77afaceecaaa07562f55254ff54;p=tmp%2Fjakarta-migration.git CSPACE-3175 Refactored *Resource classes to use functionality in two main base classes: ResourceBase, and SecurityResourceBase. Also, changed how some responses are now response code 400, BAD_REQUEST, where previously they were incorrectly sent as server error, 500. See extensive notes here: http://issues.collectionspace.org/browse/CSPACE-3175 --- diff --git a/services/IntegrationTests/src/test/resources/test-data/xmlreplay/person/person.xml b/services/IntegrationTests/src/test/resources/test-data/xmlreplay/person/person.xml index b13b339cd..840bbc84e 100755 --- a/services/IntegrationTests/src/test/resources/test-data/xmlreplay/person/person.xml +++ b/services/IntegrationTests/src/test/resources/test-data/xmlreplay/person/person.xml @@ -238,7 +238,7 @@ !-- ========================= POST a person ===================================================== --> - + POST /cspace-services/personauthorities/ diff --git a/services/account/client/src/main/java/org/collectionspace/services/client/AccountClient.java b/services/account/client/src/main/java/org/collectionspace/services/client/AccountClient.java index 3e25e0aa5..6fff4a5e7 100644 --- a/services/account/client/src/main/java/org/collectionspace/services/client/AccountClient.java +++ b/services/account/client/src/main/java/org/collectionspace/services/client/AccountClient.java @@ -38,6 +38,8 @@ import org.jboss.resteasy.client.ClientResponse; */ public class AccountClient extends AbstractServiceClientImpl { public static final String SERVICE_NAME = "accounts"; + public static final String SERVICE_PATH_COMPONENT = SERVICE_NAME; + public static final String SERVICE_PATH = "/" + SERVICE_PATH_COMPONENT; @Override public String getServiceName() { diff --git a/services/account/service/pom.xml b/services/account/service/pom.xml index 2e4f77509..a8beb657d 100644 --- a/services/account/service/pom.xml +++ b/services/account/service/pom.xml @@ -49,7 +49,12 @@ org.collectionspace.services.account.jaxb ${project.version} - + + org.collectionspace.services + org.collectionspace.services.account.client + ${project.version} + + diff --git a/services/account/service/src/main/java/org/collectionspace/services/account/AccountResource.java b/services/account/service/src/main/java/org/collectionspace/services/account/AccountResource.java index bb7fc830f..61da822b9 100644 --- a/services/account/service/src/main/java/org/collectionspace/services/account/AccountResource.java +++ b/services/account/service/src/main/java/org/collectionspace/services/account/AccountResource.java @@ -23,77 +23,55 @@ */ package org.collectionspace.services.account; -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.QueryParam; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - -import org.collectionspace.services.authorization.AccountRoleRel; -import org.collectionspace.services.authorization.AccountPermission; -//import org.collectionspace.services.authorization.AccountRolesList; import org.collectionspace.services.account.storage.AccountStorageClient; +import org.collectionspace.services.authorization.AccountPermission; import org.collectionspace.services.authorization.AccountRole; +import org.collectionspace.services.authorization.AccountRoleRel; import org.collectionspace.services.authorization.SubjectType; -import org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl; +import org.collectionspace.services.client.AccountClient; +import org.collectionspace.services.common.SecurityResourceBase; import org.collectionspace.services.common.ServiceMessages; +import org.collectionspace.services.common.context.RemoteServiceContextFactory; import org.collectionspace.services.common.context.ServiceContext; import org.collectionspace.services.common.context.ServiceContextFactory; -import org.collectionspace.services.common.context.RemoteServiceContextFactory; -import org.collectionspace.services.common.document.BadRequestException; -import org.collectionspace.services.common.document.DocumentFilter; -import org.collectionspace.services.common.document.DocumentNotFoundException; -import org.collectionspace.services.common.document.DocumentHandler; -import org.collectionspace.services.common.security.UnauthorizedException; import org.collectionspace.services.common.storage.StorageClient; import org.collectionspace.services.common.storage.jpa.JpaStorageUtils; import org.jboss.resteasy.util.HttpResponseCodes; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * AccountResource provides RESTful interface to the account service - */ -@Path("/accounts") +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriBuilder; +import javax.ws.rs.core.UriInfo; + + +/** AccountResource provides RESTful interface to the account service */ +@Path(AccountClient.SERVICE_PATH) @Consumes("application/xml") @Produces("application/xml") -public class AccountResource - extends AbstractCollectionSpaceResourceImpl { +public class AccountResource extends SecurityResourceBase { - /** The service name. */ - final private String serviceName = "accounts"; - /** The logger. */ final Logger logger = LoggerFactory.getLogger(AccountResource.class); - /** The storage client. */ final StorageClient storageClient = new AccountStorageClient(); - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getVersionString() - */ @Override protected String getVersionString() { - /** The last change revision. */ - final String lastChangeRevision = "$LastChangedRevision: 1165 $"; - return lastChangeRevision; + return "$LastChangedRevision: 1165 $"; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { - return serviceName; + return AccountClient.SERVICE_NAME; } @Override @@ -101,258 +79,46 @@ public class AccountResource return AccountsCommon.class; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getServiceContextFactory() - */ @Override public ServiceContextFactory getServiceContextFactory() { return (ServiceContextFactory) RemoteServiceContextFactory.get(); } -// private ServiceContext createServiceContext(T obj) throws Exception { -// ServiceContext ctx = new RemoteServiceContextImpl(getServiceName()); -// ctx.setInput(obj); -// ctx.setDocumentType(AccountsCommon.class.getPackage().getName()); //persistence unit -// ctx.setProperty("entity-name", AccountsCommon.class.getName()); -// return ctx; -// } - - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getStorageClient(org.collectionspace.services.common.context.ServiceContext) - */ @Override - public StorageClient getStorageClient(ServiceContext ctx) { + public StorageClient getStorageClient(ServiceContext ctx) { //FIXME use ctx to identify storage client return storageClient; } -// @Override -// public DocumentHandler createDocumentHandler(ServiceContext ctx) throws Exception { -// DocumentHandler docHandler = ctx.getDocumentHandler(); -// docHandler.setCommonPart(ctx.getInput()); -// return docHandler; -// } - /** - * Creates the account. - * - * @param input the input - * - * @return the response - */ @POST public Response createAccount(AccountsCommon input) { - try { - ServiceContext ctx = createServiceContext(input, AccountsCommon.class); - DocumentHandler handler = createDocumentHandler(ctx); - String csid = getStorageClient(ctx).create(ctx, handler); - UriBuilder path = UriBuilder.fromResource(AccountResource.class); - path.path("" + csid); - Response response = Response.created(path.build()).build(); - return response; - } catch (BadRequestException bre) { - Response response = Response.status( - Response.Status.BAD_REQUEST).entity(ServiceMessages.POST_FAILED - + bre.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.POST_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in createAccount", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.POST_FAILED + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } + return create(input); } - /** - * Gets the account. - * - * @param csid the csid - * - * @return the account - */ @GET @Path("{csid}") - public AccountsCommon getAccount( - @PathParam("csid") String csid) { - - if (logger.isDebugEnabled()) { - logger.debug("getAccount with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("getAccount: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.GET_FAILED + ServiceMessages.MISSING_INVALID_CSID + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - AccountsCommon result = null; - try { - ServiceContext ctx = createServiceContext((AccountsCommon) null, AccountsCommon.class); - DocumentHandler handler = createDocumentHandler(ctx); - getStorageClient(ctx).get(ctx, csid, handler); - result = (AccountsCommon) ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.GET_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getAccount", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getAccount", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity(ServiceMessages.GET_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - return result; + public AccountsCommon getAccount(@PathParam("csid") String csid) { + return (AccountsCommon)get(csid, AccountsCommon.class); } - /** - * Gets the account list. - * - * @param ui the ui - * - * @return the account list - */ @GET @Produces("application/xml") - public AccountsCommonList getAccountList( - @Context UriInfo ui) { - AccountsCommonList accountList = new AccountsCommonList(); - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext((AccountsCommon) null, - queryParams, AccountsCommon.class); - DocumentHandler handler = createDocumentHandler(ctx); - handler.getDocumentFilter().setQueryParams(queryParams); -// DocumentFilter myFilter = handler.createDocumentFilter(); -// myFilter.setPagination(queryParams); -// myFilter.setQueryParams(queryParams); -// handler.setDocumentFilter(myFilter); - getStorageClient(ctx).getFiltered(ctx, handler); - accountList = (AccountsCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.LIST_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getAccountList", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity(ServiceMessages.LIST_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - return accountList; + public AccountsCommonList getAccountList(@Context UriInfo ui) { + return (AccountsCommonList)getList(ui, AccountsCommon.class); } - /** - * Update account. - * - * @param csid the csid - * @param theUpdate the the update - * - * @return the accounts common - */ @PUT @Path("{csid}") - public AccountsCommon updateAccount( - @PathParam("csid") String csid, - AccountsCommon theUpdate) { - if (logger.isDebugEnabled()) { - logger.debug("updateAccount with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("updateAccount: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.PUT_FAILED + ServiceMessages.MISSING_INVALID_CSID + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - AccountsCommon result = null; - try { - ServiceContext ctx = createServiceContext(theUpdate, AccountsCommon.class); - DocumentHandler handler = createDocumentHandler(ctx); - getStorageClient(ctx).update(ctx, csid, handler); - result = (AccountsCommon) ctx.getOutput(); - } catch (BadRequestException bre) { - Response response = Response.status( - Response.Status.BAD_REQUEST).entity(ServiceMessages.PUT_FAILED - + bre.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.PUT_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caugth exception in updateAccount", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.PUT_FAILED + "csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity(ServiceMessages.PUT_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - return result; + public AccountsCommon updateAccount(@PathParam("csid") String csid,AccountsCommon theUpdate) { + return (AccountsCommon)update(csid, theUpdate, AccountsCommon.class); } - /** - * Delete account. - * - * @param csid the csid - * - * @return the response - */ + @DELETE @Path("{csid}") public Response deleteAccount(@PathParam("csid") String csid) { - - if (logger.isDebugEnabled()) { - logger.debug("deleteAccount with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("deleteAccount: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.DELETE_FAILED + ServiceMessages.MISSING_INVALID_CSID + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("deleteAccount with csid=" + csid); + ensureCSID(csid, ServiceMessages.DELETE_FAILED); try { //FIXME ideally the following two ops shoudl be in the same tx CSPACE-658 //delete all relationships @@ -362,26 +128,8 @@ public class AccountResource AccountsCommon.class); getStorageClient(ctx).delete(ctx, csid); return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.DELETE_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deleteAccount", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.DELETE_FAILED + "csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity(ServiceMessages.DELETE_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.DELETE_FAILED, csid); } } @@ -396,17 +144,8 @@ public class AccountResource return deleteAccountRole(accCsid, input); } } - if (logger.isDebugEnabled()) { - logger.debug("createAccountRole with accCsid=" + accCsid); - } - if (accCsid == null || "".equals(accCsid)) { - logger.error("createAccountRole: missing accCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.POST_FAILED + "accountroles account " - + ServiceMessages.MISSING_INVALID_CSID + accCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("createAccountRole with accCsid=" + accCsid); + ensureCSID(accCsid, ServiceMessages.POST_FAILED+ "accountroles account "); try { AccountRoleSubResource subResource = new AccountRoleSubResource(AccountRoleSubResource.ACCOUNT_ACCOUNTROLE_SERVICE); @@ -415,26 +154,8 @@ public class AccountResource path.path(accCsid + "/accountroles/" + accrolecsid); Response response = Response.created(path.build()).build(); return response; - } catch (BadRequestException bre) { - Response response = Response.status( - Response.Status.BAD_REQUEST).entity(ServiceMessages.POST_FAILED - + bre.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.POST_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in createAccountRole", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.POST_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); + } catch (Exception e) { + throw bigReThrow(e, ServiceMessages.POST_FAILED, accCsid); } } @@ -443,52 +164,18 @@ public class AccountResource public AccountRoleRel getAccountRole( @PathParam("csid") String accCsid, @PathParam("id") String accrolecsid) { - if (logger.isDebugEnabled()) { - logger.debug("getAccountRole with accCsid=" + accCsid); - } - if (accCsid == null || "".equals(accCsid)) { - logger.error("getAccountRole: missing accCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.GET_FAILED + "accountroles account " - + ServiceMessages.MISSING_INVALID_CSID + accCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("getAccountRole with accCsid=" + accCsid); + ensureCSID(accCsid, ServiceMessages.GET_FAILED+ "accountroles account "); AccountRoleRel result = null; try { AccountRoleSubResource subResource = new AccountRoleSubResource(AccountRoleSubResource.ACCOUNT_ACCOUNTROLE_SERVICE); //get relationships for an account result = subResource.getAccountRoleRel(accCsid, SubjectType.ROLE, accrolecsid); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.GET_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getAccountRole", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "account csid=" + accrolecsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getAccountRole", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.GET_FAILED + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "account csid=" + accCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); + } catch (Exception e) { + throw bigReThrow(e, ServiceMessages.GET_FAILED, accCsid); } + checkResult(result, accCsid, ServiceMessages.GET_FAILED); return result; } @@ -496,192 +183,64 @@ public class AccountResource @Path("{csid}/accountroles") public AccountRole getAccountRole( @PathParam("csid") String accCsid) { - if (logger.isDebugEnabled()) { - logger.debug("getAccountRole with accCsid=" + accCsid); - } - if (accCsid == null || "".equals(accCsid)) { - logger.error("getAccountRole: missing accCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.GET_FAILED + "accountroles account " - + ServiceMessages.MISSING_INVALID_CSID + accCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("getAccountRole with accCsid=" + accCsid); + ensureCSID(accCsid, ServiceMessages.GET_FAILED+ "accountroles account "); AccountRole result = null; try { AccountRoleSubResource subResource = new AccountRoleSubResource(AccountRoleSubResource.ACCOUNT_ACCOUNTROLE_SERVICE); //get relationships for an account result = subResource.getAccountRole(accCsid, SubjectType.ROLE); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.GET_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getAccountRole", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "account csid=" + accCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getAccountRole", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.GET_FAILED + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "account csid=" + accCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.GET_FAILED, accCsid); } + checkResult(result, accCsid, ServiceMessages.GET_FAILED); return result; } @GET @Path("{csid}/accountperms") - public AccountPermission getAccountPerm( - @PathParam("csid") String accCsid) { - - if (logger.isDebugEnabled()) { - logger.debug("getAccountPerm with accCsid=" + accCsid); - } - if (accCsid == null || "".equals(accCsid)) { - logger.error("getAccountPerm: missing accCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.GET_FAILED + "getAccountPerm account " - + ServiceMessages.MISSING_INVALID_CSID + accCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - + public AccountPermission getAccountPerm(@PathParam("csid") String accCsid) { + logger.debug("getAccountPerm with accCsid=" + accCsid); + ensureCSID(accCsid, ServiceMessages.GET_FAILED+ "getAccountPerm account "); AccountPermission result = null; String userId = "undefined"; try { result = JpaStorageUtils.getAccountPermissions(accCsid); - } catch (UnauthorizedException ue) { - Response response = Response.status(Response.Status.UNAUTHORIZED).entity(ServiceMessages.GET_FAILED + - ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getAccountPerm", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity(ServiceMessages.GET_FAILED + - "account userId=" + userId).type("text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getAccountPerm", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.GET_FAILED + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "account userId=" + userId).type( - "text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.GET_FAILED, accCsid); } + checkResult(result, accCsid, ServiceMessages.GET_FAILED); return result; } - /** - * Delete account role. - * - * @param accCsid the acc csid - * @param input the input - * @return the response - */ public Response deleteAccountRole(String accCsid, AccountRole input) { - if (logger.isDebugEnabled()) { - logger.debug("deleteAccountRole with accCsid=" + accCsid); - } - if (accCsid == null || "".equals(accCsid)) { - logger.error("deleteAccountRole: missing accCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.DELETE_FAILED + "accountroles account " - + ServiceMessages.MISSING_INVALID_CSID + accCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("deleteAccountRole with accCsid=" + accCsid); + ensureCSID(accCsid, ServiceMessages.DELETE_FAILED+ "accountroles account "); try { AccountRoleSubResource subResource = new AccountRoleSubResource(AccountRoleSubResource.ACCOUNT_ACCOUNTROLE_SERVICE); //delete all relationships for an account subResource.deleteAccountRole(accCsid, SubjectType.ROLE, input); return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.DELETE_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deleteAccountRole", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.DELETE_FAILED + "account csid=" + accCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.DELETE_FAILED + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.DELETE_FAILED, accCsid); } } @DELETE @Path("{csid}/accountroles") - public Response deleteAccountRole( - @PathParam("csid") String accCsid) { - if (logger.isDebugEnabled()) { - logger.debug("deleteAccountRole: All roles related to account with accCsid=" + accCsid); - } - if (accCsid == null || "".equals(accCsid)) { - logger.error("deleteAccountRole: missing accCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.DELETE_FAILED + "accountroles account " - + ServiceMessages.MISSING_INVALID_CSID + accCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + public Response deleteAccountRole(@PathParam("csid") String accCsid) { + logger.debug("deleteAccountRole: All roles related to account with accCsid=" + accCsid); + ensureCSID(accCsid, ServiceMessages.DELETE_FAILED+ "accountroles account "); try { AccountRoleSubResource subResource = new AccountRoleSubResource(AccountRoleSubResource.ACCOUNT_ACCOUNTROLE_SERVICE); //delete all relationships for an account subResource.deleteAccountRole(accCsid, SubjectType.ROLE); return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.DELETE_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deleteAccountRole", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.DELETE_FAILED + "account csid=" + accCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.DELETE_FAILED + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.DELETE_FAILED, accCsid); } } diff --git a/services/authorization-mgt/client/src/main/java/org/collectionspace/services/client/RoleClient.java b/services/authorization-mgt/client/src/main/java/org/collectionspace/services/client/RoleClient.java index a52723741..544d173a3 100644 --- a/services/authorization-mgt/client/src/main/java/org/collectionspace/services/client/RoleClient.java +++ b/services/authorization-mgt/client/src/main/java/org/collectionspace/services/client/RoleClient.java @@ -57,10 +57,6 @@ public class RoleClient extends AbstractServiceClientImpl return SERVICE_PATH_COMPONENT; } - /** - * @return - * @see org.collectionspace.hello.client.RoleProxy#readList() - */ public ClientResponse readList() { return getProxy().readList(); @@ -71,11 +67,6 @@ public class RoleClient extends AbstractServiceClientImpl } - /** - * @param csid - * @return - * @see org.collectionspace.hello.client.RoleProxy#getAccount(java.lang.String) - */ public ClientResponse read(String csid) { return getProxy().read(csid); } @@ -94,7 +85,6 @@ public class RoleClient extends AbstractServiceClientImpl * @param csid * @param role * @return - * @see org.collectionspace.hello.client.RoleProxy#updateAccount(java.lang.Long, org.collectionspace.services.role.Role) */ public ClientResponse update(String csid, Role role) { return getProxy().update(csid, role); diff --git a/services/authorization-mgt/service/pom.xml b/services/authorization-mgt/service/pom.xml index 5b1ce87ba..0edeca7a0 100644 --- a/services/authorization-mgt/service/pom.xml +++ b/services/authorization-mgt/service/pom.xml @@ -21,6 +21,12 @@ + + org.collectionspace.services + org.collectionspace.services.authorization-mgt.client + ${project.version} + provided + diff --git a/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/PermissionResource.java b/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/PermissionResource.java index 61e200837..41701453e 100644 --- a/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/PermissionResource.java +++ b/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/PermissionResource.java @@ -23,332 +23,95 @@ */ package org.collectionspace.services.authorization; +import org.collectionspace.services.authorization.storage.AuthorizationDelegate; +import org.collectionspace.services.client.PermissionClient; +import org.collectionspace.services.common.SecurityResourceBase; +import org.collectionspace.services.common.ServiceMessages; +import org.collectionspace.services.common.context.RemoteServiceContextFactory; +import org.collectionspace.services.common.context.ServiceContext; +import org.collectionspace.services.common.context.ServiceContextFactory; +import org.collectionspace.services.common.storage.StorageClient; +import org.collectionspace.services.common.storage.jpa.JpaStorageClientImpl; +import org.jboss.resteasy.util.HttpResponseCodes; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + 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.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; +import javax.ws.rs.Path; import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Context; -import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriInfo; -import org.collectionspace.services.authorization.storage.PermissionRoleDocumentHandler; -import org.collectionspace.services.authorization.storage.AuthorizationDelegate; - -import org.collectionspace.services.common.storage.StorageClient; -import org.collectionspace.services.common.storage.jpa.JpaStorageClientImpl; -import org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl; -import org.collectionspace.services.common.ServiceMessages; -import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.common.context.RemoteServiceContextFactory; -import org.collectionspace.services.common.context.ServiceContextFactory; -import org.collectionspace.services.common.document.BadRequestException; -import org.collectionspace.services.common.document.DocumentFilter; -import org.collectionspace.services.common.document.DocumentNotFoundException; -import org.collectionspace.services.common.document.DocumentHandler; -import org.collectionspace.services.common.security.UnauthorizedException; - -import org.jboss.resteasy.util.HttpResponseCodes; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The Class PermissionResource. - */ -@Path("/authorization/permissions") +@Path(PermissionClient.SERVICE_PATH) @Consumes("application/xml") @Produces("application/xml") -public class PermissionResource - extends AbstractCollectionSpaceResourceImpl { +public class PermissionResource extends SecurityResourceBase { - /** The service name. */ - final private String serviceName = "authorization/permissions"; - /** The logger. */ final Logger logger = LoggerFactory.getLogger(PermissionResource.class); - /** The storage client. */ final StorageClient storageClient = new JpaStorageClientImpl(); - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getVersionString() - */ @Override protected String getVersionString() { - /** The last change revision. */ - final String lastChangeRevision = "$LastChangedRevision: 1165 $"; - return lastChangeRevision; + return "$LastChangedRevision: 1165 $"; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { - return serviceName; + return PermissionClient.SERVICE_NAME; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getCommonPartClass() - */ @Override public Class getCommonPartClass() { return Permission.class; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getServiceContextFactory() - */ @Override public ServiceContextFactory getServiceContextFactory() { return RemoteServiceContextFactory.get(); } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getStorageClient(org.collectionspace.services.common.context.ServiceContext) - */ @Override public StorageClient getStorageClient(ServiceContext ctx) { //FIXME use ctx to identify storage client return storageClient; } -// @Override -// public DocumentHandler createDocumentHandler(ServiceContext ctx) throws Exception { -// DocumentHandler docHandler = ctx.getDocumentHandler(); -// docHandler.setCommonPart(ctx.getInput()); -// return docHandler; -// } - /** - * Creates the permission. - * - * @param input the input - * - * @return the response - */ @POST public Response createPermission(Permission input) { - try { - ServiceContext ctx = createServiceContext(input, Permission.class); - DocumentHandler handler = createDocumentHandler(ctx); - String csid = getStorageClient(ctx).create(ctx, handler); - UriBuilder path = UriBuilder.fromResource(PermissionResource.class); - path.path("" + csid); - Response response = Response.created(path.build()).build(); - return response; - } catch (BadRequestException bre) { - Response response = Response.status( - Response.Status.BAD_REQUEST).entity(ServiceMessages.POST_FAILED - + bre.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.POST_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in createPermission", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.POST_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } + return create(input); } - /** - * Gets the permission. - * - * @param csid the csid - * - * @return the permission - */ @GET @Path("{csid}") - public Permission getPermission( - @PathParam("csid") String csid) { - if (logger.isDebugEnabled()) { - logger.debug("getPermission with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("getPermission: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.GET_FAILED + "permission " - + ServiceMessages.MISSING_INVALID_CSID + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - Permission result = null; - try { - ServiceContext ctx = createServiceContext((Permission) null, Permission.class); - DocumentHandler handler = createDocumentHandler(ctx); - getStorageClient(ctx).get(ctx, csid, handler); - result = (Permission) ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.GET_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getPermission", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "permission csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getPermission", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.GET_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + " permission csid=" + csid + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); - } - return result; + public Permission getPermission(@PathParam("csid") String csid) { + return (Permission)get(csid, Permission.class); } - /** - * Gets the permission list. - * - * @param ui the ui - * - * @return the permission list - */ @GET @Produces("application/xml") - public PermissionsList getPermissionList( - @Context UriInfo ui) { - PermissionsList permissionList = new PermissionsList(); - try { - ServiceContext ctx = createServiceContext((Permission) null, Permission.class); - DocumentHandler handler = createDocumentHandler(ctx); - MultivaluedMap queryParams = ui.getQueryParameters(); - DocumentFilter myFilter = handler.createDocumentFilter(); - myFilter.setPagination(queryParams); - myFilter.setQueryParams(queryParams); - handler.setDocumentFilter(myFilter); - getStorageClient(ctx).getFiltered(ctx, handler); - permissionList = (PermissionsList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.LIST_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getPermissionsList", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.LIST_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - return permissionList; + public PermissionsList getPermissionList(@Context UriInfo ui) { + return (PermissionsList)getList(ui, Permission.class); } - /** - * Update permission. - * - * @param csid the csid - * @param theUpdate the the update - * - * @return the permission - */ @PUT @Path("{csid}") - public Permission updatePermission( - @PathParam("csid") String csid, - Permission theUpdate) { - if (logger.isDebugEnabled()) { - logger.debug("updatePermission with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("updatePermission: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.PUT_FAILED + "permission " - + ServiceMessages.MISSING_INVALID_CSID + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - Permission result = null; - try { - ServiceContext ctx = createServiceContext(theUpdate, Permission.class); - DocumentHandler handler = createDocumentHandler(ctx); - getStorageClient(ctx).update(ctx, csid, handler); - result = (Permission) ctx.getOutput(); - } catch (BadRequestException bre) { - Response response = Response.status( - Response.Status.BAD_REQUEST).entity(ServiceMessages.PUT_FAILED - + bre.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.PUT_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caugth exception in updatePermission", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.PUT_FAILED + "permission csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.PUT_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - return result; + public Permission updatePermission(@PathParam("csid") String csid,Permission theUpdate) { + return (Permission)update(csid, theUpdate, Permission.class); } - /** - * Delete permission. - * - * @param csid the csid - * - * @return the response - */ @DELETE @Path("{csid}") public Response deletePermission(@PathParam("csid") String csid) { - - if (logger.isDebugEnabled()) { - logger.debug("deletePermission with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("deletePermission: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.DELETE_FAILED + "permission " - + ServiceMessages.MISSING_INVALID_CSID + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("deletePermission with csid=" + csid); + ensureCSID(csid, ServiceMessages.DELETE_FAILED + "permission "); try { //FIXME ideally the following two ops should be in the same tx CSPACE-658 //delete all relationships for this permission @@ -365,29 +128,9 @@ public class PermissionResource ServiceContext ctx = createServiceContext((Permission) null, Permission.class); getStorageClient(ctx).delete(ctx, csid); return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.DELETE_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deletePermission", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.DELETE_FAILED + "permission csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.DELETE_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.DELETE_FAILED, csid); } - } @POST @@ -400,17 +143,8 @@ public class PermissionResource return deletePermissionRole(permCsid, input); } } - if (logger.isDebugEnabled()) { - logger.debug("createPermissionRole with permCsid=" + permCsid); - } - if (permCsid == null || "".equals(permCsid)) { - logger.error("createPermissionRole: missing permCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.POST_FAILED + "permroles permission " - + ServiceMessages.MISSING_INVALID_CSID + permCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("createPermissionRole with permCsid=" + permCsid); + ensureCSID(permCsid, ServiceMessages.POST_FAILED + "permroles permission "); try { PermissionRoleSubResource subResource = new PermissionRoleSubResource(PermissionRoleSubResource.PERMISSION_PERMROLE_SERVICE); @@ -419,26 +153,8 @@ public class PermissionResource path.path(permCsid + "/permroles/" + permrolecsid); Response response = Response.created(path.build()).build(); return response; - } catch (BadRequestException bre) { - Response response = Response.status( - Response.Status.BAD_REQUEST).entity("Create failed reason " - + bre.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Create failed reason " - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in createPermissionRole", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.POST_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.POST_FAILED, permCsid); } } @@ -447,54 +163,18 @@ public class PermissionResource public PermissionRoleRel getPermissionRole( @PathParam("csid") String permCsid, @PathParam("id") String permrolecsid) { - if (logger.isDebugEnabled()) { - logger.debug("getPermissionRole with permCsid=" + permCsid); - } - if (permCsid == null || "".equals(permCsid)) { - logger.error("getPermissionRole: missing permCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.GET_FAILED + "permroles permission " - + ServiceMessages.MISSING_INVALID_CSID + permCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("getPermissionRole with permCsid=" + permCsid); + ensureCSID(permCsid, ServiceMessages.GET_FAILED + "permroles permission "); PermissionRoleRel result = null; try { PermissionRoleSubResource subResource = new PermissionRoleSubResource(PermissionRoleSubResource.PERMISSION_PERMROLE_SERVICE); //get relationships for a permission result = subResource.getPermissionRoleRel(permCsid, SubjectType.ROLE, permrolecsid); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.GET_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getPermissionRole", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "permroles permission csid=" + permCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getPermissionRole", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.GET_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "permroles permisison csid=" + permCsid - + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.GET_FAILED, permCsid); } + checkResult(result, permCsid, ServiceMessages.GET_FAILED); return result; } @@ -502,153 +182,49 @@ public class PermissionResource @Path("{csid}/permroles") public PermissionRole getPermissionRole( @PathParam("csid") String permCsid) { - if (logger.isDebugEnabled()) { - logger.debug("getPermissionRole with permCsid=" + permCsid); - } - if (permCsid == null || "".equals(permCsid)) { - logger.error("getPermissionRole: missing permCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.GET_FAILED + "permroles permission " - + ServiceMessages.MISSING_INVALID_CSID + permCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("getPermissionRole with permCsid=" + permCsid); + ensureCSID(permCsid, ServiceMessages.GET_FAILED + "permroles permission "); PermissionRole result = null; try { PermissionRoleSubResource subResource = new PermissionRoleSubResource(PermissionRoleSubResource.PERMISSION_PERMROLE_SERVICE); //get relationships for a permission result = subResource.getPermissionRole(permCsid, SubjectType.ROLE); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.GET_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getPermissionRole", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "permroles permission csid=" + permCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getPermissionRole", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.GET_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "permroles permisison csid=" + permCsid - + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.GET_FAILED, permCsid); } + checkResult(result, permCsid, ServiceMessages.GET_FAILED); return result; } - /** - * Delete permission role. - * - * @param permCsid the perm csid - * @param input the input - * @return the response - */ public Response deletePermissionRole(String permCsid, PermissionRole input) { - if (logger.isDebugEnabled()) { - logger.debug("Delete payload of permrole relationships with permission permCsid=" + permCsid); - } - if (permCsid == null || "".equals(permCsid)) { - logger.error("deletePermissionRole: missing permCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.DELETE_FAILED + "permroles permission " - + ServiceMessages.MISSING_INVALID_CSID + permCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("Delete payload of permrole relationships with permission permCsid=" + permCsid); + ensureCSID(permCsid, ServiceMessages.DELETE_FAILED + "permroles permission "); try { PermissionRoleSubResource subResource = new PermissionRoleSubResource(PermissionRoleSubResource.PERMISSION_PERMROLE_SERVICE); //delete all relationships for a permission subResource.deletePermissionRole(permCsid, SubjectType.ROLE, input); return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.DELETE_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deletePermissionRole", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.DELETE_FAILED + "permisison csid=" + permCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.DELETE_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.DELETE_FAILED, permCsid); } - } - /** - * Delete permission role. - * - * @param permCsid the perm csid - * @return the response - */ @DELETE @Path("{csid}/permroles") public Response deletePermissionRole( @PathParam("csid") String permCsid) { - if (logger.isDebugEnabled()) { - logger.debug("Delete all the role relationships of the permissions with permCsid=" + permCsid); - } - if (permCsid == null || "".equals(permCsid)) { - logger.error("deletePermissionRole: missing permCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.DELETE_FAILED + "permroles permission " - + ServiceMessages.MISSING_INVALID_CSID + permCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("Delete all the role relationships of the permissions with permCsid=" + permCsid); + ensureCSID(permCsid, ServiceMessages.DELETE_FAILED + "permroles permission "); try { PermissionRoleSubResource subResource = new PermissionRoleSubResource(PermissionRoleSubResource.PERMISSION_PERMROLE_SERVICE); //delete all relationships for a permission subResource.deletePermissionRole(permCsid, SubjectType.ROLE); return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.DELETE_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deletePermissionRole", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.DELETE_FAILED + "permisison csid=" + permCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.DELETE_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.DELETE_FAILED, permCsid); } } diff --git a/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/RoleResource.java b/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/RoleResource.java index 03dcd0638..fbfaac52a 100644 --- a/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/RoleResource.java +++ b/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/RoleResource.java @@ -23,343 +23,96 @@ */ package org.collectionspace.services.authorization; +import org.collectionspace.services.account.AccountRoleSubResource; +import org.collectionspace.services.client.RoleClient; +import org.collectionspace.services.common.SecurityResourceBase; +import org.collectionspace.services.common.ServiceMessages; +import org.collectionspace.services.common.context.RemoteServiceContextFactory; +import org.collectionspace.services.common.context.ServiceContext; +import org.collectionspace.services.common.context.ServiceContextFactory; +import org.collectionspace.services.common.storage.StorageClient; +import org.collectionspace.services.common.storage.jpa.JpaStorageClientImpl; +import org.jboss.resteasy.util.HttpResponseCodes; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + 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.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; +import javax.ws.rs.Path; import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Context; -import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriInfo; -import org.collectionspace.services.account.AccountRoleSubResource; -import org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl; -//import org.collectionspace.services.common.context.RemoteServiceContextImpl; -import org.collectionspace.services.common.ServiceMessages; -import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.common.context.ServiceContextFactory; -import org.collectionspace.services.common.context.RemoteServiceContextFactory; -import org.collectionspace.services.common.document.BadRequestException; -import org.collectionspace.services.common.document.DocumentException; -import org.collectionspace.services.common.document.DocumentFilter; -import org.collectionspace.services.common.document.DocumentNotFoundException; -import org.collectionspace.services.common.document.DocumentHandler; -import org.collectionspace.services.common.security.UnauthorizedException; -import org.collectionspace.services.common.storage.StorageClient; -import org.collectionspace.services.common.storage.jpa.JpaStorageClientImpl; -import org.jboss.resteasy.util.HttpResponseCodes; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -// TODO: Auto-generated Javadoc -/** - * The Class RoleResource. - */ -@Path("/authorization/roles") //FIXME: REM - Replace string constant with RoleClient.SERVICE_PATH +@Path(RoleClient.SERVICE_PATH) @Consumes("application/xml") @Produces("application/xml") -public class RoleResource - extends AbstractCollectionSpaceResourceImpl { +public class RoleResource extends SecurityResourceBase { - /** The service name. */ - final private String serviceName = "authorization/roles"; - /** The logger. */ final Logger logger = LoggerFactory.getLogger(RoleResource.class); - /** The storage client. */ final StorageClient storageClient = new JpaStorageClientImpl(); - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getVersionString() - */ @Override protected String getVersionString() { - /** The last change revision. */ - final String lastChangeRevision = "$LastChangedRevision: 1165 $"; - return lastChangeRevision; + return "$LastChangedRevision: 1165 $"; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { - return serviceName; + return RoleClient.SERVICE_NAME; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getCommonPartClass() - */ @Override public Class getCommonPartClass() { return RoleResource.class; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getServiceContextFactory() - */ @Override public ServiceContextFactory getServiceContextFactory() { return RemoteServiceContextFactory.get(); } -// private ServiceContext createServiceContext(T obj) throws Exception { -// ServiceContext ctx = new RemoteServiceContextImpl(getServiceName()); -// ctx.setInput(obj); -// ctx.setDocumentType(Role.class.getPackage().getName()); //persistence unit -// ctx.setProperty("entity-name", Role.class.getName()); -// return ctx; -// } - - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getStorageClient(org.collectionspace.services.common.context.ServiceContext) - */ @Override public StorageClient getStorageClient(ServiceContext ctx) { //FIXME use ctx to identify storage client return storageClient; } -// @Override -// public DocumentHandler createDocumentHandler(ServiceContext ctx) throws Exception { -// DocumentHandler docHandler = ctx.getDocumentHandler(); -// docHandler.setCommonPart(ctx.getInput()); -// return docHandler; -// } - /** - * Creates the role. - * - * @param input the input - * - * @return the response - */ @POST public Response createRole(Role input) { - Response response = null; - - try { - ServiceContext ctx = createServiceContext(input, Role.class); - DocumentHandler handler = createDocumentHandler(ctx); - String csid = getStorageClient(ctx).create(ctx, handler); - UriBuilder path = UriBuilder.fromResource(RoleResource.class); - path.path("" + csid); - response = Response.created(path.build()).build(); - } catch (BadRequestException bre) { - response = Response.status( - Response.Status.BAD_REQUEST).entity(ServiceMessages.POST_FAILED - + bre.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentException bre) { - response = Response.status( - Response.Status.BAD_REQUEST).entity(ServiceMessages.POST_FAILED - + bre.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (UnauthorizedException ue) { - response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.POST_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught a general exception in RoleResource:createRole post: ", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity(ServiceMessages.POST_FAILED - + e.getMessage()).type("text/plain").build(); - throw new WebApplicationException(e, response); - } - - return response; + return create(input); } - /** - * Gets the role. - * - * @param csid the csid - * - * @return the role - */ @GET @Path("{csid}") - public Role getRole( - @PathParam("csid") String csid) { - if (logger.isDebugEnabled()) { - logger.debug("getRole with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("getRole: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.GET_FAILED + "role csid=").type( - "text/plain").build(); - throw new WebApplicationException(response); - } - Role result = null; - try { - ServiceContext ctx = createServiceContext((Role) null, Role.class); - DocumentHandler handler = createDocumentHandler(ctx); - getStorageClient(ctx).get(ctx, csid, handler); - result = (Role) ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.GET_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getRole", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "role csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getRole", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity(ServiceMessages.GET_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "role csid=" + csid + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); - } - return result; + public Role getRole(@PathParam("csid") String csid) { + return (Role)get(csid, Role.class); } - /** - * Gets the role list. - * - * @param ui the ui - * - * @return the role list - */ @GET @Produces("application/xml") - public RolesList getRoleList( - @Context UriInfo ui) { - RolesList roleList = new RolesList(); - try { - ServiceContext ctx = createServiceContext((Role) null, Role.class); - DocumentHandler handler = createDocumentHandler(ctx); - MultivaluedMap queryParams = ui.getQueryParameters(); - DocumentFilter myFilter = handler.createDocumentFilter(); - myFilter.setPagination(queryParams); - myFilter.setQueryParams(queryParams); - handler.setDocumentFilter(myFilter); - getStorageClient(ctx).getFiltered(ctx, handler); - roleList = (RolesList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.LIST_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getRoleList", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity(ServiceMessages.LIST_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - return roleList; + public RolesList getRoleList(@Context UriInfo ui) { + return (RolesList)getList(ui, Role.class); } - /** - * Update role. - * - * @param csid the csid - * @param theUpdate the the update - * - * @return the role - */ @PUT @Path("{csid}") - public Role updateRole( - @PathParam("csid") String csid, - Role theUpdate) { - if (logger.isDebugEnabled()) { - logger.debug("updateRole with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("updateRole: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.PUT_FAILED + "role " - + ServiceMessages.MISSING_INVALID_CSID + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - Role result = null; - try { - ServiceContext ctx = createServiceContext(theUpdate, Role.class); - DocumentHandler handler = createDocumentHandler(ctx); - getStorageClient(ctx).update(ctx, csid, handler); - result = (Role) ctx.getOutput(); - } catch (BadRequestException bre) { - Response response = Response.status( - Response.Status.BAD_REQUEST).entity(ServiceMessages.PUT_FAILED - + bre.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.PUT_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caugth exception in updateRole", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.PUT_FAILED + "role csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.PUT_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - return result; + public Role updateRole(@PathParam("csid") String csid, Role theUpdate) { + return (Role)update(csid, theUpdate, Role.class); } - /** - * Delete role. - * - * @param csid the csid - * - * @return the response - */ @DELETE @Path("{csid}") public Response deleteRole(@PathParam("csid") String csid) { + logger.debug("deleteRole with csid=" + csid); + ensureCSID(csid, ServiceMessages.DELETE_FAILED + "deleteRole "); - if (logger.isDebugEnabled()) { - logger.debug("deleteRole with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("deleteRole: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.DELETE_FAILED + "role csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } try { //FIXME ideally the following three operations should be in the same tx CSPACE-658 //delete all relationships for this permission @@ -374,37 +127,11 @@ public class RoleResource ServiceContext ctx = createServiceContext((Role) null, Role.class); ((JpaStorageClientImpl) getStorageClient(ctx)).deleteWhere(ctx, csid); return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.DELETE_FAILED + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deleteRole", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.DELETE_FAILED + "role csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.DELETE_FAILED + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.DELETE_FAILED, csid); } - } - /** - * Creates the role permission. - * - * @param method the method - * @param roleCsid the role csid - * @param input the input - * @return the response - */ @POST @Path("{csid}/permroles") public Response createRolePermission(@QueryParam("_method") String method, @PathParam("csid") String roleCsid, @@ -414,17 +141,8 @@ public class RoleResource return deleteRolePermission(roleCsid, input); } } - if (logger.isDebugEnabled()) { - logger.debug("createRolePermission with roleCsid=" + roleCsid); - } - if (roleCsid == null || "".equals(roleCsid)) { - logger.error("createRolePermission: missing roleCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.POST_FAILED + "permroles role " - + ServiceMessages.MISSING_INVALID_CSID + roleCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("createRolePermission with roleCsid=" + roleCsid); + ensureCSID(roleCsid, ServiceMessages.PUT_FAILED + "permroles role "); try { PermissionRoleSubResource subResource = new PermissionRoleSubResource(PermissionRoleSubResource.ROLE_PERMROLE_SERVICE); @@ -433,88 +151,27 @@ public class RoleResource path.path(roleCsid + "/permroles/" + permrolecsid); Response response = Response.created(path.build()).build(); return response; - } catch (BadRequestException bre) { - Response response = Response.status( - Response.Status.BAD_REQUEST).entity("Create failed reason " - + bre.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Create failed reason " - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in createRolePermission", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.POST_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.DELETE_FAILED, roleCsid); } } - /** - * Gets the role permission. - * - * @param roleCsid the role csid - * @param permrolecsid the permrolecsid - * @return the role permission - */ @GET @Path("{csid}/permroles") public PermissionRole getRolePermission( @PathParam("csid") String roleCsid) { - if (logger.isDebugEnabled()) { - logger.debug("getRolePermission with roleCsid=" + roleCsid); - } - if (roleCsid == null || "".equals(roleCsid)) { - logger.error("getRolePermission: missing roleCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.GET_FAILED + "permroles role " - + ServiceMessages.MISSING_INVALID_CSID + roleCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("getRolePermission with roleCsid=" + roleCsid); + ensureCSID(roleCsid, ServiceMessages.GET_FAILED + "permroles role "); PermissionRole result = null; try { PermissionRoleSubResource subResource = new PermissionRoleSubResource(PermissionRoleSubResource.ROLE_PERMROLE_SERVICE); //get relationships for a role result = subResource.getPermissionRole(roleCsid, SubjectType.PERMISSION); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.GET_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getRolePermission", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "permroles role csid=" + roleCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getRolePermission", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.GET_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "permroles role csid=" + roleCsid - + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.GET_FAILED, roleCsid); } + checkResult(result, roleCsid, ServiceMessages.GET_FAILED); return result; } @@ -523,157 +180,49 @@ public class RoleResource public PermissionRoleRel getRolePermission( @PathParam("csid") String roleCsid, @PathParam("id") String permrolecsid) { - if (logger.isDebugEnabled()) { - logger.debug("getRolePermission with roleCsid=" + roleCsid); - } - if (roleCsid == null || "".equals(roleCsid)) { - logger.error("getRolePermission: missing roleCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.GET_FAILED + "permroles role " - + ServiceMessages.MISSING_INVALID_CSID + roleCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("getRolePermission with roleCsid=" + roleCsid); + ensureCSID(roleCsid, ServiceMessages.GET_FAILED + "permroles role "); PermissionRoleRel result = null; try { PermissionRoleSubResource subResource = new PermissionRoleSubResource(PermissionRoleSubResource.ROLE_PERMROLE_SERVICE); //get relationships for a role result = subResource.getPermissionRoleRel(roleCsid, SubjectType.PERMISSION, permrolecsid); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.GET_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getRolePermission", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "permroles role csid=" + roleCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getRolePermission", e); - } - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.GET_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.GET_FAILED + "permroles role csid=" + roleCsid - + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.GET_FAILED, roleCsid); } + checkResult(result, roleCsid, ServiceMessages.GET_FAILED); return result; } - /** - * Delete role permission. - * - * @param roleCsid the role csid - * @param input the input - * @return the response - */ public Response deleteRolePermission(String roleCsid, PermissionRole input) { - - if (logger.isDebugEnabled()) { - logger.debug("deleteRolePermission with roleCsid=" + roleCsid); - } - - if (roleCsid == null || "".equals(roleCsid)) { - logger.error("deleteRolePermission: missing roleCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.DELETE_FAILED + "permroles role " - + ServiceMessages.MISSING_INVALID_CSID + roleCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("deleteRolePermission with roleCsid=" + roleCsid); + ensureCSID(roleCsid, ServiceMessages.DELETE_FAILED + "permroles role "); try { PermissionRoleSubResource subResource = new PermissionRoleSubResource(PermissionRoleSubResource.ROLE_PERMROLE_SERVICE); //delete all relationships for a permission subResource.deletePermissionRole(roleCsid, SubjectType.PERMISSION, input); return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.DELETE_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deleteRolePermission", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.DELETE_FAILED + "role csid=" + roleCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.DELETE_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.DELETE_FAILED, roleCsid); } - } - /** - * Delete role permission. - * - * @param roleCsid the role csid - * @return the response - */ @DELETE @Path("{csid}/permroles") public Response deleteRolePermission( @PathParam("csid") String roleCsid) { - if (logger.isDebugEnabled()) { - logger.debug("deleteRolePermission with roleCsid=" + roleCsid); - } - - if (roleCsid == null || "".equals(roleCsid)) { - logger.error("deleteRolePermission: missing roleCsid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.DELETE_FAILED + "permroles role " - + ServiceMessages.MISSING_INVALID_CSID + roleCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } + logger.debug("deleteRolePermission with roleCsid=" + roleCsid); + ensureCSID(roleCsid, ServiceMessages.DELETE_FAILED + "permroles role "); try { PermissionRoleSubResource subResource = new PermissionRoleSubResource(PermissionRoleSubResource.ROLE_PERMROLE_SERVICE); //delete all relationships for a permission subResource.deletePermissionRole(roleCsid, SubjectType.PERMISSION); return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity(ServiceMessages.DELETE_FAILED - + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deleteRolePermission", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.DELETE_FAILED + "role csid=" + roleCsid).type( - "text/plain").build(); - throw new WebApplicationException(response); } catch (Exception e) { - logger.error(ServiceMessages.UNKNOWN_ERROR_MSG, e); - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.DELETE_FAILED - + ServiceMessages.UNKNOWN_ERROR_MSG).type("text/plain").build(); - throw new WebApplicationException(response); + throw bigReThrow(e, ServiceMessages.DELETE_FAILED, roleCsid); } - } } diff --git a/services/blob/service/src/main/java/org/collectionspace/services/blob/BlobResource.java b/services/blob/service/src/main/java/org/collectionspace/services/blob/BlobResource.java index 014cf9755..059076801 100644 --- a/services/blob/service/src/main/java/org/collectionspace/services/blob/BlobResource.java +++ b/services/blob/service/src/main/java/org/collectionspace/services/blob/BlobResource.java @@ -23,38 +23,19 @@ */ package org.collectionspace.services.blob; -import java.util.Map; -import java.util.UUID; - import org.collectionspace.services.client.BlobClient; import org.collectionspace.services.client.PoxPayloadIn; import org.collectionspace.services.client.PoxPayloadOut; import org.collectionspace.services.common.FileUtils; import org.collectionspace.services.common.ResourceBase; -//import org.collectionspace.services.common.ClientType; -import org.collectionspace.services.common.ServiceMain; import org.collectionspace.services.common.ServiceMessages; import org.collectionspace.services.common.blob.BlobInput; import org.collectionspace.services.common.blob.BlobUtil; import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.common.document.DocumentHandler; -import org.collectionspace.services.blob.nuxeo.BlobDocumentModelHandler; //FIXEME: A resource class should not have a dependency on a specific DocumentHandler -import org.collectionspace.services.blob.BlobsCommon; -//import org.collectionspace.services.blob.BlobsCommonList; -import org.collectionspace.services.jaxb.AbstractCommonList; import org.collectionspace.services.nuxeo.client.java.CommonList; -import javax.xml.parsers.ParserConfigurationException; - import org.jboss.resteasy.plugins.providers.multipart.InputPart; -import org.jboss.resteasy.plugins.providers.multipart.MultipartInput; -import org.jboss.resteasy.plugins.providers.multipart.MultipartOutput; import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput; -//FIXME: REM - We should not have Nuxeo dependencies in our resource classes. -import org.collectionspace.services.common.imaging.nuxeo.NuxeoImageUtils; -import org.collectionspace.services.jaxb.AbstractCommonList; -import org.nuxeo.ecm.core.api.repository.RepositoryInstance; - import javax.servlet.http.HttpServletRequest; import javax.ws.rs.Consumes; import javax.ws.rs.GET; @@ -65,16 +46,16 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; import javax.ws.rs.core.Response.ResponseBuilder; -import javax.ws.rs.core.MediaType; - - -import java.io.File; +import javax.ws.rs.core.UriInfo; import java.io.InputStream; import java.util.List; +import java.util.Map; + +//FIXME: REM - We should not have Nuxeo dependencies in our resource classes. @Path(BlobClient.SERVICE_PATH) @Consumes("application/xml") diff --git a/services/client/src/main/java/org/collectionspace/services/client/AbstractServiceClientImpl.java b/services/client/src/main/java/org/collectionspace/services/client/AbstractServiceClientImpl.java index 15f958f8e..c397de27e 100644 --- a/services/client/src/main/java/org/collectionspace/services/client/AbstractServiceClientImpl.java +++ b/services/client/src/main/java/org/collectionspace/services/client/AbstractServiceClientImpl.java @@ -253,9 +253,7 @@ public abstract class AbstractServiceClientImpl getCommonPartClass() { return CollectionobjectsCommon.class; } - - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#createDocumentHandler(org.collectionspace.services.common.context.ServiceContext) - */ -// @Override -// public DocumentHandler createDocumentHandler(ServiceContext ctx) throws Exception { -// DocumentHandler docHandler = ctx.getDocumentHandler(); -// if (ctx.getInput() != null) { -// Object obj = ((MultipartServiceContext) ctx).getInputPart(ctx.getCommonPartLabel(), -// CollectionobjectsCommon.class); -// if (obj != null) { -// docHandler.setCommonPart((CollectionobjectsCommon) obj); -// } -// } -// return docHandler; -// } - /** - * Creates the collection object. - * - * @param input the input - * - * @return the response - */ - @POST - public Response createCollectionObject(@Context HttpServletRequest req, - String xmlPayload) { - try { - PoxPayloadIn input = new PoxPayloadIn(xmlPayload); - ServiceContext ctx = createServiceContext(input); - DocumentHandler handler = createDocumentHandler(ctx); - String csid = getRepositoryClient(ctx).create(ctx, handler); - UriBuilder path = UriBuilder.fromResource(CollectionObjectResource.class); - path.path("" + csid); - Response response = Response.created(path.build()).build(); - return response; - } catch (BadRequestException bre) { - Response response = Response.status( - Response.Status.BAD_REQUEST).entity("Create failed reason " + bre.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Create failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in createCollectionObject", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Create failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - } - - /** - * Gets the collection object. - * - * @param csid the csid - * - * @return the collection object - */ - @GET - @Path("{csid}") - public byte[] getCollectionObject( - @Context UriInfo ui, - @PathParam("csid") String csid) { - if (logger.isDebugEnabled()) { - logger.debug("getCollectionObject with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("getCollectionObject: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "get failed on CollectionObject csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).get(ctx, csid, handler); - result = ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Get failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getCollectionObject", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed on CollectionObject csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getCollectionObject", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Get failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed, the requested CollectionObject CSID:" + csid + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); - } - - return result.getBytes(); - } - - /** - * Gets the collection object list. - * - * @param ui the ui - * @param keywords the keywords - * - * @return the collection object list - */ - @GET - @Produces("application/xml") - public CollectionobjectsCommonList getCollectionObjectList(@Context UriInfo ui, - @QueryParam(IQueryManager.SEARCH_TYPE_KEYWORDS_KW) String keywords) { - Profiler profiler = new Profiler("getCollectionObjectList():", 1); - profiler.start(); - CollectionobjectsCommonList result = null; - MultivaluedMap queryParams = ui.getQueryParameters(); - if (keywords != null) { - result = searchCollectionObjects(queryParams, keywords); - } else { - result = getCollectionObjectList(queryParams); - } - profiler.stop(); - return result; - } - - /** - * Gets the collection object list. - */ - private CollectionobjectsCommonList getCollectionObjectList(MultivaluedMap queryParams) { - CollectionobjectsCommonList collectionObjectList; - Profiler profiler = new Profiler(this, 1); - profiler.start(); - - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).getFiltered(ctx, handler); - collectionObjectList = (CollectionobjectsCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getCollectionObjectList", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - - profiler.stop(); - return collectionObjectList; - } - - /** - * Update collection object. - * - * @param csid the csid - * @param xmlText an XML representation of the data to be used in the update - * - * @return an XML representation of the updated object - */ - @PUT - @Path("{csid}") - public String updateCollectionObject( - @PathParam("csid") String csid, - String xmlText) { - if (logger.isDebugEnabled()) { - logger.debug("updateCollectionObject with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("updateCollectionObject: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "update failed on CollectionObject csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - PoxPayloadIn update = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(update); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).update(ctx, csid, handler); - result = ctx.getOutput(); - } catch (BadRequestException bre) { - Response response = Response.status( - Response.Status.BAD_REQUEST).entity("Update failed reason " + bre.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Update failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in updateCollectionObject", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Update failed on CollectionObject 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 result.toXML(); - } - - /** - * Delete collection object. - * - * @param csid the csid - * - * @return the response - */ - @DELETE - @Path("{csid}") - public Response deleteCollectionObject(@PathParam("csid") String csid) { - - if (logger.isDebugEnabled()) { - logger.debug("deleteCollectionObject with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("deleteCollectionObject: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "delete failed on CollectionObject csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - try { - ServiceContext ctx = createServiceContext(); - getRepositoryClient(ctx).delete(ctx, csid); - return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Delete failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deleteCollectionObject", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Delete failed on CollectionObject 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); - } - - } - - // FIXME AR: should the method below be deprecated? /** * Gets the intakes common list. @@ -447,47 +135,7 @@ public class CollectionObjectResource return result; } - /** - * Gets the authority refs. - * - * @param csid the csid - * @param ui the ui - * - * @return the authority refs - */ - @GET - @Path("{csid}/authorityrefs") - @Produces("application/xml") - public AuthorityRefList getAuthorityRefs( - @PathParam("csid") String csid, - @Context UriInfo ui) { - AuthorityRefList authRefList = null; - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentWrapper docWrapper = - getRepositoryClient(ctx).getDoc(ctx, csid); - DocumentModelHandler docHandler = - (DocumentModelHandler)createDocumentHandler(ctx); - List authRefFields = - ((MultipartServiceContextImpl)ctx).getCommonPartPropertyValues( - ServiceBindingUtils.AUTH_REF_PROP, ServiceBindingUtils.QUALIFIED_PROP_NAMES); - authRefList = docHandler.getAuthorityRefs(docWrapper, authRefFields); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getAuthorityRefs", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return authRefList; - } - + /** * Roundtrip. * @@ -525,54 +173,10 @@ public class CollectionObjectResource @Path("/search") @Produces("application/xml") @Deprecated - public CollectionobjectsCommonList keywordsSearchCollectionObjects(@Context UriInfo ui, + public AbstractCommonList keywordsSearchCollectionObjects(@Context UriInfo ui, @QueryParam(IQueryManager.SEARCH_TYPE_KEYWORDS) String keywords) { MultivaluedMap queryParams = ui.getQueryParameters(); - return searchCollectionObjects(queryParams, keywords); + return search(queryParams, keywords); } - - /** - * Search collection objects. - * - * @param keywords the keywords - * - * @return the collectionobjects common list - */ - private CollectionobjectsCommonList searchCollectionObjects( - MultivaluedMap queryParams, - String keywords) { - CollectionobjectsCommonList collectionObjectList; - try { - Profiler profiler = new Profiler("searchCollectionObjects():", 1); - profiler.start(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - // perform a keyword search - if (keywords != null && !keywords.isEmpty()) { - String whereClause = QueryManager.createWhereClauseFromKeywords(keywords); - DocumentFilter documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); - if (logger.isDebugEnabled()) { - logger.debug("The WHERE clause is: " + documentFilter.getWhereClause()); - } - } - profiler.stop(); - getRepositoryClient(ctx).getFiltered(ctx, handler); - collectionObjectList = (CollectionobjectsCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getCollectionObjectList", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return collectionObjectList; - } - } diff --git a/services/common/src/main/java/org/collectionspace/services/common/AbstractCollectionSpaceResourceImpl.java b/services/common/src/main/java/org/collectionspace/services/common/AbstractCollectionSpaceResourceImpl.java index 76ec2781f..3ed87f85e 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/AbstractCollectionSpaceResourceImpl.java +++ b/services/common/src/main/java/org/collectionspace/services/common/AbstractCollectionSpaceResourceImpl.java @@ -28,17 +28,25 @@ import java.util.List; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; +import org.collectionspace.services.common.api.Tools; import org.collectionspace.services.common.context.ServiceContext; import org.collectionspace.services.common.context.ServiceContextProperties; +import org.collectionspace.services.common.document.BadRequestException; +import org.collectionspace.services.common.document.DocumentException; import org.collectionspace.services.common.document.DocumentHandler; +import org.collectionspace.services.common.document.DocumentNotFoundException; import org.collectionspace.services.common.repository.RepositoryClient; import org.collectionspace.services.common.repository.RepositoryClientFactory; +import org.collectionspace.services.common.security.UnauthorizedException; import org.collectionspace.services.common.storage.StorageClient; import org.collectionspace.services.common.storage.jpa.JpaStorageClientImpl; import org.jboss.resteasy.client.ClientResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * The Class AbstractCollectionSpaceResourceImpl. @@ -49,6 +57,9 @@ import org.jboss.resteasy.client.ClientResponse; public abstract class AbstractCollectionSpaceResourceImpl implements CollectionSpaceResource { + protected final Logger logger = LoggerFactory.getLogger(this.getClass()); + + // Fields for default client factory and client /** The repository client factory. */ private RepositoryClientFactory repositoryClientFactory; @@ -192,10 +203,7 @@ public abstract class AbstractCollectionSpaceResourceImpl * Creates the service context. * * @param serviceName the service name - * @param input the input - * * @return the service context< i t, o t> - * * @throws Exception the exception */ protected ServiceContext createServiceContext(String serviceName, @@ -330,4 +338,86 @@ public abstract class AbstractCollectionSpaceResourceImpl return result; } + + public void checkResult(Object resultToCheck, String csid, String serviceMessage) throws WebApplicationException { + if (resultToCheck == null) { + Response response = Response.status(Response.Status.NOT_FOUND).entity( + serviceMessage + "csid=" + csid + + ": was not found.").type( + "text/plain").build(); + throw new WebApplicationException(response); + } + } + + protected void ensureCSID(String csid, String crudType) throws WebApplicationException { + if (logger.isDebugEnabled()) { + logger.debug(crudType + " for " + getClass().getName() + " with csid=" + csid); + } + if (csid == null || "".equals(csid)) { + logger.error(crudType + " for " + getClass().getName() + " missing csid!"); + Response response = Response.status(Response.Status.BAD_REQUEST).entity(crudType + " failed on " + getClass().getName() + " csid=" + csid).type("text/plain").build(); + throw new WebApplicationException(response); + } + } + + protected WebApplicationException bigReThrow(Exception e, String serviceMsg) throws WebApplicationException { + return bigReThrow(e, serviceMsg, ""); + } + + protected WebApplicationException bigReThrow(Exception e, String serviceMsg, String csid) throws WebApplicationException { + Response response; + if (logger.isDebugEnabled()) { + logger.debug(getClass().getName(), e); + } + /* ===== how RoleResource does it: ======= + } catch (BadRequestException bre) { + response = Response.status( + Response.Status.BAD_REQUEST).entity(ServiceMessages.POST_FAILED + + bre.getErrorReason()).type("text/plain").build(); + throw new WebApplicationException(response); + } catch (DocumentException bre) { + response = Response.status( + Response.Status.BAD_REQUEST).entity(ServiceMessages.POST_FAILED + + bre.getErrorReason()).type("text/plain").build(); + throw new WebApplicationException(response); + } catch (UnauthorizedException ue) { + response = Response.status( + Response.Status.UNAUTHORIZED).entity(ServiceMessages.POST_FAILED + + ue.getErrorReason()).type("text/plain").build(); + throw new WebApplicationException(response); + */ + + if (e instanceof UnauthorizedException) { + response = Response.status(Response.Status.UNAUTHORIZED).entity(serviceMsg + e.getMessage()).type("text/plain").build(); + return new WebApplicationException(response); + + } else if (e instanceof DocumentNotFoundException) { + response = Response.status(Response.Status.NOT_FOUND).entity(serviceMsg + " on " + getClass().getName() + " csid=" + csid).type("text/plain").build(); + return new WebApplicationException(response); + + } else if (e instanceof BadRequestException) { + int code = ((BadRequestException) e).getErrorCode(); + if (code == 0){ + code = Response.Status.BAD_REQUEST.getStatusCode(); + } + return new WebApplicationException(e, code); + + } else if (e instanceof DocumentException){ + int code = ((DocumentException) e).getErrorCode(); + if (code == 0){ + code = Response.Status.BAD_REQUEST.getStatusCode(); + } + return new WebApplicationException(e, code); + + } else if (e instanceof WebApplicationException) { + // subresource may have already thrown this exception + // so just pass it on + return (WebApplicationException) e; + + } else { // e is now instanceof Exception + String detail = Tools.errorToString(e, true); + response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(serviceMsg + " detail: " + detail).type("text/plain").build(); + return new WebApplicationException(response); + } + } } diff --git a/services/common/src/main/java/org/collectionspace/services/common/AbstractMultiPartCollectionSpaceResourceImpl.java b/services/common/src/main/java/org/collectionspace/services/common/AbstractMultiPartCollectionSpaceResourceImpl.java index cc4976b9a..0330e6e07 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/AbstractMultiPartCollectionSpaceResourceImpl.java +++ b/services/common/src/main/java/org/collectionspace/services/common/AbstractMultiPartCollectionSpaceResourceImpl.java @@ -66,37 +66,8 @@ public abstract class AbstractMultiPartCollectionSpaceResourceImpl extends Abstr return MultipartServiceContextFactory.get(); } - protected WebApplicationException bigReThrow(Exception e, String serviceMsg) - throws WebApplicationException { - return bigReThrow(e, serviceMsg, ""); - } - protected WebApplicationException bigReThrow(Exception e, - String serviceMsg, String csid) throws WebApplicationException { - Response response; - if (logger.isDebugEnabled()) { - logger.debug(getClass().getName(), e); - } - if (e instanceof UnauthorizedException) { - response = Response.status(Response.Status.UNAUTHORIZED).entity(serviceMsg + e.getMessage()).type("text/plain").build(); - return new WebApplicationException(response); - } else if (e instanceof DocumentNotFoundException) { - response = Response.status(Response.Status.NOT_FOUND).entity(serviceMsg + " on " + getClass().getName() - + " csid=" + csid).type("text/plain").build(); - return new WebApplicationException(response); - } else if (e instanceof BadRequestException) { - return new WebApplicationException(e, ((BadRequestException) e).getErrorCode()); - } else if (e instanceof WebApplicationException) { - // - // subresource may have already thrown this exception - // so just pass it on - return (WebApplicationException) e; - } else { // e is now instanceof Exception - String detail = Tools.errorToString(e, true); - response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(serviceMsg + " detail: " + detail).type("text/plain").build(); - return new WebApplicationException(response); - } - } + @Override public DocumentHandler createDocumentHandler(ServiceContext ctx) throws Exception { diff --git a/services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java b/services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java index ebe4445ac..09c4ba6e9 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java +++ b/services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java @@ -76,16 +76,6 @@ public abstract class ResourceBase } } - protected void ensureCSID(String csid, String crudType) throws WebApplicationException { - if (logger.isDebugEnabled()) { - logger.debug(crudType + " for " + getClass().getName() + " with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error(crudType + " for " + getClass().getName() + " missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity(crudType + " failed on " + getClass().getName() + " csid=" + csid).type("text/plain").build(); - throw new WebApplicationException(response); - } - } //======================= CREATE ==================================================== @POST diff --git a/services/common/src/main/java/org/collectionspace/services/common/SecurityResourceBase.java b/services/common/src/main/java/org/collectionspace/services/common/SecurityResourceBase.java new file mode 100644 index 000000000..596a88d29 --- /dev/null +++ b/services/common/src/main/java/org/collectionspace/services/common/SecurityResourceBase.java @@ -0,0 +1,83 @@ +package org.collectionspace.services.common; + +import org.collectionspace.services.authorization.Role; +import org.collectionspace.services.common.context.ServiceContext; +import org.collectionspace.services.common.document.DocumentFilter; +import org.collectionspace.services.common.document.DocumentHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.ws.rs.PathParam; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriBuilder; +import javax.ws.rs.core.UriInfo; + +public abstract class SecurityResourceBase extends AbstractCollectionSpaceResourceImpl { + + final Logger logger = LoggerFactory.getLogger(SecurityResourceBase.class); + + public Response create(Object input) { + try { + ServiceContext ctx = createServiceContext(input, input.getClass()); + DocumentHandler handler = createDocumentHandler(ctx); + String csid = getStorageClient(ctx).create(ctx, handler); + UriBuilder path = UriBuilder.fromResource(this.getClass()); + path.path("" + csid); + Response response = Response.created(path.build()).build(); + return response; + } catch (Exception e) { + throw bigReThrow(e, ServiceMessages.POST_FAILED+"create in "+this.getClass().getName()); + } + } + + public Object get(String csid, Class objectClass) { + + logger.debug("get with csid=" + csid); + ensureCSID(csid, ServiceMessages.GET_FAILED + "csid"); + Object result = null; + try { + ServiceContext ctx = createServiceContext((Object) null, objectClass); + DocumentHandler handler = createDocumentHandler(ctx); + getStorageClient(ctx).get(ctx, csid, handler); + result = ctx.getOutput(); + } catch (Exception e) { + throw bigReThrow(e, ServiceMessages.GET_FAILED, csid); + } + checkResult(result, csid, ServiceMessages.GET_FAILED); + return result; + } + + public Object getList(UriInfo ui, Class objectClass) { + try { + ServiceContext ctx = createServiceContext((Object) null, objectClass); + DocumentHandler handler = createDocumentHandler(ctx); + MultivaluedMap queryParams = ui.getQueryParameters(); + DocumentFilter myFilter = handler.createDocumentFilter(); + myFilter.setPagination(queryParams); + myFilter.setQueryParams(queryParams); + handler.setDocumentFilter(myFilter); + getStorageClient(ctx).getFiltered(ctx, handler); + //RolesList roleList = (RolesList) handler.getCommonPartList(); + return handler.getCommonPartList(); + //return roleList; + } catch (Exception e) { + throw bigReThrow(e, ServiceMessages.LIST_FAILED); + } + } + + public Object update(@PathParam("csid") String csid, Object theUpdate, Class objectClass) { + if (logger.isDebugEnabled()) { + logger.debug("updateRole with csid=" + csid); + } + ensureCSID(csid, ServiceMessages.PUT_FAILED + this.getClass().getName()); + try { + ServiceContext ctx = createServiceContext(theUpdate, objectClass); + DocumentHandler handler = createDocumentHandler(ctx); + getStorageClient(ctx).update(ctx, csid, handler); + return ctx.getOutput(); + } catch (Exception e) { + throw bigReThrow(e, ServiceMessages.PUT_FAILED, csid); + } + } +} diff --git a/services/contact/service/src/main/java/org/collectionspace/services/contact/ContactResource.java b/services/contact/service/src/main/java/org/collectionspace/services/contact/ContactResource.java index c4be6619d..5b95e14c2 100644 --- a/services/contact/service/src/main/java/org/collectionspace/services/contact/ContactResource.java +++ b/services/contact/service/src/main/java/org/collectionspace/services/contact/ContactResource.java @@ -23,291 +23,35 @@ */ package org.collectionspace.services.contact; -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.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - import org.collectionspace.services.client.ContactClient; -import org.collectionspace.services.client.PoxPayloadIn; -import org.collectionspace.services.client.PoxPayloadOut; -import org.collectionspace.services.common.AbstractMultiPartCollectionSpaceResourceImpl; -import org.collectionspace.services.common.ClientType; -import org.collectionspace.services.common.ServiceMain; -import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.common.document.DocumentNotFoundException; -import org.collectionspace.services.common.document.DocumentHandler; - -import org.jboss.resteasy.util.HttpResponseCodes; +import org.collectionspace.services.common.ResourceBase; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * The Class ContactResource. - */ +import javax.ws.rs.Consumes; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; + @Path(ContactClient.SERVICE_PATH) @Consumes("application/xml") @Produces("application/xml") -public class ContactResource extends - AbstractMultiPartCollectionSpaceResourceImpl { - // - // The logger init - // +public class ContactResource extends ResourceBase { final Logger logger = LoggerFactory.getLogger(ContactResource.class); - //FIXME retrieve client type from configuration - /** The Constant CLIENT_TYPE. */ - final static ClientType CLIENT_TYPE = ServiceMain.getInstance().getClientType(); - - /** - * Instantiates a new contact resource. - */ - public ContactResource() { - // do nothing - } - - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getVersionString() - */ @Override protected String getVersionString() { - /** The last change revision. */ final String lastChangeRevision = "$LastChangedRevision$"; return lastChangeRevision; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { return ContactClient.SERVICE_NAME; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getCommonPartClass() - */ @Override public Class getCommonPartClass() { return ContactsCommon.class; } - -// @Override //FIXME: REM - Remove this dead code please -// public DocumentHandler createDocumentHandler(ServiceContext ctx) throws Exception { -// DocumentHandler docHandler = ctx.getDocumentHandler(); -// if (ctx.getInput() != null) { -// Object obj = ((MultipartServiceContext)ctx).getInputPart(ctx.getCommonPartLabel(), ContactsCommon.class); -// if (obj != null) { -// docHandler.setCommonPart((ContactsCommon) obj); -// } -// } -// return docHandler; -// } - - /** - * Creates the contact. - * - * @param xmlPayload the xml payload - * @return the response - */ - @POST - public Response createContact(String xmlPayload) { - try { - PoxPayloadIn input = new PoxPayloadIn(xmlPayload); - ServiceContext ctx = createServiceContext(input); - DocumentHandler handler = createDocumentHandler(ctx); - String csid = getRepositoryClient(ctx).create(ctx, handler); - //contactObject.setCsid(csid); - UriBuilder path = UriBuilder.fromResource(ContactResource.class); - path.path("" + csid); - Response response = Response.created(path.build()).build(); - return response; - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in createContact", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Create failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - } - /** - * Gets the contact. - * - * @param csid the csid - * - * @return the contact - */ - @GET - @Path("{csid}") - public String getContact( - @Context UriInfo ui, - @PathParam("csid") String csid) { - if (logger.isDebugEnabled()) { - logger.debug("getContact with csid=" + csid); - } - if (csid == null || "".equals(csid)) { //FIXME: REM - This is a silly check? We can't reach this resource if CSID is blank in the URL - logger.error("getContact: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "Get failed on Contact csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).get(ctx, csid, handler); - result = ctx.getOutput(); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getContact", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed on Contact csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getContact", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Get failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed, the requested Contact CSID:" + csid + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); - } - return result.toXML(); - } - - /** - * Gets the contact list. - * - * @param ui the ui - * - * @return the contact list - */ - @GET - @Produces("application/xml") - public ContactsCommonList getContactList(@Context UriInfo ui) { - MultivaluedMap queryParams = ui.getQueryParameters(); - ContactsCommonList contactObjectList = new ContactsCommonList(); - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).getFiltered(ctx, handler); - contactObjectList = (ContactsCommonList) handler.getCommonPartList(); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getContactList", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return contactObjectList; - } - - /** - * Update contact. - * - * @param csid the csid - * @param theUpdate the the update - * - * @return the multipart output - */ - @PUT - @Path("{csid}") - public String updateContact( - @PathParam("csid") String csid, - String xmlPayload) { - if (logger.isDebugEnabled()) { - logger.debug("updateContact with csid=" + csid); - } - if (csid == null || "".equals(csid)) {//FIXME: REM - This is a silly check? We can't reach this resource if CSID is blank in the URL. - logger.error("updateContact: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "update failed on Contact csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - PoxPayloadIn theUpdate = new PoxPayloadIn(xmlPayload); - ServiceContext ctx = createServiceContext(theUpdate); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).update(ctx, csid, handler); - result = ctx.getOutput(); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in updateContact", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Update failed on Contact 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 result.toXML(); - } - - /** - * Delete contact. - * - * @param csid the csid - * - * @return the response - */ - @DELETE - @Path("{csid}") - public Response deleteContact(@PathParam("csid") String csid) { - - if (logger.isDebugEnabled()) { - logger.debug("deleteContact with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("deleteContact: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "Delete failed on Contact csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - try { - ServiceContext ctx = createServiceContext(); - getRepositoryClient(ctx).delete(ctx, csid); - return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in deleteContact", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Delete failed on Contact 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); - } - - } } diff --git a/services/dimension/service/pom.xml b/services/dimension/service/pom.xml index 30970fe41..31b998221 100644 --- a/services/dimension/service/pom.xml +++ b/services/dimension/service/pom.xml @@ -30,6 +30,11 @@ org.collectionspace.services.dimension.jaxb ${project.version} + + org.collectionspace.services + org.collectionspace.services.dimension.client + ${project.version} + junit diff --git a/services/dimension/service/src/main/java/org/collectionspace/services/dimension/DimensionResource.java b/services/dimension/service/src/main/java/org/collectionspace/services/dimension/DimensionResource.java index d05c0a33b..096af4c5e 100644 --- a/services/dimension/service/src/main/java/org/collectionspace/services/dimension/DimensionResource.java +++ b/services/dimension/service/src/main/java/org/collectionspace/services/dimension/DimensionResource.java @@ -23,294 +23,35 @@ */ package org.collectionspace.services.dimension; +import org.collectionspace.services.client.DimensionClient; +import org.collectionspace.services.common.ResourceBase; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + 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.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - -import org.collectionspace.services.client.PoxPayloadIn; -import org.collectionspace.services.client.PoxPayloadOut; -import org.collectionspace.services.common.AbstractMultiPartCollectionSpaceResourceImpl; -//import org.collectionspace.services.dimension.DimensionsCommonList.*; - -import org.collectionspace.services.common.ClientType; -import org.collectionspace.services.common.ServiceMain; -//import org.collectionspace.services.common.context.MultipartServiceContext; -//import org.collectionspace.services.common.context.MultipartServiceContextFactory; -import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.common.document.DocumentNotFoundException; -import org.collectionspace.services.common.document.DocumentHandler; -import org.jboss.resteasy.util.HttpResponseCodes; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -/** - * The Class DimensionResource. - */ -@Path("/dimensions") +@Path(DimensionClient.SERVICE_PATH) @Consumes("application/xml") @Produces("application/xml") -public class DimensionResource extends - AbstractMultiPartCollectionSpaceResourceImpl { +public class DimensionResource extends ResourceBase { - /** The Constant serviceName. */ - private final static String serviceName = "dimensions"; - - /** The logger. */ final Logger logger = LoggerFactory.getLogger(DimensionResource.class); - //FIXME retrieve client type from configuration - /** The Constant CLIENT_TYPE. */ - final static ClientType CLIENT_TYPE = ServiceMain.getInstance().getClientType(); - /** - * Instantiates a new dimension resource. - */ - public DimensionResource() { - // do nothing - } - - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getVersionString() - */ @Override public String getVersionString() { - /** The last change revision. */ final String lastChangeRevision = "$LastChangedRevision$"; return lastChangeRevision; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { - return serviceName; + return DimensionClient.SERVICE_NAME; } -// @Override -// public DocumentHandler createDocumentHandler(ServiceContext ctx) throws Exception { -// DocumentHandler docHandler = ctx.getDocumentHandler(); -// if (ctx.getInput() != null) { -// Object obj = ((MultipartServiceContext)ctx).getInputPart(ctx.getCommonPartLabel(), DimensionsCommon.class); -// if (obj != null) { -// docHandler.setCommonPart((DimensionsCommon) obj); -// } -// } -// return docHandler; -// } - - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getCommonPartClass() - */ -@Override + @Override public Class getCommonPartClass() { return DimensionsCommon.class; } - - /** - * Creates the dimension. - * - * @param xmlText an XML payload - * - * @return the response - */ - @POST - public Response createDimension(String xmlText) { - try { - PoxPayloadIn input = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(input); - DocumentHandler handler = createDocumentHandler(ctx); - String csid = getRepositoryClient(ctx).create(ctx, handler); - //dimensionObject.setCsid(csid); - UriBuilder path = UriBuilder.fromResource(DimensionResource.class); - path.path("" + csid); - Response response = Response.created(path.build()).build(); - return response; - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in createDimension", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Create failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - } - - /** - * Gets the dimension. - * - * @param csid the csid - * - * @return the dimension - */ - @GET - @Path("{csid}") - public byte[] getDimension( - @Context UriInfo ui, - @PathParam("csid") String csid) { - if (logger.isDebugEnabled()) { - logger.debug("getDimension with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("getDimension: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "get failed on Dimension csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).get(ctx, csid, handler); - result = ctx.getOutput(); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getDimension", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed on Dimension csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getDimension", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Get failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed, the requested Dimension CSID:" + csid + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); - } - return result.getBytes(); - } - - /** - * Gets the dimension list. - * - * @param ui the ui - * - * @return the dimension list - */ - @GET - @Produces("application/xml") - public DimensionsCommonList getDimensionList(@Context UriInfo ui) { - DimensionsCommonList dimensionObjectList = new DimensionsCommonList(); - MultivaluedMap queryParams = ui.getQueryParameters(); - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).getFiltered(ctx, handler); - dimensionObjectList = (DimensionsCommonList) handler.getCommonPartList(); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getDimensionList", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return dimensionObjectList; - } - - /** - * Update dimension. - * - * @param csid the csid - * @param xmlText an XML payload - * - * @return the multipart output - */ - @PUT - @Path("{csid}") - public byte[] updateDimension( - @PathParam("csid") String csid, String xmlText) { - if (logger.isDebugEnabled()) { - logger.debug("updateDimension with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("updateDimension: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "update failed on Dimension csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - PoxPayloadIn update = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(update); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).update(ctx, csid, handler); - result = ctx.getOutput(); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in updateDimension", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Update failed on Dimension 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 result.getBytes(); - } - - /** - * Delete dimension. - * - * @param csid the csid - * - * @return the response - */ - @DELETE - @Path("{csid}") - public Response deleteDimension(@PathParam("csid") String csid) { - - if (logger.isDebugEnabled()) { - logger.debug("deleteDimension with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("deleteDimension: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "delete failed on Dimension csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - try { - ServiceContext ctx = createServiceContext(); - getRepositoryClient(ctx).delete(ctx, csid); - return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deleteDimension", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Delete failed on Dimension 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); - } - - } } diff --git a/services/imports/service/src/main/java/org/collectionspace/services/imports/ImportsResource.java b/services/imports/service/src/main/java/org/collectionspace/services/imports/ImportsResource.java index f339f1b13..64af75990 100755 --- a/services/imports/service/src/main/java/org/collectionspace/services/imports/ImportsResource.java +++ b/services/imports/service/src/main/java/org/collectionspace/services/imports/ImportsResource.java @@ -23,8 +23,6 @@ */ package org.collectionspace.services.imports; -import org.collectionspace.services.client.PoxPayloadIn; -import org.collectionspace.services.client.PoxPayloadOut; import org.collectionspace.services.common.FileUtils; import org.collectionspace.services.common.ResourceBase; import org.collectionspace.services.common.ServiceMain; @@ -32,10 +30,7 @@ import org.collectionspace.services.common.ServiceMessages; import org.collectionspace.services.common.api.FileTools; import org.collectionspace.services.common.api.Tools; import org.collectionspace.services.common.api.ZipTools; - -// The modified Nuxeo ImportCommand from nuxeo's shell: import org.collectionspace.services.common.config.TenantBindingConfigReaderImpl; -import org.collectionspace.services.common.context.ServiceContext; import org.collectionspace.services.imports.nuxeo.ImportCommand; import org.jboss.resteasy.plugins.providers.multipart.InputPart; import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput; @@ -58,6 +53,8 @@ import java.io.InputStream; import java.util.List; import java.util.Map; +// The modified Nuxeo ImportCommand from nuxeo's shell: + /** * @author Laramie Crocker */ 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 index d9873e0d0..8d65cb963 100644 --- 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 @@ -23,303 +23,51 @@ */ package org.collectionspace.services.intake; -import java.util.List; +import org.collectionspace.services.client.IQueryManager; +import org.collectionspace.services.client.IntakeClient; +import org.collectionspace.services.client.PoxPayloadIn; +import org.collectionspace.services.client.PoxPayloadOut; +import org.collectionspace.services.common.ResourceBase; +import org.collectionspace.services.common.ServiceMessages; +import org.collectionspace.services.common.context.ServiceContext; +import org.collectionspace.services.common.document.DocumentHandler; +import org.collectionspace.services.jaxb.AbstractCommonList; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; import javax.ws.rs.Path; -import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Context; import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriInfo; +import java.util.List; -import org.collectionspace.services.client.IQueryManager; -import org.collectionspace.services.client.IntakeClient; -import org.collectionspace.services.client.PoxPayloadIn; -import org.collectionspace.services.client.PoxPayloadOut; -import org.collectionspace.services.common.AbstractMultiPartCollectionSpaceResourceImpl; -import org.collectionspace.services.common.ClientType; -import org.collectionspace.services.common.ServiceMain; - -import org.collectionspace.services.common.authorityref.AuthorityRefList; -import org.collectionspace.services.common.context.MultipartServiceContextImpl; -import org.collectionspace.services.common.context.ServiceBindingUtils; -import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.common.document.DocumentFilter; -import org.collectionspace.services.common.document.DocumentHandler; -import org.collectionspace.services.common.document.DocumentNotFoundException; -import org.collectionspace.services.common.document.DocumentWrapper; -import org.collectionspace.services.common.query.QueryManager; -import org.collectionspace.services.common.security.UnauthorizedException; -import org.collectionspace.services.nuxeo.client.java.DocumentModelHandler; -import org.jboss.resteasy.util.HttpResponseCodes; -import org.nuxeo.ecm.core.api.DocumentModel; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The Class IntakeResource. - */ @Path(IntakeClient.SERVICE_PATH) @Consumes("application/xml") @Produces("application/xml") -public class IntakeResource extends - AbstractMultiPartCollectionSpaceResourceImpl { +public class IntakeResource extends ResourceBase { - /** The logger. */ final Logger logger = LoggerFactory.getLogger(IntakeResource.class); - //FIXME retrieve client type from configuration - /** The Constant CLIENT_TYPE. */ - final static ClientType CLIENT_TYPE = ServiceMain.getInstance().getClientType(); - - /** - * Instantiates a new intake resource. - */ - public IntakeResource() { - // do nothing - } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getVersionString() - */ @Override protected String getVersionString() { - /** The last change revision. */ final String lastChangeRevision = "$LastChangedRevision$"; return lastChangeRevision; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { return IntakeClient.SERVICE_NAME; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getCommonPartClass() - */ @Override public Class getCommonPartClass() { return IntakesCommon.class; } - - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#createDocumentHandler(org.collectionspace.services.common.context.ServiceContext) - */ -// @Override -// public DocumentHandler createDocumentHandler(ServiceContext ctx) throws Exception { -// DocumentHandler docHandler = ctx.getDocumentHandler(); -// if (ctx.getInput() != null) { -// Object obj = ((MultipartServiceContext) ctx).getInputPart(ctx.getCommonPartLabel(), IntakesCommon.class); -// if (obj != null) { -// docHandler.setCommonPart((IntakesCommon) obj); -// } -// } -// return docHandler; -// } - - /** - * Creates the intake. - * - * @param input the input - * - * @return the response - */ - @POST - public Response createIntake(String xmlText) { - try { - PoxPayloadIn input = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(input); - DocumentHandler handler = createDocumentHandler(ctx); - String csid = getRepositoryClient(ctx).create(ctx, handler); - //intakeObject.setCsid(csid); - UriBuilder path = UriBuilder.fromResource(IntakeResource.class); - path.path("" + csid); - Response response = Response.created(path.build()).build(); - return response; - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Create failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(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); - } - } - - - /** - * Gets the intake. - * - * @param csid the csid - * - * @return the intake - */ - @GET - @Path("{csid}") - public byte[] getIntake( - @Context UriInfo ui, - @PathParam("csid") String csid) { - if (logger.isDebugEnabled()) { - logger.debug("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); - } - PoxPayloadOut result = null; - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).get(ctx, csid, handler); - result = ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Get failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } 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 (result == 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); - } - - return result.getBytes(); - } - /** - * Gets the intake list. - * - * @param ui the ui - * @param keywords the keywords - * - * @return the intake list - */ - @GET - @Produces("application/xml") - public IntakesCommonList getIntakeList(@Context UriInfo ui, - @QueryParam(IQueryManager.SEARCH_TYPE_KEYWORDS_KW) String keywords) { - IntakesCommonList result = null; - MultivaluedMap queryParams = ui.getQueryParameters(); - - if (keywords != null) { - result = searchIntakes(queryParams, keywords); - } else { - result = getIntakeList(queryParams); - } - - return result; - } - - /** - * Gets the intake list. - * - * @return the intake list - */ - private IntakesCommonList getIntakeList(MultivaluedMap queryParams) { - IntakesCommonList intakeObjectList; - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).getFiltered(ctx, handler); - intakeObjectList = (IntakesCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } 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; - } - - /** - * Gets the authority refs. - * - * @param csid the csid - * @param ui the ui - * - * @return the authority refs - */ - @GET - @Path("{csid}/authorityrefs") - @Produces("application/xml") - public AuthorityRefList getAuthorityRefs( - @PathParam("csid") String csid, - @Context UriInfo ui) { - AuthorityRefList authRefList = null; - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentWrapper docWrapper = - getRepositoryClient(ctx).getDoc(ctx, csid); - DocumentModelHandler handler - = (DocumentModelHandler)createDocumentHandler(ctx); - List authRefFields = - ((MultipartServiceContextImpl)ctx).getCommonPartPropertyValues( - ServiceBindingUtils.AUTH_REF_PROP, ServiceBindingUtils.QUALIFIED_PROP_NAMES); - authRefList = handler.getAuthorityRefs(docWrapper, authRefFields); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getAuthorityRefs", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return authRefList; - } - - /** - * Gets the intake list. - * - * @param csidList the csid list - * - * @return the intake list - */ public IntakesCommonList getIntakeList(List csidList) { IntakesCommonList intakeObjectList = new IntakesCommonList(); try { @@ -327,171 +75,20 @@ public class IntakeResource extends DocumentHandler handler = createDocumentHandler(ctx); getRepositoryClient(ctx).get(ctx, csidList, handler); intakeObjectList = (IntakesCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); } 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); + throw bigReThrow(e, ServiceMessages.LIST_FAILED); } return intakeObjectList; } - - /** - * Update intake. - * - * @param csid the csid - * @param theUpdate the the update - * - * @return the multipart output - */ - @PUT - @Path("{csid}") - public byte[] updateIntake( - @PathParam("csid") String csid, - String xmlText) { - if (logger.isDebugEnabled()) { - logger.debug("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); - } - PoxPayloadOut result = null; - try { - PoxPayloadIn update = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(update); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).update(ctx, csid, handler); - result = ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Update failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("Caught 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 result.getBytes(); - } - - /** - * Delete intake. - * - * @param csid the csid - * - * @return the response - */ - @DELETE - @Path("{csid}") - public Response deleteIntake(@PathParam("csid") String csid) { - if (logger.isDebugEnabled()) { - logger.debug("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 { - ServiceContext ctx = createServiceContext(); - getRepositoryClient(ctx).delete(ctx, csid); - return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Delete failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } 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); - } - } - - /** - * Keywords search intakes. - * - * @param ui the ui - * @param keywords the keywords - * - * @return the intakes common list - */ @GET @Path("/search") @Produces("application/xml") @Deprecated - public IntakesCommonList keywordsSearchIntakes(@Context UriInfo ui, + public AbstractCommonList keywordsSearchIntakes(@Context UriInfo ui, @QueryParam (IQueryManager.SEARCH_TYPE_KEYWORDS) String keywords) { MultivaluedMap queryParams = ui.getQueryParameters(); - return searchIntakes(queryParams, keywords); + return search(queryParams, keywords); } - - /** - * Search intakes. - * - * @param keywords the keywords - * - * @return the intakes common list - */ - private IntakesCommonList searchIntakes(MultivaluedMap queryParams, - String keywords) { - IntakesCommonList intakesObjectList; - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - // perform a keyword search - if (keywords != null && !keywords.isEmpty()) { - String whereClause = QueryManager.createWhereClauseFromKeywords(keywords); - DocumentFilter documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); - if (logger.isDebugEnabled()) { - logger.debug("The WHERE clause is: " + documentFilter.getWhereClause()); - } - } - getRepositoryClient(ctx).getFiltered(ctx, handler); - intakesObjectList = (IntakesCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in search for Intakes", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return intakesObjectList; - } } diff --git a/services/loanin/client/src/main/java/org/collectionspace/services/client/LoaninClient.java b/services/loanin/client/src/main/java/org/collectionspace/services/client/LoaninClient.java index 20a667d84..68cff472d 100644 --- a/services/loanin/client/src/main/java/org/collectionspace/services/client/LoaninClient.java +++ b/services/loanin/client/src/main/java/org/collectionspace/services/client/LoaninClient.java @@ -29,6 +29,7 @@ import org.collectionspace.services.jaxb.AbstractCommonList; public class LoaninClient extends AbstractPoxServiceClientImpl { public static final String SERVICE_NAME = "loansin"; public static final String SERVICE_PATH_COMPONENT = SERVICE_NAME; + public static final String SERVICE_PATH = "/" + SERVICE_PATH_COMPONENT; /* (non-Javadoc) * @see org.collectionspace.services.client.AbstractServiceClientImpl#getServicePathComponent() diff --git a/services/loanin/service/pom.xml b/services/loanin/service/pom.xml index 214ddbef3..8591d7209 100644 --- a/services/loanin/service/pom.xml +++ b/services/loanin/service/pom.xml @@ -24,12 +24,17 @@ org.collectionspace.services.loanin.jaxb ${project.version} + + org.collectionspace.services + org.collectionspace.services.loanin.client + ${project.version} + org.collectionspace.services org.collectionspace.services.collectionobject.jaxb ${project.version} - + junit junit diff --git a/services/loanin/service/src/main/java/org/collectionspace/services/loanin/LoaninResource.java b/services/loanin/service/src/main/java/org/collectionspace/services/loanin/LoaninResource.java index 8b19a5877..d270c7c64 100644 --- a/services/loanin/service/src/main/java/org/collectionspace/services/loanin/LoaninResource.java +++ b/services/loanin/service/src/main/java/org/collectionspace/services/loanin/LoaninResource.java @@ -23,448 +23,41 @@ */ package org.collectionspace.services.loanin; -import java.util.List; +import org.collectionspace.services.client.LoaninClient; +import org.collectionspace.services.common.ResourceBase; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; import javax.ws.rs.Path; -import javax.ws.rs.PathParam; import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; -import javax.xml.parsers.ParserConfigurationException; -import org.collectionspace.services.client.IQueryManager; -import org.collectionspace.services.client.PoxPayloadIn; -import org.collectionspace.services.client.PoxPayloadOut; -import org.collectionspace.services.common.AbstractMultiPartCollectionSpaceResourceImpl; -import org.collectionspace.services.common.ClientType; -import org.collectionspace.services.common.ServiceMain; -import org.collectionspace.services.common.ServiceMessages; -import org.collectionspace.services.common.authorityref.AuthorityRefList; -import org.collectionspace.services.common.context.MultipartServiceContext; -import org.collectionspace.services.common.context.MultipartServiceContextFactory; -import org.collectionspace.services.common.context.MultipartServiceContextImpl; -import org.collectionspace.services.common.context.ServiceBindingUtils; -import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.common.document.DocumentFilter; -import org.collectionspace.services.common.document.DocumentHandler; -import org.collectionspace.services.common.document.DocumentNotFoundException; -import org.collectionspace.services.common.document.DocumentWrapper; -//import org.collectionspace.services.common.query.IQueryManager; -import org.collectionspace.services.common.query.QueryManager; -import org.collectionspace.services.common.security.UnauthorizedException; -import org.collectionspace.services.common.vocabulary.RefNameServiceUtils; -import org.collectionspace.services.jaxb.AbstractCommonList; -import org.collectionspace.services.nuxeo.client.java.CommonList; -import org.collectionspace.services.nuxeo.client.java.DocumentModelHandler; -import org.collectionspace.services.nuxeo.client.java.RemoteDocumentModelHandlerImpl; -import org.jboss.resteasy.util.HttpResponseCodes; -import org.nuxeo.ecm.core.api.DocumentModel; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The Class LoaninResource. - */ -@Path("/loansin") +@Path(LoaninClient.SERVICE_PATH) @Consumes("application/xml") @Produces("application/xml") -public class LoaninResource extends - AbstractMultiPartCollectionSpaceResourceImpl { +public class LoaninResource extends ResourceBase { - /** The Constant SERVICE_NAME. */ - private final static String SERVICE_NAME = "loansin"; - - /** The logger. */ final Logger logger = LoggerFactory.getLogger(LoaninResource.class); - //FIXME retrieve client type from configuration - /** The Constant CLIENT_TYPE. */ - final static ClientType CLIENT_TYPE = ServiceMain.getInstance().getClientType(); - - /** - * Instantiates a new loanin resource. - */ - public LoaninResource() { - // do nothing - } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getVersionString() - */ @Override protected String getVersionString() { - /** The last change revision. */ final String lastChangeRevision = "$LastChangedRevision$"; return lastChangeRevision; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { - return SERVICE_NAME; + return LoaninClient.SERVICE_NAME; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getCommonPartClass() - */ @Override public Class getCommonPartClass() { return LoansinCommon.class; } - - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#createDocumentHandler(org.collectionspace.services.common.context.ServiceContext) - */ -// @Override -// public DocumentHandler createDocumentHandler(ServiceContext ctx) throws Exception { -// DocumentHandler docHandler = ctx.getDocumentHandler(); -// if (ctx.getInput() != null) { -// Object obj = ((MultipartServiceContext) ctx).getInputPart(ctx.getCommonPartLabel(), LoansinCommon.class); -// if (obj != null) { -// docHandler.setCommonPart((LoansinCommon) obj); -// } -// } -// return docHandler; -// } - - @POST - public Response createLoanin(String xmlText) { - try { - PoxPayloadIn input = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(input); - DocumentHandler handler = createDocumentHandler(ctx); - String csid = getRepositoryClient(ctx).create(ctx, handler); - //loaninObject.setCsid(csid); - UriBuilder path = UriBuilder.fromResource(LoaninResource.class); - path.path("" + csid); - Response response = Response.created(path.build()).build(); - return response; - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Create failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in createLoanin", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Create failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - } +} - /** - * Gets the loanin. - * - * @param csid the csid - * - * @return the loanin - */ - @GET - @Path("{csid}") - public byte[] getLoanin( - @Context UriInfo ui, - @PathParam("csid") String csid) { - if (logger.isDebugEnabled()) { - logger.debug("getLoanin with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("getLoanin: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "get failed on Loanin csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).get(ctx, csid, handler); - result = ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Get failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getLoanin", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed on Loanin csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getLoanin", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Get failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed, the requested Loanin CSID:" + csid + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); - } - return result.getBytes(); - } - /** - * Gets the loanin list. - * - * @param ui the ui - * @param keywords the keywords - * - * @return the loanin list - */ - @GET - @Produces({"application/xml"}) - public AbstractCommonList getLoaninList(@Context UriInfo ui, - @QueryParam(IQueryManager.SEARCH_TYPE_KEYWORDS_KW) String keywords) { - AbstractCommonList result = null; - MultivaluedMap queryParams = ui.getQueryParameters(); - if (keywords != null) { - result = searchLoansin(queryParams, keywords); - } else { - result = getLoaninList(queryParams); - } - - return result; - } - - /** - * Gets the loanin list. - * - * @return the loanin list - */ - private CommonList getLoaninList(MultivaluedMap queryParams) { - CommonList loaninObjectList; - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).getFiltered(ctx, handler); - loaninObjectList = (CommonList) handler.getCommonPartList(); - } catch (Exception e) { - throw bigReThrow(e, ServiceMessages.LIST_FAILED, "no-csid-for-list"); - } - return loaninObjectList; - } - /** - * Gets the authority refs. - * - * @param csid the csid - * @param ui the ui - * - * @return the authority refs - */ - @GET - @Path("{csid}/authorityrefs") - public AuthorityRefList getAuthorityRefs( - @PathParam("csid") String csid, - @Context UriInfo ui) { - AuthorityRefList authRefList = null; - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentWrapper docWrapper = - getRepositoryClient(ctx).getDoc(ctx, csid); - DocumentModelHandler handler - = (DocumentModelHandler)createDocumentHandler(ctx); - List authRefFields = - ((MultipartServiceContextImpl)ctx).getCommonPartPropertyValues( - ServiceBindingUtils.AUTH_REF_PROP, ServiceBindingUtils.QUALIFIED_PROP_NAMES); - authRefList = handler.getAuthorityRefs(docWrapper, authRefFields); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Failed to retrieve authority references: reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getAuthorityRefs", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Failed to retrieve authority references").type("text/plain").build(); - throw new WebApplicationException(response); - } - return authRefList; - } - /** - * Gets the loanin list. - * - * @param csidList the csid list - * - * @return the loanin list - */ - @Produces({"application/xml"}) - @Deprecated - public CommonList getLoaninList(List csidList) { - CommonList loaninObjectList; - try { - ServiceContext ctx = createServiceContext(); - loaninObjectList = new CommonList(); -// ServiceContext ctx = createServiceContext(); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).get(ctx, csidList, handler); - loaninObjectList = (CommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getLoaninList", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return loaninObjectList; - } - - /** - * Update loanin. - * @param csid the csid - * @return the multipart output - */ - @PUT - @Path("{csid}") - public byte[] updateLoanin( - @PathParam("csid") String csid, - String xmlText) { - if (logger.isDebugEnabled()) { - logger.debug("updateLoanin with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("updateLoanin: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "update failed on Loanin csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - PoxPayloadIn update = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(update); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).update(ctx, csid, handler); - result = ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Update failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in updateLoanin", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Update failed on Loanin 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 result.getBytes(); - } - - /** - * Delete loanin. - * - * @param csid the csid - * - * @return the response - */ - @DELETE - @Path("{csid}") - public Response deleteLoanin(@PathParam("csid") String csid) { - if (logger.isDebugEnabled()) { - logger.debug("deleteLoanin with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("deleteLoanin: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "delete failed on Loanin csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - try { - ServiceContext ctx = createServiceContext(); - getRepositoryClient(ctx).delete(ctx, csid); - return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Delete failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deleteLoanin", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Delete failed on Loanin 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); - } - } - - /** - * Search loansin. - * - * @param keywords the keywords - * - * @return the loansin common list - */ - private CommonList searchLoansin( - MultivaluedMap queryParams, - String keywords) { - CommonList loansinObjectList; - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - // perform a keyword search - if (keywords != null && !keywords.isEmpty()) { - String whereClause = QueryManager.createWhereClauseFromKeywords(keywords); - DocumentFilter documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); - if (logger.isDebugEnabled()) { - logger.debug("The WHERE clause is: " + documentFilter.getWhereClause()); - } - } - getRepositoryClient(ctx).getFiltered(ctx, handler); - loansinObjectList = (CommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in search for Loansin", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return loansinObjectList; - } -} diff --git a/services/loanout/service/src/main/java/org/collectionspace/services/loanout/LoanoutResource.java b/services/loanout/service/src/main/java/org/collectionspace/services/loanout/LoanoutResource.java index 614ec5894..dd7ae6561 100644 --- a/services/loanout/service/src/main/java/org/collectionspace/services/loanout/LoanoutResource.java +++ b/services/loanout/service/src/main/java/org/collectionspace/services/loanout/LoanoutResource.java @@ -23,457 +23,38 @@ */ package org.collectionspace.services.loanout; -import java.util.List; +import org.collectionspace.services.common.ResourceBase; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; import javax.ws.rs.Path; -import javax.ws.rs.PathParam; import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; -import org.collectionspace.services.client.IQueryManager; -import org.collectionspace.services.client.PoxPayloadIn; -import org.collectionspace.services.client.PoxPayloadOut; -import org.collectionspace.services.common.AbstractMultiPartCollectionSpaceResourceImpl; -import org.collectionspace.services.common.ClientType; -import org.collectionspace.services.common.ServiceMain; -import org.collectionspace.services.common.authorityref.AuthorityRefList; -import org.collectionspace.services.common.context.MultipartServiceContextImpl; -import org.collectionspace.services.common.context.ServiceBindingUtils; -import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.common.document.DocumentFilter; -import org.collectionspace.services.common.document.DocumentHandler; -import org.collectionspace.services.common.document.DocumentNotFoundException; -import org.collectionspace.services.common.document.DocumentWrapper; -//import org.collectionspace.services.common.query.IQueryManager; -import org.collectionspace.services.common.query.QueryManager; -import org.collectionspace.services.common.security.UnauthorizedException; -import org.collectionspace.services.nuxeo.client.java.DocumentModelHandler; -import org.collectionspace.services.nuxeo.client.java.RemoteDocumentModelHandlerImpl; -import org.jboss.resteasy.util.HttpResponseCodes; -import org.nuxeo.ecm.core.api.DocumentModel; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -/** - * The Class LoanoutResource. - */ @Path("/loansout") +//@Path(LoanoutClient.SERVICE_PATH_COMPONENT) @Consumes("application/xml") @Produces("application/xml") -public class LoanoutResource extends - AbstractMultiPartCollectionSpaceResourceImpl { +public class LoanoutResource extends ResourceBase { - /** The Constant serviceName. */ private final static String serviceName = "loansout"; - /** The logger. */ final Logger logger = LoggerFactory.getLogger(LoanoutResource.class); - //FIXME retrieve client type from configuration - /** The Constant CLIENT_TYPE. */ - final static ClientType CLIENT_TYPE = ServiceMain.getInstance().getClientType(); - - /** - * Instantiates a new loanout resource. - */ - public LoanoutResource() { - // do nothing - } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getVersionString() - */ @Override protected String getVersionString() { - /** The last change revision. */ final String lastChangeRevision = "$LastChangedRevision$"; return lastChangeRevision; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { return serviceName; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getCommonPartClass() - */ @Override public Class getCommonPartClass() { return LoansoutCommon.class; } - - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#createDocumentHandler(org.collectionspace.services.common.context.ServiceContext) - */ -// @Override -// public DocumentHandler createDocumentHandler(ServiceContext ctx) throws Exception { -// DocumentHandler docHandler = ctx.getDocumentHandler(); -// if (ctx.getInput() != null) { -// Object obj = ((MultipartServiceContext) ctx).getInputPart(ctx.getCommonPartLabel(), LoansoutCommon.class); -// if (obj != null) { -// docHandler.setCommonPart((LoansoutCommon) obj); -// } -// } -// return docHandler; -// } - - /** - * Creates the loanout. - * - * @param input the input - * - * @return the response - */ - @POST - public Response createLoanout(String xmlText) { - try { - PoxPayloadIn input = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(input); - DocumentHandler handler = createDocumentHandler(ctx); - String csid = getRepositoryClient(ctx).create(ctx, handler); - //loanoutObject.setCsid(csid); - UriBuilder path = UriBuilder.fromResource(LoanoutResource.class); - path.path("" + csid); - Response response = Response.created(path.build()).build(); - return response; - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Create failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in createLoanout", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Create failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - } - - /** - * Gets the loanout. - * - * @param csid the csid - * - * @return the loanout - */ - @GET - @Path("{csid}") - public byte[] getLoanout( - @Context UriInfo ui, - @PathParam("csid") String csid) { - if (logger.isDebugEnabled()) { - logger.debug("getLoanout with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("getLoanout: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "get failed on Loanout csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).get(ctx, csid, handler); - result = ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Get failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getLoanout", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed on Loanout csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getLoanout", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Get failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed, the requested Loanout CSID:" + csid + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); - } - return result.getBytes(); - } - - /** - * Gets the loanout list. - * - * @param ui the ui - * @param keywords the keywords - * - * @return the loanout list - */ - @GET - @Produces("application/xml") - public LoansoutCommonList getLoanoutList(@Context UriInfo ui, - @QueryParam(IQueryManager.SEARCH_TYPE_KEYWORDS_KW) String keywords) { - LoansoutCommonList result = null; - MultivaluedMap queryParams = ui.getQueryParameters(); - if (keywords != null) { - result = searchLoansout(queryParams, keywords); - } else { - result = getLoanoutList(queryParams); - } - - return result; - } - - /** - * Gets the loanout list. - * - * @return the loanout list - */ - private LoansoutCommonList getLoanoutList(MultivaluedMap queryParams) { - LoansoutCommonList loanoutObjectList; - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).getFiltered(ctx, handler); - loanoutObjectList = (LoansoutCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getLoanoutList", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return loanoutObjectList; - } - - /** - * Gets the authority refs. - * - * @param csid the csid - * @param ui the ui - * - * @return the authority refs - */ - @GET - @Path("{csid}/authorityrefs") - @Produces("application/xml") - public AuthorityRefList getAuthorityRefs( - @PathParam("csid") String csid, - @Context UriInfo ui) { - AuthorityRefList authRefList = null; - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentWrapper docWrapper = - getRepositoryClient(ctx).getDoc(ctx, csid); - DocumentModelHandler handler - = (DocumentModelHandler)createDocumentHandler(ctx); - List authRefFields = - ((MultipartServiceContextImpl)ctx).getCommonPartPropertyValues( - ServiceBindingUtils.AUTH_REF_PROP, ServiceBindingUtils.QUALIFIED_PROP_NAMES); - authRefList = handler.getAuthorityRefs(docWrapper, authRefFields); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Failed to retrieve authority references: reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getAuthorityRefs", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Failed to retrieve authority references").type("text/plain").build(); - throw new WebApplicationException(response); - } - return authRefList; - } - - /** - * Gets the loanout list. - * - * @param csidList the csid list - * - * @return the loanout list - */ - @Deprecated - public LoansoutCommonList getLoanoutList(List csidList) { - LoansoutCommonList loanoutObjectList = new LoansoutCommonList(); - try { - ServiceContext ctx = createServiceContext(); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).get(ctx, csidList, handler); - loanoutObjectList = (LoansoutCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getLoanoutList", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return loanoutObjectList; - } - - /** - * Update loanout. - * - * @param csid the csid - * @param theUpdate the the update - * - * @return the multipart output - */ - @PUT - @Path("{csid}") - public byte[] updateLoanout( - @PathParam("csid") String csid, - String xmlText) { - if (logger.isDebugEnabled()) { - logger.debug("updateLoanout with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("updateLoanout: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "update failed on Loanout csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - PoxPayloadIn update = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(update); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).update(ctx, csid, handler); - result = ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Update failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in updateLoanout", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Update failed on Loanout 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 result.getBytes(); - } - - /** - * Delete loanout. - * - * @param csid the csid - * - * @return the response - */ - @DELETE - @Path("{csid}") - public Response deleteLoanout(@PathParam("csid") String csid) { - - if (logger.isDebugEnabled()) { - logger.debug("deleteLoanout with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("deleteLoanout: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "delete failed on Loanout csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - try { - ServiceContext ctx = createServiceContext(); - getRepositoryClient(ctx).delete(ctx, csid); - return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Delete failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deleteLoanout", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Delete failed on Loanout 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); - } - } - - /** - * Search loansout. - * - * @param keywords the keywords - * - * @return the loansout common list - */ - private LoansoutCommonList searchLoansout(MultivaluedMap queryParams, - String keywords) { - LoansoutCommonList loansoutObjectList; - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - - // perform a keyword search - if (keywords != null && !keywords.isEmpty()) { - String whereClause = QueryManager.createWhereClauseFromKeywords(keywords); - DocumentFilter documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); - if (logger.isDebugEnabled()) { - logger.debug("The WHERE clause is: " + documentFilter.getWhereClause()); - } - } - getRepositoryClient(ctx).getFiltered(ctx, handler); - loansoutObjectList = (LoansoutCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in search for Loansout", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return loansoutObjectList; - } } diff --git a/services/location/service/src/main/java/org/collectionspace/services/location/LocationAuthorityResource.java b/services/location/service/src/main/java/org/collectionspace/services/location/LocationAuthorityResource.java index 6f780fc3d..419289977 100644 --- a/services/location/service/src/main/java/org/collectionspace/services/location/LocationAuthorityResource.java +++ b/services/location/service/src/main/java/org/collectionspace/services/location/LocationAuthorityResource.java @@ -23,58 +23,16 @@ */ package org.collectionspace.services.location; -import java.util.List; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - import org.collectionspace.services.client.LocationAuthorityClient; -import org.collectionspace.services.common.vocabulary.AuthorityJAXBSchema; -import org.collectionspace.services.LocationJAXBSchema; -import org.collectionspace.services.common.AbstractMultiPartCollectionSpaceResourceImpl; -import org.collectionspace.services.common.ClientType; -import org.collectionspace.services.common.ServiceMain; -import org.collectionspace.services.common.authorityref.AuthorityRefDocList; -import org.collectionspace.services.common.authorityref.AuthorityRefList; -import org.collectionspace.services.common.context.MultipartServiceContext; -import org.collectionspace.services.common.context.MultipartServiceContextFactory; -import org.collectionspace.services.common.context.MultipartServiceContextImpl; -import org.collectionspace.services.common.context.ServiceBindingUtils; -import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.common.document.BadRequestException; -import org.collectionspace.services.common.document.DocumentException; -import org.collectionspace.services.common.document.DocumentFilter; -import org.collectionspace.services.common.document.DocumentHandler; -import org.collectionspace.services.common.document.DocumentNotFoundException; -import org.collectionspace.services.common.document.DocumentWrapper; -import org.collectionspace.services.common.repository.RepositoryClient; -import org.collectionspace.services.common.security.UnauthorizedException; import org.collectionspace.services.common.vocabulary.AuthorityResource; -import org.collectionspace.services.common.vocabulary.RefNameServiceUtils; -import org.collectionspace.services.common.vocabulary.RefNameUtils; -import org.collectionspace.services.nuxeo.client.java.RemoteDocumentModelHandlerImpl; import org.collectionspace.services.location.nuxeo.LocationDocumentModelHandler; -import org.jboss.resteasy.util.HttpResponseCodes; -import org.nuxeo.ecm.core.api.DocumentModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * The Class LocationAuthorityResource. - */ +import javax.ws.rs.Consumes; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; + @Path(LocationAuthorityClient.SERVICE_PATH) @Consumes("application/xml") @Produces("application/xml") @@ -88,33 +46,18 @@ public class LocationAuthorityResource private final static String locationServiceName = "locations"; private final static String LOCATIONS_COMMON = "locations_common"; - /** The logger. */ final Logger logger = LoggerFactory.getLogger(LocationAuthorityResource.class); - //FIXME retrieve client type from configuration - /** The Constant CLIENT_TYPE. */ - final static ClientType CLIENT_TYPE = ServiceMain.getInstance().getClientType(); - - /** - * Instantiates a new location authority resource. - */ + public LocationAuthorityResource() { super(LocationauthoritiesCommon.class, LocationAuthorityResource.class, LOCATIONAUTHORITIES_COMMON, LOCATIONS_COMMON); } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { return locationAuthorityServiceName; } - /** - * Gets the item service name. - * - * @return the item service name - */ public String getItemServiceName() { return locationServiceName; } diff --git a/services/media/service/src/main/java/org/collectionspace/services/media/MediaResource.java b/services/media/service/src/main/java/org/collectionspace/services/media/MediaResource.java index fcf4f6e73..ee745926a 100644 --- a/services/media/service/src/main/java/org/collectionspace/services/media/MediaResource.java +++ b/services/media/service/src/main/java/org/collectionspace/services/media/MediaResource.java @@ -23,22 +23,21 @@ */ package org.collectionspace.services.media; +import org.collectionspace.services.blob.BlobResource; import org.collectionspace.services.client.BlobClient; import org.collectionspace.services.client.MediaClient; import org.collectionspace.services.client.PayloadOutputPart; import org.collectionspace.services.client.PoxPayloadIn; import org.collectionspace.services.client.PoxPayloadOut; -import org.collectionspace.services.common.ResourceBase; import org.collectionspace.services.common.ClientType; +import org.collectionspace.services.common.ResourceBase; import org.collectionspace.services.common.ServiceMain; import org.collectionspace.services.common.ServiceMessages; import org.collectionspace.services.common.blob.BlobInput; import org.collectionspace.services.common.blob.BlobUtil; import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.blob.BlobResource; import org.collectionspace.services.nuxeo.client.java.CommonList; import org.jboss.resteasy.util.HttpResponseCodes; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,14 +50,9 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Context; -import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; - import java.io.InputStream; -import java.util.List; @Path(MediaClient.SERVICE_PATH) @Consumes("application/xml") diff --git a/services/movement/client/src/test/java/org/collectionspace/services/client/test/MovementSortByTest.java b/services/movement/client/src/test/java/org/collectionspace/services/client/test/MovementSortByTest.java index cb2836c02..ab59c5900 100644 --- a/services/movement/client/src/test/java/org/collectionspace/services/client/test/MovementSortByTest.java +++ b/services/movement/client/src/test/java/org/collectionspace/services/client/test/MovementSortByTest.java @@ -487,8 +487,7 @@ public class MovementSortByTest extends BaseServiceTest { if (logger.isDebugEnabled()) { logger.debug(testBanner(testName, CLASS_NAME)); } - // FIXME: Ultimately, this should return a BAD_REQUEST status. - testSetup(STATUS_INTERNAL_SERVER_ERROR, ServiceRequestType.READ); + testSetup(STATUS_BAD_REQUEST, ServiceRequestType.READ); // Submit the request to the service and store the response. MovementClient client = new MovementClient(); @@ -517,8 +516,7 @@ public class MovementSortByTest extends BaseServiceTest { if (logger.isDebugEnabled()) { logger.debug(testBanner(testName, CLASS_NAME)); } - // FIXME: Ultimately, this should return a BAD_REQUEST status. - testSetup(STATUS_INTERNAL_SERVER_ERROR, ServiceRequestType.READ); + testSetup(STATUS_BAD_REQUEST, ServiceRequestType.READ); // Submit the request to the service and store the response. MovementClient client = new MovementClient(); diff --git a/services/movement/service/pom.xml b/services/movement/service/pom.xml index 9eabc256c..231aa51a2 100644 --- a/services/movement/service/pom.xml +++ b/services/movement/service/pom.xml @@ -24,6 +24,11 @@ org.collectionspace.services.movement.jaxb ${project.version} + + org.collectionspace.services + org.collectionspace.services.movement.client + ${project.version} + org.collectionspace.services org.collectionspace.services.collectionobject.jaxb diff --git a/services/movement/service/src/main/java/org/collectionspace/services/movement/MovementResource.java b/services/movement/service/src/main/java/org/collectionspace/services/movement/MovementResource.java index 6a56a1bf9..77faf3c3c 100644 --- a/services/movement/service/src/main/java/org/collectionspace/services/movement/MovementResource.java +++ b/services/movement/service/src/main/java/org/collectionspace/services/movement/MovementResource.java @@ -23,475 +23,42 @@ */ package org.collectionspace.services.movement; -import java.util.List; +import org.collectionspace.services.client.MovementClient; +import org.collectionspace.services.common.ResourceBase; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; import javax.ws.rs.Path; -import javax.ws.rs.PathParam; import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - -import org.collectionspace.services.client.IQueryManager; -import org.collectionspace.services.client.PoxPayloadIn; -import org.collectionspace.services.client.PoxPayloadOut; -import org.collectionspace.services.common.AbstractMultiPartCollectionSpaceResourceImpl; -import org.collectionspace.services.common.ClientType; -import org.collectionspace.services.common.ServiceMain; -import org.collectionspace.services.common.ServiceMessages; -import org.collectionspace.services.common.authorityref.AuthorityRefList; -import org.collectionspace.services.common.context.MultipartServiceContextImpl; -import org.collectionspace.services.common.context.ServiceBindingUtils; -import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.common.document.DocumentFilter; -import org.collectionspace.services.common.document.DocumentHandler; -import org.collectionspace.services.common.document.DocumentNotFoundException; -import org.collectionspace.services.common.document.DocumentWrapper; -//import org.collectionspace.services.common.query.IQueryManager; -import org.collectionspace.services.common.query.QueryManager; -import org.collectionspace.services.common.security.UnauthorizedException; -import org.collectionspace.services.movement.MovementsCommon; -import org.collectionspace.services.movement.MovementsCommonList; -import org.collectionspace.services.nuxeo.client.java.DocumentModelHandler; -import org.collectionspace.services.nuxeo.client.java.RemoteDocumentModelHandlerImpl; -import org.jboss.resteasy.util.HttpResponseCodes; -import org.nuxeo.ecm.core.api.DocumentModel; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * MovementResource.java * * Handles requests to the Movement service, orchestrates the retrieval * of relevant resources, and returns responses to the client. - * - * $LastChangedRevision$ - * $LastChangedDate$ */ -@Path("/movements") +@Path(MovementClient.SERVICE_PATH) @Consumes("application/xml") @Produces("application/xml") -public class MovementResource extends AbstractMultiPartCollectionSpaceResourceImpl { +public class MovementResource extends ResourceBase { - /** The Constant serviceName. */ - private final static String serviceName = "movements"; - /** The logger. */ final Logger logger = LoggerFactory.getLogger(MovementResource.class); - //FIXME retrieve client type from configuration - /** The Constant CLIENT_TYPE. */ - final static ClientType CLIENT_TYPE = ServiceMain.getInstance().getClientType(); - - /** - * Instantiates a new movement resource. - */ - public MovementResource() { - // do nothing - } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getVersionString() - */ @Override protected String getVersionString() { - /** The last change revision. */ final String lastChangeRevision = "$LastChangedRevision$"; return lastChangeRevision; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { - return serviceName; + return MovementClient.SERVICE_NAME; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getCommonPartClass() - */ @Override public Class getCommonPartClass() { return MovementsCommon.class; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#createDocumentHandler(org.collectionspace.services.common.context.ServiceContext) - */ -// @Override -// public DocumentHandler createDocumentHandler(ServiceContext ctx) throws Exception { -// DocumentHandler docHandler = ctx.getDocumentHandler(); -// if (ctx.getInput() != null) { -// Object obj = ((MultipartServiceContext) ctx).getInputPart(ctx.getCommonPartLabel(), MovementsCommon.class); -// if (obj != null) { -// docHandler.setCommonPart((MovementsCommon) obj); -// } -// } -// return docHandler; -// } - /** - * Creates the movement. - * - * @param input the input - * - * @return the response - */ - @POST - public Response createMovement(String xmlText) { - try { - PoxPayloadIn input = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(input); - DocumentHandler handler = createDocumentHandler(ctx); - String csid = getRepositoryClient(ctx).create(ctx, handler); - //movementObject.setCsid(csid); - UriBuilder path = UriBuilder.fromResource(MovementResource.class); - path.path("" + csid); - Response response = Response.created(path.build()).build(); - return response; - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity( - ServiceMessages.CREATE_FAILED + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in createMovement", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.CREATE_FAILED + e.getMessage()).type("text/plain").build(); - throw new WebApplicationException(response); - } - } - - /** - * Gets the movement. - * - * @param csid the csid - * - * @return the movement - */ - @GET - @Path("{csid}") - public byte[] getMovement( - @Context UriInfo ui, - @PathParam("csid") String csid) { - if (logger.isDebugEnabled()) { - logger.debug("getMovement with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("getMovement:" + ServiceMessages.MISSING_CSID); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.READ_FAILED + ServiceMessages.MISSING_CSID).type("text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).get(ctx, csid, handler); - result = ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity( - ServiceMessages.READ_FAILED + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getMovement", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.READ_FAILED + ServiceMessages.resourceNotFoundMsg(csid)).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getMovement", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.READ_FAILED + e.getMessage()).type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.READ_FAILED + ServiceMessages.resourceNotFoundMsg(csid)).type("text/plain").build(); - throw new WebApplicationException(response); - } - return result.getBytes(); - } - - /** - * Gets the movement list. - * - * @param ui the ui - * @param keywords the keywords - * - * @return the movement list - */ - @GET - @Produces("application/xml") - public MovementsCommonList getMovementList(@Context UriInfo ui, - @QueryParam(IQueryManager.SEARCH_TYPE_KEYWORDS_KW) String keywords) { - MovementsCommonList result = null; - MultivaluedMap queryParams = ui.getQueryParameters(); - if (keywords != null) { - result = searchMovements(queryParams, keywords); - } else { - result = getMovementList(queryParams); - } - - return result; - } - - /** - * Gets the movement list. - * - * @return the movement list - */ - private MovementsCommonList getMovementList(MultivaluedMap queryParams) { - MovementsCommonList movementObjectList; - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).getFiltered(ctx, handler); - movementObjectList = (MovementsCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity( - ServiceMessages.LIST_FAILED + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getMovementList", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.LIST_FAILED + e.getMessage()).type("text/plain").build(); - throw new WebApplicationException(response); - } - return movementObjectList; - } - - /** - * Gets the authority refs. - * - * @param csid the csid - * @param ui the ui - * - * @return the authority refs - */ - @GET - @Path("{csid}/authorityrefs") - @Produces("application/xml") - public AuthorityRefList getAuthorityRefs( - @PathParam("csid") String csid, - @Context UriInfo ui) { - AuthorityRefList authRefList = null; - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentWrapper docWrapper = - getRepositoryClient(ctx).getDoc(ctx, csid); - DocumentModelHandler handler = (DocumentModelHandler) createDocumentHandler(ctx); - List authRefFields = - ((MultipartServiceContextImpl) ctx).getCommonPartPropertyValues( - ServiceBindingUtils.AUTH_REF_PROP, ServiceBindingUtils.QUALIFIED_PROP_NAMES); - authRefList = handler.getAuthorityRefs(docWrapper, authRefFields); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity( - ServiceMessages.AUTH_REFS_FAILED + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getAuthorityRefs", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.AUTH_REFS_FAILED + e.getMessage()).type("text/plain").build(); - throw new WebApplicationException(response); - } - return authRefList; - } - - /** - * Gets the movement list. - * - * @param csidList the csid list - * - * @return the movement list - */ - @Deprecated - public MovementsCommonList getMovementList(List csidList) { - MovementsCommonList movementObjectList = new MovementsCommonList(); - try { - ServiceContext ctx = createServiceContext(); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).get(ctx, csidList, handler); - movementObjectList = (MovementsCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity( - ServiceMessages.LIST_FAILED + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getMovementList", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.LIST_FAILED + e.getMessage()).type("text/plain").build(); - throw new WebApplicationException(response); - } - return movementObjectList; - } - - /** - * Update movement. - * - * @param csid the csid - * @param theUpdate the the update - * - * @return the multipart output - */ - @PUT - @Path("{csid}") - public byte[] updateMovement( - @PathParam("csid") String csid, - String xmlText) { - if (logger.isDebugEnabled()) { - logger.debug("updateMovement with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("updateMovement: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - ServiceMessages.UPDATE_FAILED + ServiceMessages.MISSING_CSID).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - PoxPayloadIn update = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(update); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).update(ctx, csid, handler); - result = ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity( - ServiceMessages.UPDATE_FAILED + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in updateMovement", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.UPDATE_FAILED + ServiceMessages.resourceNotFoundMsg(csid)).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.UPDATE_FAILED + e.getMessage()).type("text/plain").build(); - throw new WebApplicationException(response); - } - return result.getBytes(); - } - - /** - * Delete movement. - * - * @param csid the csid - * - * @return the response - */ - @DELETE - @Path("{csid}") - public Response deleteMovement(@PathParam("csid") String csid) { - - if (logger.isDebugEnabled()) { - logger.debug("deleteMovement with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("deleteMovement: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "delete failed on Movement csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - try { - ServiceContext ctx = createServiceContext(); - getRepositoryClient(ctx).delete(ctx, csid); - return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity( - ServiceMessages.DELETE_FAILED + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deleteMovement", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - ServiceMessages.DELETE_FAILED + ServiceMessages.resourceNotFoundMsg(csid)).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.DELETE_FAILED + e.getMessage()).type("text/plain").build(); - throw new WebApplicationException(response); - } - } - - /** - * Search movements. - * - * @param keywords the keywords - * - * @return the movements common list - */ - private MovementsCommonList searchMovements(MultivaluedMap queryParams, - String keywords) { - MovementsCommonList movementsObjectList; - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - - // perform a keyword search - if (keywords != null && !keywords.isEmpty()) { - String whereClause = QueryManager.createWhereClauseFromKeywords(keywords); - DocumentFilter documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); - if (logger.isDebugEnabled()) { - logger.debug("The WHERE clause is: " + documentFilter.getWhereClause()); - } - } - getRepositoryClient(ctx).getFiltered(ctx, handler); - movementsObjectList = (MovementsCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity( - ServiceMessages.SEARCH_FAILED + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in search for Movements", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity( - ServiceMessages.SEARCH_FAILED + e.getMessage()).type("text/plain").build(); - throw new WebApplicationException(response); - } - return movementsObjectList; - } } diff --git a/services/note/client/src/main/java/org/collectionspace/services/client/NoteClient.java b/services/note/client/src/main/java/org/collectionspace/services/client/NoteClient.java index 92d88fc56..ac2bef72a 100644 --- a/services/note/client/src/main/java/org/collectionspace/services/client/NoteClient.java +++ b/services/note/client/src/main/java/org/collectionspace/services/client/NoteClient.java @@ -36,7 +36,8 @@ import org.jboss.resteasy.spi.ResteasyProviderFactory; public class NoteClient extends AbstractServiceClientImpl { public static final String SERVICE_NAME = "notes"; - public static final String SERVICE_PATH_COMPONENT = "notes"; + public static final String SERVICE_PATH_COMPONENT = SERVICE_NAME; + public static final String SERVICE_PATH = "/" + SERVICE_PATH_COMPONENT; @Override public String getServiceName() { diff --git a/services/note/service/pom.xml b/services/note/service/pom.xml index 28cd8292c..6b3e197d7 100644 --- a/services/note/service/pom.xml +++ b/services/note/service/pom.xml @@ -23,6 +23,11 @@ org.collectionspace.services.note.jaxb ${project.version} + + org.collectionspace.services + org.collectionspace.services.note.client + ${project.version} + org.testng diff --git a/services/note/service/src/main/java/org/collectionspace/services/note/NoteResource.java b/services/note/service/src/main/java/org/collectionspace/services/note/NoteResource.java index 63894b026..368b7663f 100644 --- a/services/note/service/src/main/java/org/collectionspace/services/note/NoteResource.java +++ b/services/note/service/src/main/java/org/collectionspace/services/note/NoteResource.java @@ -23,278 +23,36 @@ */ package org.collectionspace.services.note; +import org.collectionspace.services.client.NoteClient; +import org.collectionspace.services.common.ResourceBase; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + 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.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - -import org.collectionspace.services.client.PoxPayloadIn; -import org.collectionspace.services.client.PoxPayloadOut; -import org.collectionspace.services.common.AbstractMultiPartCollectionSpaceResourceImpl; -import org.collectionspace.services.common.ClientType; -import org.collectionspace.services.common.ServiceMain; -import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.common.document.DocumentNotFoundException; -import org.collectionspace.services.common.document.DocumentHandler; - -import org.jboss.resteasy.util.HttpResponseCodes; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -/** - * The Class NoteResource. - */ -@Path("/notes") +@Path(NoteClient.SERVICE_PATH) @Consumes("application/xml") -@Produces("application/xml;charset=UTF-8") -public class NoteResource extends - AbstractMultiPartCollectionSpaceResourceImpl { - - /** The Constant serviceName. */ - private final static String serviceName = "notes"; - - /** The logger. */ +@Produces("application/xml") +//@Produces("application/xml;charset=UTF-8") +public class NoteResource extends ResourceBase { final Logger logger = LoggerFactory.getLogger(NoteResource.class); - //FIXME retrieve client type from configuration - /** The Constant CLIENT_TYPE. */ - final static ClientType CLIENT_TYPE = ServiceMain.getInstance().getClientType(); - - /** - * Instantiates a new note resource. - */ - public NoteResource() { - // do nothing - } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getVersionString() - */ @Override protected String getVersionString() { - /** The last change revision. */ final String lastChangeRevision = "$LastChangedRevision: 1982 $"; return lastChangeRevision; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ - @Override + @Override public String getServiceName() { - return serviceName; + return NoteClient.SERVICE_PATH_COMPONENT; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getCommonPartClass() - */ @Override public Class getCommonPartClass() { return NotesCommon.class; } - - - /** - * Creates the note. - * - * @param input the input - * - * @return the response - */ - @POST - public Response createNote(String xmlText) { - try { - PoxPayloadIn input = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(input); - DocumentHandler handler = createDocumentHandler(ctx); - String csid = getRepositoryClient(ctx).create(ctx, handler); - UriBuilder path = UriBuilder.fromResource(NoteResource.class); - path.path("" + csid); - Response response = Response.created(path.build()).build(); - return response; - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in createNote", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Create failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - } - /** - * Gets the note. - * - * @param csid the csid - * - * @return the note - */ - @GET - @Path("{csid}") - public String getNote( - @PathParam("csid") String csid) { - if (logger.isDebugEnabled()) { - logger.debug("getNote with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("getNote: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "Get failed on Note csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - ServiceContext ctx = createServiceContext(); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).get(ctx, csid, handler); - result = ctx.getOutput(); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getNote", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed on Note csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getNote", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Get failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed, the requested Note CSID:" + csid + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); - } - return result.toXML(); - } - - /** - * Gets the note list. - * - * @param ui the ui - * - * @return the note list - */ - @GET - @Produces("application/xml") - public NotesCommonList getNoteList(@Context UriInfo ui) { - MultivaluedMap queryParams = ui.getQueryParameters(); - NotesCommonList noteObjectList = new NotesCommonList(); - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).getFiltered(ctx, handler); - noteObjectList = (NotesCommonList) handler.getCommonPartList(); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getNoteList", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return noteObjectList; - } - - /** - * Update note. - * - * @param csid the csid - * @param theUpdate the the update - * - * @return the multipart output - */ - @PUT - @Path("{csid}") - public String updateNote( - @PathParam("csid") String csid, - String xmlText) { - if (logger.isDebugEnabled()) { - logger.debug("updateNote with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("updateNote: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "update failed on Note csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - PoxPayloadIn update = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(update); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).update(ctx, csid, handler); - result = ctx.getOutput(); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in updateNote", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Update failed on Note 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 result.toXML(); - } - - /** - * Delete note. - * - * @param csid the csid - * - * @return the response - */ - @DELETE - @Path("{csid}") - public Response deleteNote(@PathParam("csid") String csid) { - - if (logger.isDebugEnabled()) { - logger.debug("deleteNote with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("deleteNote: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "Delete failed on Note csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - try { - ServiceContext ctx = createServiceContext(); - getRepositoryClient(ctx).delete(ctx, csid); - return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in deleteNote", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Delete failed on Note 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); - } - - } } diff --git a/services/organization/service/src/main/java/org/collectionspace/services/organization/OrgAuthorityResource.java b/services/organization/service/src/main/java/org/collectionspace/services/organization/OrgAuthorityResource.java index a417bf369..bcede372a 100644 --- a/services/organization/service/src/main/java/org/collectionspace/services/organization/OrgAuthorityResource.java +++ b/services/organization/service/src/main/java/org/collectionspace/services/organization/OrgAuthorityResource.java @@ -23,19 +23,16 @@ */ package org.collectionspace.services.organization; -import javax.ws.rs.Consumes; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; - import org.collectionspace.services.client.OrgAuthorityClient; import org.collectionspace.services.contact.AuthorityResourceWithContacts; import org.collectionspace.services.organization.nuxeo.OrganizationDocumentModelHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * The Class OrgAuthorityResource. - */ +import javax.ws.rs.Consumes; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; + @Path("/" + OrgAuthorityClient.SERVICE_PATH_COMPONENT) @Consumes("application/xml") @Produces("application/xml") @@ -51,34 +48,20 @@ public class OrgAuthorityResource extends final Logger logger = LoggerFactory.getLogger(OrgAuthorityResource.class); - /** - * Instantiates a new org authority resource. - */ public OrgAuthorityResource() { super(OrgauthoritiesCommon.class, OrgAuthorityResource.class, ORGAUTHORITIES_COMMON, ORGANIZATIONS_COMMON); } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { return orgAuthorityServiceName; } - /** - * Gets the item service name. - * - * @return the item service name - */ public String getItemServiceName() { return organizationServiceName; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getCommonPartClass() - */ @Override public Class getCommonPartClass() { return OrgauthoritiesCommon.class; diff --git a/services/person/service/src/main/java/org/collectionspace/services/person/PersonAuthorityResource.java b/services/person/service/src/main/java/org/collectionspace/services/person/PersonAuthorityResource.java index 9ae81cd1f..3b32b060e 100644 --- a/services/person/service/src/main/java/org/collectionspace/services/person/PersonAuthorityResource.java +++ b/services/person/service/src/main/java/org/collectionspace/services/person/PersonAuthorityResource.java @@ -23,20 +23,16 @@ */ package org.collectionspace.services.person; -import javax.ws.rs.Consumes; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; - import org.collectionspace.services.client.PersonAuthorityClient; import org.collectionspace.services.contact.AuthorityResourceWithContacts; import org.collectionspace.services.person.nuxeo.PersonDocumentModelHandler; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * The Class PersonAuthorityResource. - */ +import javax.ws.rs.Consumes; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; + @Path(PersonAuthorityClient.SERVICE_PATH) @Consumes("application/xml") @Produces("application/xml") @@ -44,35 +40,18 @@ public class PersonAuthorityResource extends AuthorityResourceWithContacts { -// private final static String personAuthorityServiceName = "personauthorities"; -// private final static String PERSONAUTHORITIES_COMMON = "personauthorities_common"; - -// private final static String personServiceName = "persons"; -// private final static String PERSONS_COMMON = "persons_common"; - final Logger logger = LoggerFactory.getLogger(PersonAuthorityResource.class); - /** - * Instantiates a new person authority resource. - */ public PersonAuthorityResource() { super(PersonauthoritiesCommon.class, PersonAuthorityResource.class, PersonAuthorityClient.SERVICE_COMMON_PART_NAME, PersonAuthorityClient.SERVICE_ITEM_COMMON_PART_NAME); } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { return PersonAuthorityClient.SERVICE_NAME; } - /** - * Gets the item service name. - * - * @return the item service name - */ @Override public String getItemServiceName() { return PersonAuthorityClient.SERVICE_ITEM_NAME; diff --git a/services/relation/service/src/main/java/org/collectionspace/services/relation/RelationResource.java b/services/relation/service/src/main/java/org/collectionspace/services/relation/RelationResource.java index b74764c19..4e7eb2178 100644 --- a/services/relation/service/src/main/java/org/collectionspace/services/relation/RelationResource.java +++ b/services/relation/service/src/main/java/org/collectionspace/services/relation/RelationResource.java @@ -26,31 +26,27 @@ */ package org.collectionspace.services.relation; -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.UriInfo; - import org.collectionspace.services.client.IQueryManager; import org.collectionspace.services.client.PoxPayloadIn; import org.collectionspace.services.client.PoxPayloadOut; import org.collectionspace.services.common.ResourceBase; import org.collectionspace.services.common.ServiceMessages; -import org.collectionspace.services.common.relation.IRelationsManager; -import org.collectionspace.services.common.relation.nuxeo.RelationsUtils; import org.collectionspace.services.common.context.ServiceContext; import org.collectionspace.services.common.document.DocumentHandler; - -import org.collectionspace.services.jaxb.AbstractCommonList; - +import org.collectionspace.services.common.relation.IRelationsManager; +import org.collectionspace.services.common.relation.nuxeo.RelationsUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.core.UriInfo; + @Path("/relations") @Consumes("application/xml") @Produces("application/xml") diff --git a/services/report/client/src/main/java/org/collectionspace/services/client/ReportClient.java b/services/report/client/src/main/java/org/collectionspace/services/client/ReportClient.java index ba6a512dd..bcd845086 100644 --- a/services/report/client/src/main/java/org/collectionspace/services/client/ReportClient.java +++ b/services/report/client/src/main/java/org/collectionspace/services/client/ReportClient.java @@ -39,7 +39,8 @@ import org.jboss.resteasy.client.ClientResponse; public class ReportClient extends AbstractPoxServiceClientImpl { public static final String SERVICE_NAME = "reports"; - public static final String SERVICE_PATH_COMPONENT = "reports"; + public static final String SERVICE_PATH_COMPONENT = SERVICE_NAME; + public static final String SERVICE_PATH = "/" + SERVICE_PATH_COMPONENT; @Override public String getServiceName() { diff --git a/services/report/service/pom.xml b/services/report/service/pom.xml index d2f025df5..f2c8ed957 100644 --- a/services/report/service/pom.xml +++ b/services/report/service/pom.xml @@ -30,6 +30,11 @@ org.collectionspace.services.report.jaxb ${project.version} + + org.collectionspace.services + org.collectionspace.services.report.client + ${project.version} + org.collectionspace.services org.collectionspace.services.collectionobject.jaxb diff --git a/services/report/service/src/main/java/org/collectionspace/services/report/ReportResource.java b/services/report/service/src/main/java/org/collectionspace/services/report/ReportResource.java index 9afb682cb..7935018b1 100644 --- a/services/report/service/src/main/java/org/collectionspace/services/report/ReportResource.java +++ b/services/report/service/src/main/java/org/collectionspace/services/report/ReportResource.java @@ -23,215 +23,70 @@ */ package org.collectionspace.services.report; -import java.io.File; -import java.io.FileInputStream; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.HashMap; -import java.util.List; - -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.security.auth.login.LoginException; -import javax.sql.DataSource; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; - import org.collectionspace.services.ReportJAXBSchema; -import org.collectionspace.services.client.IQueryManager; import org.collectionspace.services.client.PoxPayloadIn; import org.collectionspace.services.client.PoxPayloadOut; -import org.collectionspace.services.common.AbstractMultiPartCollectionSpaceResourceImpl; -import org.collectionspace.services.common.ClientType; +import org.collectionspace.services.client.ReportClient; +import org.collectionspace.services.common.ResourceBase; import org.collectionspace.services.common.ServiceMain; import org.collectionspace.services.common.config.ConfigReader; import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.common.document.DocumentFilter; -import org.collectionspace.services.common.document.DocumentHandler; import org.collectionspace.services.common.document.DocumentNotFoundException; import org.collectionspace.services.common.document.DocumentWrapper; -import org.collectionspace.services.common.query.QueryManager; import org.collectionspace.services.common.security.UnauthorizedException; -import org.jboss.resteasy.util.HttpResponseCodes; import org.nuxeo.ecm.core.api.DocumentModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * The Class ReportResource. - */ -@Path("/reports") -@Consumes("application/xml") -@Produces("application/xml;charset=UTF-8") -public class ReportResource extends - AbstractMultiPartCollectionSpaceResourceImpl { +import javax.naming.InitialContext; +import javax.naming.NamingException; +import javax.security.auth.login.LoginException; +import javax.sql.DataSource; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Response; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; - /** The Constant serviceName. */ - private final static String serviceName = "reports"; - +@Path(ReportClient.SERVICE_PATH) +@Consumes("application/xml") +@Produces("application/xml") +//@Produces("application/xml;charset=UTF-8") +public class ReportResource extends ResourceBase { private static String repositoryName = "NuxeoDS"; private static String reportsFolder = "reports"; - - /** The logger. */ final Logger logger = LoggerFactory.getLogger(ReportResource.class); - //FIXME retrieve client type from configuration - /** The Constant CLIENT_TYPE. */ - final static ClientType CLIENT_TYPE = ServiceMain.getInstance().getClientType(); - - /** - * Instantiates a new report resource. - */ - public ReportResource() { - // do nothing - } - - public static String getRepositoryName() { - return repositoryName; - } - public static void setRepositoryName(String repositoryName) { - ReportResource.repositoryName = repositoryName; - } - - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getVersionString() - */ @Override protected String getVersionString() { - /** The last change revision. */ final String lastChangeRevision = "$LastChangedRevision: 1982 $"; return lastChangeRevision; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { - return serviceName; + return ReportClient.SERVICE_NAME; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getCommonPartClass() - */ @Override public Class getCommonPartClass() { return ReportsCommon.class; } - - /** - * Creates the report. - * - * @param input the input - * - * @return the response - */ - @POST - public Response createReport(String xmlText) { - try { - PoxPayloadIn input = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(input); - DocumentHandler handler = createDocumentHandler(ctx); - String csid = getRepositoryClient(ctx).create(ctx, handler); - UriBuilder path = UriBuilder.fromResource(ReportResource.class); - path.path("" + csid); - Response response = Response.created(path.build()).build(); - return response; - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Create failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in createReport", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Create failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - } /** * Gets the report. - * * @param csid the csid - * - * @return the report - */ - @GET - @Path("{csid}") - public byte[] getReport( - @Context UriInfo ui, - @PathParam("csid") String csid) { - if (logger.isDebugEnabled()) { - logger.debug("getReport with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("getReport: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "get failed on Report csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).get(ctx, csid, handler); - result = ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Get failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("getReport", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed on Report csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("getReport", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Get failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - if (result == null) { - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Get failed, the requested Report CSID:" + csid + ": was not found.").type( - "text/plain").build(); - throw new WebApplicationException(response); - } - return result.getBytes(); - } - - /** - * Gets the report. - * - * @param csid the csid - * * @return the report */ @GET @@ -345,221 +200,6 @@ public class ReportResource extends } } } - - } - - /** - * Gets the report list. - * - * @param ui the ui - * @param keywords the keywords - * - * @return the report list - */ - @GET - @Produces("application/xml") - public ReportsCommonList getReportList(@Context UriInfo ui, - @QueryParam(IQueryManager.SEARCH_TYPE_KEYWORDS_KW) String keywords) { - ReportsCommonList result = null; - MultivaluedMap queryParams = ui.getQueryParameters(); - - if (keywords != null) { - result = searchReports(queryParams, keywords); - } else { - result = getReportList(queryParams); - } - - return result; - } - - /** - * Gets the report list. - * - * @return the report list - */ - private ReportsCommonList getReportList(MultivaluedMap queryParams) { - ReportsCommonList reportObjectList; - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).getFiltered(ctx, handler); - reportObjectList = (ReportsCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getReportList", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return reportObjectList; - } - - - /** - * Gets the report list. - * - * @param csidList the csid list - * - * @return the report list - public ReportsCommonList getReportList(List csidList) { - ReportsCommonList reportObjectList = new ReportsCommonList(); - try { - ServiceContext ctx = createServiceContext(); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).get(ctx, csidList, handler); - reportObjectList = (ReportsCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in getReportList", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return reportObjectList; - } - */ - - /** - * Update report. - * - * @param csid the csid - * @param theUpdate the the update - * - * @return the multipart output - */ - @PUT - @Path("{csid}") - public byte[] updateReport( - @PathParam("csid") String csid, - String xmlText) { - if (logger.isDebugEnabled()) { - logger.debug("updateReport with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("updateReport: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "update failed on Report csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - PoxPayloadOut result = null; - try { - PoxPayloadIn update = new PoxPayloadIn(xmlText); - ServiceContext ctx = createServiceContext(update); - DocumentHandler handler = createDocumentHandler(ctx); - getRepositoryClient(ctx).update(ctx, csid, handler); - result = ctx.getOutput(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Update failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caugth exception in updateReport", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Update failed on Report 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 result.getBytes(); } - /** - * Delete report. - * - * @param csid the csid - * - * @return the response - */ - @DELETE - @Path("{csid}") - public Response deleteReport(@PathParam("csid") String csid) { - - if (logger.isDebugEnabled()) { - logger.debug("deleteReport with csid=" + csid); - } - if (csid == null || "".equals(csid)) { - logger.error("deleteReport: missing csid!"); - Response response = Response.status(Response.Status.BAD_REQUEST).entity( - "delete failed on Report csid=" + csid).type( - "text/plain").build(); - throw new WebApplicationException(response); - } - try { - ServiceContext ctx = createServiceContext(); - getRepositoryClient(ctx).delete(ctx, csid); - return Response.status(HttpResponseCodes.SC_OK).build(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Delete failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (DocumentNotFoundException dnfe) { - if (logger.isDebugEnabled()) { - logger.debug("caught exception in deleteReport", dnfe); - } - Response response = Response.status(Response.Status.NOT_FOUND).entity( - "Delete failed on Report 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); - } - } - - /** - * Search reports. - * - * @param keywords the keywords - * - * @return the reports common list - */ - private ReportsCommonList searchReports(MultivaluedMap queryParams, - String keywords) { - ReportsCommonList reportsObjectList; - try { - ServiceContext ctx = createServiceContext(queryParams); - DocumentHandler handler = createDocumentHandler(ctx); - - // perform a keyword search - if (keywords != null && !keywords.isEmpty()) { - String whereClause = QueryManager.createWhereClauseFromKeywords(keywords); - DocumentFilter documentFilter = handler.getDocumentFilter(); - documentFilter.appendWhereClause(whereClause, IQueryManager.SEARCH_QUALIFIER_AND); - if (logger.isDebugEnabled()) { - logger.debug("The WHERE clause is: " + documentFilter.getWhereClause()); - } - } - getRepositoryClient(ctx).getFiltered(ctx, handler); - reportsObjectList = (ReportsCommonList) handler.getCommonPartList(); - } catch (UnauthorizedException ue) { - Response response = Response.status( - Response.Status.UNAUTHORIZED).entity("Index failed reason " + ue.getErrorReason()).type("text/plain").build(); - throw new WebApplicationException(response); - } catch (Exception e) { - if (logger.isDebugEnabled()) { - logger.debug("Caught exception in search for Reports", e); - } - Response response = Response.status( - Response.Status.INTERNAL_SERVER_ERROR).entity("Index failed").type("text/plain").build(); - throw new WebApplicationException(response); - } - return reportsObjectList; - } } diff --git a/services/taxonomy/service/src/main/java/org/collectionspace/services/taxonomy/TaxonomyAuthorityResource.java b/services/taxonomy/service/src/main/java/org/collectionspace/services/taxonomy/TaxonomyAuthorityResource.java index 2dd0227ee..6b3e31e29 100644 --- a/services/taxonomy/service/src/main/java/org/collectionspace/services/taxonomy/TaxonomyAuthorityResource.java +++ b/services/taxonomy/service/src/main/java/org/collectionspace/services/taxonomy/TaxonomyAuthorityResource.java @@ -23,58 +23,16 @@ */ package org.collectionspace.services.taxonomy; -import java.util.List; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - import org.collectionspace.services.client.TaxonomyAuthorityClient; -import org.collectionspace.services.common.vocabulary.AuthorityJAXBSchema; -import org.collectionspace.services.TaxonJAXBSchema; -import org.collectionspace.services.common.AbstractMultiPartCollectionSpaceResourceImpl; -import org.collectionspace.services.common.ClientType; -import org.collectionspace.services.common.ServiceMain; -import org.collectionspace.services.common.authorityref.AuthorityRefDocList; -import org.collectionspace.services.common.authorityref.AuthorityRefList; -import org.collectionspace.services.common.context.MultipartServiceContext; -import org.collectionspace.services.common.context.MultipartServiceContextFactory; -import org.collectionspace.services.common.context.MultipartServiceContextImpl; -import org.collectionspace.services.common.context.ServiceBindingUtils; -import org.collectionspace.services.common.context.ServiceContext; -import org.collectionspace.services.common.document.BadRequestException; -import org.collectionspace.services.common.document.DocumentException; -import org.collectionspace.services.common.document.DocumentFilter; -import org.collectionspace.services.common.document.DocumentHandler; -import org.collectionspace.services.common.document.DocumentNotFoundException; -import org.collectionspace.services.common.document.DocumentWrapper; -import org.collectionspace.services.common.repository.RepositoryClient; -import org.collectionspace.services.common.security.UnauthorizedException; import org.collectionspace.services.common.vocabulary.AuthorityResource; -import org.collectionspace.services.common.vocabulary.RefNameServiceUtils; -import org.collectionspace.services.common.vocabulary.RefNameUtils; -import org.collectionspace.services.nuxeo.client.java.RemoteDocumentModelHandlerImpl; import org.collectionspace.services.taxonomy.nuxeo.TaxonDocumentModelHandler; -import org.jboss.resteasy.util.HttpResponseCodes; -import org.nuxeo.ecm.core.api.DocumentModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * The Class TaxonomyAuthorityResource. - */ +import javax.ws.rs.Consumes; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; + @Path(TaxonomyAuthorityClient.SERVICE_PATH) @Consumes("application/xml") @Produces("application/xml") @@ -85,33 +43,19 @@ public class TaxonomyAuthorityResource private final static String TAXONOMYAUTHORITY_COMMON = "taxonomyauthority_common"; private final static String taxonomyItemServiceName = "taxon"; private final static String TAXONOMYITEM_COMMON = "taxon_common"; - /** The logger. */ + final Logger logger = LoggerFactory.getLogger(TaxonomyAuthorityResource.class); - //FIXME retrieve client type from configuration - /** The Constant CLIENT_TYPE. */ - final static ClientType CLIENT_TYPE = ServiceMain.getInstance().getClientType(); - /** - * Instantiates a new taxonomy authority resource. - */ public TaxonomyAuthorityResource() { super(TaxonomyauthorityCommon.class, TaxonomyAuthorityResource.class, TAXONOMYAUTHORITY_COMMON, TAXONOMYITEM_COMMON); } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { return taxonomyAuthorityServiceName; } - /** - * Gets the item service name. - * - * @return the item service name - */ @Override public String getItemServiceName() { return taxonomyItemServiceName; diff --git a/services/vocabulary/service/src/main/java/org/collectionspace/services/vocabulary/VocabularyResource.java b/services/vocabulary/service/src/main/java/org/collectionspace/services/vocabulary/VocabularyResource.java index 6a0249ab7..d9e07a5f4 100644 --- a/services/vocabulary/service/src/main/java/org/collectionspace/services/vocabulary/VocabularyResource.java +++ b/services/vocabulary/service/src/main/java/org/collectionspace/services/vocabulary/VocabularyResource.java @@ -23,93 +23,43 @@ */ package org.collectionspace.services.vocabulary; -//import javax.ws.rs.Consumes; -//import javax.ws.rs.DELETE; -//import javax.ws.rs.GET; -//import javax.ws.rs.POST; -//import javax.ws.rs.PUT; -import javax.ws.rs.Path; -//import javax.ws.rs.PathParam; -//import javax.ws.rs.Produces; -//import javax.ws.rs.QueryParam; -//import javax.ws.rs.WebApplicationException; -//import javax.ws.rs.core.Context; -//import javax.ws.rs.core.MultivaluedMap; -//import javax.ws.rs.core.Response; -//import javax.ws.rs.core.UriBuilder; -//import javax.ws.rs.core.UriInfo; - -//import org.collectionspace.services.common.vocabulary.AuthorityJAXBSchema; -//import org.collectionspace.services.common.vocabulary.AuthorityItemJAXBSchema; -import org.collectionspace.services.common.vocabulary.AuthorityResource; import org.collectionspace.services.client.VocabularyClient; - -//import org.collectionspace.services.common.AbstractMultiPartCollectionSpaceResourceImpl; -//import org.collectionspace.services.common.ClientType; -//import org.collectionspace.services.common.ServiceMain; -//import org.collectionspace.services.common.context.ServiceContext; -//import org.collectionspace.services.common.document.BadRequestException; -//import org.collectionspace.services.common.document.DocumentFilter; -//import org.collectionspace.services.common.document.DocumentHandler; -//import org.collectionspace.services.common.document.DocumentNotFoundException; -//import org.collectionspace.services.common.security.UnauthorizedException; -//import org.collectionspace.services.common.query.IQueryManager; +import org.collectionspace.services.common.vocabulary.AuthorityResource; import org.collectionspace.services.vocabulary.nuxeo.VocabularyItemDocumentModelHandler; -//import org.jboss.resteasy.plugins.providers.multipart.PoxPayloadIn; -//import org.jboss.resteasy.plugins.providers.multipart.PoxPayloadOut; -//import org.jboss.resteasy.util.HttpResponseCodes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * The Class VocabularyResource. - */ -//@Path("/vocabularies") +import javax.ws.rs.Path; + @Path("/" + VocabularyClient.SERVICE_PATH_COMPONENT) public class VocabularyResource extends AuthorityResource { private final static String vocabularyServiceName = VocabularyClient.SERVICE_PATH_COMPONENT; -// private final static String vocabularyServiceName = "vocabularies"; private final static String VOCABULARIES_COMMON = "vocabularies_common"; private final static String vocabularyItemServiceName = "vocabularyitems"; private final static String VOCABULARYITEMS_COMMON = "vocabularyitems_common"; - /** The logger. */ final Logger logger = LoggerFactory.getLogger(VocabularyResource.class); - /** - * Instantiates a new VocabularyResource. - */ public VocabularyResource() { super(VocabulariesCommon.class, VocabularyResource.class, VOCABULARIES_COMMON, VOCABULARYITEMS_COMMON); } - /* (non-Javadoc) - * @see org.collectionspace.services.common.AbstractCollectionSpaceResourceImpl#getServiceName() - */ @Override public String getServiceName() { return vocabularyServiceName; } - /** - * Gets the item service name. - * - * @return the item service name - */ @Override public String getItemServiceName() { return vocabularyItemServiceName; } - /* (non-Javadoc) - * @see org.collectionspace.services.common.CollectionSpaceResource#getCommonPartClass() - */ @Override public Class getCommonPartClass() { return VocabulariesCommon.class; diff --git a/services/workflow/service/src/main/java/org/collectionspace/services/workflow/WorkflowResource.java b/services/workflow/service/src/main/java/org/collectionspace/services/workflow/WorkflowResource.java index 2517203c2..ea93390e6 100644 --- a/services/workflow/service/src/main/java/org/collectionspace/services/workflow/WorkflowResource.java +++ b/services/workflow/service/src/main/java/org/collectionspace/services/workflow/WorkflowResource.java @@ -23,7 +23,6 @@ */ package org.collectionspace.services.workflow; -import org.collectionspace.services.client.IQueryManager; import org.collectionspace.services.client.workflow.WorkflowClient; import org.collectionspace.services.common.ResourceBase; import org.collectionspace.services.common.ServiceMessages; @@ -36,7 +35,6 @@ import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response;