You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2012/04/02 14:22:34 UTC

git commit: WICKET-4480 newResourceResponse() always process IResourceStream

Updated Branches:
  refs/heads/wicket-1.5.x 074348686 -> 3aeb4ee3e


WICKET-4480 newResourceResponse() always process IResourceStream

Read the resource modification time earlier so that AbstractResource can decide whether it should be streamed back or not if it is not modified.


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/3aeb4ee3
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/3aeb4ee3
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/3aeb4ee3

Branch: refs/heads/wicket-1.5.x
Commit: 3aeb4ee3e33f5c2b4462ba4ff0c022b2cdcb7de2
Parents: 0743486
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Apr 2 14:18:09 2012 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Apr 2 14:22:17 2012 +0200

----------------------------------------------------------------------
 .../request/resource/ContextRelativeResource.java  |   61 +++++++--------
 .../wicket/request/resource/PackageResource.java   |   26 +++---
 2 files changed, 42 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/3aeb4ee3/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java
index e0a6d0d..1a4ff39 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java
@@ -80,42 +80,39 @@ public class ContextRelativeResource extends AbstractResource implements IStatic
 	{
 		final ResourceResponse resourceResponse = new ResourceResponse();
 
-		if (resourceResponse.dataNeedsToBeWritten(attributes))
+		final WebExternalResourceStream webExternalResourceStream =
+			new WebExternalResourceStream(path);
+		resourceResponse.setContentType(webExternalResourceStream.getContentType());
+		resourceResponse.setLastModified(webExternalResourceStream.lastModifiedTime());
+		resourceResponse.setFileName(path);
+		resourceResponse.setWriteCallback(new WriteCallback()
 		{
-			final WebExternalResourceStream webExternalResourceStream = 
-				new WebExternalResourceStream(path);
-			resourceResponse.setContentType(webExternalResourceStream.getContentType());
-			resourceResponse.setLastModified(webExternalResourceStream.lastModifiedTime());
-			resourceResponse.setFileName(path);
-			resourceResponse.setWriteCallback(new WriteCallback()
+			@Override
+			public void writeData(final Attributes attributes)
 			{
-				@Override
-				public void writeData(final Attributes attributes)
+				InputStream inputStream = null;
+				ByteArrayOutputStream baos = new ByteArrayOutputStream();
+				try
 				{
-					InputStream inputStream = null;
-					ByteArrayOutputStream baos = new ByteArrayOutputStream();
-					try
-					{
-						inputStream = webExternalResourceStream.getInputStream();
-						Streams.copy(inputStream, baos);
-						attributes.getResponse().write(baos.toByteArray());
-					}
-					catch (ResourceStreamNotFoundException rsnfx)
-					{
-						throw new WicketRuntimeException(rsnfx);
-					}
-					catch (IOException iox)
-					{
-						throw new WicketRuntimeException(iox);
-					}
-					finally
-					{
-						IOUtils.closeQuietly(inputStream);
-						IOUtils.closeQuietly(baos);
-					}
+					inputStream = webExternalResourceStream.getInputStream();
+					Streams.copy(inputStream, baos);
+					attributes.getResponse().write(baos.toByteArray());
 				}
-			});
-		}
+				catch (ResourceStreamNotFoundException rsnfx)
+				{
+					throw new WicketRuntimeException(rsnfx);
+				}
+				catch (IOException iox)
+				{
+					throw new WicketRuntimeException(iox);
+				}
+				finally
+				{
+					IOUtils.closeQuietly(inputStream);
+					IOUtils.closeQuietly(baos);
+				}
+			}
+		});
 
 		return resourceResponse;
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/3aeb4ee3/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
index aacfb2a..4237a27 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
@@ -211,16 +211,22 @@ public class PackageResource extends AbstractResource implements IStaticCacheabl
 	{
 		final ResourceResponse resourceResponse = new ResourceResponse();
 
-		if (resourceResponse.dataNeedsToBeWritten(attributes))
-		{
-			// get resource stream
-			final IResourceStream resourceStream = getResourceStream();
+		final IResourceStream resourceStream = getResourceStream();
 
-			// bail out if resource stream could not be found
-			if (resourceStream == null)
-				return sendResourceError(resourceResponse, HttpServletResponse.SC_NOT_FOUND,
+		// bail out if resource stream could not be found
+		if (resourceStream == null)
+		{
+			return sendResourceError(resourceResponse, HttpServletResponse.SC_NOT_FOUND,
 					"Unable to find resource");
+		}
+
+		// add Last-Modified header (to support HEAD requests and If-Modified-Since)
+		final Time lastModified = resourceStream.lastModifiedTime();
 
+		resourceResponse.setLastModified(lastModified);
+
+		if (resourceResponse.dataNeedsToBeWritten(attributes))
+		{
 			String contentType = resourceStream.getContentType();
 
 			if (contentType == null && Application.exists())
@@ -231,12 +237,6 @@ public class PackageResource extends AbstractResource implements IStaticCacheabl
 			// set Content-Type (may be null)
 			resourceResponse.setContentType(contentType);
 
-			// add Last-Modified header (to support HEAD requests and If-Modified-Since)
-			final Time lastModified = resourceStream.lastModifiedTime();
-
-			if (lastModified != null)
-				resourceResponse.setLastModified(lastModified);
-
 			try
 			{
 				// read resource data