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)
{