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);
}