Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2)

122518 gjames: RA-211: Added the webscriptrequest to the Params interface


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@126477 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jamal Kaabi-Mofrad
2016-05-10 11:08:24 +00:00
parent f7d7bef19d
commit e1e80ff823
15 changed files with 109 additions and 85 deletions

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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();
}

View File

@@ -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
*/

View File

@@ -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.

View File

@@ -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.

View File

@@ -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<Object> resultCollection = new ArrayList(collectionToWrap.getCollection().size());
if (!collectionToWrap.getCollection().isEmpty())
{
@@ -510,7 +510,7 @@ public class ResourceWebScriptHelper
{
Map<String, ResourceWithMetadata> relationshipResources = locator.locateRelationResource(api,entityCollectionName, params.getRelationsFilter().keySet(), HttpMethod.GET);
String uniqueEntityId = ResourceInspector.findUniqueId(objectToWrap);
Map<String,Object> relatedResources = executeRelatedResources(api,params.getRelationsFilter(), relationshipResources, uniqueEntityId);
Map<String,Object> 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<String,Object> executeRelatedResources(final Api api, Map<String, BeanPropertiesFilter> filters,
private Map<String,Object> executeRelatedResources(final Api api, Params params,
Map<String, ResourceWithMetadata> relatedResources,
String uniqueEntityId)
{
final Map<String,Object> results = new HashMap<String,Object>(relatedResources.size());
for (final Entry<String, ResourceWithMetadata> 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<String, BeanPropertiesFilter> 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<String, BeanPropertiesFilter> 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

View File

@@ -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.

View File

@@ -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);
}
}

View File

@@ -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");

View File

@@ -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<CollectionWithPagingInfo>(){
executor.execute(entityResource, Params.valueOf((String)null, null, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback<CollectionWithPagingInfo>(){
@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<CollectionWithPagingInfo>(){
executor.execute(baa, Params.valueOf("4", null, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback<CollectionWithPagingInfo>(){
@Override
public void onSuccess(CollectionWithPagingInfo result, ContentInfo contentInfo, int statusCode )
{
assertNotNull(result);
}});
executor.execute(baa, Params.valueOf("4", "45"), new ActionExecutor.ExecutionCallback<ExecutionResult>(){
executor.execute(baa, Params.valueOf("4", "45", mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback<ExecutionResult>(){
@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<CollectionWithPagingInfo>(){
executor.execute(baaPhoto, Params.valueOf("4", "45", mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback<CollectionWithPagingInfo>(){
@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<ExecutionResult>(){
executor.execute(resource, Params.valueOf("654", null, NULL_PARAMS, Arrays.asList(aSheep), mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback<ExecutionResult>(){
@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<ExecutionResult>(){
executor.execute(grassResource, Params.valueOf("654", null, NULL_PARAMS, Arrays.asList(grr), mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback<ExecutionResult>(){
@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<String>(){
executor.execute(entityResource, Params.valueOf("654", null, NULL_PARAMS, grr, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback<String>(){
@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<Object>(){
executor.execute(grassResource, Params.valueOf("4", null, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback<Object>(){
@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<Object>(){
executor.execute(resource, Params.valueOf("4", null, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback<Object>(){
@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<Object>(){
executor.execute(goatDelete, Params.valueOf("4", "56", mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback<Object>(){
@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<ExecutionResult>(){
executor.execute(entityResource, Params.valueOf("654", null, NULL_PARAMS, aSheep, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback<ExecutionResult>(){
@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<ExecutionResult>(){
executor.execute(resource, Params.valueOf("654", null, NULL_PARAMS, aSheep, mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback<ExecutionResult>(){
@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<Object>(){
executor.execute(baaPhoto, Params.valueOf("4", "56", mock(WebScriptRequest.class)), new ActionExecutor.ExecutionCallback<Object>(){
@Override
public void onSuccess(Object result, ContentInfo contentInfo, int statusCode )
{

View File

@@ -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:

View File

@@ -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<String, BeanPropertiesFilter> rFilter, String entityId)

View File

@@ -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<String,Object> 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<String> 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<Integer> 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<BinaryResource>(){
executor.execute(propResource, Params.valueOf("234", null, null), new ExecutionCallback<BinaryResource>(){
@Override
public void onSuccess(BinaryResource result, ContentInfo contentInfo, int statusCode)
{

View File

@@ -216,7 +216,7 @@ public class ProcessesImplTest extends TestCase
private CollectionWithPagingInfo<ProcessInfo> 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<ProcessInfo> result = processes.getProcesses(parameters);