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

123056 jvonka: (Quick) Shared Links API - find links (fix 500 -> 401 if not authenticated)
   - add more -ve tests to check methods that require auth return 401 if unauthenticated
   RA-777


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@126524 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jamal Kaabi-Mofrad
2016-05-10 11:20:15 +00:00
parent ad207dc72f
commit 38788678c1
2 changed files with 38 additions and 14 deletions

View File

@@ -122,7 +122,6 @@ public class PublicApiDeclarativeRegistry extends DeclarativeRegistry
}
else
{
// TODO - review (experimental)
match = super.findWebScript(method, uri);
Map<String, String> templateVars = match.getTemplateVars();
@@ -132,29 +131,42 @@ public class PublicApiDeclarativeRegistry extends DeclarativeRegistry
// NOTE: noAuth currently only exposed for GET
Api api = determineApi(templateVars);
// TODO can we avoid locating resource more than once ?
// TODO can we avoid locating resource more than once (or at least provide a common code to determine the GET resourceAction) ?
ResourceWithMetadata rwm = locator.locateResource(api, templateVars, HttpMethod.valueOf(method));
Class resAction = null;
String entityId = templateVars.get(ResourceLocator.ENTITY_ID);
switch (rwm.getMetaData().getType())
{
case ENTITY:
// TODO check params for entity id (for now - assume there is)
if (EntityResourceAction.ReadById.class.isAssignableFrom(rwm.getResource().getClass()))
if (StringUtils.isNotBlank(entityId))
{
resAction = EntityResourceAction.ReadById.class;
if (EntityResourceAction.ReadById.class.isAssignableFrom(rwm.getResource().getClass()))
{
resAction = EntityResourceAction.ReadById.class;
}
}
else
{
if (EntityResourceAction.Read.class.isAssignableFrom(rwm.getResource().getClass()))
{
resAction = EntityResourceAction.Read.class;
}
}
break;
case PROPERTY:
// TODO check params for entity id (for now - assume there is)
if (BinaryResourceAction.Read.class.isAssignableFrom(rwm.getResource().getClass()))
if (StringUtils.isNotBlank(entityId))
{
resAction = BinaryResourceAction.Read.class;
}
else if (RelationshipResourceBinaryAction.Read.class.isAssignableFrom(rwm.getResource().getClass()))
{
resAction = RelationshipResourceBinaryAction.Read.class;
if (BinaryResourceAction.Read.class.isAssignableFrom(rwm.getResource().getClass()))
{
resAction = BinaryResourceAction.Read.class;
}
else if (RelationshipResourceBinaryAction.Read.class.isAssignableFrom(rwm.getResource().getClass()))
{
resAction = RelationshipResourceBinaryAction.Read.class;
}
}
break;
default: