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

@@ -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,
Map<String, ResourceWithMetadata> relatedResources,
String uniqueEntityId)
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);
}
}