Merged HEAD (5.2) to 5.2.N (5.2.1)

126536 jkaabimofrad: Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2)
      123214 gjames: RA-812: Changed http 400 to 404


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@126880 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Ancuta Morarasu
2016-05-11 12:03:36 +00:00
parent 3461cfe219
commit bb83241cbb
3 changed files with 38 additions and 19 deletions

View File

@@ -32,7 +32,6 @@ import java.util.Map;
import java.util.Map.Entry;
import org.alfresco.rest.framework.Api;
import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException;
import org.alfresco.rest.framework.core.exceptions.NotFoundException;
import org.alfresco.rest.framework.core.exceptions.UnsupportedResourceOperationException;
import org.apache.commons.lang.StringUtils;
@@ -53,20 +52,20 @@ public class ResourceLookupDictionary implements ResourceLocator
private ResourceDictionary dictionary;
@Override
public ResourceWithMetadata locateEntityResource(Api api, String entityResource, HttpMethod httpMethod) throws InvalidArgumentException, UnsupportedResourceOperationException
public ResourceWithMetadata locateEntityResource(Api api, String entityResource, HttpMethod httpMethod) throws NotFoundException, UnsupportedResourceOperationException
{
return locateRelationResource(api, entityResource, (String)null, httpMethod);
}
@Override
public ResourceWithMetadata locateRelationPropertyResource(Api api, String entityResource, String relationResource, String property, HttpMethod httpMethod) throws InvalidArgumentException,UnsupportedResourceOperationException
public ResourceWithMetadata locateRelationPropertyResource(Api api, String entityResource, String relationResource, String property, HttpMethod httpMethod) throws NotFoundException,UnsupportedResourceOperationException
{
String resourceKey = ResourceDictionary.resourceKey(entityResource, relationResource);
String propertyResourceKey = ResourceDictionary.propertyResourceKey(resourceKey, property);
Map<String, ResourceWithMetadata> apiResources = dictionary.getAllResources().get(api);
if (apiResources == null)
{
throw new InvalidArgumentException(InvalidArgumentException.DEFAULT_INVALID_API);
throw new NotFoundException(NotFoundException.DEFAULT_MESSAGE_ID);
}
ResourceWithMetadata resource = apiResources.get(propertyResourceKey);
@@ -78,12 +77,12 @@ public class ResourceLookupDictionary implements ResourceLocator
}
logger.warn("Unable to locate resource resource for :"+entityResource+" "+relationResource==null?"":relationResource+" "+property==null?"":property);
throw new InvalidArgumentException("Unable to locate resource resource for :"+entityResource+" "+(relationResource==null?"":relationResource+" "+property==null?"":property));
throw new NotFoundException("Unable to locate resource resource for :"+entityResource+" "+(relationResource==null?"":relationResource+" "+property==null?"":property));
}
@Override
public ResourceWithMetadata locateRelationResource(Api api, String entityResource, String relationResource, HttpMethod httpMethod) throws InvalidArgumentException,UnsupportedResourceOperationException
public ResourceWithMetadata locateRelationResource(Api api, String entityResource, String relationResource, HttpMethod httpMethod) throws NotFoundException,UnsupportedResourceOperationException
{
String resourceKey = ResourceDictionary.resourceKey(entityResource, relationResource);
if (logger.isDebugEnabled())
@@ -93,7 +92,7 @@ public class ResourceLookupDictionary implements ResourceLocator
Map<String, ResourceWithMetadata> apiResources = dictionary.getAllResources().get(api);
if (apiResources == null)
{
throw new InvalidArgumentException(InvalidArgumentException.DEFAULT_INVALID_API);
throw new NotFoundException(NotFoundException.DEFAULT_MESSAGE_ID);
}
ResourceWithMetadata resource = apiResources.get(resourceKey);
if (resource == null)
@@ -111,7 +110,7 @@ public class ResourceLookupDictionary implements ResourceLocator
}
}
logger.warn("Unable to locate resource resource for :"+entityResource+" "+relationResource==null?"":relationResource);
throw new InvalidArgumentException("Unable to locate resource resource for :"+entityResource+" "+(relationResource==null?"":relationResource));
throw new NotFoundException("Unable to locate resource resource for :"+entityResource+" "+(relationResource==null?"":relationResource));
}
else
{

View File

@@ -259,6 +259,25 @@ public class ExecutionTests extends AbstractContextTest
}
@Test
public void testInvalidUrls() throws IOException
{
AbstractResourceWebScript executor = (AbstractResourceWebScript) applicationContext.getBean("executorOfGets");
executor.setLocator(locator);
executor.setResolver(simpleMappingExceptionResolver);
executor.setJsonHelper(jsonHelper);
Map<String, String> templateVars = new HashMap();
templateVars.put("apiScope", "private");
templateVars.put("apiVersion", "1");
templateVars.put("apiName", "alfrescomock");
WebScriptResponse response = mockResponse();
templateVars.put(ResourceLocator.COLLECTION_RESOURCE, "blah:");
executor.execute(api, mockRequest(templateVars, new HashMap<String, List<String>>(1)), response);
//Can't find it so a 404
verify(response, times(1)).setStatus(HttpServletResponse.SC_NOT_FOUND);
}
private WebScriptResponse mockResponse() throws IOException
{
WebScriptResponse res = mock(WebScriptResponse.class);

View File

@@ -47,6 +47,7 @@ import org.alfresco.rest.framework.core.ResourceMetadata;
import org.alfresco.rest.framework.core.ResourceOperation;
import org.alfresco.rest.framework.core.ResourceWithMetadata;
import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException;
import org.alfresco.rest.framework.core.exceptions.NotFoundException;
import org.alfresco.rest.framework.core.exceptions.UnsupportedResourceOperationException;
import org.alfresco.rest.framework.resource.EntityResource;
import org.alfresco.rest.framework.resource.RelationshipResource;
@@ -276,9 +277,9 @@ public class ResourceLocatorTests
{
//Tests by passing invalid propery
collResource = locator.locateResource(api, templateVars, HttpMethod.GET);
fail("Should throw an InvalidArgumentException");
fail("Should throw an NotFoundException");
}
catch (InvalidArgumentException error)
catch (NotFoundException error)
{
//this is correct
}
@@ -353,9 +354,9 @@ public class ResourceLocatorTests
try
{
entityResource = locator.locateEntityResource(Api.valueOf("alfrescomock", "public", "1"),"sheep", HttpMethod.GET);
fail("Should throw an InvalidArgumentException");
fail("Should throw an NotFoundException");
}
catch (InvalidArgumentException error)
catch (NotFoundException error)
{
//this is correct
}
@@ -363,9 +364,9 @@ public class ResourceLocatorTests
try
{
entityResource = locator.locateEntityResource(Api.valueOf("alfrescomock", "public", "999"),"sheep", HttpMethod.GET);
fail("Should throw an InvalidArgumentException");
fail("Should throw an NotFoundException");
}
catch (InvalidArgumentException error)
catch (NotFoundException error)
{
//this is correct
}
@@ -383,9 +384,9 @@ public class ResourceLocatorTests
try
{
aResource = locator.locateEntityResource(api, "sheepnoaction", HttpMethod.GET);
fail("Should throw an InvalidArgumentException");
fail("Should throw an NotFoundException");
}
catch (InvalidArgumentException error)
catch (NotFoundException error)
{
//this is correct
}
@@ -405,7 +406,7 @@ public class ResourceLocatorTests
aResource = locator.locateRelationResource(api, "sheepnoaction","v3isaresource", HttpMethod.GET);
fail("Only available in v3");
}
catch (InvalidArgumentException error)
catch (NotFoundException error)
{
//this is correct
}
@@ -416,7 +417,7 @@ public class ResourceLocatorTests
aResource = locator.locateRelationResource(v2, "sheepnoaction","v3isaresource", HttpMethod.GET);
fail("Only available in v3");
}
catch (InvalidArgumentException error)
catch (NotFoundException error)
{
//this is correct
}
@@ -474,7 +475,7 @@ public class ResourceLocatorTests
assertEquals ("sheepnoaction", name);
}
@Test(expected=org.alfresco.rest.framework.core.exceptions.InvalidArgumentException.class)
@Test(expected=org.alfresco.rest.framework.core.exceptions.NotFoundException.class)
public void testLocateRelationResource()
{
Collection<String> relKeys = Arrays.asList("blacksheep","baaahh");