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