You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by eh...@apache.org on 2007/06/06 09:36:31 UTC

svn commit: r544754 - in /incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket: PageParameters.java RequestCycle.java

Author: ehillenius
Date: Wed Jun  6 00:36:30 2007
New Revision: 544754

URL: http://svn.apache.org/viewvc?view=rev&rev=544754
Log:
WICKET-605

Modified:
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/PageParameters.java
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/PageParameters.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/PageParameters.java?view=diff&rev=544754&r1=544753&r2=544754
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/PageParameters.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/PageParameters.java Wed Jun  6 00:36:30 2007
@@ -50,6 +50,13 @@
 	 */
 	public PageParameters()
 	{
+		super();
+		
+		RequestCycle cycle = RequestCycle.get();
+		if (cycle != null)
+		{
+			cycle.setPageParameters(this);
+		}
 	}
 
 	/**
@@ -62,6 +69,12 @@
 	public PageParameters(final Map parameterMap)
 	{
 		super(parameterMap);
+		
+		RequestCycle cycle = RequestCycle.get();
+		if (cycle != null)
+		{
+			cycle.setPageParameters(this);
+		}
 	}
 
 	/**
@@ -95,6 +108,12 @@
 	public PageParameters(final String keyValuePairs, final String delimiter)
 	{
 		super();
+
+		RequestCycle cycle = RequestCycle.get();
+		if (cycle != null)
+		{
+			cycle.setPageParameters(this);
+		}
 
 		// We can not use ValueMaps constructor as it uses
 		// VariableAssignmentParser which is more suitable for markup

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java?view=diff&rev=544754&r1=544753&r2=544754
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java Wed Jun  6 00:36:30 2007
@@ -254,6 +254,12 @@
 	/** holds the stack of set {@link IRequestTarget}, the last set op top. */
 	private transient final ArrayListStack requestTargets = new ArrayListStack(3);
 
+	/**
+	 * Any page parameters. Only set when the request is resolving and the
+	 * parameters are passed into a page.
+	 */
+	private PageParameters pageParameters;
+
 	/** The session object. */
 	private Session session;
 
@@ -333,6 +339,18 @@
 	}
 
 	/**
+	 * Any set page parameters. Typically only available when a request to a
+	 * bookmarkable page with a {@link Page#Page(PageParameters)} constructor
+	 * was made.
+	 * 
+	 * @return the page parameters or null
+	 */
+	public final PageParameters getPageParameters()
+	{
+		return this.pageParameters;
+	}
+
+	/**
 	 * Gets the processor for delegated request cycle handling.
 	 * 
 	 * @return the processor for delegated request cycle handling
@@ -744,7 +762,9 @@
 	 * Returns a URL that references a given interface on a component. When the
 	 * URL is requested from the server at a later time, the interface will be
 	 * called. A URL returned by this method will not be stable across sessions
-	 * and cannot be bookmarked by a user.
+	 * and cannot be bookmarked by a user unless the component resides on a
+	 * stateless bookmarkable page, in which case the URL *will* be
+	 * bookmarkable.
 	 * 
 	 * @param component
 	 *            The component to reference
@@ -761,8 +781,11 @@
 		if (listener != IRedirectListener.INTERFACE && component.isStateless()
 				&& page.isBookmarkable())
 		{
-			target = new BookmarkableListenerInterfaceRequestTarget(page.getPageMapName(),
-					page.getClass(), new PageParameters(), component, listener);
+			PageParameters parameters = (this.pageParameters != null)
+					? this.pageParameters
+					: new PageParameters();
+			target = new BookmarkableListenerInterfaceRequestTarget(page.getPageMapName(), page
+					.getClass(), parameters, component, listener);
 		}
 		else
 		{
@@ -954,7 +977,7 @@
 						+ ".", re);
 			}
 		}
-		
+
 		if (getResponse() instanceof BufferedWebResponse)
 		{
 			try
@@ -975,7 +998,7 @@
 		{
 			log.error("Exception occurred during onEndRequest", e);
 		}
-		
+
 		try
 		{
 			getApplication().getSessionStore().onEndRequest(getRequest());
@@ -984,7 +1007,7 @@
 		{
 			log.error("Exception occurred during onEndRequest of the SessionStore", e);
 		}
-		
+
 		// Release thread local resources
 		try
 		{
@@ -1215,6 +1238,21 @@
 		// Clear ThreadLocal reference; makes sense as this object should not be
 		// reused
 		current.set(null);
+	}
+
+	/**
+	 * Possibly set the page parameters. Only set when the request is resolving
+	 * and the parameters are passed into a page.
+	 * 
+	 * @param parameters
+	 *            the parameters to set
+	 */
+	final void setPageParameters(PageParameters parameters)
+	{
+		if (currentStep == RESOLVE_TARGET)
+		{
+			this.pageParameters = parameters;
+		}
 	}
 
 	/**