mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
ALF-4842 (Transfer Service):
- Fixed issue in rehydrating exception received from target repo. Added appropriate test case. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@22618 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -60,7 +60,6 @@ import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
|
|||||||
import org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory;
|
import org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.json.JSONArray;
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
@@ -171,24 +170,26 @@ public class HttpClientTransmitterImpl implements TransferTransmitter
|
|||||||
{
|
{
|
||||||
if (response != 200)
|
if (response != 200)
|
||||||
{
|
{
|
||||||
String errorId = null;
|
Throwable error = null;
|
||||||
String[] errorParams = null;
|
try
|
||||||
try {
|
{
|
||||||
log.error("Received \"unsuccessful\" response code from target server: " + response);
|
log.error("Received \"unsuccessful\" response code from target server: " + response);
|
||||||
String errorPayload = method.getResponseBodyAsString();
|
String errorPayload = method.getResponseBodyAsString();
|
||||||
JSONObject errorObj = new JSONObject(errorPayload);
|
JSONObject errorObj = new JSONObject(errorPayload);
|
||||||
errorId = errorObj.getString("alfrescoErrorId");
|
error = rehydrateError(errorObj);
|
||||||
JSONArray errorParamArray = errorObj.getJSONArray("alfrescoErrorParams");
|
}
|
||||||
int length = errorParamArray.length();
|
catch (Exception ex)
|
||||||
errorParams = new String[length];
|
{
|
||||||
for (int i = 0; i < length; ++i)
|
|
||||||
{
|
|
||||||
errorParams[i] = errorParamArray.getString(i);
|
|
||||||
}
|
|
||||||
} catch (Exception ex) {
|
|
||||||
throw new TransferException(MSG_UNSUCCESSFUL_RESPONSE, new Object[] {methodName, response});
|
throw new TransferException(MSG_UNSUCCESSFUL_RESPONSE, new Object[] {methodName, response});
|
||||||
}
|
}
|
||||||
throw new TransferException(errorId, errorParams);
|
if ((error != null) && TransferException.class.isAssignableFrom(error.getClass()))
|
||||||
|
{
|
||||||
|
throw (TransferException)error;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new TransferException(MSG_UNSUCCESSFUL_RESPONSE, error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -238,6 +238,34 @@ public class HttpClientTransmitterImplTest extends TestCase
|
|||||||
assertTrue(Arrays.deepEquals(expectedException.getMsgParams(), receivedException.getMsgParams()));
|
assertTrue(Arrays.deepEquals(expectedException.getMsgParams(), receivedException.getMsgParams()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testBeginFailure() throws Exception
|
||||||
|
{
|
||||||
|
final ExceptionJsonSerializer errorSerializer = new ExceptionJsonSerializer();
|
||||||
|
final TransferException expectedException = new TransferException("my message id", new Object[] {"param1", "param2"});
|
||||||
|
when(mockedHttpClient.executeMethod(any(HostConfiguration.class), any(HttpMethod.class),
|
||||||
|
any(HttpState.class))).thenReturn(500);
|
||||||
|
doAnswer(new Answer<String>() {
|
||||||
|
@Override
|
||||||
|
public String answer(InvocationOnMock invocation) throws Throwable
|
||||||
|
{
|
||||||
|
JSONObject errorObject = errorSerializer.serialize(expectedException);
|
||||||
|
return errorObject.toString();
|
||||||
|
}
|
||||||
|
}).when(mockedHttpMethodFactory.latestPostMethod).getResponseBodyAsString();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
transmitter.begin(target);
|
||||||
|
fail();
|
||||||
|
}
|
||||||
|
catch(TransferException ex)
|
||||||
|
{
|
||||||
|
assertEquals(expectedException.getClass(), ex.getClass());
|
||||||
|
assertEquals(expectedException.getMsgId(), ex.getMsgId());
|
||||||
|
assertTrue(Arrays.deepEquals(expectedException.getMsgParams(), ex.getMsgParams()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static class CustomSocketFactory implements SecureProtocolSocketFactory
|
private static class CustomSocketFactory implements SecureProtocolSocketFactory
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user