Author: knopp
Date: Sat Mar 28 20:49:40 2009
New Revision: 759583

URL: http://svn.apache.org/viewvc?rev=759583&view=rev
Log:
this. shit. actually. works.

Added:
    
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage2.java
   (with props)
    
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage3.java
   (with props)
    
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/resources/log4j.properties
   (with props)
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/link/Link.java
   (with props)
Modified:
    wicket/sandbox/knopp/experimental/wicket-ng-webapp/   (props changed)
    
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/NGApplication.java
    
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage1.java
    
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/webapp/WEB-INF/web.xml
    
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/test/java/org/apache/wicket/ngwebapp/StartExamples.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Component.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/DefaultPageFactory.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Page.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestListenerInterface.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/RequestHandlerStack.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRenderer.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractBookmarkableEncoder.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractEncoder.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/MountedEncoder.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/impl/RenderPageRequestHandler.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/ServletWebRequest.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/UrlRendererTest.java

Propchange: wicket/sandbox/knopp/experimental/wicket-ng-webapp/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Mar 28 20:49:40 2009
@@ -0,0 +1 @@
+target

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/NGApplication.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/NGApplication.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/NGApplication.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/NGApplication.java
 Sat Mar 28 20:49:40 2009
@@ -1,6 +1,8 @@
 package org.apache.wicket.ngwebapp;
 
 import org.apache.wicket.IPage;
+import org.apache.wicket.RequestListenerInterface;
+import org.apache.wicket.markup.html.link.ILinkListener;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.encoder.MountedEncoder;
 
@@ -15,7 +17,10 @@
        @Override
        public void init()
        {
-               mount(new MountedEncoder("MyTestPage", TestPage1.class));
+               mount(new MountedEncoder("first-test-page", TestPage1.class));
+               mount(new MountedEncoder("third-test-page", TestPage3.class));
+               
+               RequestListenerInterface i = ILinkListener.INTERFACE;
        }
        
        @Override

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage1.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage1.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage1.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage1.java
 Sat Mar 28 20:49:40 2009
@@ -2,20 +2,101 @@
 
 import org.apache.wicket.Page;
 import org.apache.wicket.RequestCycle;
+import org.apache.wicket.markup.html.link.Link;
 
 public class TestPage1 extends Page
 {
+       private static final long serialVersionUID = 1L;
 
        public TestPage1()
        {
+               Link l1 = new Link("l1")
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       public void onLinkClicked()
+                       {
+                               System.out.println("link 1 clicked");
+                               getPageParameters().setNamedParameter("p1", 
"v1");
+                               getPageParameters().setIndexedParameter(0, 
"indexed1");
+                               getPageParameters().setIndexedParameter(1, 
"indexed2");
+                               getPageParameters().setIndexedParameter(2, 
"indexed3");
+                       }
+               };
+               l1.setLabel("Link 1 - Add Some Parameters");
+               add(l1);
+               
+               
+               
+               
+               Link l2 = new Link("l2")
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       public void onLinkClicked()
+                       {                               
+                               System.out.println("link 2 clicked");
+                               getPageParameters().removeNamedParameter("p1");
+                               getPageParameters().clearIndexedParameters();
+                       }
+               };
+               l2.setLabel("Link 2 - Remove The Parameters   (this link is 
bookmarkable listener interface!)");
+               l2.setBookmarkable(true);
+               add(l2);
+               
+               
+               
+               Link l3 = new Link("l3")
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       public void onLinkClicked()
+                       {
+                               System.out.println("link 3 clicked");
+                               RequestCycle.get().setResponsePage(new 
TestPage2());
+                       }
+               };
+               l3.setLabel("Link 3 - Go to Test Page 2 - Not mounted, Not 
bookmarkable");
+               add(l3);
+               
+               
                
+               
+               Link l4 = new Link("l4")
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       public void onLinkClicked()
+                       {
+                               System.out.println("link 4 clicked");
+                               
RequestCycle.get().setResponsePage(TestPage2.class, null);
+                       }
+               };
+               l4.setLabel("Link 4 - Go to Test Page 2 - Not mounted, 
Bookmarkable");
+               add(l4);
+               
+               
+               Link l5 = new Link("l5")
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       public void onLinkClicked()
+                       {
+                               System.out.println("link 5 clicked");
+                               TestPage3 page = new TestPage3(TestPage1.this);
+                               page.getPageParameters().setIndexedParameter(0, 
"i1");
+                               page.getPageParameters().setIndexedParameter(1, 
"i2");
+                               page.getPageParameters().setIndexedParameter(2, 
"i3");
+                               RequestCycle.get().setResponsePage(page);
+                       }
+               };
+               l5.setLabel("Link 5 - Go to Test Page 3 - Mounted");
+               add(l5);
        }
 
        @Override
        public void renderPage()
        {
                super.renderPage();
-               
-               RequestCycle.get().getResponse().write("This is my beautiful 
test page!");
        }
 }

Added: 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage2.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage2.java?rev=759583&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage2.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage2.java
 Sat Mar 28 20:49:40 2009
@@ -0,0 +1,15 @@
+package org.apache.wicket.ngwebapp;
+
+import org.apache.wicket.Page;
+
+public class TestPage2 extends Page
+{
+
+       private static final long serialVersionUID = 1L;
+
+       public TestPage2()
+       {
+
+       }
+
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage2.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage3.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage3.java?rev=759583&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage3.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage3.java
 Sat Mar 28 20:49:40 2009
@@ -0,0 +1,26 @@
+package org.apache.wicket.ngwebapp;
+
+import org.apache.wicket.Page;
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.markup.html.link.Link;
+
+public class TestPage3 extends Page
+{
+       private static final long serialVersionUID = 1L;
+
+       public TestPage3(final Page back)
+       {
+               Link b = new Link("back")
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       public void onLinkClicked()
+                       {
+                               RequestCycle.get().setResponsePage(back);
+                       }
+               };
+               b.setLabel("Go Back");
+               add(b);
+       }
+
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/java/org/apache/wicket/ngwebapp/TestPage3.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/resources/log4j.properties
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/resources/log4j.properties?rev=759583&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/resources/log4j.properties
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/resources/log4j.properties
 Sat Mar 28 20:49:40 2009
@@ -0,0 +1,20 @@
+log4j.debug=false
+
+log4j.rootLogger=DEBUG,Stdout
+log4j.logger.org=INFO
+log4j.logger.com=INFO
+log4j.logger.net=INFO
+log4j.logger.nl=INFO
+
+log4j.logger.org.apache.wicket=DEBUG
+
+log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=INFO
+log4j.logger.org.apache.catalina.cluster=DEBUG
+
+log4j.logger.org.apache.wicket.version=INFO
+log4j.logger.org.apache.wicket.RequestCycle=INFO
+
+log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m\n
+

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/resources/log4j.properties
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/webapp/WEB-INF/web.xml
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/webapp/WEB-INF/web.xml?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/webapp/WEB-INF/web.xml
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/main/webapp/WEB-INF/web.xml
 Sat Mar 28 20:49:40 2009
@@ -55,9 +55,25 @@
                </init-param>           
        </filter>
 
+       <filter>
+               <filter-name>TestNGApplication2</filter-name>
+               
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
+               <init-param>
+            <param-name>applicationClassName</param-name>
+            <param-value>org.apache.wicket.ngwebapp.NGApplication</param-value>
+               </init-param>           
+       </filter>
+
        <!-- couple the session filter to the helloworld servlet -->
        <filter-mapping>
                <filter-name>TestNGApplication</filter-name>
+               <url-pattern>/*</url-pattern>
+        <dispatcher>REQUEST</dispatcher>
+        <dispatcher>INCLUDE</dispatcher>
+       </filter-mapping>
+
+       <filter-mapping>
+               <filter-name>TestNGApplication2</filter-name>
                <url-pattern>/wng/*</url-pattern>
         <dispatcher>REQUEST</dispatcher>
         <dispatcher>INCLUDE</dispatcher>

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/test/java/org/apache/wicket/ngwebapp/StartExamples.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/test/java/org/apache/wicket/ngwebapp/StartExamples.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/test/java/org/apache/wicket/ngwebapp/StartExamples.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng-webapp/src/test/java/org/apache/wicket/ngwebapp/StartExamples.java
 Sat Mar 28 20:49:40 2009
@@ -39,7 +39,7 @@
        public static void main(String[] args)
        {
                Server server = new Server(8080);
-               new WebAppContext(server, "src/main/webapp", 
"/wicket-examples");
+               new WebAppContext(server, "src/main/webapp", "/");
 
                MBeanServer mBeanServer = 
ManagementFactory.getPlatformMBeanServer();
                MBeanContainer mBeanContainer = new MBeanContainer(mBeanServer);

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Application.java
 Sat Mar 28 20:49:40 2009
@@ -4,7 +4,6 @@
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.wicket.settings.IRequestCycleSettings;
-import org.apache.wicket.settings.IRequestCycleSettings.RenderStrategy;
 
 public class Application
 {

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Component.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Component.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Component.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Component.java
 Sat Mar 28 20:49:40 2009
@@ -194,4 +194,12 @@
                        c.prepareForRender(setRenderingFlag);
                }
        }
+       
+       public void renderComponent()
+       {
+               for (Component c : children)
+               {
+                       c.renderComponent();
+               }
+       };
 }

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/DefaultPageFactory.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/DefaultPageFactory.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/DefaultPageFactory.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/DefaultPageFactory.java
 Sat Mar 28 20:49:40 2009
@@ -48,7 +48,7 @@
                        // => improved error message
                        final Constructor<? extends IPage> constructor = 
pageClass.getConstructor((Class[])null);
 
-                       return newPage(constructor, null);
+                       return processPage(newPage(constructor, null), null);
                }
                catch (NoSuchMethodException e)
                {
@@ -79,11 +79,11 @@
                if (constructor != null)
                {
                        // return new Page(parameters)
-                       return newPage(constructor, parameters);
+                       return processPage(newPage(constructor, parameters), 
parameters);
                }
 
                // Always try default constructor if one exists
-               return newPage(pageClass);
+               return processPage(newPage(pageClass), null);
        }
 
        /**
@@ -167,6 +167,20 @@
                }
        }
 
+       private Page processPage(Page page, PageParameters pageParameters)
+       {
+               // the page might have not propagate page parameters from 
constructor. if that's the case
+               // we force the parameters 
+               if (pageParameters != null && page.getPageParameters() != 
pageParameters)
+               {
+                       page.getPageParameters().assign(pageParameters);
+               }
+               
+               page.setWasCreatedBookmarkable(true);
+               
+               return page;
+       } 
+       
        private String createDescription(Constructor<?> constructor, Object 
argument)
        {
                if (argument != null)

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Page.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Page.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Page.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/Page.java
 Sat Mar 28 20:49:40 2009
@@ -3,6 +3,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.wicket.request.response.Response;
+
 public class Page extends Component implements IPage
 {
        private static final long serialVersionUID = 1L;
@@ -108,6 +110,23 @@
        public void renderPage()
        {
                ++renderCount;
+               
+               System.out.println("Rendering");
+               
+               Response response = RequestCycle.get().getResponse();
+               response.write("<html>\n");
+               
+               response.write("<body>\n");
+               
+               response.write("<p>This is a " + getClass().getName() + 
"</p>\n");
+
+               for (Component c : getChildren())
+               {
+                       c.renderComponent();
+               }
+               
+               response.write("</body>\n");
+               response.write("</html>\n");
        }
 
        private boolean wasCreatedBookmarkable;
@@ -134,4 +153,9 @@
                return markupIdConter++;
        }
 
+       @Override
+       public boolean canCallListenerInterface()
+       {
+               return true;
+       }
 }

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java
 Sat Mar 28 20:49:40 2009
@@ -19,10 +19,12 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.RequestHandler;
 import org.apache.wicket.request.RequestHandlerStack;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.UrlRenderer;
+import org.apache.wicket.request.handler.impl.RenderPageRequestHandler;
 import org.apache.wicket.request.request.Request;
 import org.apache.wicket.request.response.Response;
 import org.slf4j.Logger;
@@ -138,7 +140,8 @@
        /**
         * Processes the request.
         * 
-        * @return <code>true</code> if the request resolved to a Wicket 
request, <code>false</code> otherwise. 
+        * @return <code>true</code> if the request resolved to a Wicket 
request, <code>false</code>
+        *         otherwise.
         */
        public boolean processRequest()
        {
@@ -151,7 +154,7 @@
                                executeRequestHandler(handler);
                                return true;
                        }
-                       
+
                }
                catch (Exception e)
                {
@@ -167,7 +170,7 @@
                }
                finally
                {
-                       set(null);                      
+                       set(null);
                }
                return false;
        }
@@ -363,4 +366,16 @@
                ThreadContext.setRequestCycle(requestCycle);
        }
 
+       public void setResponsePage(IPage page)
+       {
+               replaceCurrentRequestHandler(new RenderPageRequestHandler(page,
+                               
RenderPageRequestHandler.RedirectPolicy.ALWAYS_REDIRECT));
+       }
+
+       public void setResponsePage(Class<? extends IPage> pageClass, 
PageParameters parameters)
+       {
+               IPage page = 
WebApplication.get().getPageFactory().newPage(pageClass, parameters);
+               replaceCurrentRequestHandler(new RenderPageRequestHandler(page,
+                               
RenderPageRequestHandler.RedirectPolicy.ALWAYS_REDIRECT));
+       }
 }

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestListenerInterface.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestListenerInterface.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestListenerInterface.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestListenerInterface.java
 Sat Mar 28 20:49:40 2009
@@ -23,6 +23,7 @@
 import java.util.Map;
 
 import org.apache.wicket.behavior.IBehavior;
+import org.apache.wicket.request.RequestHandlerStack.ReplaceHandlerException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -148,6 +149,7 @@
                        // TODO: 
                        if (/*e.getTargetException() instanceof 
AbstractRestartResponseException ||
                                e.getTargetException() instanceof 
AuthorizationException ||*/
+                               e.getTargetException() instanceof 
ReplaceHandlerException ||
                                e.getTargetException() instanceof 
WicketRuntimeException)
                        {
                                throw (RuntimeException)e.getTargetException();

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/link/Link.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/link/Link.java?rev=759583&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/link/Link.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/link/Link.java
 Sat Mar 28 20:49:40 2009
@@ -0,0 +1,65 @@
+package org.apache.wicket.markup.html.link;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.request.RequestHandler;
+import 
org.apache.wicket.request.handler.impl.BookmarkableListenerInterfaceRequestHandler;
+import org.apache.wicket.request.handler.impl.ListenerInterfaceRequestHandler;
+import org.apache.wicket.request.response.Response;
+import org.apache.wicket.util.string.Strings;
+
+...@suppresswarnings("serial")
+// Very simple and naive link component
+public abstract class Link extends Component implements ILinkListener
+{
+       public Link(String id)
+       {
+               super(id);
+       }
+
+       public void setLabel(String label)
+       {
+               this.label = label;
+       }
+
+       public String getLabel()
+       {
+               return label;
+       }
+
+       private String label;
+
+       private boolean bookmarkable;
+
+       public void setBookmarkable(boolean bookmarkable)
+       {
+               this.bookmarkable = bookmarkable;
+       }
+
+       public boolean isBookmarkable()
+       {
+               return bookmarkable;
+       }
+
+       @Override
+       public void renderComponent()
+       {
+               Response response = RequestCycle.get().getResponse();
+               response.write("<p><a href=\"" + Strings.escapeMarkup(getURL()) 
+ "\">" + Strings.escapeMarkup(getLabel())
+                               + "</a></p>");
+       }
+
+       private String getURL()
+       {
+               RequestHandler handler;
+               if (isBookmarkable())
+               {
+                       handler = new 
BookmarkableListenerInterfaceRequestHandler(getPage(), this, 
ILinkListener.INTERFACE);
+               }
+               else
+               {
+                       handler = new 
ListenerInterfaceRequestHandler(getPage(), this, ILinkListener.INTERFACE);
+               }
+               return RequestCycle.get().renderUrlFor(handler);
+       }
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/markup/html/link/Link.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
 Sat Mar 28 20:49:40 2009
@@ -16,6 +16,9 @@
  */
 package org.apache.wicket.protocol.http;
 
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 import org.apache.wicket.Application;
 import org.apache.wicket.DefaultPageFactory;
 import org.apache.wicket.IPage;
@@ -34,6 +37,7 @@
 import org.apache.wicket.request.encoder.PageInstanceEncoder;
 import org.apache.wicket.request.encoder.ResourceReferenceEncoder;
 import org.apache.wicket.request.request.Request;
+import org.apache.wicket.request.response.BufferedWebResponse;
 import org.apache.wicket.request.response.Response;
 import org.apache.wicket.resource.ResourceReferenceRegistry;
 
@@ -47,9 +51,9 @@
        
        @Override
        public void internalInit()
-       {               
-               mount(new BookmarkableEncoder());
+       {                               
                mount(new PageInstanceEncoder());
+               mount(new BookmarkableEncoder());
                mount(new ResourceReferenceEncoder());
        }
 
@@ -197,4 +201,19 @@
        }
        
        public abstract Class<? extends IPage> getHomePageClass();
+       
+       // TODO: Do this properly
+       private Map<String, BufferedWebResponse> storedResponses = new 
ConcurrentHashMap<String, BufferedWebResponse>();
+       
+       public BufferedWebResponse getAndRemoveBufferedResponse(String 
sessionId, Url url)
+       {
+               String key = sessionId + url.toString();
+               return storedResponses.remove(key);
+       }
+
+       public void storeBufferedResponse(String sessionId, Url url, 
BufferedWebResponse response)
+       {
+               String key = sessionId + url.toString();
+               storedResponses.put(key, response);
+       }
 }

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/RequestHandlerStack.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/RequestHandlerStack.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/RequestHandlerStack.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/RequestHandlerStack.java
 Sat Mar 28 20:49:40 2009
@@ -140,7 +140,7 @@
         * 
         * @author Matej Knopp
         */
-       private static class ReplaceHandlerException extends RuntimeException
+       public static class ReplaceHandlerException extends RuntimeException
        {
                private static final long serialVersionUID = 1L;
 

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRenderer.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRenderer.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRenderer.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/UrlRenderer.java
 Sat Mar 28 20:49:40 2009
@@ -101,24 +101,24 @@
                        
                        int common = 0;
                        
-                       // Remove the last segment. We need at least one 
segment in the result URL.
-                       // This prevents the last segment to be marked as 
common. Note that the last
-                       // segment can also be "" (which means that the URL 
ends with slash). 
-                       List<String> baseUrlSegmentsCopy = new 
ArrayList<String>(baseUrlSegments);
-                       if (!baseUrlSegments.isEmpty())
-                       {
-                               
baseUrlSegmentsCopy.remove(baseUrlSegmentsCopy.size() - 1);     
-                       }                       
+                       String last = null;
                        
-                       for (String s : baseUrlSegmentsCopy)
+                       for (String s : baseUrlSegments)
                        {
                                if (!urlSegments.isEmpty() && 
s.equals(urlSegments.get(0)))
                                {
                                        ++common;
-                                       urlSegments.remove(0);
+                                       last = urlSegments.remove(0);
                                }
                        }
                        
+                       // we want the new URL to have at least one segment 
(other than possible ../)
+                       if (urlSegments.isEmpty() && last != null)
+                       {
+                               --common;
+                               urlSegments.add(0, last);
+                       }
+                       
                        for (int i = common + 1; i < baseUrlSegments.size(); 
++i)
                        {
                                newSegments.add("..");

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractBookmarkableEncoder.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractBookmarkableEncoder.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractBookmarkableEncoder.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractBookmarkableEncoder.java
 Sat Mar 28 20:49:40 2009
@@ -194,6 +194,11 @@
         */
        protected abstract boolean pageMustHaveBeenCreatedBookmarkable();
 
+       protected boolean checkPageClass(Class<? extends IPage> pageClass)
+       {
+               return true;
+       }
+       
        public Url encode(RequestHandler requestHandler)
        {
                if (requestHandler instanceof BookmarkablePageRequestHandler)
@@ -201,6 +206,11 @@
                        // simple bookmarkable URL with no page instance 
information
                        BookmarkablePageRequestHandler handler = 
(BookmarkablePageRequestHandler)requestHandler;
 
+                       if (!checkPageClass(handler.getPageClass()))
+                       {
+                               return null;
+                       }
+                       
                        PageInfo info = new PageInfo();
                        UrlInfo urlInfo = new UrlInfo(new 
PageComponentInfo(info, null),
                                handler.getPageClass(), 
handler.getPageParameters());
@@ -215,6 +225,11 @@
                        RenderPageRequestHandler handler = 
(RenderPageRequestHandler)requestHandler;
                        IPage page = handler.getPage();
 
+                       if (!checkPageClass(page.getClass()))
+                       {
+                               return null;
+                       }
+                       
                        if (!pageMustHaveBeenCreatedBookmarkable() || 
page.wasCreatedBookmarkable())
                        {
                                PageInfo info = null;
@@ -240,6 +255,12 @@
                        // listener interface URL with page class information
                        BookmarkableListenerInterfaceRequestHandler handler = 
(BookmarkableListenerInterfaceRequestHandler)requestHandler;
                        IPage page = handler.getPage();
+                       
+                       if (!checkPageClass(page.getClass()))
+                       {
+                               return null;
+                       }
+                       
                        PageInfo pageInfo = new PageInfo(page);
                        ComponentInfo componentInfo = new ComponentInfo(
                                page.getRenderCount(), 
requestListenerInterfaceToString(handler.getListenerInterface()),

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractEncoder.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractEncoder.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractEncoder.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/AbstractEncoder.java
 Sat Mar 28 20:49:40 2009
@@ -355,15 +355,7 @@
         */
        protected IPage newPageInstance(Class<? extends IPage> pageClass, 
PageParameters pageParameters)
        {
-               IPage page = getContext().newPageInstance(pageClass, 
pageParameters);
-
-               // the page might have not propagate page parameters from 
constructor. if that's the case
-               // we force the parameters 
-               if (pageParameters != null && page.getPageParameters() != 
pageParameters)
-               {
-                       page.getPageParameters().assign(pageParameters);
-               }
-               return page;
+               return getContext().newPageInstance(pageClass, pageParameters); 
        
        }
 
        /**

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/MountedEncoder.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/MountedEncoder.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/MountedEncoder.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/MountedEncoder.java
 Sat Mar 28 20:49:40 2009
@@ -227,4 +227,10 @@
                        return 0;
                }
        }
+       
+       @Override
+       protected boolean checkPageClass(Class<? extends IPage> pageClass)
+       {
+               return pageClass.equals(this.pageClass.get());
+       }
 }

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/impl/RenderPageRequestHandler.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/impl/RenderPageRequestHandler.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/impl/RenderPageRequestHandler.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/impl/RenderPageRequestHandler.java
 Sat Mar 28 20:49:40 2009
@@ -20,6 +20,7 @@
 import org.apache.wicket.IPage;
 import org.apache.wicket.PageParameters;
 import org.apache.wicket.RequestCycle;
+import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.RequestHandler;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.handler.PageRequestHandler;
@@ -141,13 +142,14 @@
 
        protected BufferedWebResponse getAndRemoveBufferedResponse(Url url)
        {
-               // TODO: get and remove buffered response
-               return null;
+               // TODO: SessionId
+               return WebApplication.get().getAndRemoveBufferedResponse("", 
url);
        }
 
        protected void storeBufferedResponse(Url url, BufferedWebResponse 
response)
        {
-               // TODO:
+               // TODO: SessionId
+               WebApplication.get().storeBufferedResponse("", url, response);
        }
 
        /**

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/ServletWebRequest.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/ServletWebRequest.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/ServletWebRequest.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/request/ServletWebRequest.java
 Sat Mar 28 20:49:40 2009
@@ -66,7 +66,7 @@
        
        private Url getUrl(HttpServletRequest request, String filterPrefix)
        {
-               if (!filterPrefix.endsWith("/"))
+               if (filterPrefix.length() > 0 && !filterPrefix.endsWith("/"))
                {
                        filterPrefix += "/";
                }

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/UrlRendererTest.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/UrlRendererTest.java?rev=759583&r1=759582&r2=759583&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/UrlRendererTest.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/UrlRendererTest.java
 Sat Mar 28 20:49:40 2009
@@ -43,7 +43,7 @@
        public void test2()
        {
                UrlRenderer r1 = new UrlRenderer(Url.parse("foo/bar/baz?a=b"));
-               assertEquals("..?x=y", r1.renderUrl(Url.parse("foo?x=y")));
+               assertEquals("../../foo?x=y", 
r1.renderUrl(Url.parse("foo?x=y")));
                assertEquals("../../aaa?x=y", 
r1.renderUrl(Url.parse("aaa?x=y")));
        }
        
@@ -62,12 +62,24 @@
        public void test5()
        {
                UrlRenderer r1 = new UrlRenderer(Url.parse("url"));
-               assertEquals("url?1", r1.renderUrl(Url.parse("url?1")));
+               assertEquals("url?1", r1.renderUrl(Url.parse("url?1")));        
        }
        
+       /**
+        * 
+        */
        public void test6()
        {
                UrlRenderer r1 = new UrlRenderer(Url.parse("url/"));
                assertEquals("x?1", r1.renderUrl(Url.parse("url/x?1")));
        }
+       
+       /**
+        * 
+        */
+       public void test7()
+       {
+               UrlRenderer r1 = new 
UrlRenderer(Url.parse("MyTestPage/indexed1/indexed2/indexed3?10-27.ILinkListener-l2&p1=v1"));
+               assertEquals("../../../MyTestPage?10", 
r1.renderUrl(Url.parse("MyTestPage?10")));
+       }
 }


Reply via email to