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")));
+ }
}