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 <[email protected]> Authored: Wed May 16 09:42:56 2012 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> 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(); - } - } }
