You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2010/08/25 00:48:50 UTC

svn commit: r988751 - in /wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket: ./ markup/html/ markup/html/resources/ protocol/http/request/ request/

Author: ivaynberg
Date: Tue Aug 24 22:48:49 2010
New Revision: 988751

URL: http://svn.apache.org/viewvc?rev=988751&view=rev
Log:
Packaged Resource URLs encoded with jsessionid
Issue: WICKET-2999

Modified:
    wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ResourceReference.java
    wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/PackageResourceReference.java
    wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/resources/CompressedResourceReference.java
    wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/resources/JavascriptResourceReference.java
    wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java
    wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/RequestParameters.java

Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ResourceReference.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ResourceReference.java?rev=988751&r1=988750&r2=988751&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ResourceReference.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ResourceReference.java Tue Aug 24 22:48:49 2010
@@ -71,6 +71,9 @@ public class ResourceReference implement
 	/** The style of the resource */
 	private String style;
 
+	/** Whether or not this resource reference is stateless */
+	private boolean stateless;
+
 	/**
 	 * Constructs a ResourceReference with the given scope and name. The scope is used as a
 	 * namespace and the scope together with the name must uniquely identify the reference.
@@ -329,4 +332,26 @@ public class ResourceReference implement
 			return null;
 		}
 	}
+
+	/**
+	 * @see #setStateless(boolean)
+	 * @return stateless falg
+	 */
+	public boolean isStateless()
+	{
+		return stateless;
+	}
+
+	/**
+	 * Sets whether or not the resource pointed to by this reference requires a session. Urls to
+	 * resources that do not require a session will have their jsessionid stripped.
+	 * 
+	 * @param stateless
+	 */
+	public void setStateless(boolean stateless)
+	{
+		this.stateless = stateless;
+	}
+
+
 }

Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/PackageResourceReference.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/PackageResourceReference.java?rev=988751&r1=988750&r2=988751&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/PackageResourceReference.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/PackageResourceReference.java Tue Aug 24 22:48:49 2010
@@ -71,6 +71,7 @@ public class PackageResourceReference ex
 		{
 			setLocale(((PackageResource)getResource()).getLocale());
 		}
+		setStateless(true);
 	}
 
 	/**

Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/resources/CompressedResourceReference.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/resources/CompressedResourceReference.java?rev=988751&r1=988750&r2=988751&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/resources/CompressedResourceReference.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/resources/CompressedResourceReference.java Tue Aug 24 22:48:49 2010
@@ -42,6 +42,7 @@ public class CompressedResourceReference
 	public CompressedResourceReference(Class<?> scope, String name)
 	{
 		super(scope, name);
+		setStateless(true);
 	}
 
 	/**
@@ -51,6 +52,7 @@ public class CompressedResourceReference
 	public CompressedResourceReference(Class<?> scope, String name, Locale locale, String style)
 	{
 		super(scope, name, locale, style);
+		setStateless(true);
 	}
 
 	/**
@@ -59,6 +61,7 @@ public class CompressedResourceReference
 	public CompressedResourceReference(String name)
 	{
 		super(name);
+		setStateless(true);
 	}
 
 	/**

Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/resources/JavascriptResourceReference.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/resources/JavascriptResourceReference.java?rev=988751&r1=988750&r2=988751&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/resources/JavascriptResourceReference.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/resources/JavascriptResourceReference.java Tue Aug 24 22:48:49 2010
@@ -45,6 +45,7 @@ public class JavascriptResourceReference
 	public JavascriptResourceReference(Class<?> scope, String name, Locale locale, String style)
 	{
 		super(scope, name, locale, style);
+		setStateless(true);
 	}
 
 	/**
@@ -56,6 +57,7 @@ public class JavascriptResourceReference
 	public JavascriptResourceReference(Class<?> scope, String name)
 	{
 		super(scope, name);
+		setStateless(true);
 	}
 
 	/**
@@ -66,6 +68,7 @@ public class JavascriptResourceReference
 	public JavascriptResourceReference(String name)
 	{
 		super(name);
+		setStateless(true);
 	}
 
 	@Override

Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java?rev=988751&r1=988750&r2=988751&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebRequestCodingStrategy.java Tue Aug 24 22:48:49 2010
@@ -257,6 +257,8 @@ public class WebRequestCodingStrategy im
 		boolean portletRequest = requestContext.isPortletRequest();
 		boolean sharedResourceURL = false;
 
+		boolean stripJsessionId = false;
+
 		if (url != null && !portletRequest)
 		{
 			// Do nothing - we've found the URL and it's mounted.
@@ -280,6 +282,9 @@ public class WebRequestCodingStrategy im
 			url = requestContext.encodeSharedResourceURL(url == null ? encode(requestCycle,
 				(ISharedResourceRequestTarget)requestTarget) : url);
 			sharedResourceURL = true;
+
+			stripJsessionId = ((ISharedResourceRequestTarget)requestTarget).getRequestParameters()
+				.isStateless();
 		}
 		else if (requestTarget instanceof PageReferenceRequestTarget)
 		{
@@ -379,7 +384,13 @@ public class WebRequestCodingStrategy im
 					result = "./";
 				}
 			}
-			return requestCycle.getOriginalResponse().encodeURL(result);
+
+			CharSequence encoded = requestCycle.getOriginalResponse().encodeURL(result);
+			if (stripJsessionId)
+			{
+				encoded = Strings.stripJSessionId(encoded);
+			}
+			return encoded;
 		}
 
 		// Just return null instead of throwing an exception. So that it can be

Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/RequestParameters.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/RequestParameters.java?rev=988751&r1=988750&r2=988751&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/RequestParameters.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/RequestParameters.java Tue Aug 24 22:48:49 2010
@@ -90,6 +90,9 @@ public class RequestParameters implement
 	/** the request query string */
 	private String queryString;
 
+	/** whether the url to the request with these parameters requires a session */
+	private boolean stateless = true;
+
 	/**
 	 * Construct.
 	 */
@@ -366,6 +369,27 @@ public class RequestParameters implement
 	}
 
 	/**
+	 * @see #setStateless(boolean)
+	 * @return stateless flag
+	 */
+	public boolean isStateless()
+	{
+		return stateless;
+	}
+
+	/**
+	 * Sets whether or not this request can be processed without a session present. If a url is
+	 * encoded for a request with these parameters jsessionid will be stripped, this is useful when
+	 * rendering urls to packaged resources and other artifacts that do not require a session.
+	 * 
+	 * @param stateless
+	 */
+	public void setStateless(boolean stateless)
+	{
+		this.stateless = stateless;
+	}
+
+	/**
 	 * @see java.lang.Object#toString()
 	 */
 	@Override