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

Reply via email to