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
         */

Reply via email to