volume upload: post response http error code is 200 even for error case

Returned appropriate error code(bad request, internal server error, ok)


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/58f2fb1b
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/58f2fb1b
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/58f2fb1b

Branch: refs/heads/volume-upload
Commit: 58f2fb1bb17768cd07ade0d652d35d817c43ee80
Parents: 643165a
Author: Rajani Karuturi <[email protected]>
Authored: Mon Feb 16 16:55:15 2015 +0530
Committer: Rajani Karuturi <[email protected]>
Committed: Tue Feb 17 12:31:38 2015 +0530

----------------------------------------------------------------------
 .../storage/resource/HttpUploadServerHandler.java | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58f2fb1b/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/HttpUploadServerHandler.java
----------------------------------------------------------------------
diff --git 
a/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/HttpUploadServerHandler.java
 
b/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/HttpUploadServerHandler.java
index 47446ab..0c95707 100644
--- 
a/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/HttpUploadServerHandler.java
+++ 
b/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/HttpUploadServerHandler.java
@@ -142,13 +142,13 @@ public class HttpUploadServerHandler extends 
SimpleChannelInboundHandler<HttpObj
                 } catch (InvalidParameterValueException ex) {
                     logger.error("post request validation failed", ex);
                     responseContent.append(ex.getMessage());
-                    writeResponse(ctx.channel());
+                    writeResponse(ctx.channel(), 
HttpResponseStatus.BAD_REQUEST);
                     return;
                 }
                 if (uploadEntity == null) {
                     logger.error("Unable to create upload entity. An exception 
occurred.");
                     responseContent.append("Internal Server Error");
-                    writeResponse(ctx.channel());
+                    writeResponse(ctx.channel(), 
HttpResponseStatus.INTERNAL_SERVER_ERROR);
                     return;
                 }
                 //set the base directory to download the file
@@ -160,13 +160,13 @@ public class HttpUploadServerHandler extends 
SimpleChannelInboundHandler<HttpObj
                 } catch (ErrorDataDecoderException | 
IncompatibleDataDecoderException e) {
                     logger.error("exception while initialising the decoder", 
e);
                     responseContent.append(e.getMessage());
-                    writeResponse(ctx.channel());
+                    writeResponse(ctx.channel(), 
HttpResponseStatus.INTERNAL_SERVER_ERROR);
                     return;
                 }
             } else {
                 logger.warn("received a get request");
                 responseContent.append("only post requests are allowed");
-                writeResponse(ctx.channel());
+                writeResponse(ctx.channel(), HttpResponseStatus.BAD_REQUEST);
                 return;
             }
 
@@ -181,12 +181,12 @@ public class HttpUploadServerHandler extends 
SimpleChannelInboundHandler<HttpObj
                 } catch (ErrorDataDecoderException e) {
                     logger.error("data decoding exception", e);
                     responseContent.append(e.getMessage());
-                    writeResponse(ctx.channel());
+                    writeResponse(ctx.channel(), 
HttpResponseStatus.INTERNAL_SERVER_ERROR);
                     return;
                 }
                 if (chunk instanceof LastHttpContent) {
                     readFileUploadData();
-                    writeResponse(ctx.channel());
+                    writeResponse(ctx.channel(), HttpResponseStatus.OK);
                     reset();
                 }
             }
@@ -221,7 +221,7 @@ public class HttpUploadServerHandler extends 
SimpleChannelInboundHandler<HttpObj
         }
     }
 
-    private void writeResponse(Channel channel) {
+    private void writeResponse(Channel channel, HttpResponseStatus statusCode) 
{
         // Convert the response content to a ChannelBuffer.
         ByteBuf buf = copiedBuffer(responseContent.toString(), 
CharsetUtil.UTF_8);
         responseContent.setLength(0);
@@ -229,7 +229,7 @@ public class HttpUploadServerHandler extends 
SimpleChannelInboundHandler<HttpObj
         boolean close = 
HttpHeaders.Values.CLOSE.equalsIgnoreCase(request.headers().get(CONNECTION)) ||
             request.getProtocolVersion().equals(HttpVersion.HTTP_1_0) && 
!HttpHeaders.Values.KEEP_ALIVE.equalsIgnoreCase(request.headers().get(CONNECTION));
         // Build the response object.
-        FullHttpResponse response = new 
DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, buf);
+        FullHttpResponse response = new 
DefaultFullHttpResponse(HttpVersion.HTTP_1_1, statusCode, buf);
         response.headers().set(CONTENT_TYPE, "text/plain; charset=UTF-8");
         if (!close) {
             // There's no need to add 'Content-Length' header if this is the 
last response.
@@ -247,7 +247,7 @@ public class HttpUploadServerHandler extends 
SimpleChannelInboundHandler<HttpObj
     public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) 
throws Exception {
         logger.warn(responseContent.toString(), cause);
         responseContent.append("\r\nException occurred: 
").append(cause.getMessage());
-        writeResponse(ctx.channel());
+        writeResponse(ctx.channel(), HttpResponseStatus.INTERNAL_SERVER_ERROR);
         ctx.channel().close();
     }
 }

Reply via email to