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();
- }
- }
}