You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jb...@apache.org on 2007/03/14 14:32:44 UTC
svn commit: r518132 - in
/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket:
Resource.java Response.java
Author: jbq
Date: Wed Mar 14 06:32:43 2007
New Revision: 518132
URL: http://svn.apache.org/viewvc?view=rev&rev=518132
Log:
* Rewrite Response.write() based on Resource.respond()
* Remove Resource.respond() and use a ResourceStreamRequestTarget to process the request
Modified:
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/Resource.java
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/Response.java
Modified: incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/Resource.java
URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/Resource.java?view=diff&rev=518132&r1=518131&r2=518132
==============================================================================
--- incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/Resource.java (original)
+++ incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/Resource.java Wed Mar 14 06:32:43 2007
@@ -16,15 +16,12 @@
*/
package wicket;
-import java.io.OutputStream;
-import java.net.SocketException;
-import java.sql.SQLException;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import wicket.util.io.Streams;
+import wicket.request.target.resource.ResourceStreamRequestTarget;
import wicket.util.resource.IResourceStream;
import wicket.util.time.Time;
import wicket.util.value.ValueMap;
@@ -115,14 +112,9 @@
// Get servlet response to use when responding with resource
final Response response = cycle.getResponse();
- // Configure response with content type of resource
- response.setContentType(resourceStream.getContentType());
- response.setContentLength((int)resourceStream.length());
-
+ // FIXME WICKET-385 Move HTTP caching features out of wicket.Resource
if (isCacheable())
{
- // Don't set this above setContentLength call above.
- // The call above could create and set the last modified time.
response.setLastModifiedTime(resourceStream.lastModifiedTime());
}
else
@@ -131,13 +123,11 @@
}
configureResponse(response);
- // Respond with resource
- respond(resourceStream, response);
+ cycle.setRequestTarget(new ResourceStreamRequestTarget(resourceStream));
}
finally
{
- // Really really really make sure parameters are cleared to appease
- // Johan
+ // Really really really make sure parameters are cleared
parameters.set(null);
}
}
@@ -220,75 +210,5 @@
throw new WicketRuntimeException("Could not get resource stream");
}
return stream;
- }
-
- /**
- * Respond with resource
- *
- * @param resourceStream
- * The current resourcestream of the resource
- * @param response
- * The response to write to
- */
- private final void respond(final IResourceStream resourceStream, final Response response)
- {
- try
- {
- final OutputStream out = response.getOutputStream();
- try
- {
- Streams.copy(resourceStream.getInputStream(), out);
- }
- finally
- {
- resourceStream.close();
- out.flush();
- }
- }
- catch (Exception e)
- {
- // FIXME this doesn't catch all. For instance, Jetty (6/ NIO) on
- // Unix like platforms will not be recogninzed as exceptions
- // that should be ignored
-
- Throwable throwable = e;
- boolean ignoreException = false;
- while (throwable != null)
- {
- if (throwable instanceof SQLException)
- {
- break; // leave false and quit loop
- }
- else if (throwable instanceof SocketException)
- {
- String message = throwable.getMessage();
- ignoreException = message != null
- && (message.indexOf("Connection reset") != -1
- || message.indexOf("Broken pipe") != -1
- || message.indexOf("Socket closed") != -1
- || message.indexOf("connection abort") != -1);
- }
- else
- {
- ignoreException = throwable.getClass().getName()
- .indexOf("ClientAbortException") >= 0;
- }
- if (ignoreException)
- {
- if (log.isDebugEnabled())
- {
- log.debug("Socket exception ignored for sending Resource "
- + "response to client (ClientAbort)", e);
- }
- break;
- }
- throwable = throwable.getCause();
- }
- if (!ignoreException)
- {
- throw new WicketRuntimeException("Unable to render resource stream "
- + resourceStream, e);
- }
- }
}
}
Modified: incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/Response.java
URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/Response.java?view=diff&rev=518132&r1=518131&r2=518132
==============================================================================
--- incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/Response.java (original)
+++ incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/Response.java Wed Mar 14 06:32:43 2007
@@ -21,6 +21,7 @@
import java.io.OutputStream;
import java.net.SocketException;
import java.net.URLConnection;
+import java.sql.SQLException;
import java.util.List;
import java.util.Locale;
@@ -251,37 +252,46 @@
}
catch (Exception e)
{
+ // FIXME this doesn't catch all. For instance, Jetty (6/ NIO) on
+ // Unix like platforms will not be recogninzed as exceptions
+ // that should be ignored
+
Throwable throwable = e;
boolean ignoreException = false;
while (throwable != null)
{
- if (throwable instanceof SocketException)
+ if (throwable instanceof SQLException)
+ {
+ break; // leave false and quit loop
+ }
+ else if (throwable instanceof SocketException)
{
String message = throwable.getMessage();
ignoreException = message != null
- && (message.indexOf("Connection reset by peer") != -1 || message
- .indexOf("Software caused connection abort") != -1);
+ && (message.indexOf("Connection reset") != -1
+ || message.indexOf("Broken pipe") != -1
+ || message.indexOf("Socket closed") != -1
+ || message.indexOf("connection abort") != -1);
}
else
{
ignoreException = throwable.getClass().getName()
.indexOf("ClientAbortException") >= 0;
- if (ignoreException)
+ }
+ if (ignoreException)
+ {
+ if (log.isDebugEnabled())
{
- if (log.isDebugEnabled())
- {
- log.debug("Socket exception ignored for sending Resource "
- + "response to client (ClientAbort)", e);
- }
- break;
+ log.debug("Socket exception ignored for sending Resource "
+ + "response to client (ClientAbort)", e);
}
+ break;
}
throwable = throwable.getCause();
-
- if (!ignoreException)
- {
- throw new WicketRuntimeException("Unable to write response", e);
- }
+ }
+ if (!ignoreException)
+ {
+ throw new WicketRuntimeException("Unable to write the response", e);
}
}
finally