From 31766e2d9edaa94a146789fcd75bb4bd24c8f49b Mon Sep 17 00:00:00 2001 From: Ancuta Morarasu Date: Wed, 11 May 2016 12:20:33 +0000 Subject: [PATCH] Merged HEAD (5.2) to 5.2.N (5.2.1) 126609 jkaabimofrad: Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2) 125121 gjames: RA-675: Fixed the descriptionURL in error response git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@126954 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../exceptions/DefaultExceptionResolver.java | 1 + .../framework/webscripts/ApiWebScript.java | 2 +- .../framework/tests/core/ExecutionTests.java | 27 ++++++++++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/source/java/org/alfresco/rest/framework/core/exceptions/DefaultExceptionResolver.java b/source/java/org/alfresco/rest/framework/core/exceptions/DefaultExceptionResolver.java index f4f325d0da..c64e9fe46f 100644 --- a/source/java/org/alfresco/rest/framework/core/exceptions/DefaultExceptionResolver.java +++ b/source/java/org/alfresco/rest/framework/core/exceptions/DefaultExceptionResolver.java @@ -34,6 +34,7 @@ import javax.servlet.http.HttpServletResponse; */ public class DefaultExceptionResolver implements ExceptionResolver { + public static final String ERROR_URL = "api-explorer.alfresco.com"; public static final String DEFAULT_MESSAGE_ID = "framework.exception.ApiDefault"; @Override diff --git a/source/java/org/alfresco/rest/framework/webscripts/ApiWebScript.java b/source/java/org/alfresco/rest/framework/webscripts/ApiWebScript.java index 35340b9673..e048af9ebf 100644 --- a/source/java/org/alfresco/rest/framework/webscripts/ApiWebScript.java +++ b/source/java/org/alfresco/rest/framework/webscripts/ApiWebScript.java @@ -210,7 +210,7 @@ public abstract class ApiWebScript extends AbstractWebScript */ public void renderErrorResponse(final ErrorResponse errorResponse, final WebScriptResponse res) throws IOException { - errorResponse.setDescriptionURL("http://developer.alfresco.com/ErrorsExplained.html#"+errorResponse.getErrorKey()); + errorResponse.setDescriptionURL(DefaultExceptionResolver.ERROR_URL); setContentInfoOnResponse(res, DEFAULT_JSON_CONTENT); diff --git a/source/test-java/org/alfresco/rest/framework/tests/core/ExecutionTests.java b/source/test-java/org/alfresco/rest/framework/tests/core/ExecutionTests.java index 0162613334..b27fcb2f21 100644 --- a/source/test-java/org/alfresco/rest/framework/tests/core/ExecutionTests.java +++ b/source/test-java/org/alfresco/rest/framework/tests/core/ExecutionTests.java @@ -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.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; @@ -15,6 +16,8 @@ import org.alfresco.rest.framework.Api; import org.alfresco.rest.framework.core.ResourceLocator; import org.alfresco.rest.framework.core.ResourceLookupDictionary; import org.alfresco.rest.framework.core.ResourceWithMetadata; +import org.alfresco.rest.framework.core.exceptions.DefaultExceptionResolver; +import org.alfresco.rest.framework.core.exceptions.ErrorResponse; import org.alfresco.rest.framework.core.exceptions.SimpleMappingExceptionResolver; import org.alfresco.rest.framework.jacksonextensions.ExecutionResult; import org.alfresco.rest.framework.resource.actions.ActionExecutor; @@ -278,10 +281,32 @@ public class ExecutionTests extends AbstractContextTest verify(response, times(1)).setStatus(HttpServletResponse.SC_NOT_FOUND); } + @Test + public void testRenderError() throws IOException + { + AbstractResourceWebScript executor = (AbstractResourceWebScript) applicationContext.getBean("executorOfGets"); + executor.setResolver(simpleMappingExceptionResolver); + executor.setJsonHelper(jsonHelper); + + ErrorResponse defaultError = new DefaultExceptionResolver().resolveException(new NullPointerException()); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + executor.renderErrorResponse(defaultError, mockResponse(out)); + String errorMessage = out.toString(); + //System.out.println(errorMessage); + assertTrue(errorMessage.contains("\"errorKey\":\"framework.exception.ApiDefault\"")); + assertTrue(errorMessage.contains("\"statusCode\":500")); + assertTrue(errorMessage.contains("\"stackTrace\":\"[org.alfresco.rest.framework.tests.core.ExecutionTests.testRenderError(")); + assertTrue(errorMessage.contains("\"descriptionURL\":\""+DefaultExceptionResolver.ERROR_URL+"\"")); + } + private WebScriptResponse mockResponse() throws IOException + { + return mockResponse(new ByteArrayOutputStream()); + } + private WebScriptResponse mockResponse(ByteArrayOutputStream byteArrayOutputStream) throws IOException { WebScriptResponse res = mock(WebScriptResponse.class); - when(res.getOutputStream()).thenReturn(new ByteArrayOutputStream()); + when(res.getOutputStream()).thenReturn(byteArrayOutputStream); return res; }