diff --git a/source/java/org/alfresco/rest/api/NetworkWebScriptGet.java b/source/java/org/alfresco/rest/api/NetworkWebScriptGet.java index feefcc2dd5..69432d9f4c 100644 --- a/source/java/org/alfresco/rest/api/NetworkWebScriptGet.java +++ b/source/java/org/alfresco/rest/api/NetworkWebScriptGet.java @@ -66,7 +66,7 @@ public class NetworkWebScriptGet extends ApiWebScript { // TODO this is not ideal, but the only way to populate the embedded network entities (this would normally be // done automatically by the api framework). - Object wrapped = helper.processAdditionsToTheResponse(Api.ALFRESCO_PUBLIC, NetworksEntityResource.NAME, Params.valueOf(personId, null), networkMembership); + Object wrapped = helper.processAdditionsToTheResponse(Api.ALFRESCO_PUBLIC, NetworksEntityResource.NAME, Params.valueOf(personId, null, req), networkMembership); objectMapper.writeValue(generator, wrapped); } diff --git a/source/java/org/alfresco/rest/api/NetworksWebScriptGet.java b/source/java/org/alfresco/rest/api/NetworksWebScriptGet.java index 7d77d3afa8..efab5932d1 100644 --- a/source/java/org/alfresco/rest/api/NetworksWebScriptGet.java +++ b/source/java/org/alfresco/rest/api/NetworksWebScriptGet.java @@ -95,7 +95,7 @@ public class NetworksWebScriptGet extends ApiWebScript { // TODO this is not ideal, but the only way to populate the embedded network entities (this would normally be // done automatically by the api framework). - Object wrapped = helper.processAdditionsToTheResponse(Api.ALFRESCO_PUBLIC, NetworksEntityResource.NAME, Params.valueOf(personId, null), networkMember); + Object wrapped = helper.processAdditionsToTheResponse(Api.ALFRESCO_PUBLIC, NetworksEntityResource.NAME, Params.valueOf(personId, null, req), networkMember); entities.add(wrapped); } diff --git a/source/java/org/alfresco/rest/framework/resource/parameters/Parameters.java b/source/java/org/alfresco/rest/framework/resource/parameters/Parameters.java index db21a78f1a..8b428a45f8 100644 --- a/source/java/org/alfresco/rest/framework/resource/parameters/Parameters.java +++ b/source/java/org/alfresco/rest/framework/resource/parameters/Parameters.java @@ -8,6 +8,7 @@ import org.alfresco.rest.framework.resource.content.BasicContentInfo; import org.alfresco.rest.framework.resource.parameters.where.Query; import org.apache.poi.ss.formula.functions.T; import org.springframework.extensions.webscripts.Status; +import org.springframework.extensions.webscripts.WebScriptRequest; /** @@ -91,5 +92,11 @@ public interface Parameters * Gets the basic information about content, typically taken from a HTTPServletRequest. * @return BasicContentInfo the content info */ - BasicContentInfo getContentInfo(); + public BasicContentInfo getContentInfo(); + + /** + * Gets access to the entire webscript request. + * @return WebScriptRequest + */ + public WebScriptRequest getRequest(); } diff --git a/source/java/org/alfresco/rest/framework/resource/parameters/Params.java b/source/java/org/alfresco/rest/framework/resource/parameters/Params.java index c6807d8029..b8e6d67430 100644 --- a/source/java/org/alfresco/rest/framework/resource/parameters/Params.java +++ b/source/java/org/alfresco/rest/framework/resource/parameters/Params.java @@ -14,7 +14,7 @@ import org.alfresco.rest.framework.resource.parameters.where.Query; import org.alfresco.rest.framework.resource.parameters.where.QueryImpl; import org.apache.commons.beanutils.ConvertUtils; import org.apache.poi.ss.formula.functions.T; -import org.springframework.extensions.webscripts.Status; +import org.springframework.extensions.webscripts.WebScriptRequest; /** * Parameters passed in from a Rest client for use in calls to the rest api. @@ -30,12 +30,13 @@ public class Params implements Parameters private final RecognizedParams recognizedParams; private final String addressedProperty; private final BasicContentInfo contentInfo; + private final WebScriptRequest request; //Constants private static final RecognizedParams NULL_PARAMS = new RecognizedParams(null, null, null, null, null, null, null, false); private static final BasicContentInfo DEFAULT_CONTENT_INFO = new ContentInfoImpl(MimetypeMap.MIMETYPE_BINARY, "UTF-8", -1, null); - protected Params(String entityId, String relationshipId, Object passedIn, InputStream stream, String addressedProperty, RecognizedParams recognizedParams, BasicContentInfo contentInfo) + protected Params(String entityId, String relationshipId, Object passedIn, InputStream stream, String addressedProperty, RecognizedParams recognizedParams, BasicContentInfo contentInfo, WebScriptRequest request) { super(); this.entityId = entityId; @@ -44,37 +45,39 @@ public class Params implements Parameters this.stream = stream; this.recognizedParams = recognizedParams; this.addressedProperty = addressedProperty; + this.request = request; this.contentInfo = contentInfo==null?DEFAULT_CONTENT_INFO:contentInfo; } - public static Params valueOf(BeanPropertiesFilter paramFilter, String entityId) + public static Params valueOf(BeanPropertiesFilter paramFilter, String entityId, WebScriptRequest request) { - return new Params(entityId, null, null, null, null, new RecognizedParams(null, null, paramFilter, null, null, null, null, false), null); + return new Params(entityId, null, null, null, null, new RecognizedParams(null, null, paramFilter, null, null, null, null, false), null, request); } - public static Params valueOf(String entityId, String relationshipId) + public static Params valueOf(String entityId, String relationshipId, WebScriptRequest request) { - return new Params(entityId, relationshipId, null, null, null, NULL_PARAMS, null); + return new Params(entityId, relationshipId, null, null, null, NULL_PARAMS, null, request); } - public static Params valueOf(RecognizedParams recognizedParams, String entityId, String relationshipId) + public static Params valueOf(RecognizedParams recognizedParams, String entityId, String relationshipId, WebScriptRequest request) { - return new Params(entityId, relationshipId, null, null, null, recognizedParams, null); + return new Params(entityId, relationshipId, null, null, null, recognizedParams, null, request); } - public static Params valueOf(String entityId, RecognizedParams recognizedParams, Object passedIn) + public static Params valueOf(String entityId, RecognizedParams recognizedParams, Object passedIn, WebScriptRequest request) { - return new Params(entityId, null, passedIn, null, null, recognizedParams, null); + return new Params(entityId, null, passedIn, null, null, recognizedParams, null, request); } - public static Params valueOf(String entityId, String relationshipId, RecognizedParams recognizedParams, Object passedIn) + public static Params valueOf(String entityId, String relationshipId, RecognizedParams recognizedParams, Object passedIn, WebScriptRequest request) { - return new Params(entityId, relationshipId, passedIn, null, null, recognizedParams, null); + return new Params(entityId, relationshipId, passedIn, null, null, recognizedParams, null, request); } - public static Params valueOf(String entityId, String relationshipId, Object passedIn, InputStream stream, String addressedProperty, RecognizedParams recognizedParams, BasicContentInfo contentInfo) + public static Params valueOf(String entityId, String relationshipId, Object passedIn, InputStream stream, + String addressedProperty, RecognizedParams recognizedParams, BasicContentInfo contentInfo, WebScriptRequest request) { - return new Params(entityId, relationshipId, passedIn, stream, addressedProperty, recognizedParams, contentInfo); + return new Params(entityId, relationshipId, passedIn, stream, addressedProperty, recognizedParams, contentInfo, request); } public String getEntityId() @@ -214,6 +217,12 @@ public class Params implements Parameters return contentInfo; } + @Override + public WebScriptRequest getRequest() + { + return request; + } + /** * A formal set of params that any rest service could potentially have passed in as request params */ diff --git a/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptDelete.java b/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptDelete.java index 55cafa0e41..d5422d426a 100644 --- a/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptDelete.java +++ b/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptDelete.java @@ -48,7 +48,7 @@ public class ResourceWebScriptDelete extends AbstractResourceWebScript implement } else { - return Params.valueOf(entityId, relationshipId); + return Params.valueOf(entityId, relationshipId, req); } case RELATIONSHIP: @@ -59,7 +59,7 @@ public class ResourceWebScriptDelete extends AbstractResourceWebScript implement } else { - return Params.valueOf(entityId, relationshipId); + return Params.valueOf(entityId, relationshipId, req); } case PROPERTY: final String resourceName = req.getServiceMatch().getTemplateVars().get(ResourceLocator.RELATIONSHIP_RESOURCE); @@ -69,11 +69,11 @@ public class ResourceWebScriptDelete extends AbstractResourceWebScript implement { if (StringUtils.isNotBlank(propertyName)) { - return Params.valueOf(entityId, relationshipId, null, null, propertyName, null, null); + return Params.valueOf(entityId, relationshipId, null, null, propertyName, null, null, req); } else { - return Params.valueOf(entityId, null, null, null, resourceName, null, null); + return Params.valueOf(entityId, null, null, null, resourceName, null, null, req); } } //Fall through to unsupported. diff --git a/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptGet.java b/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptGet.java index 4a095cd426..bf9d93fd6a 100644 --- a/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptGet.java +++ b/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptGet.java @@ -73,20 +73,20 @@ public class ResourceWebScriptGet extends AbstractResourceWebScript implements P case ENTITY: if (StringUtils.isNotBlank(entityId)) { - return Params.valueOf(params, entityId, null); + return Params.valueOf(params, entityId, null, req); } else { - return Params.valueOf(params, null, null);// collection resource + return Params.valueOf(params, null, null, req);// collection resource } case RELATIONSHIP: if (StringUtils.isNotBlank(relationshipId)) { - return Params.valueOf(params, entityId, relationshipId); + return Params.valueOf(params, entityId, relationshipId, req); } else { - return Params.valueOf(params, entityId, null); //relationship collection resource + return Params.valueOf(params, entityId, null, req); //relationship collection resource } case PROPERTY: final String resourceName = req.getServiceMatch().getTemplateVars().get(ResourceLocator.RELATIONSHIP_RESOURCE); @@ -96,11 +96,11 @@ public class ResourceWebScriptGet extends AbstractResourceWebScript implements P { if (StringUtils.isNotBlank(propertyName)) { - return Params.valueOf(entityId, relationshipId, null, null, propertyName, params, null); + return Params.valueOf(entityId, relationshipId, null, null, propertyName, params, null, req); } else { - return Params.valueOf(entityId, null, null, null, resourceName, params, null); + return Params.valueOf(entityId, null, null, null, resourceName, params, null, req); } } //Fall through to unsupported. diff --git a/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptHelper.java b/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptHelper.java index d1ab363e7a..a931e8d294 100644 --- a/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptHelper.java +++ b/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptHelper.java @@ -478,7 +478,7 @@ public class ResourceWebScriptHelper if (objectToWrap instanceof SerializablePagedCollection) { SerializablePagedCollection collectionToWrap = (SerializablePagedCollection) objectToWrap; - Object sourceEntity = executeIncludedSource(api,entityCollectionName,params.getEntityId(),params.includeSource()); + Object sourceEntity = executeIncludedSource(api, params, entityCollectionName); Collection resultCollection = new ArrayList(collectionToWrap.getCollection().size()); if (!collectionToWrap.getCollection().isEmpty()) { @@ -510,7 +510,7 @@ public class ResourceWebScriptHelper { Map relationshipResources = locator.locateRelationResource(api,entityCollectionName, params.getRelationsFilter().keySet(), HttpMethod.GET); String uniqueEntityId = ResourceInspector.findUniqueId(objectToWrap); - Map relatedResources = executeRelatedResources(api,params.getRelationsFilter(), relationshipResources, uniqueEntityId); + Map relatedResources = executeRelatedResources(api, params, relationshipResources, uniqueEntityId); execRes.addRelated(relatedResources); } @@ -519,14 +519,14 @@ public class ResourceWebScriptHelper } } - private Object executeIncludedSource(Api api, String entityCollectionName, String uniqueEntityId, boolean includeSource) + private Object executeIncludedSource(Api api, Params params, String entityCollectionName) { - if (includeSource) + if (params.includeSource()) { ResourceWithMetadata res = locator.locateEntityResource(api, entityCollectionName, HttpMethod.GET); if (res != null) { - Object result = executeRelatedResource(api, null, uniqueEntityId, null, res); + Object result = executeRelatedResource(api, params, params.getEntityId(), null, res); if (result!=null && result instanceof ExecutionResult) return ((ExecutionResult) result).getRoot(); } } @@ -554,7 +554,7 @@ public class ResourceWebScriptHelper Object id = ResourceInspectorUtil.invokeMethod(embeddedEntry.getValue().getSecond(), objectToWrap); if (id != null) { - Object execEmbeddedResult = executeRelatedResource(api, params.getRelationsFilter(), String.valueOf(id), embeddedEntry.getKey(), res); + Object execEmbeddedResult = executeRelatedResource(api, params, String.valueOf(id), embeddedEntry.getKey(), res); if (execEmbeddedResult != null) { if (execEmbeddedResult instanceof ExecutionResult) @@ -584,14 +584,14 @@ public class ResourceWebScriptHelper * @param uniqueEntityId String * @return Map */ - private Map executeRelatedResources(final Api api, Map filters, - Map relatedResources, - String uniqueEntityId) + private Map executeRelatedResources(final Api api, Params params, + Map relatedResources, + String uniqueEntityId) { final Map results = new HashMap(relatedResources.size()); for (final Entry relation : relatedResources.entrySet()) { - Object execResult = executeRelatedResource(api, filters, uniqueEntityId, relation.getKey(), relation.getValue()); + Object execResult = executeRelatedResource(api, params, uniqueEntityId, relation.getKey(), relation.getValue()); if (execResult != null) { results.put(relation.getKey(), execResult); @@ -611,19 +611,19 @@ public class ResourceWebScriptHelper * @param resource ResourceWithMetadata * @return Object */ - private Object executeRelatedResource(final Api api, final Map filters, + private Object executeRelatedResource(final Api api, Params params, final String uniqueEntityId, final String resourceKey, final ResourceWithMetadata resource) { try { BeanPropertiesFilter paramFilter = null; final Object[] resultOfExecution = new Object[1]; - + Map filters = params.getRelationsFilter(); if (filters!=null) { paramFilter = filters.get(resourceKey); } - final Params executionParams = Params.valueOf(paramFilter, uniqueEntityId); + final Params executionParams = Params.valueOf(paramFilter, uniqueEntityId, params.getRequest()); executor.execute(resource, executionParams, new ExecutionCallback() { @Override diff --git a/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPost.java b/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPost.java index 1268191892..697178a007 100644 --- a/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPost.java +++ b/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPost.java @@ -83,7 +83,7 @@ public class ResourceWebScriptPost extends AbstractResourceWebScript implements else { Object postedObj = processRequest(resourceMeta, operation, req); - return Params.valueOf(null, params, postedObj); + return Params.valueOf(null, params, postedObj, req); } case RELATIONSHIP: if (StringUtils.isNotBlank(relationshipId)) @@ -93,7 +93,7 @@ public class ResourceWebScriptPost extends AbstractResourceWebScript implements else { Object postedRel = processRequest(resourceMeta, operation, req); - return Params.valueOf(entityId, params, postedRel); + return Params.valueOf(entityId, params, postedRel, req); } case OPERATION: final String operationName = req.getServiceMatch().getTemplateVars().get(ResourceLocator.RELATIONSHIP_RESOURCE); @@ -111,11 +111,11 @@ public class ResourceWebScriptPost extends AbstractResourceWebScript implements if (StringUtils.isNotBlank(propertyName)) { - return Params.valueOf(entityId, relationshipId, params, postedObj); + return Params.valueOf(entityId, relationshipId, params, postedObj, req); } else { - return Params.valueOf(entityId, params, postedObj); + return Params.valueOf(entityId, params, postedObj, req); } } //Fall through to unsupported. diff --git a/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPut.java b/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPut.java index 666c29141e..88cd0fab19 100644 --- a/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPut.java +++ b/source/java/org/alfresco/rest/framework/webscripts/ResourceWebScriptPut.java @@ -86,7 +86,7 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P { Object putEnt = ResourceWebScriptHelper.extractJsonContent(req, jsonHelper, resourceMeta.getObjectType(operation)); - return Params.valueOf(entityId,params,putEnt); + return Params.valueOf(entityId,params,putEnt, req); } case RELATIONSHIP: if (StringUtils.isBlank(relationshipId)) @@ -96,7 +96,7 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P { Object putRel = ResourceWebScriptHelper.extractJsonContent(req, jsonHelper, resourceMeta.getObjectType(operation)); ResourceWebScriptHelper.setUniqueId(putRel,relationshipId); - return Params.valueOf(entityId, params, putRel); + return Params.valueOf(entityId, params, putRel, req); } case PROPERTY: final String resourceName = req.getServiceMatch().getTemplateVars().get(ResourceLocator.RELATIONSHIP_RESOURCE); @@ -106,11 +106,11 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P { if (StringUtils.isNotBlank(propertyName)) { - return Params.valueOf(entityId, relationshipId, null, getStream(req), propertyName, params, getContentInfo(req)); + return Params.valueOf(entityId, relationshipId, null, getStream(req), propertyName, params, getContentInfo(req), req); } else { - return Params.valueOf(entityId, null, null, getStream(req), resourceName, params, getContentInfo(req)); + return Params.valueOf(entityId, null, null, getStream(req), resourceName, params, getContentInfo(req), req); } } diff --git a/source/test-java/org/alfresco/rest/framework/tests/core/AbstractContextTest.java b/source/test-java/org/alfresco/rest/framework/tests/core/AbstractContextTest.java index 148b91bba0..619e2ba241 100644 --- a/source/test-java/org/alfresco/rest/framework/tests/core/AbstractContextTest.java +++ b/source/test-java/org/alfresco/rest/framework/tests/core/AbstractContextTest.java @@ -22,6 +22,7 @@ import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; +import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -46,7 +47,7 @@ public abstract class AbstractContextTest @Autowired JacksonHelper jsonHelper; - static Params NOT_USED = Params.valueOf("notUsed", null); + static Params NOT_USED = Params.valueOf("notUsed", null, mock(WebScriptRequest.class)); static final Params.RecognizedParams NULL_PARAMS = new Params.RecognizedParams(null, null, null, null, null, null, null, false); static Api api = Api.valueOf("alfrescomock", "private", "1"); diff --git a/source/test-java/org/alfresco/rest/framework/tests/core/ExecutionTests.java b/source/test-java/org/alfresco/rest/framework/tests/core/ExecutionTests.java index 3025e29350..01003e3867 100644 --- a/source/test-java/org/alfresco/rest/framework/tests/core/ExecutionTests.java +++ b/source/test-java/org/alfresco/rest/framework/tests/core/ExecutionTests.java @@ -3,6 +3,7 @@ package org.alfresco.rest.framework.tests.core; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.mockito.Mockito.mock; import org.alfresco.rest.framework.Api; import org.alfresco.rest.framework.core.ResourceLookupDictionary; @@ -19,6 +20,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; +import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.http.HttpMethod; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -39,7 +41,7 @@ public class ExecutionTests extends AbstractContextTest { ResourceWithMetadata entityResource = locator.locateEntityResource(api,"sheep", HttpMethod.GET); AbstractResourceWebScript executor = (AbstractResourceWebScript) applicationContext.getBean("executorOfGets"); - executor.execute(entityResource, Params.valueOf((String)null, null), new ActionExecutor.ExecutionCallback(){ + executor.execute(entityResource, Params.valueOf((String)null, null, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback(){ @Override public void onSuccess(CollectionWithPagingInfo result, ContentInfo contentInfo, int statusCode) { @@ -48,14 +50,14 @@ public class ExecutionTests extends AbstractContextTest ResourceWithMetadata baa = locator.locateRelationResource(api,"sheep", "baaahh", HttpMethod.GET); executor = (AbstractResourceWebScript) applicationContext.getBean("executorOfGets"); - executor.execute(baa, Params.valueOf("4", null), new ActionExecutor.ExecutionCallback(){ + executor.execute(baa, Params.valueOf("4", null, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback(){ @Override public void onSuccess(CollectionWithPagingInfo result, ContentInfo contentInfo, int statusCode ) { assertNotNull(result); }}); - executor.execute(baa, Params.valueOf("4", "45"), new ActionExecutor.ExecutionCallback(){ + executor.execute(baa, Params.valueOf("4", "45", mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback(){ @Override public void onSuccess(ExecutionResult result, ContentInfo contentInfo, int statusCode ) { @@ -63,7 +65,7 @@ public class ExecutionTests extends AbstractContextTest }}); ResourceWithMetadata baaPhoto = locator.locateRelationResource(api,"sheep/{entityId}/baaahh", "photo", HttpMethod.GET); - executor.execute(baaPhoto, Params.valueOf("4", "45"), new ActionExecutor.ExecutionCallback(){ + executor.execute(baaPhoto, Params.valueOf("4", "45", mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback(){ @Override public void onSuccess(CollectionWithPagingInfo result, ContentInfo contentInfo, int statusCode ) { @@ -79,7 +81,7 @@ public class ExecutionTests extends AbstractContextTest ResourceWithMetadata resource = locator.locateRelationResource(api, "sheep", "blacksheep", HttpMethod.POST); final Sheep aSheep = new Sheep("xyz"); - executor.execute(resource, Params.valueOf("654", null, NULL_PARAMS, Arrays.asList(aSheep)), new ActionExecutor.ExecutionCallback(){ + executor.execute(resource, Params.valueOf("654", null, NULL_PARAMS, Arrays.asList(aSheep), mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback(){ @Override public void onSuccess(ExecutionResult result, ContentInfo contentInfo, int statusCode ) { @@ -89,7 +91,7 @@ public class ExecutionTests extends AbstractContextTest ResourceWithMetadata grassResource = locator.locateEntityResource(api,"grass", HttpMethod.POST); final Grass grr = new Grass("grr"); - executor.execute(grassResource, Params.valueOf("654", null, NULL_PARAMS, Arrays.asList(grr)), new ActionExecutor.ExecutionCallback(){ + executor.execute(grassResource, Params.valueOf("654", null, NULL_PARAMS, Arrays.asList(grr), mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback(){ @Override public void onSuccess(ExecutionResult result, ContentInfo contentInfo, int statusCode ) { @@ -97,7 +99,7 @@ public class ExecutionTests extends AbstractContextTest }}); ResourceWithMetadata entityResource = locator.locateRelationResource(api,"grass", "grow", HttpMethod.POST); - executor.execute(entityResource, Params.valueOf("654", null, NULL_PARAMS, grr), new ActionExecutor.ExecutionCallback(){ + executor.execute(entityResource, Params.valueOf("654", null, NULL_PARAMS, grr, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback(){ @Override public void onSuccess(String result, ContentInfo contentInfo, int statusCode ) { @@ -111,14 +113,14 @@ public class ExecutionTests extends AbstractContextTest { ResourceWithMetadata grassResource = locator.locateEntityResource(api,"grass", HttpMethod.DELETE); AbstractResourceWebScript executor = (AbstractResourceWebScript) applicationContext.getBean("executorOfDelete"); - executor.execute(grassResource, Params.valueOf("4", null), new ActionExecutor.ExecutionCallback(){ + executor.execute(grassResource, Params.valueOf("4", null, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback(){ @Override public void onSuccess(Object result, ContentInfo contentInfo, int statusCode ) { assertNull(result); }}); ResourceWithMetadata resource = locator.locateRelationResource(api, "sheep", "blacksheep", HttpMethod.DELETE); - executor.execute(resource, Params.valueOf("4", null), new ActionExecutor.ExecutionCallback(){ + executor.execute(resource, Params.valueOf("4", null, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback(){ @Override public void onSuccess(Object result, ContentInfo contentInfo, int statusCode ) { @@ -126,7 +128,7 @@ public class ExecutionTests extends AbstractContextTest }}); ResourceWithMetadata goatDelete = locator.locateRelationResource(api3,"goat/{entityId}/herd", "content", HttpMethod.DELETE); - executor.execute(goatDelete, Params.valueOf("4", "56"), new ActionExecutor.ExecutionCallback(){ + executor.execute(goatDelete, Params.valueOf("4", "56", mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback(){ @Override public void onSuccess(Object result, ContentInfo contentInfo, int statusCode ) { @@ -141,7 +143,7 @@ public class ExecutionTests extends AbstractContextTest ResourceWithMetadata entityResource = locator.locateEntityResource(api,"sheep", HttpMethod.PUT); AbstractResourceWebScript executor = (AbstractResourceWebScript) applicationContext.getBean("executorOfPut"); final Sheep aSheep = new Sheep("xyz"); - executor.execute(entityResource, Params.valueOf("654", null, NULL_PARAMS, aSheep), new ActionExecutor.ExecutionCallback(){ + executor.execute(entityResource, Params.valueOf("654", null, NULL_PARAMS, aSheep, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback(){ @Override public void onSuccess(ExecutionResult result, ContentInfo contentInfo, int statusCode ) { @@ -150,7 +152,7 @@ public class ExecutionTests extends AbstractContextTest }}); ResourceWithMetadata resource = locator.locateRelationResource(api, "sheep", "blacksheep", HttpMethod.PUT); - executor.execute(resource, Params.valueOf("654", null, NULL_PARAMS, aSheep), new ActionExecutor.ExecutionCallback(){ + executor.execute(resource, Params.valueOf("654", null, NULL_PARAMS, aSheep, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback(){ @Override public void onSuccess(ExecutionResult result, ContentInfo contentInfo, int statusCode ) { @@ -158,7 +160,7 @@ public class ExecutionTests extends AbstractContextTest assertEquals(aSheep,result.getRoot()); }}); ResourceWithMetadata baaPhoto = locator.locateRelationResource(api,"sheep/{entityId}/baaahh", "photo", HttpMethod.PUT); - executor.execute(baaPhoto, Params.valueOf("4", "56"), new ActionExecutor.ExecutionCallback(){ + executor.execute(baaPhoto, Params.valueOf("4", "56", mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback(){ @Override public void onSuccess(Object result, ContentInfo contentInfo, int statusCode ) { diff --git a/source/test-java/org/alfresco/rest/framework/tests/core/InspectorTests.java b/source/test-java/org/alfresco/rest/framework/tests/core/InspectorTests.java index 38a192ff6b..92b662c090 100644 --- a/source/test-java/org/alfresco/rest/framework/tests/core/InspectorTests.java +++ b/source/test-java/org/alfresco/rest/framework/tests/core/InspectorTests.java @@ -7,6 +7,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.mockito.Mockito.mock; import java.lang.reflect.Method; import java.util.ArrayList; @@ -53,6 +54,7 @@ import org.alfresco.rest.framework.tests.api.mocks3.SlimGoat; import org.alfresco.util.Pair; import org.junit.Test; import org.springframework.extensions.webscripts.Status; +import org.springframework.extensions.webscripts.WebScriptRequest; import org.springframework.http.HttpMethod; /** @@ -445,7 +447,7 @@ public class InspectorTests assertEquals("grow should return ACCEPTED", Status.STATUS_ACCEPTED, op.getSuccessStatus()); Class paramType = resourceMetadata.getObjectType(op); Object paramObj = paramType.newInstance(); - result = (String) ResourceInspectorUtil.invokeMethod(actionMethod,grassEntityResource, "xyz", paramObj, Params.valueOf("notUsed", null)); + result = (String) ResourceInspectorUtil.invokeMethod(actionMethod,grassEntityResource, "xyz", paramObj, Params.valueOf("notUsed", null, mock(WebScriptRequest.class))); assertEquals("Growing well",result); break; case "/-root-/{id}/cut": @@ -454,7 +456,7 @@ public class InspectorTests op = resourceMetadata.getOperation(HttpMethod.POST); assertNull(resourceMetadata.getObjectType(op)); assertEquals("cut should return ACCEPTED", Status.STATUS_NOT_IMPLEMENTED, op.getSuccessStatus()); - result = (String) ResourceInspectorUtil.invokeMethod(actionMethod,grassEntityResource, "xyz", null, Params.valueOf("notUsed", null)); + result = (String) ResourceInspectorUtil.invokeMethod(actionMethod,grassEntityResource, "xyz", null, Params.valueOf("notUsed", null, mock(WebScriptRequest.class))); assertEquals("All done",result); break; default: diff --git a/source/test-java/org/alfresco/rest/framework/tests/core/ParamsExtender.java b/source/test-java/org/alfresco/rest/framework/tests/core/ParamsExtender.java index 38796cc70b..e1422b06cf 100755 --- a/source/test-java/org/alfresco/rest/framework/tests/core/ParamsExtender.java +++ b/source/test-java/org/alfresco/rest/framework/tests/core/ParamsExtender.java @@ -1,11 +1,14 @@ package org.alfresco.rest.framework.tests.core; +import static org.mockito.Mockito.mock; + import java.io.InputStream; import java.util.Map; import org.alfresco.rest.framework.jacksonextensions.BeanPropertiesFilter; import org.alfresco.rest.framework.resource.parameters.Paging; import org.alfresco.rest.framework.resource.parameters.Params; +import org.springframework.extensions.webscripts.WebScriptRequest; /** * Just extends the Params class for testing purposes @@ -17,7 +20,7 @@ public class ParamsExtender extends Params private ParamsExtender(String entityId, String relationshipId, Object passedIn, InputStream stream, String addressedProperty, RecognizedParams recognizedParams) { - super(entityId, relationshipId, passedIn, stream, addressedProperty, recognizedParams, null); + super(entityId, relationshipId, passedIn, stream, addressedProperty, recognizedParams, null, mock(WebScriptRequest.class)); } public static Params valueOf(Map rFilter, String entityId) diff --git a/source/test-java/org/alfresco/rest/framework/tests/core/SerializeTests.java b/source/test-java/org/alfresco/rest/framework/tests/core/SerializeTests.java index d7b153d297..245f14d347 100644 --- a/source/test-java/org/alfresco/rest/framework/tests/core/SerializeTests.java +++ b/source/test-java/org/alfresco/rest/framework/tests/core/SerializeTests.java @@ -121,7 +121,7 @@ public class SerializeTests extends AbstractContextTest EntityResourceAction.Read getAll = (Read) entityResource.getResource(); CollectionWithPagingInfo resources = getAll.readAll(null); - out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null), resources)); + out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null, null), resources)); assertTrue("There must be json output as List", StringUtils.startsWith(out, "{\"list\":")); } @@ -155,8 +155,8 @@ public class SerializeTests extends AbstractContextTest ResourceWithMetadata relationResource = locator.locateRelationResource(api,"sheep", "baaahh", HttpMethod.GET); assertNotNull(relationResource); RelationshipResourceAction.Read getter = (RelationshipResourceAction.Read) relationResource.getResource(); - CollectionWithPagingInfo resources = getter.readAll("123",Params.valueOf("", null)); - String out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null), resources)); + CollectionWithPagingInfo resources = getter.readAll("123",Params.valueOf("", null, null)); + String out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null, null), resources)); assertTrue("There must be json output as List", StringUtils.startsWith(out, "{\"list\":")); } @@ -166,17 +166,17 @@ public class SerializeTests extends AbstractContextTest ResourceWithMetadata relationResource = locator.locateRelationResource(api,"sheep", "baaahh", HttpMethod.GET); assertNotNull(relationResource); RelationshipResourceAction.Read getter = (RelationshipResourceAction.Read) relationResource.getResource(); - CollectionWithPagingInfo resources = getter.readAll("123",Params.valueOf("", null)); + CollectionWithPagingInfo resources = getter.readAll("123",Params.valueOf("", null, null)); assertNotNull(resources); assertTrue(resources.getTotalItems().intValue() == 3); assertFalse(resources.hasMoreItems()); - String out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null), resources)); + String out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null, null), resources)); assertTrue("There must be json output as List with pagination", StringUtils.startsWith(out, "{\"list\":{\"pagination\":{\"count\":3,")); resources = getter.readAll("123",ParamsExtender.valueOf(Paging.valueOf(0, 1),"123")); assertTrue(resources.getCollection().size() == 1); assertTrue(resources.hasMoreItems()); - out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null), resources)); + out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null, null), resources)); assertTrue("There must be json output as List with pagination", StringUtils.startsWith(out, "{\"list\":{\"pagination\":{\"count\":1,")); } @@ -188,7 +188,7 @@ public class SerializeTests extends AbstractContextTest Farmer aFarmer = new Farmer("180"); aFarmer.setGoatId("1111"); aFarmer.setSheepId("2222"); - ExecutionResult res = (ExecutionResult) helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null),aFarmer); + ExecutionResult res = (ExecutionResult) helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null, null),aFarmer); assertNotNull(res); assertTrue(Farmer.class.equals(res.getRoot().getClass())); Map embeds = res.getEmbedded(); @@ -264,7 +264,7 @@ public class SerializeTests extends AbstractContextTest public void testSerializeExecutionResult() throws IOException { assertNotNull(helper); - Object res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null),new Farmer("180")); + Object res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null, null),new Farmer("180")); String out = writeResponse(res); assertTrue("There must be json output", StringUtils.isNotBlank(out)); @@ -276,16 +276,16 @@ public class SerializeTests extends AbstractContextTest { assertNotNull(helper); CollectionWithPagingInfo paged = CollectionWithPagingInfo.asPaged(null,null); - String out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null), paged)); + String out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null, null), paged)); assertTrue("There must be json output as List with pagination", StringUtils.startsWith(out, "{\"list\":{\"pagination\":{\"count\":0,")); Paging pageRequest = Paging.valueOf(1, 2); paged = CollectionWithPagingInfo.asPaged(pageRequest,Arrays.asList(new Goat(), new Sheep("ABCD"), new Sheep("XYZ"))); - out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null), paged)); + out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null, null), paged)); assertTrue("There must be json output as List with pagination", StringUtils.startsWith(out, "{\"list\":{\"pagination\":{\"count\":3,")); paged = CollectionWithPagingInfo.asPaged(pageRequest,Arrays.asList(new Goat(), new Sheep("ABCD"), new Sheep("XYZ")),true,5000); - out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null), paged)); + out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null, null), paged)); assertTrue("There must be json output as List with pagination", StringUtils.startsWith(out, "{\"list\":{\"pagination\":{\"count\":3,\"hasMoreItems\":true,\"totalItems\":5000")); } @@ -298,7 +298,7 @@ public class SerializeTests extends AbstractContextTest aMap.put("goatie", new Goat()); aMap.put("sheepie", new Sheep("ABCD")); aMap.put("sheepy", new Sheep("XYZ")); - Object res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null),aMap); + Object res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null, null),aMap); String out = writeResponse(res); assertTrue("There must be json output", StringUtils.isNotBlank(out)); @@ -312,7 +312,7 @@ public class SerializeTests extends AbstractContextTest aSet.add(new Goat()); aSet.add(new Sheep("ABCD")); aSet.add(new Sheep("XYZ")); - Object res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null),aSet); + Object res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null, null),aSet); String out = writeResponse(res); assertTrue("There must be json output", StringUtils.isNotBlank(out)); @@ -323,11 +323,11 @@ public class SerializeTests extends AbstractContextTest { assertNotNull(helper); CollectionWithPagingInfo pString = CollectionWithPagingInfo.asPaged(null,Arrays.asList("goat", "sheep", "horse")); - Object res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null),pString); + Object res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null, null),pString); String out = writeResponse(res); assertTrue("There must be json output", StringUtils.isNotBlank(out)); CollectionWithPagingInfo pInts = CollectionWithPagingInfo.asPaged(null,Arrays.asList(234, 45, 890, 3456)); - res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null),pInts); + res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null, null),pInts); out = writeResponse(res); assertTrue("There must be json output", StringUtils.isNotBlank(out)); } @@ -336,7 +336,7 @@ public class SerializeTests extends AbstractContextTest public void testSerializeList() throws IOException { assertNotNull(helper); - Object res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null),Arrays.asList(new Goat(), new Sheep("ABCD"), new Sheep("XYZ"))); + Object res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null, null),Arrays.asList(new Goat(), new Sheep("ABCD"), new Sheep("XYZ"))); String out = writeResponse(res); assertTrue("There must be json output", StringUtils.isNotBlank(out)); @@ -357,7 +357,7 @@ public class SerializeTests extends AbstractContextTest public void testSerializeUniqueId() throws IOException { assertNotNull(helper); - Object res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null), new Sheep("ABCD")); + Object res = helper.processAdditionsToTheResponse(api,null,Params.valueOf("notUsed", null, null), new Sheep("ABCD")); String out = writeResponse(res); assertTrue("Id field must be called sheepGuid.", StringUtils.contains(out, "\"sheepGuid\":\"ABCD\"")); } @@ -368,7 +368,7 @@ public class SerializeTests extends AbstractContextTest ResourceWithMetadata relationResource = locator.locateRelationResource(api,"sheep", "baaahh", HttpMethod.GET); assertNotNull(relationResource); RelationshipResourceAction.Read getter = (RelationshipResourceAction.Read) relationResource.getResource(); - String out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null), getter.readAll("1234A3", Params.valueOf("notUsed", null)))); + String out = writeResponse(helper.processAdditionsToTheResponse(api,null, Params.valueOf("notUsed", null, null), getter.readAll("1234A3", Params.valueOf("notUsed", null, null)))); assertTrue("There must be json output", StringUtils.isNotBlank(out)); } @@ -401,7 +401,7 @@ public class SerializeTests extends AbstractContextTest Api api3 = Api.valueOf("alfrescomock", "private", "3"); ResourceWithMetadata propResource = locator.locateRelationResource(api3,"flock", "photo", HttpMethod.GET); AbstractResourceWebScript executor = (AbstractResourceWebScript) applicationContext.getBean("executorOfGets"); - executor.execute(propResource, Params.valueOf("234", null), new ExecutionCallback(){ + executor.execute(propResource, Params.valueOf("234", null, null), new ExecutionCallback(){ @Override public void onSuccess(BinaryResource result, ContentInfo contentInfo, int statusCode) { diff --git a/source/test-java/org/alfresco/rest/test/workflow/api/impl/ProcessesImplTest.java b/source/test-java/org/alfresco/rest/test/workflow/api/impl/ProcessesImplTest.java index b62320c068..90a05d3d85 100644 --- a/source/test-java/org/alfresco/rest/test/workflow/api/impl/ProcessesImplTest.java +++ b/source/test-java/org/alfresco/rest/test/workflow/api/impl/ProcessesImplTest.java @@ -216,7 +216,7 @@ public class ProcessesImplTest extends TestCase private CollectionWithPagingInfo queryActiveProcessesAndAssertResult(int skipCount, int maxItems) { Query query = ResourceWebScriptHelper.getWhereClause(QUERY_STATUS_ACTIVE); - Parameters parameters = Params.valueOf(new RecognizedParams(null, Paging.valueOf(skipCount, maxItems), null, null, null, query, null, false), null, null); + Parameters parameters = Params.valueOf(new RecognizedParams(null, Paging.valueOf(skipCount, maxItems), null, null, null, query, null, false), null, null, null); CollectionWithPagingInfo result = processes.getProcesses(parameters);