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/05/16 09:44:44 UTC

[1/2] git commit: WICKET-4550 jsessionid is not added to resources if cookies are disabled by the server

Updated Branches:
  refs/heads/wicket-1.5.x 0c7903420 -> 7a7593efa


WICKET-4550 jsessionid is not added to resources if cookies are disabled by the server


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

Branch: refs/heads/wicket-1.5.x
Commit: 7a7593efa04c68220ef2f6b7084db31f7dc8a131
Parents: b35fa59
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed May 16 09:42:56 2012 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed May 16 09:42:56 2012 +0200

----------------------------------------------------------------------
 .../markup/html/internal/HeaderResponse.java       |   11 +++-----
 .../apache/wicket/request/cycle/RequestCycle.java  |   11 +++++---
 .../apache/wicket/settings/IResourceSettings.java  |   20 +++++++++++++++
 .../wicket/settings/def/ResourceSettings.java      |   12 +++++++++
 .../markup/html/internal/HeaderResponseTest.java   |   17 ------------
 5 files changed, 43 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/7a7593ef/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java
index 33e8e0d..2ef8216 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java
@@ -132,8 +132,7 @@ public abstract class HeaderResponse implements IHeaderResponse
 		
 		if (!closed)
 		{
-			String urlWoSessionId = Strings.stripJSessionId(url);
-			List<String> token = Arrays.asList("css", urlWoSessionId, media);
+			List<String> token = Arrays.asList("css", url, media);
 			if (wasRendered(token) == false)
 			{
 				if (Strings.isEmpty(condition) == false)
@@ -143,7 +142,7 @@ public abstract class HeaderResponse implements IHeaderResponse
 					getResponse().write("]>");
 				}
 				getResponse().write("<link rel=\"stylesheet\" type=\"text/css\" href=\"");
-				getResponse().write(Strings.escapeMarkup(urlWoSessionId));
+				getResponse().write(Strings.escapeMarkup(url));
 				getResponse().write("\"");
 				if (media != null)
 				{
@@ -232,9 +231,7 @@ public abstract class HeaderResponse implements IHeaderResponse
 
 		if (!closed)
 		{
-			String urlWoSessionId = Strings.stripJSessionId(url);
-
-			List<String> token1 = Arrays.asList("javascript", urlWoSessionId);
+			List<String> token1 = Arrays.asList("javascript", url);
 			List<String> token2 = (id != null) ? Arrays.asList("javascript", id) : null;
 
 			final boolean token1Unused = wasRendered(token1) == false;
@@ -242,7 +239,7 @@ public abstract class HeaderResponse implements IHeaderResponse
 
 			if (token1Unused && token2Unused)
 			{
-				JavaScriptUtils.writeJavaScriptUrl(getResponse(), urlWoSessionId, id, defer,
+				JavaScriptUtils.writeJavaScriptUrl(getResponse(), url, id, defer,
 					charset);
 				markRendered(token1);
 				if (token2 != null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/7a7593ef/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
index 592b1b9..14b62ea 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
@@ -453,7 +453,7 @@ public class RequestCycle implements IRequestCycle, IEventSink
 	public final CharSequence urlFor(ResourceReference reference, PageParameters params)
 	{
 		ResourceReferenceRequestHandler handler = new ResourceReferenceRequestHandler(reference, params);
-		return renderUrl(mapUrlFor(handler), handler);
+		return urlFor(handler);
 	}
 
 	/**
@@ -474,7 +474,7 @@ public class RequestCycle implements IRequestCycle, IEventSink
 	{
 		IRequestHandler handler = new BookmarkablePageRequestHandler(new PageProvider(pageClass,
 				parameters));
-		return renderUrl(mapUrlFor(handler), handler);
+		return urlFor(handler);
 	}
 
 	/**
@@ -497,12 +497,15 @@ public class RequestCycle implements IRequestCycle, IEventSink
 	{
 		if (url != null)
 		{
+			boolean shouldEncodeStaticResource = Application.exists() &&
+					Application.get().getResourceSettings().isEncodeJSessionId();
+
 			String renderedUrl = getUrlRenderer().renderUrl(url);
 			if (handler instanceof ResourceReferenceRequestHandler)
 			{
 				ResourceReferenceRequestHandler rrrh = (ResourceReferenceRequestHandler) handler;
 				IResource resource = rrrh.getResource();
-				if (resource instanceof IStaticCacheableResource == false)
+				if (!(resource instanceof IStaticCacheableResource) || shouldEncodeStaticResource)
 				{
 					renderedUrl = getOriginalResponse().encodeURL(renderedUrl);
 				}
@@ -511,7 +514,7 @@ public class RequestCycle implements IRequestCycle, IEventSink
 			{
 				ResourceRequestHandler rrh = (ResourceRequestHandler) handler;
 				IResource resource = rrh.getResource();
-				if (resource instanceof IStaticCacheableResource == false)
+				if (!(resource instanceof IStaticCacheableResource) || shouldEncodeStaticResource)
 				{
 					renderedUrl = getOriginalResponse().encodeURL(renderedUrl);
 				}

http://git-wip-us.apache.org/repos/asf/wicket/blob/7a7593ef/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java b/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java
index 4e062e2..322811b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java
+++ b/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java
@@ -345,4 +345,24 @@ public interface IResourceSettings extends IPropertiesFactoryContext
 	 *         CssPackageResource}. Null is a valid value.
 	 */
 	ICssCompressor getCssCompressor();
+
+	/**
+	 * A flag indicating whether static resources should have <tt>jsessionid</tt> encoded
+	 * in their url.
+	 *
+	 * @return {@code true} if the jsessionid should be encoded in the url for resources implementing
+	 * {@link org.apache.wicket.request.resource.caching.IStaticCacheableResource} when the cookies
+	 * are disabled and there is an active http session.
+	 */
+	boolean isEncodeJSessionId();
+
+	/**
+	 * Sets a flag indicating whether the jsessionid should be encoded in the url for resources implementing
+	 * {@link org.apache.wicket.request.resource.caching.IStaticCacheableResource} when the cookies are
+	 * disabled and there is an active http session.
+	 *
+	 * @param encodeJSessionId
+	 *      {@code true} when the jsessionid should be encoded, {@code false} - otherwise
+	 */
+	void setEncodeJSessionId(boolean encodeJSessionId);
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/7a7593ef/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java b/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java
index 0ffd3af..92c078b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java
+++ b/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java
@@ -128,6 +128,8 @@ public class ResourceSettings implements IResourceSettings
 	// application these settings are bound to
 	private final Application application;
 
+	private boolean encodeJSessionId = false;
+
 	/**
 	 * Configures Wicket's default ResourceLoaders.<br>
 	 * For an example in {@code FooApplication} let {@code bar.Foo} extend {@link Component}, this
@@ -448,6 +450,16 @@ public class ResourceSettings implements IResourceSettings
 		return cssCompressor;
 	}
 
+	public boolean isEncodeJSessionId()
+	{
+		return encodeJSessionId;
+	}
+
+	public void setEncodeJSessionId(boolean encodeJSessionId)
+	{
+		this.encodeJSessionId = encodeJSessionId;
+	}
+
 	public ICssCompressor setCssCompressor(ICssCompressor compressor)
 	{
 		ICssCompressor old = cssCompressor;

http://git-wip-us.apache.org/repos/asf/wicket/blob/7a7593ef/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java
index 311aa1d..031f14f 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HeaderResponseTest.java
@@ -189,21 +189,4 @@ public class HeaderResponseTest
 		String actual = headerResponse.getResponse().toString();
 		Assert.assertEquals(expected, actual);
 	}
-
-	/**
-	 * https://issues.apache.org/jira/browse/WICKET-4334
-	 * https://issues.apache.org/jira/browse/WICKET-4312
-	 */
-	@Test
-	public void doNotPreserveJSessionId() {
-		WicketTester tester = new WicketTester();
-		try {
-			headerResponse.renderJavaScriptReference("js-resource.js;jsessionid=1h402r54r4xuep32znicouftm", "some-id", false, null);
-			String expected = "<script type=\"text/javascript\" id=\"some-id\" src=\"js-resource.js\"></script>\n";
-			String actual = headerResponse.getResponse().toString();
-			Assert.assertEquals(expected, actual);
-		} finally {
-			tester.destroy();
-		}
-	}
 }