You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by li...@apache.org on 2008/05/19 22:02:07 UTC

svn commit: r657952 - in /incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets: http/BasicHttpFetcher.java http/HttpResponse.java servlet/GadgetRenderingTask.java

Author: lindner
Date: Mon May 19 13:02:07 2008
New Revision: 657952

URL: http://svn.apache.org/viewvc?rev=657952&view=rev
Log:
Implement first part of SHINDIG-278, add TIMEOUTs and negative
caching to the fetch/gadget layer

Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java?rev=657952&r1=657951&r2=657952&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java Mon May 19 13:02:07 2008
@@ -157,6 +157,9 @@
     } catch (IOException e) {
       if (e instanceof FileNotFoundException) {
         return HttpResponse.NOT_FOUND;
+      } else if (e instanceof java.net.SocketTimeoutException ||
+                 e instanceof java.net.SocketException) {
+        return HttpResponse.TIMEOUT;
       }
       return HttpResponse.ERROR;
     }

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java?rev=657952&r1=657951&r2=657952&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java Mon May 19 13:02:07 2008
@@ -34,6 +34,7 @@
   public final static int SC_OK = 200;
   public final static int SC_NOT_FOUND = 404;
   public final static int SC_INTERNAL_SERVER_ERROR = 500;
+  public final static int SC_TIMEOUT = 504;
 
   private final int httpStatusCode;
   private static final String DEFAULT_ENCODING = "UTF-8";
@@ -41,6 +42,7 @@
 
   public static final HttpResponse ERROR
       = new HttpResponse(SC_INTERNAL_SERVER_ERROR);
+  public static final HttpResponse TIMEOUT = new HttpResponse(SC_TIMEOUT);
   public static final HttpResponse NOT_FOUND = new HttpResponse(SC_NOT_FOUND);
 
   // Used to lazily convert to a string representation of the input.
@@ -113,7 +115,7 @@
       if (parts.length == 2) {
         int offset = parts[1].indexOf("charset=");
         if (offset != -1) {
-          return parts[1].substring(offset + 8);
+          return parts[1].substring(offset + 8).toUpperCase();
         }
       }
     }

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java?rev=657952&r1=657951&r2=657952&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java Mon May 19 13:02:07 2008
@@ -357,7 +357,10 @@
   }
 
   /**
-   * Displays errors.
+   * Displays errors for failed GadgetRendering.
+   * Also sets the caching headers to insure that our server
+   * is not hurt by failing backends when nocache is not set.
+   *
    * @param error
    * @throws IOException
    */
@@ -369,6 +372,13 @@
     if (message == null || message.length() == 0) {
       message = "Failed to render gadget: " + error.getCode().toString();
     }
+
+    // cache this for 1 minute
+    // TODO: make this a container specific configuration option
+    if (!"1".equals(request.getParameter("nocache"))) {
+      HttpUtil.setCachingHeaders(response, 60);
+    }
+
     response.getWriter().print(message);
   }