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

122759 gjames: RA-211: Changing execution actions to handle WithResponse. Rework>Java7


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@126504 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jamal Kaabi-Mofrad
2016-05-10 11:14:27 +00:00
parent 26201557fc
commit dfdba82274
13 changed files with 400 additions and 73 deletions

View File

@@ -94,24 +94,59 @@ public class ResourceWebScriptDelete extends AbstractResourceWebScript implement
switch (resource.getMetaData().getType())
{
case ENTITY:
if (resource.getMetaData().isDeleted(EntityResourceAction.Delete.class))
if (EntityResourceAction.DeleteWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
throw new DeletedResourceException("(DELETE) "+resource.getMetaData().getUniqueId());
if (resource.getMetaData().isDeleted(EntityResourceAction.DeleteWithResponse.class))
{
throw new DeletedResourceException("(DELETE) "+resource.getMetaData().getUniqueId());
}
EntityResourceAction.DeleteWithResponse entityDeleter = (EntityResourceAction.DeleteWithResponse) resource.getResource();
entityDeleter.delete(params.getEntityId(), params, withResponse);
}
else
{
if (resource.getMetaData().isDeleted(EntityResourceAction.Delete.class))
{
throw new DeletedResourceException("(DELETE) "+resource.getMetaData().getUniqueId());
}
EntityResourceAction.Delete entityDeleter = (EntityResourceAction.Delete) resource.getResource();
entityDeleter.delete(params.getEntityId(), params);
}
EntityResourceAction.Delete entityDeleter = (EntityResourceAction.Delete) resource.getResource();
entityDeleter.delete(params.getEntityId(), params);
//Don't pass anything to the callback - its just successful
return null;
case RELATIONSHIP:
if (resource.getMetaData().isDeleted(RelationshipResourceAction.Delete.class))
if (RelationshipResourceAction.DeleteWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
throw new DeletedResourceException("(DELETE) "+resource.getMetaData().getUniqueId());
if (resource.getMetaData().isDeleted(RelationshipResourceAction.DeleteWithResponse.class))
{
throw new DeletedResourceException("(DELETE) "+resource.getMetaData().getUniqueId());
}
RelationshipResourceAction.DeleteWithResponse relationDeleter = (RelationshipResourceAction.DeleteWithResponse) resource.getResource();
relationDeleter.delete(params.getEntityId(), params.getRelationshipId(), params, withResponse);
}
else
{
if (resource.getMetaData().isDeleted(RelationshipResourceAction.Delete.class))
{
throw new DeletedResourceException("(DELETE) "+resource.getMetaData().getUniqueId());
}
RelationshipResourceAction.Delete relationDeleter = (RelationshipResourceAction.Delete) resource.getResource();
relationDeleter.delete(params.getEntityId(), params.getRelationshipId(), params);
}
RelationshipResourceAction.Delete relationDeleter = (RelationshipResourceAction.Delete) resource.getResource();
relationDeleter.delete(params.getEntityId(), params.getRelationshipId(), params);
//Don't pass anything to the callback - its just successful
return null;
case PROPERTY:
if (BinaryResourceAction.DeleteWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
if (resource.getMetaData().isDeleted(BinaryResourceAction.DeleteWithResponse.class))
{
throw new DeletedResourceException("(DELETE) "+resource.getMetaData().getUniqueId());
}
BinaryResourceAction.DeleteWithResponse binDeleter = (BinaryResourceAction.DeleteWithResponse) resource.getResource();
binDeleter.deleteProperty(params.getEntityId(), params, withResponse);
//Don't pass anything to the callback - its just successful
return null;
}
if (BinaryResourceAction.Delete.class.isAssignableFrom(resource.getResource().getClass()))
{
if (resource.getMetaData().isDeleted(BinaryResourceAction.Delete.class))
@@ -123,6 +158,17 @@ public class ResourceWebScriptDelete extends AbstractResourceWebScript implement
//Don't pass anything to the callback - its just successful
return null;
}
if (RelationshipResourceBinaryAction.DeleteWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
if (resource.getMetaData().isDeleted(RelationshipResourceBinaryAction.DeleteWithResponse.class))
{
throw new DeletedResourceException("(DELETE) "+resource.getMetaData().getUniqueId());
}
RelationshipResourceBinaryAction.DeleteWithResponse binDeleter = (RelationshipResourceBinaryAction.DeleteWithResponse) resource.getResource();
binDeleter.deleteProperty(params.getEntityId(), params.getRelationshipId(), params, withResponse);
//Don't pass anything to the callback - its just successful
return null;
}
if (RelationshipResourceBinaryAction.Delete.class.isAssignableFrom(resource.getResource().getClass()))
{
if (resource.getMetaData().isDeleted(RelationshipResourceBinaryAction.Delete.class))

View File

@@ -129,6 +129,16 @@ public class ResourceWebScriptGet extends AbstractResourceWebScript implements P
CollectionWithPagingInfo<?> resources = getter.readAll(params);
return resources;
}
else if (EntityResourceAction.ReadWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
if (resource.getMetaData().isDeleted(EntityResourceAction.ReadWithResponse.class))
{
throw new DeletedResourceException("(GET) "+resource.getMetaData().getUniqueId());
}
EntityResourceAction.ReadWithResponse<?> getter = (EntityResourceAction.ReadWithResponse<?>) resource.getResource();
CollectionWithPagingInfo<?> resources = getter.readAll(params, withResponse);
return resources;
}
else
{
throw new UnsupportedResourceOperationException();
@@ -147,6 +157,16 @@ public class ResourceWebScriptGet extends AbstractResourceWebScript implements P
Object result = entityGetter.readById(params.getEntityId(), params);
return result;
}
else if (EntityResourceAction.ReadByIdWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
if (resource.getMetaData().isDeleted(EntityResourceAction.ReadByIdWithResponse.class))
{
throw new DeletedResourceException("(GET by id) "+resource.getMetaData().getUniqueId());
}
EntityResourceAction.ReadByIdWithResponse<?> entityGetter = (EntityResourceAction.ReadByIdWithResponse<?>) resource.getResource();
Object result = entityGetter.readById(params.getEntityId(), params, withResponse);
return result;
}
else
{
throw new UnsupportedResourceOperationException();
@@ -165,22 +185,45 @@ public class ResourceWebScriptGet extends AbstractResourceWebScript implements P
Object result = relationGetter.readById(params.getEntityId(), params.getRelationshipId(), params);
return result;
}
else if (RelationshipResourceAction.ReadByIdWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
if (resource.getMetaData().isDeleted(RelationshipResourceAction.ReadByIdWithResponse.class))
{
throw new DeletedResourceException("(GET by id) "+resource.getMetaData().getUniqueId());
}
RelationshipResourceAction.ReadByIdWithResponse<?> relationGetter = (RelationshipResourceAction.ReadByIdWithResponse<?>) resource.getResource();
Object result = relationGetter.readById(params.getEntityId(), params.getRelationshipId(), params, withResponse);
return result;
}
else
{
throw new UnsupportedResourceOperationException();
}
}
else
{
if (resource.getMetaData().isDeleted(RelationshipResourceAction.Read.class))
{
if (RelationshipResourceAction.Read.class.isAssignableFrom(resource.getResource().getClass()))
{
throw new DeletedResourceException("(GET) "+resource.getMetaData().getUniqueId());
if (resource.getMetaData().isDeleted(RelationshipResourceAction.Read.class))
{
throw new DeletedResourceException("(GET) "+resource.getMetaData().getUniqueId());
}
RelationshipResourceAction.Read<?> relationGetter = (RelationshipResourceAction.Read<?>) resource.getResource();
CollectionWithPagingInfo<?> relations = relationGetter.readAll(params.getEntityId(),params);
return relations;
}
else
{
if (resource.getMetaData().isDeleted(RelationshipResourceAction.ReadWithResponse.class))
{
throw new DeletedResourceException("(GET) "+resource.getMetaData().getUniqueId());
}
RelationshipResourceAction.ReadWithResponse<?> relationGetter = (RelationshipResourceAction.ReadWithResponse<?>) resource.getResource();
CollectionWithPagingInfo<?> relations = relationGetter.readAll(params.getEntityId(),params,withResponse);
return relations;
}
RelationshipResourceAction.Read<?> relationGetter = (RelationshipResourceAction.Read<?>) resource.getResource();
CollectionWithPagingInfo<?> relations = relationGetter.readAll(params.getEntityId(),params);
return relations;
}
case PROPERTY:
if (StringUtils.isNotBlank(params.getEntityId()))
{
@@ -194,6 +237,16 @@ public class ResourceWebScriptGet extends AbstractResourceWebScript implements P
BinaryResource prop = getter.readProperty(params.getEntityId(), params);
return prop;
}
if (BinaryResourceAction.ReadWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
if (resource.getMetaData().isDeleted(BinaryResourceAction.ReadWithResponse.class))
{
throw new DeletedResourceException("(GET) "+resource.getMetaData().getUniqueId());
}
BinaryResourceAction.ReadWithResponse getter = (BinaryResourceAction.ReadWithResponse) resource.getResource();
BinaryResource prop = getter.readProperty(params.getEntityId(), params, withResponse);
return prop;
}
if (RelationshipResourceBinaryAction.Read.class.isAssignableFrom(resource.getResource().getClass()))
{
if (resource.getMetaData().isDeleted(RelationshipResourceBinaryAction.Read.class))
@@ -204,6 +257,16 @@ public class ResourceWebScriptGet extends AbstractResourceWebScript implements P
BinaryResource prop = getter.readProperty(params.getEntityId(), params.getRelationshipId(), params);
return prop;
}
if (RelationshipResourceBinaryAction.ReadWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
if (resource.getMetaData().isDeleted(RelationshipResourceBinaryAction.ReadWithResponse.class))
{
throw new DeletedResourceException("(GET) "+resource.getMetaData().getUniqueId());
}
RelationshipResourceBinaryAction.ReadWithResponse getter = (RelationshipResourceBinaryAction.ReadWithResponse) resource.getResource();
BinaryResource prop = getter.readProperty(params.getEntityId(), params.getRelationshipId(), params, withResponse);
return prop;
}
}
else
{

View File

@@ -183,18 +183,18 @@ public class ResourceWebScriptPost extends AbstractResourceWebScript implements
* @param params
* @return the result of the execution.
*/
private Object executeOperation(ResourceWithMetadata resource, Params params) throws Throwable
private Object executeOperation(ResourceWithMetadata resource, Params params, WithResponse withResponse) throws Throwable
{
OperationResourceMetaData operationResourceMetaData = (OperationResourceMetaData) resource.getMetaData();
switch (operationResourceMetaData.getOperationMethod().getParameterTypes().length)
{
case 3:
//EntityResource operation by id
return ResourceInspectorUtil.invokeMethod(operationResourceMetaData.getOperationMethod(),resource.getResource(), params.getEntityId(), params.getPassedIn(), params);
case 4:
//EntityResource operation by id
return ResourceInspectorUtil.invokeMethod(operationResourceMetaData.getOperationMethod(),resource.getResource(), params.getEntityId(), params.getPassedIn(), params, withResponse);
case 5:
//RelationshipEntityResource operation by id
return ResourceInspectorUtil.invokeMethod(operationResourceMetaData.getOperationMethod(),resource.getResource(), params.getEntityId(), params.getRelationshipId(), params.getPassedIn(), params);
return ResourceInspectorUtil.invokeMethod(operationResourceMetaData.getOperationMethod(),resource.getResource(), params.getEntityId(), params.getRelationshipId(), params.getPassedIn(), params, withResponse);
}
throw new UnsupportedResourceOperationException("The operation method has an invalid signature");
@@ -214,10 +214,6 @@ public class ResourceWebScriptPost extends AbstractResourceWebScript implements
switch (resource.getMetaData().getType())
{
case ENTITY:
if (resource.getMetaData().isDeleted(EntityResourceAction.Create.class))
{
throw new DeletedResourceException("(DELETE) " + resource.getMetaData().getUniqueId());
}
if (resObj instanceof MultiPartResourceAction.Create<?> && params.getPassedIn() instanceof FormData)
{
@@ -227,25 +223,45 @@ public class ResourceWebScriptPost extends AbstractResourceWebScript implements
}
else
{
EntityResourceAction.Create<Object> creator = (EntityResourceAction.Create<Object>) resObj;
List<Object> created = creator.create((List<Object>) params.getPassedIn(), params);
if (created != null && created.size() == 1)
if (EntityResourceAction.Create.class.isAssignableFrom(resource.getResource().getClass()))
{
// return just one object instead of an array
return created.get(0);
if (resource.getMetaData().isDeleted(EntityResourceAction.Create.class))
{
throw new DeletedResourceException("(DELETE) " + resource.getMetaData().getUniqueId());
}
EntityResourceAction.Create<Object> creator = (EntityResourceAction.Create<Object>) resObj;
List<Object> created = creator.create((List<Object>) params.getPassedIn(), params);
if (created != null && created.size() == 1)
{
// return just one object instead of an array
return created.get(0);
}
else
{
return wrapWithCollectionWithPaging(created);
}
}
else
if (EntityResourceAction.CreateWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
return wrapWithCollectionWithPaging(created);
if (resource.getMetaData().isDeleted(EntityResourceAction.CreateWithResponse.class))
{
throw new DeletedResourceException("(DELETE) " + resource.getMetaData().getUniqueId());
}
EntityResourceAction.CreateWithResponse<Object> creator = (EntityResourceAction.CreateWithResponse<Object>) resObj;
List<Object> created = creator.create((List<Object>) params.getPassedIn(), params, withResponse);
if (created != null && created.size() == 1)
{
// return just one object instead of an array
return created.get(0);
}
else
{
return wrapWithCollectionWithPaging(created);
}
}
}
case RELATIONSHIP:
if (resource.getMetaData().isDeleted(RelationshipResourceAction.Create.class))
{
throw new DeletedResourceException("(DELETE) " + resource.getMetaData().getUniqueId());
}
if (resObj instanceof MultiPartRelationshipResourceAction.Create<?> && params.getPassedIn() instanceof FormData)
{
MultiPartRelationshipResourceAction.Create<Object> creator = (MultiPartRelationshipResourceAction.Create<Object>) resObj;
@@ -253,20 +269,48 @@ public class ResourceWebScriptPost extends AbstractResourceWebScript implements
}
else
{
RelationshipResourceAction.Create<Object> createRelation = (RelationshipResourceAction.Create<Object>) resource.getResource();
List<Object> createdRel = createRelation.create(params.getEntityId(), (List<Object>) params.getPassedIn(), params);
if (createdRel != null && createdRel.size() == 1)
if (RelationshipResourceAction.Create.class.isAssignableFrom(resource.getResource().getClass()))
{
// return just one object instead of an array
return createdRel.get(0);
if (resource.getMetaData().isDeleted(RelationshipResourceAction.Create.class))
{
throw new DeletedResourceException("(DELETE) " + resource.getMetaData().getUniqueId());
}
RelationshipResourceAction.Create<Object> createRelation = (RelationshipResourceAction.Create<Object>) resource.getResource();
List<Object> createdRel = createRelation.create(params.getEntityId(), (List<Object>) params.getPassedIn(), params);
if (createdRel != null && createdRel.size() == 1)
{
// return just one object instead of an array
return createdRel.get(0);
}
else
{
return wrapWithCollectionWithPaging(createdRel);
}
}
else
if (RelationshipResourceAction.CreateWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
return wrapWithCollectionWithPaging(createdRel);
if (resource.getMetaData().isDeleted(RelationshipResourceAction.CreateWithResponse.class))
{
throw new DeletedResourceException("(DELETE) " + resource.getMetaData().getUniqueId());
}
RelationshipResourceAction.CreateWithResponse<Object> createRelation = (RelationshipResourceAction.CreateWithResponse<Object>) resource.getResource();
List<Object> createdRel = createRelation.create(params.getEntityId(), (List<Object>) params.getPassedIn(), params, withResponse);
if (createdRel != null && createdRel.size() == 1)
{
// return just one object instead of an array
return createdRel.get(0);
}
else
{
return wrapWithCollectionWithPaging(createdRel);
}
}
}
case OPERATION:
return executeOperation(resource, params);
return executeOperation(resource, params, withResponse);
default:
throw new UnsupportedResourceOperationException("POST not supported for Actions");
}

View File

@@ -180,21 +180,47 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P
switch (resource.getMetaData().getType())
{
case ENTITY:
if (resource.getMetaData().isDeleted(EntityResourceAction.Update.class))
if (EntityResourceAction.Update.class.isAssignableFrom(resource.getResource().getClass()))
{
throw new DeletedResourceException("(UPDATE) "+resource.getMetaData().getUniqueId());
if (resource.getMetaData().isDeleted(EntityResourceAction.Update.class))
{
throw new DeletedResourceException("(UPDATE) "+resource.getMetaData().getUniqueId());
}
EntityResourceAction.Update<Object> updateEnt = (EntityResourceAction.Update<Object>) resource.getResource();
Object result = updateEnt.update(params.getEntityId(), params.getPassedIn(), params);
return result;
}
else
{
if (resource.getMetaData().isDeleted(EntityResourceAction.UpdateWithResponse.class))
{
throw new DeletedResourceException("(UPDATE) "+resource.getMetaData().getUniqueId());
}
EntityResourceAction.UpdateWithResponse<Object> updateEnt = (EntityResourceAction.UpdateWithResponse<Object>) resource.getResource();
Object result = updateEnt.update(params.getEntityId(), params.getPassedIn(), params, withResponse);
return result;
}
EntityResourceAction.Update<Object> updateEnt = (EntityResourceAction.Update<Object>) resource.getResource();
Object result = updateEnt.update(params.getEntityId(), params.getPassedIn(), params);
return result;
case RELATIONSHIP:
if (resource.getMetaData().isDeleted(RelationshipResourceAction.Update.class))
if (RelationshipResourceAction.UpdateWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
throw new DeletedResourceException("(UPDATE) "+resource.getMetaData().getUniqueId());
if (resource.getMetaData().isDeleted(RelationshipResourceAction.UpdateWithResponse.class))
{
throw new DeletedResourceException("(UPDATE) "+resource.getMetaData().getUniqueId());
}
RelationshipResourceAction.UpdateWithResponse<Object> relationUpdater = (RelationshipResourceAction.UpdateWithResponse<Object>) resource.getResource();
Object relResult = relationUpdater.update(params.getEntityId(), params.getPassedIn(), params, withResponse);
return relResult;
}
else
{
if (resource.getMetaData().isDeleted(RelationshipResourceAction.Update.class))
{
throw new DeletedResourceException("(UPDATE) "+resource.getMetaData().getUniqueId());
}
RelationshipResourceAction.Update<Object> relationUpdater = (RelationshipResourceAction.Update<Object>) resource.getResource();
Object relResult = relationUpdater.update(params.getEntityId(), params.getPassedIn(), params);
return relResult;
}
RelationshipResourceAction.Update<Object> relationUpdater = (RelationshipResourceAction.Update<Object>) resource.getResource();
Object relResult = relationUpdater.update(params.getEntityId(), params.getPassedIn(), params);
return relResult;
case PROPERTY:
if (BinaryResourceAction.Update.class.isAssignableFrom(resource.getResource().getClass()))
{
@@ -205,6 +231,15 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P
BinaryResourceAction.Update<Object> binUpdater = (BinaryResourceAction.Update<Object>) resource.getResource();
return binUpdater.updateProperty(params.getEntityId(), params.getContentInfo(), params.getStream(), params);
}
if (BinaryResourceAction.UpdateWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
if (resource.getMetaData().isDeleted(BinaryResourceAction.UpdateWithResponse.class))
{
throw new DeletedResourceException("(UPDATE) "+resource.getMetaData().getUniqueId());
}
BinaryResourceAction.UpdateWithResponse<Object> binUpdater = (BinaryResourceAction.UpdateWithResponse<Object>) resource.getResource();
return binUpdater.updateProperty(params.getEntityId(), params.getContentInfo(), params.getStream(), params, withResponse);
}
if (RelationshipResourceBinaryAction.Update.class.isAssignableFrom(resource.getResource().getClass()))
{
if (resource.getMetaData().isDeleted(RelationshipResourceBinaryAction.Update.class))
@@ -214,6 +249,15 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P
RelationshipResourceBinaryAction.Update<Object> binUpdater = (RelationshipResourceBinaryAction.Update<Object>) resource.getResource();
return binUpdater.updateProperty(params.getEntityId(), params.getRelationshipId(), params.getContentInfo(), params.getStream(), params);
}
if (RelationshipResourceBinaryAction.UpdateWithResponse.class.isAssignableFrom(resource.getResource().getClass()))
{
if (resource.getMetaData().isDeleted(RelationshipResourceBinaryAction.UpdateWithResponse.class))
{
throw new DeletedResourceException("(UPDATE) "+resource.getMetaData().getUniqueId());
}
RelationshipResourceBinaryAction.UpdateWithResponse<Object> binUpdater = (RelationshipResourceBinaryAction.UpdateWithResponse<Object>) resource.getResource();
return binUpdater.updateProperty(params.getEntityId(), params.getRelationshipId(), params.getContentInfo(), params.getStream(), params, withResponse);
}
default:
throw new UnsupportedResourceOperationException("PUT not supported for Actions");
}