Updated Branches: refs/heads/master a14fd5000 -> 8b3122b1a
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/8b3122b1 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8b3122b1 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8b3122b1 Branch: refs/heads/master Commit: 8b3122b1ace746a216c0a02a7f48e0f12c6f0e8a Parents: be8a4ea Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Wed May 16 09:57:02 2012 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Wed May 16 09:57:02 2012 +0200 ---------------------------------------------------------------------- .../apache/wicket/markup/head/CssHeaderItem.java | 3 +- .../wicket/markup/head/JavaScriptHeaderItem.java | 2 +- .../apache/wicket/request/cycle/RequestCycle.java | 11 +++++--- .../apache/wicket/settings/IResourceSettings.java | 20 +++++++++++++++ .../wicket/settings/def/ResourceSettings.java | 12 +++++++++ .../markup/html/internal/HeaderResponseTest.java | 18 ------------- 6 files changed, 41 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/8b3122b1/wicket-core/src/main/java/org/apache/wicket/markup/head/CssHeaderItem.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssHeaderItem.java index 92978da..13e8abe 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssHeaderItem.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssHeaderItem.java @@ -200,8 +200,7 @@ public abstract class CssHeaderItem extends HeaderItem response.write("]>"); } - String urlWoSessionId = Strings.stripJSessionId(url); - CssUtils.writeLinkUrl(response, urlWoSessionId, media); + CssUtils.writeLinkUrl(response, url, media); if (hasCondition) { http://git-wip-us.apache.org/repos/asf/wicket/blob/8b3122b1/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java index 8c7c48b..d03fd7e 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptHeaderItem.java @@ -297,7 +297,7 @@ public abstract class JavaScriptHeaderItem extends HeaderItem response.write("]>"); } - JavaScriptUtils.writeJavaScriptUrl(response, Strings.stripJSessionId(url), id, defer, charset); + JavaScriptUtils.writeJavaScriptUrl(response, url, id, defer, charset); if (hasCondition) { http://git-wip-us.apache.org/repos/asf/wicket/blob/8b3122b1/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 2dc56e6..9cefde7 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 { 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/8b3122b1/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 122348b..be9c864 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 @@ -383,4 +383,24 @@ public interface IResourceSettings extends IPropertiesFactoryContext * @return The comparator used to sort header items. */ Comparator<? super RecordedHeaderItem> getHeaderItemComparator(); + + /** + * 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/8b3122b1/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 3909335..e2fbb3e 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 @@ -137,6 +137,8 @@ public class ResourceSettings implements IResourceSettings private Comparator<? super RecordedHeaderItem> headerItemComparator = new PriorityFirstComparator( false); + private boolean encodeJSessionId = false; + /** * Configures Wicket's default ResourceLoaders.<br> * For an example in {@code FooApplication} let {@code bar.Foo} extend {@link Component}, this @@ -579,4 +581,14 @@ public class ResourceSettings implements IResourceSettings { this.headerItemComparator = headerItemComparator; } + + public boolean isEncodeJSessionId() + { + return encodeJSessionId; + } + + public void setEncodeJSessionId(boolean encodeJSessionId) + { + this.encodeJSessionId = encodeJSessionId; + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/8b3122b1/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 d2f3be2..a8ec452 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 @@ -209,24 +209,6 @@ public class HeaderResponseTest 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.render(JavaScriptHeaderItem.forUrl("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(); - } - } - - /** * Tests the creation of a proper IE conditional comment */
