if (entityBody != null)
{
builder.setEntity(entityBody.getBytes(Data.UTF_8_CHARSET));
}
RestRequest request = builder.build();
RoutingResult routingResult = new RoutingResult(new ResourceContextImpl(pathkeys, request,
new RequestContext()), resourceMethodDescriptor);
final CountDownLatch latch = new CountDownLatch(1);
final RestLiCallback<Object> outerCallback = new RestLiCallback<Object>(request,
routingResult,
new RestLiResponseHandler.Builder().build(),
new RequestExecutionCallback<RestResponse>()
{
@Override
public void onError(final Throwable e, RequestExecutionReport executionReport)
{
if (isDebugMode)
{
Assert.assertNotNull(executionReport);
}
else
{
Assert.assertNull(executionReport);
}
if (callback != null)
{
callback.onError(e, executionReport);
}
latch.countDown();
}
@Override
public void onSuccess(final RestResponse result, RequestExecutionReport executionReport)
{
if (isDebugMode)
{
Assert.assertNotNull(executionReport);
}
else
{
Assert.assertNull(executionReport);
}
if (callback != null)
{
callback.onSuccess(result, executionReport);
}
latch.countDown();
}
}, null, null);
_invoker.invoke(routingResult, request, outerCallback, isDebugMode, null);
try
{
latch.await();
}
catch (InterruptedException e)
{
// Ignore
}
EasyMock.verify(resource);
Assert.assertEquals(((ServerResourceContext) routingResult.getContext()).getResponseMimeType(),
"application/json");
}
catch (RestLiSyntaxException e)
{
throw new RoutingException("syntax exception", 400);