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


Reply via email to