You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jc...@apache.org on 2007/11/01 20:51:45 UTC

svn commit: r591136 - in /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component: BookmarkableListenerInterfaceRequestTarget.java BookmarkablePageRequestTarget.java

Author: jcompagner
Date: Thu Nov  1 12:51:42 2007
New Revision: 591136

URL: http://svn.apache.org/viewvc?rev=591136&view=rev
Log:
fixed when bookmarkable page was found in the session and the interface was called that wanted to redirect to it.
BookmarkableListerInterface will redirect now if the call wanted to do that but only if the page is statefull

Modified:
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkablePageRequestTarget.java

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java?rev=591136&r1=591135&r2=591136&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java Thu Nov  1 12:51:42 2007
@@ -52,8 +52,7 @@
 	 * @param versionNumber
 	 */
 	public BookmarkableListenerInterfaceRequestTarget(String pageMapName, Class pageClass,
-			PageParameters pageParameters, String componentPath, String interfaceName,
-			int versionNumber)
+		PageParameters pageParameters, String componentPath, String interfaceName, int versionNumber)
 	{
 		super(pageMapName, pageClass, pageParameters);
 		this.componentPath = componentPath;
@@ -74,18 +73,18 @@
 	 * @param listenerInterface
 	 */
 	public BookmarkableListenerInterfaceRequestTarget(String pageMapName, Class pageClass,
-			PageParameters pageParameters, Component component,
-			RequestListenerInterface listenerInterface)
+		PageParameters pageParameters, Component component,
+		RequestListenerInterface listenerInterface)
 	{
 		this(pageMapName, pageClass, pageParameters, component.getPath(), listenerInterface
-				.getName(), component.getPage().getCurrentVersionNumber());
+			.getName(), component.getPage().getCurrentVersionNumber());
 
 		int version = component.getPage().getCurrentVersionNumber();
 
 		// add the wicket:interface param to the params.
 		// pagemap:(pageid:componenta:componentb:...):version:interface:behavior:urlDepth
 		AppendingStringBuffer param = new AppendingStringBuffer(4 + componentPath.length() +
-				interfaceName.length());
+			interfaceName.length());
 		if (pageMapName != null)
 		{
 			param.append(pageMapName);
@@ -116,13 +115,18 @@
 		if (page == null)
 		{
 			page = Session.get().getPage(getPageMapName(), componentPath, -1);
-			if (page == null)
+			if (page != null)
+			{
+				setPage(page);
+			}
+			else if (page == null)
 			{
 				page = getPage(requestCycle);
 			}
 		}
+
 		final String pageRelativeComponentPath = Strings.afterFirstPathComponent(componentPath,
-				Component.PATH_SEPARATOR);
+			Component.PATH_SEPARATOR);
 		Component component = page.get(pageRelativeComponentPath);
 		if (component == null)
 		{
@@ -134,15 +138,15 @@
 			if (component == null)
 			{
 				throw new WicketRuntimeException(
-						"unable to find component with path " +
-								pageRelativeComponentPath +
-								" on stateless page " +
-								page +
-								" it could be that the component is inside a repeater make your component return false in getStatelessHint()");
+					"unable to find component with path " +
+						pageRelativeComponentPath +
+						" on stateless page " +
+						page +
+						" it could be that the component is inside a repeater make your component return false in getStatelessHint()");
 			}
 		}
 		RequestListenerInterface listenerInterface = RequestListenerInterface
-				.forName(interfaceName);
+			.forName(interfaceName);
 		if (listenerInterface == null)
 		{
 			throw new WicketRuntimeException("unable to find listener interface " + interfaceName);
@@ -152,7 +156,18 @@
 
 	public void respond(RequestCycle requestCycle)
 	{
-		getPage(requestCycle).renderPage();
+		Page page = getPage(requestCycle);
+		// if the listener call wanted to redirect
+		// then do that if the page is not stateless.
+		if (requestCycle.isRedirect() && !page.isPageStateless())
+		{
+			requestCycle.redirectTo(page);
+		}
+		else
+		{
+			// else render the page directly
+			page.renderPage();
+		}
 	}
 
 	/**

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkablePageRequestTarget.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkablePageRequestTarget.java?rev=591136&r1=591135&r2=591136&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkablePageRequestTarget.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkablePageRequestTarget.java Thu Nov  1 12:51:42 2007
@@ -95,7 +95,7 @@
 	 *            optional page parameters
 	 */
 	public BookmarkablePageRequestTarget(String pageMapName, Class pageClass,
-			PageParameters pageParameters)
+		PageParameters pageParameters)
 	{
 		if (pageClass == null)
 		{
@@ -105,7 +105,7 @@
 		if (!Page.class.isAssignableFrom(pageClass))
 		{
 			throw new IllegalArgumentException("Argument pageClass must be an instance of " +
-					Page.class.getName());
+				Page.class.getName());
 		}
 		this.pageClassRef = new WeakReference(pageClass);
 		this.pageParameters = (pageParameters == null) ? new PageParameters() : pageParameters;
@@ -159,6 +159,12 @@
 		return page;
 	}
 
+	protected final void setPage(Page page)
+	{
+		this.page = page;
+	}
+
+
 	/**
 	 * @see org.apache.wicket.request.target.component.IBookmarkablePageRequestTarget#getPageClass()
 	 */
@@ -216,7 +222,7 @@
 			{
 				IRequestCycleProcessor processor = requestCycle.getProcessor();
 				String redirectUrl = processor.getRequestCodingStrategy()
-						.encode(requestCycle, this).toString();
+					.encode(requestCycle, this).toString();
 				requestCycle.getResponse().redirect(redirectUrl);
 			}
 			else
@@ -233,7 +239,7 @@
 	public String toString()
 	{
 		return "[BookmarkablePageRequestTarget@" + hashCode() + " pageClass=" +
-				getPageClass().getName() + "]";
+			getPageClass().getName() + "]";
 	}
 
 	/**
@@ -249,7 +255,7 @@
 	{
 		// Construct a new instance using the default page factory
 		IPageFactory pageFactory = requestCycle.getApplication().getSessionSettings()
-				.getPageFactory();
+			.getPageFactory();
 
 		if (pageParameters == null || pageParameters.size() == 0)
 		{