From: Richard Millet Date: Fri, 7 Sep 2012 23:42:17 +0000 (-0700) Subject: CSPACE-5518: Updating ServiceContext factory methods to accept a UriInfo rather than... X-Git-Url: https://git.aero2k.de/?a=commitdiff_plain;h=0073f95986b623750cdcb48d7de8a6263aa7687b;p=tmp%2Fjakarta-migration.git CSPACE-5518: Updating ServiceContext factory methods to accept a UriInfo rather than MultivaluedMap queryParams = ui.getQueryParameters(); --- diff --git a/services/IntegrationTests/src/test/resources/test-data/xmlreplay/collectionobject/collectionobject-hierarchy.xml b/services/IntegrationTests/src/test/resources/test-data/xmlreplay/collectionobject/collectionobject-hierarchy.xml index 23d9212da..1b47e4e08 100644 --- a/services/IntegrationTests/src/test/resources/test-data/xmlreplay/collectionobject/collectionobject-hierarchy.xml +++ b/services/IntegrationTests/src/test/resources/test-data/xmlreplay/collectionobject/collectionobject-hierarchy.xml @@ -1,5 +1,7 @@ + + diff --git a/services/authority/service/src/main/java/org/collectionspace/services/common/vocabulary/AuthorityResource.java b/services/authority/service/src/main/java/org/collectionspace/services/common/vocabulary/AuthorityResource.java index 144500e9d..c8f304b5a 100644 --- a/services/authority/service/src/main/java/org/collectionspace/services/common/vocabulary/AuthorityResource.java +++ b/services/authority/service/src/main/java/org/collectionspace/services/common/vocabulary/AuthorityResource.java @@ -425,7 +425,7 @@ public abstract class AuthorityResource public AbstractCommonList getAuthorityList(@Context UriInfo ui) { //FIXME - REM 5/3/2012 - This is not reachable from the JAX-RS dispatcher. Instead the equivalent method in ResourceBase is getting called. try { MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); + ServiceContext ctx = createServiceContext(ui); DocumentHandler handler = createDocumentHandler(ctx); DocumentFilter myFilter = handler.getDocumentFilter(); // Need to make the default sort order for authority items @@ -919,7 +919,7 @@ public abstract class AuthorityResource // All items in dive can look at their child uri's to get uri. So we calculate the very first one. We could also do a GET and look at the common part uri field, but why...? String calledUri = ui.getPath(); String uri = "/" + calledUri.substring(0, (calledUri.length() - ("/" + hierarchy).length())); - ServiceContext ctx = createServiceContext(getItemServiceName()); + ServiceContext ctx = createServiceContext(getItemServiceName(), ui); ctx.setUriInfo(ui); String direction = ui.getQueryParameters().getFirst(Hierarchy.directionQP); if (Tools.notBlank(direction) && Hierarchy.direction_parents.equals(direction)) { diff --git a/services/batch/service/src/main/java/org/collectionspace/services/batch/BatchResource.java b/services/batch/service/src/main/java/org/collectionspace/services/batch/BatchResource.java index b064cb147..f0aee5427 100644 --- a/services/batch/service/src/main/java/org/collectionspace/services/batch/BatchResource.java +++ b/services/batch/service/src/main/java/org/collectionspace/services/batch/BatchResource.java @@ -113,17 +113,17 @@ public class BatchResource extends ResourceBase { @Context UriInfo ui) { AbstractCommonList list; if (docType != null && !docType.isEmpty() && mode != null && !mode.isEmpty()) { - list = batchSearch(ui.getQueryParameters(), docType, mode); + list = batchSearch(ui, docType, mode); } else { list = getList(ui); } return list; } - private AbstractCommonList batchSearch(MultivaluedMap queryParams, + private AbstractCommonList batchSearch(UriInfo ui, String docType, String mode) { try { - ServiceContext ctx = createServiceContext(queryParams); + ServiceContext ctx = createServiceContext(ui); DocumentHandler handler = createDocumentHandler(ctx); // perform a search by docType and invocation mode DocumentFilter documentFilter = handler.getDocumentFilter(); 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 19e43f1ed..091b3a6f4 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 @@ -79,12 +79,6 @@ public class BlobResource extends ResourceBase { return BlobsCommon.class; } - //FIXME: Is this method used/needed? - @Deprecated - private CommonList getBlobList(MultivaluedMap queryParams) { - return (CommonList)getList(queryParams); - } - @Deprecated public CommonList getBlobList(List csidList) { return (CommonList) getList(csidList); 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 229a198c0..ed5cd247c 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 @@ -184,6 +184,17 @@ public abstract class AbstractCollectionSpaceResourceImpl return ctx; } + protected ServiceContext createServiceContext(String serviceName, UriInfo ui) throws Exception { + ServiceContext ctx = createServiceContext( + serviceName, + (IT)null, // The input part + null, // The resource map + (MultivaluedMap)null, // The queryParams + (Class)null /*input type's Class*/); + ctx.setUriInfo(ui); + return ctx; + } + /** * Creates the service context. * @@ -221,35 +232,16 @@ public abstract class AbstractCollectionSpaceResourceImpl return ctx; } - /** - * Creates the service context. - * - * @param queryParams the query params - * - * @return the service context< i t, o t> - * - * @throws Exception the exception - */ - protected ServiceContext createServiceContext(MultivaluedMap queryParams) throws Exception { - ServiceContext ctx = createServiceContext( - (IT)null, /*input*/ - queryParams, - (Class)null /*input type's Class*/); - return ctx; - } - protected ServiceContext createServiceContext(UriInfo ui) throws Exception { MultivaluedMap queryParams = ui.getQueryParameters(); ServiceContext ctx = createServiceContext( (IT)null, /*input*/ queryParams, (Class)null /*input type's Class*/); + ctx.setUriInfo(ui); return ctx; } - - - /** * Creates the service context. * 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 de70114bb..3cf450ea5 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 @@ -225,8 +225,7 @@ public abstract class ResourceBase PoxPayloadOut result = null; ensureCSID(csid, READ); try { - MultivaluedMap queryParams = ui.getQueryParameters(); - RemoteServiceContext ctx = (RemoteServiceContext) createServiceContext(queryParams); + RemoteServiceContext ctx = (RemoteServiceContext) createServiceContext(ui); result = get(csid, ctx);// ==> CALL implementation method, which subclasses may override. if (result == null) { Response response = Response.status(Response.Status.NOT_FOUND).entity( @@ -285,9 +284,9 @@ public abstract class ResourceBase //======================= GET without csid. List, search, etc. ===================================== @GET public AbstractCommonList getList(@Context UriInfo ui) { - MultivaluedMap queryParams = ui.getQueryParameters(); AbstractCommonList list = null; + MultivaluedMap queryParams = ui.getQueryParameters(); if (isGetAllRequest(queryParams) == false) { String orderBy = queryParams.getFirst(IClientQueryParams.ORDER_BY_PARAM); String keywords = queryParams.getFirst(IQueryManager.SEARCH_TYPE_KEYWORDS_KW); @@ -295,15 +294,15 @@ public abstract class ResourceBase String partialTerm = queryParams.getFirst(IQueryManager.SEARCH_TYPE_PARTIALTERM); list = search(queryParams, orderBy, keywords, advancedSearch, partialTerm); } else { - list = getList(queryParams); + list = getCommonList(ui); } return list; } - protected AbstractCommonList getList(MultivaluedMap queryParams) { + protected AbstractCommonList getCommonList(UriInfo ui) { try { - ServiceContext ctx = createServiceContext(queryParams); + ServiceContext ctx = createServiceContext(ui); DocumentHandler handler = createDocumentHandler(ctx); getRepositoryClient(ctx).getFiltered(ctx, handler); AbstractCommonList list = (AbstractCommonList) handler.getCommonPartList(); @@ -325,7 +324,7 @@ public abstract class ResourceBase protected AbstractCommonList search( ServiceContext ctx, DocumentHandler handler, - MultivaluedMap queryParams, + UriInfo ui, String orderBy, String keywords, String advancedSearch, @@ -375,7 +374,7 @@ public abstract class ResourceBase } private AbstractCommonList search( - MultivaluedMap queryParams, + UriInfo ui, String orderBy, String keywords, String advancedSearch, @@ -384,9 +383,9 @@ public abstract class ResourceBase ServiceContext ctx; try { - ctx = createServiceContext(queryParams); + ctx = createServiceContext(ui); DocumentHandler handler = createDocumentHandler(ctx); - result = search(ctx, handler, queryParams, orderBy, keywords, advancedSearch, partialTerm); + result = search(ctx, handler, ui, orderBy, keywords, advancedSearch, partialTerm); } catch (Exception e) { throw bigReThrow(e, ServiceMessages.SEARCH_FAILED); } @@ -416,8 +415,7 @@ public abstract class ResourceBase @Context UriInfo ui) { AuthorityRefList authRefList = null; try { - MultivaluedMap queryParams = ui.getQueryParameters(); - ServiceContext ctx = createServiceContext(queryParams); + ServiceContext ctx = createServiceContext(ui); DocumentModelHandler handler = (DocumentModelHandler) createDocumentHandler(ctx); List authRefsInfo = RefNameServiceUtils.getConfiguredAuthorityRefs(ctx); authRefList = handler.getAuthorityRefs(csid, authRefsInfo); diff --git a/services/common/src/main/java/org/collectionspace/services/common/document/Hierarchy.java b/services/common/src/main/java/org/collectionspace/services/common/document/Hierarchy.java index 51606afcf..621857f21 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/document/Hierarchy.java +++ b/services/common/src/main/java/org/collectionspace/services/common/document/Hierarchy.java @@ -63,7 +63,7 @@ public class Hierarchy { } private static String dive(ServiceContext ctx, String itemcsid, String uri, boolean lookupFirstName) { - MultivaluedMap queryParams = ctx.getUriInfo().getQueryParameters(); + MultivaluedMap queryParams = ctx.getQueryParams(); //Run getList() once as sent to get childListOuter: queryParams.putSingle(IRelationsManager.PREDICATE_QP, RelationshipType.HAS_BROADER.value()); queryParams.putSingle(IRelationsManager.SUBJECT_QP, null); @@ -122,7 +122,7 @@ public class Hierarchy { } private static SurfaceResultStruct surface(ServiceContext ctx, String itemcsid, String uri, boolean first) { - MultivaluedMap queryParams = ctx.getUriInfo().getQueryParameters(); + MultivaluedMap queryParams = ctx.getQueryParams(); //Run getList() once as sent to get parentListOuter: queryParams.putSingle(IRelationsManager.PREDICATE_QP, RelationshipType.HAS_BROADER.value()); queryParams.putSingle(IRelationsManager.SUBJECT_QP, itemcsid); diff --git a/services/common/src/main/java/org/collectionspace/services/common/relation/RelationResource.java b/services/common/src/main/java/org/collectionspace/services/common/relation/RelationResource.java index 4baaea1d1..02d3d8b7b 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/relation/RelationResource.java +++ b/services/common/src/main/java/org/collectionspace/services/common/relation/RelationResource.java @@ -84,29 +84,26 @@ public class RelationResource extends ResourceBase { } private RelationsCommonList getList(ServiceContext parentCtx, UriInfo uriInfo) { - if (parentCtx != null) { - uriInfo = parentCtx.getUriInfo(); //Override the input param and use the parent context's UriInfo - } MultivaluedMap queryParams = uriInfo.getQueryParameters(); - + String subjectCsid = queryParams.getFirst(IRelationsManager.SUBJECT_QP); String subjectType = queryParams.getFirst(IRelationsManager.SUBJECT_TYPE_QP); String predicate = queryParams.getFirst(IRelationsManager.PREDICATE_QP); String objectCsid = queryParams.getFirst(IRelationsManager.OBJECT_QP); String objectType = queryParams.getFirst(IRelationsManager.OBJECT_TYPE_QP); - return this.getRelationList(parentCtx, queryParams, subjectCsid, subjectType, predicate, objectCsid, objectType); + return this.getRelationList(parentCtx, uriInfo, subjectCsid, subjectType, predicate, objectCsid, objectType); } private RelationsCommonList getRelationList( ServiceContext parentCtx, - MultivaluedMap queryParams, + UriInfo uriInfo, String subjectCsid, String subjectType, String predicate, String objectCsid, String objectType) throws WebApplicationException { try { - ServiceContext ctx = createServiceContext(queryParams); + ServiceContext ctx = createServiceContext(uriInfo); if (parentCtx != null) { // If the parent context has an open repository session then use it ctx.setCurrentRepositorySession(parentCtx.getCurrentRepositorySession()); } @@ -117,7 +114,7 @@ public class RelationResource extends ResourceBase { // // Handle keyword clause // - String keywords = queryParams.getFirst(IQueryManager.SEARCH_TYPE_KEYWORDS_KW); + String keywords = uriInfo.getQueryParameters().getFirst(IQueryManager.SEARCH_TYPE_KEYWORDS_KW); if (keywords != null && keywords.isEmpty() == false) { String keywordClause = QueryManager.createWhereClauseFromKeywords(keywords); handler.getDocumentFilter().appendWhereClause(keywordClause, IQueryManager.SEARCH_QUALIFIER_AND); diff --git a/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RemoteDocumentModelHandlerImpl.java b/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RemoteDocumentModelHandlerImpl.java index 2412c94af..187b11588 100644 --- a/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RemoteDocumentModelHandlerImpl.java +++ b/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RemoteDocumentModelHandlerImpl.java @@ -208,10 +208,10 @@ public abstract class RemoteDocumentModelHandlerImpl } } } catch (Throwable t){ - logger.error("Unable to addOutputPart: "+partLabel - +" in serviceContextPath: "+this.getServiceContextPath() - +" with URI: "+this.getServiceContext().getUriInfo().getPath() - +" error: "+t); + logger.error("Unable to addOutputPart: " + partLabel + + " in serviceContextPath: "+this.getServiceContextPath() + + " with URI: " + this.getServiceContext().getUriInfo().getPath() + + " error: " + t); } } } else { 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 a3c71844d..1f8dda5c4 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 @@ -48,8 +48,10 @@ 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.Context; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriInfo; @Path(ReportClient.SERVICE_PATH) @Consumes("application/xml") @@ -83,9 +85,10 @@ public class ReportResource extends ResourceBase { } @Override - protected AbstractCommonList getList(MultivaluedMap queryParams) { + protected AbstractCommonList getCommonList(UriInfo ui) { try { - ServiceContext ctx = createServiceContext(queryParams); + ServiceContext ctx = createServiceContext(ui); + MultivaluedMap queryParams = ctx.getQueryParams(); DocumentHandler handler = createDocumentHandler(ctx); String docType = queryParams.getFirst(IQueryManager.SEARCH_TYPE_DOCTYPE); String mode = queryParams.getFirst(IQueryManager.SEARCH_TYPE_INVOCATION_MODE); @@ -135,16 +138,18 @@ public class ReportResource extends ResourceBase { @Path("{csid}/output") @Produces("application/pdf") public Response invokeReport( + @Context UriInfo ui, @PathParam("csid") String csid) { InvocationContext invContext = new InvocationContext(); invContext.setMode(Invocable.INVOCATION_MODE_NO_CONTEXT); - return invokeReport(csid, invContext); + return invokeReport(ui, csid, invContext); } @POST @Path("{csid}") @Produces("application/pdf") public Response invokeReport( + @Context UriInfo ui, @PathParam("csid") String csid, InvocationContext invContext) { if (csid == null || "".equals(csid)) { diff --git a/services/servicegroup/service/src/main/java/org/collectionspace/services/servicegroup/ServiceGroupResource.java b/services/servicegroup/service/src/main/java/org/collectionspace/services/servicegroup/ServiceGroupResource.java index 42f33c345..8caa93dce 100644 --- a/services/servicegroup/service/src/main/java/org/collectionspace/services/servicegroup/ServiceGroupResource.java +++ b/services/servicegroup/service/src/main/java/org/collectionspace/services/servicegroup/ServiceGroupResource.java @@ -222,9 +222,7 @@ public class ServiceGroupResource extends AbstractCollectionSpaceResourceImpl { ensureCSID(serviceGroupName, ResourceBase.READ); AbstractCommonList list = null; try { - MultivaluedMap queryParams = ui.getQueryParameters(); - String keywords = queryParams.getFirst(IQueryManager.SEARCH_TYPE_KEYWORDS_KW); - ServiceContext ctx = createServiceContext(queryParams); + ServiceContext ctx = createServiceContext(ui); ServiceGroupDocumentModelHandler handler = (ServiceGroupDocumentModelHandler) createDocumentHandler(ctx); ArrayList groupsList = null; @@ -235,6 +233,8 @@ public class ServiceGroupResource extends AbstractCollectionSpaceResourceImpl { groupsList.add(serviceGroupName); } // set up a keyword search + MultivaluedMap queryParams = ctx.getQueryParams(); + String keywords = queryParams.getFirst(IQueryManager.SEARCH_TYPE_KEYWORDS_KW); if (keywords != null && !keywords.isEmpty()) { String whereClause = QueryManager.createWhereClauseFromKeywords(keywords); if(Tools.isEmpty(whereClause)) {