Enhance HTTP call logging
authorChristos KK Loverdos <loverdos@gmail.com>
Fri, 19 Apr 2013 09:52:22 +0000 (12:52 +0300)
committerChristos KK Loverdos <loverdos@gmail.com>
Fri, 19 Apr 2013 09:52:22 +0000 (12:52 +0300)
src/gr/grnet/pithos/web/client/Helpers.java
src/gr/grnet/pithos/web/client/Pithos.java
src/gr/grnet/pithos/web/client/rest/DeleteRequest.java
src/gr/grnet/pithos/web/client/rest/GetRequest.java
src/gr/grnet/pithos/web/client/rest/HeadRequest.java
src/gr/grnet/pithos/web/client/rest/PostRequest.java
src/gr/grnet/pithos/web/client/rest/PutRequest.java
src/gr/grnet/pithos/web/client/rest/RestRequestCallback.java

index 4b2b44d..964a1b7 100644 (file)
@@ -1,12 +1,12 @@
 package gr.grnet.pithos.web.client;
 
+import com.google.gwt.http.client.Header;
+import com.google.gwt.http.client.RequestBuilder;
+import com.google.gwt.http.client.Response;
 import com.google.gwt.json.client.JSONArray;
 import com.google.gwt.json.client.JSONString;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 
 /**
  * Helper methods.
@@ -64,4 +64,34 @@ public final class Helpers {
         }
         return s.substring(0, index + part.length());
     }
+
+    public static void setHeaders(RequestBuilder builder, Map<String, String> headers) {
+        for (String headerName : headers.keySet()) {
+            final String headerValue = headers.get(headerName);
+            builder.setHeader(headerName, headerValue);
+
+            if(Pithos.IsDetailedHTTPLOGEnabled) {
+                Pithos.LOG("  ==> ", headerName, ": ", headerValue);
+            }
+        }
+    }
+
+    public static void LOGResponse(Response response) {
+        if(Pithos.IsDetailedHTTPLOGEnabled) {
+            try {
+                final int statusCode = response.getStatusCode();
+                final String statusText = response.getStatusText();
+                Pithos.LOG("  ", statusCode, " ", statusText);
+                final Header[] headers = response.getHeaders();
+                for(Header header : headers) {
+                    final String name = header.getName();
+                    final String value = header.getValue();
+                    Pithos.LOG("  <== ", name, ": ", value);
+                }
+            }
+            catch(Exception e) {
+                Pithos.LOG("ERROR trying to log response", e);
+            }
+        }
+    }
 }
index 670d6f6..e72b729 100644 (file)
@@ -78,8 +78,8 @@ import java.util.*;
  * Entry point classes define <code>onModuleLoad()</code>.
  */
 public class Pithos implements EntryPoint, ResizeHandler {
-
     private static final boolean IsLOGEnabled = true;
+    public static final boolean IsDetailedHTTPLOGEnabled = true;
 
     public static final Configuration config = GWT.create(Configuration.class);
 
index 2e98f2b..bafffbe 100644 (file)
@@ -35,6 +35,7 @@
 
 package gr.grnet.pithos.web.client.rest;
 
+import gr.grnet.pithos.web.client.Helpers;
 import gr.grnet.pithos.web.client.Pithos;
 import gr.grnet.pithos.web.client.Resource;
 
@@ -78,12 +79,11 @@ public abstract class DeleteRequest implements ScheduledCommand {
 
     @Override
     public void execute() {
-        Pithos.LOG("DELETE api = ", api, ", owner = ", owner, ", path = ", path);
-        Pithos.LOG("   ==> ", api + owner + path);
+        Pithos.LOG("DELETE ", api + owner + path);
+
         RequestBuilder builder = new RequestBuilder(RequestBuilder.DELETE, api + owner + path);
-        for (String header : headers.keySet()) {
-            builder.setHeader(header, headers.get(header));
-        }
+        Helpers.setHeaders(builder, headers);
+
         try {
             builder.sendRequest("", new RestRequestCallback<Resource>(api + owner + path, Response.SC_NO_CONTENT) {
                 @Override
index 5b8a548..f6ac4db 100644 (file)
@@ -35,6 +35,8 @@
 
 package gr.grnet.pithos.web.client.rest;
 
+import gr.grnet.pithos.web.client.Const;
+import gr.grnet.pithos.web.client.Helpers;
 import gr.grnet.pithos.web.client.Pithos;
 import gr.grnet.pithos.web.client.Resource;
 
@@ -92,17 +94,18 @@ public abstract class GetRequest<T extends Resource> implements ScheduledCommand
 
     @Override
     public void execute() {
-       if (path.contains("?"))
+       if (path.contains(Const.QUESTION_MARK)) {
                path += "&t=" + System.currentTimeMillis();
-       else
+        }
+       else {
                path += "?t=" + System.currentTimeMillis();
-        Pithos.LOG("GET api = ", api, ", owner = ", owner, ", path = ", path);
-        Pithos.LOG("   ==> ", api + owner + path);
+        }
+
+        Pithos.LOG("GET ", api + owner + path);
+
         RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, api + owner + path);
+        Helpers.setHeaders(builder, headers);
 
-        for (String header : headers.keySet()) {
-            builder.setHeader(header, headers.get(header));
-        }
         try {
             builder.sendRequest("", new RestRequestCallback<T>(api + owner + path, okCode) {
                 @Override
index b3602eb..0fafb03 100644 (file)
@@ -35,6 +35,8 @@
 
 package gr.grnet.pithos.web.client.rest;
 
+import gr.grnet.pithos.web.client.Const;
+import gr.grnet.pithos.web.client.Helpers;
 import gr.grnet.pithos.web.client.Pithos;
 import gr.grnet.pithos.web.client.Resource;
 
@@ -93,16 +95,18 @@ public abstract class HeadRequest<T extends Resource> implements ScheduledComman
 
     @Override
     public void execute() {
-       if (path.contains("?"))
-               path += "&t=" + System.currentTimeMillis();
-       else
+       if (path.contains(Const.QUESTION_MARK)) {
+            path += "&t=" + System.currentTimeMillis();
+        }
+       else {
                path += "?t=" + System.currentTimeMillis();
-        Pithos.LOG("HEAD api = ", api, ", owner = ", owner, ", path = ", path);
-        Pithos.LOG("   ==> ", api + owner + path);
-        RequestBuilder builder = new RequestBuilder(RequestBuilder.HEAD, api + owner + path);
-        for (String header : headers.keySet()) {
-            builder.setHeader(header, headers.get(header));
         }
+
+        Pithos.LOG("HEAD ", api + owner + path);
+
+        RequestBuilder builder = new RequestBuilder(RequestBuilder.HEAD, api + owner + path);
+        Helpers.setHeaders(builder, headers);
+
         try {
             builder.sendRequest("", new RestRequestCallback<T>(api + owner + path, okCode) {
                 @Override
index 426fb61..5423a20 100644 (file)
@@ -35,6 +35,7 @@
 
 package gr.grnet.pithos.web.client.rest;
 
+import gr.grnet.pithos.web.client.Helpers;
 import gr.grnet.pithos.web.client.Pithos;
 import gr.grnet.pithos.web.client.Resource;
 
@@ -79,12 +80,11 @@ public abstract class PostRequest implements ScheduledCommand {
 
     @Override
     public void execute() {
+        Pithos.LOG("POST ", api + owner + path);
+
         RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, api + owner + path);
-        Pithos.LOG("POST api = ", api, ", owner = ", owner, ", path = ", path);
-        Pithos.LOG("   ==> ", api + owner + path);
-        for (String header : headers.keySet()) {
-            builder.setHeader(header, headers.get(header));
-        }
+        Helpers.setHeaders(builder, headers);
+
         try {
             builder.sendRequest(data, new RestRequestCallback<Resource>(api + owner + path, Response.SC_ACCEPTED) {
                 @Override
index 7f50ed4..eb44106 100644 (file)
@@ -70,6 +70,7 @@
 
 package gr.grnet.pithos.web.client.rest;
 
+import gr.grnet.pithos.web.client.Helpers;
 import gr.grnet.pithos.web.client.Pithos;
 import gr.grnet.pithos.web.client.Resource;
 
@@ -104,12 +105,11 @@ public abstract class PutRequest implements ScheduledCommand {
 
     @Override
     public void execute() {
+        Pithos.LOG("PUT ", api + owner + path);
+
         RequestBuilder builder = new RequestBuilder(RequestBuilder.PUT, api + owner + path);
-        Pithos.LOG("PUT api = ", api, ", owner = ", owner, ", path = ", path);
-        Pithos.LOG("   ==> ", api + owner + path);
-        for (String header : headers.keySet()) {
-            builder.setHeader(header, headers.get(header));
-        }
+        Helpers.setHeaders(builder, headers);
+
         try {
             builder.sendRequest("", new RestRequestCallback<Resource>(api + owner + path, Response.SC_CREATED) {
                 @Override
index f97d8cb..bd17bf3 100644 (file)
 
 package gr.grnet.pithos.web.client.rest;
 
+import com.google.gwt.http.client.Header;
 import com.google.gwt.http.client.Request;
 import com.google.gwt.http.client.RequestCallback;
 import com.google.gwt.http.client.Response;
+import gr.grnet.pithos.web.client.Helpers;
 import gr.grnet.pithos.web.client.Pithos;
 import gr.grnet.pithos.web.client.Resource;
 
@@ -58,6 +60,8 @@ public abstract class RestRequestCallback<T extends Resource> implements Request
 
     @Override
     public void onResponseReceived(Request request, Response response) {
+        Helpers.LOGResponse(response);
+
         try {
             if (response.getStatusCode() == HTTP_OK || (okcode !=-1 && response.getStatusCode() == okcode))
                 onSuccess(deserialize(response));