Skip to content

Commit

Permalink
Better management of BAD REQUEST and INTERNAL SERVER ERROR response
Browse files Browse the repository at this point in the history
  • Loading branch information
giastfader committed Feb 2, 2014
1 parent 67ae6e4 commit d79f3c5
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 17 deletions.
21 changes: 9 additions & 12 deletions app/com/baasbox/Global.java
Expand Up @@ -240,11 +240,10 @@ public Result onBadRequest(RequestHeader request, String error) {
result.put("http_code", 400);
Result resultToReturn = badRequest(result);
try {
Logger.debug("Global.onBadRequest:\n + result: \n" + result.toString() + "\n --> Body:\n" + new String(JavaResultExtractor.getBody(resultToReturn),"UTF-8"));
} catch (UnsupportedEncodingException e) {
//
if (Logger.isDebugEnabled()) Logger.debug("Global.onBadRequest:\n + result: \n" + result.toString() + "\n --> Body:\n" + new String(JavaResultExtractor.getBody(resultToReturn),"UTF-8"));
}finally{
return resultToReturn;
}
return resultToReturn;
}

// 404
Expand All @@ -255,11 +254,10 @@ public Result onHandlerNotFound(RequestHeader request) {
result.put("http_code", 404);
Result resultToReturn= notFound(result);
try {
Logger.debug("Global.onBadRequest:\n + result: \n" + result.toString() + "\n --> Body:\n" + new String(JavaResultExtractor.getBody(resultToReturn),"UTF-8"));
} catch (UnsupportedEncodingException e) {
//
if (Logger.isDebugEnabled()) Logger.debug("Global.onBadRequest:\n + result: \n" + result.toString() + "\n --> Body:\n" + new String(JavaResultExtractor.getBody(resultToReturn),"UTF-8"));
}finally{
return resultToReturn;
}
return resultToReturn;
}

// 500 - internal server error
Expand All @@ -272,11 +270,10 @@ public Result onError(RequestHeader request, Throwable throwable) {
error(ExceptionUtils.getFullStackTrace(throwable));
Result resultToReturn= internalServerError(result);
try {
Logger.debug("Global.onBadRequest:\n + result: \n" + result.toString() + "\n --> Body:\n" + new String(JavaResultExtractor.getBody(resultToReturn),"UTF-8"));
} catch (UnsupportedEncodingException e) {
//
if (Logger.isDebugEnabled()) Logger.debug("Global.onBadRequest:\n + result: \n" + result.toString() + "\n --> Body:\n" + new String(JavaResultExtractor.getBody(resultToReturn),"UTF-8"));
} finally{
return resultToReturn;
}
return resultToReturn;
}


Expand Down
14 changes: 9 additions & 5 deletions app/com/baasbox/controllers/actions/filters/WrapResponse.java
Expand Up @@ -141,6 +141,7 @@ public Result wrap(Context ctx, Result result) throws Throwable {
String username=(String) ctx.args.get("username");
if (username!=null) ctx.response().setHeader("BB-USERNAME", username);

byte[] resultContent=null;
if (BBConfiguration.getWrapResponse()){
Logger.debug("Wrapping the response");
final int statusCode = JavaResultExtractor.getStatus(result);
Expand All @@ -159,7 +160,7 @@ public Result wrap(Context ctx, Result result) throws Throwable {

final byte[] body = JavaResultExtractor.getBody(result);
String stringBody = new String(body, "UTF-8");
Logger.trace ("stringBody: " +stringBody);
if (Logger.isTraceEnabled()) Logger.trace ("stringBody: " +stringBody);
if (statusCode>399){ //an error has occured
switch (statusCode) {
case 400: result =onBadRequest(ctx.request(),stringBody);
Expand All @@ -180,13 +181,16 @@ public Result wrap(Context ctx, Result result) throws Throwable {
result=onOk(statusCode,ctx.request(),stringBody);
} //if (statusCode>399)
if (statusCode==204) result = Results.noContent();
//We was expecting that this would be done by the framework, apparently this is false
ctx.response().setHeader("Content-Length",String.valueOf(JavaResultExtractor.getBody(result).length));
try {
if (Logger.isDebugEnabled()) Logger.debug("WrapperResponse:\n + result: \n" + result.toString() + "\n --> Body:\n" + new String(JavaResultExtractor.getBody(result),"UTF-8"));
}catch (Throwable e){}
}else{ //if (BBConfiguration.getWrapResponse())
Logger.debug("The response will not be wrapped due configuration parameter");
try {
if (Logger.isDebugEnabled()) Logger.debug("WrapperResponse:\n + result: \n" + result.toString() + "\n --> Body:\n" + new String(JavaResultExtractor.getBody(result),"UTF-8"));
}catch (Throwable e){}
if (Logger.isDebugEnabled()) Logger.debug("WrapperResponse:\n + result: \n" + result.toString() + "\n --> Body:\n" + new String(JavaResultExtractor.getBody(result),"UTF-8"));
}

Logger.debug("WrapperResponse:\n + result: \n" + result.toString() + "\n --> Body:\n" + new String(JavaResultExtractor.getBody(result),"UTF-8"));
Logger.trace("Method End");

return result;
Expand Down

0 comments on commit d79f3c5

Please sign in to comment.