Author: knopp
Date: Thu Apr 2 10:39:05 2009
New Revision: 761242
URL: http://svn.apache.org/viewvc?rev=761242&view=rev
Log: (empty)
Modified:
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/protocol/http/WebApplication.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageComponentProvider.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageProvider.java
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=761242&r1=761241&r2=761242&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
Thu Apr 2 10:39:05 2009
@@ -376,7 +376,7 @@
public void setResponsePage(Class<? extends IPage> pageClass,
PageParameters parameters)
{
- PageSource source = WebApplication.get().getPageSource();
+ PageSource source = WebApplication.get().getEncoderContext();
PageProvider provider = new PageProvider(source, pageClass);
replaceCurrentRequestHandler(new
RenderPageRequestHandler(provider,
RenderPageRequestHandler.RedirectPolicy.ALWAYS_REDIRECT));
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=761242&r1=761241&r2=761242&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
Thu Apr 2 10:39:05 2009
@@ -24,8 +24,8 @@
import org.apache.wicket.Application;
import org.apache.wicket.DefaultPageFactory;
import org.apache.wicket.IPage;
-import org.apache.wicket.PageFactory;
import org.apache.wicket.Page;
+import org.apache.wicket.PageFactory;
import org.apache.wicket.PageParameters;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.RequestCycleContext;
@@ -38,7 +38,6 @@
import org.apache.wicket.request.encoder.BufferedResponseEncoder;
import org.apache.wicket.request.encoder.EncoderContext;
import org.apache.wicket.request.encoder.PageInstanceEncoder;
-import org.apache.wicket.request.encoder.PageSource;
import org.apache.wicket.request.encoder.ResourceReferenceEncoder;
import org.apache.wicket.request.request.Request;
import org.apache.wicket.request.response.BufferedWebResponse;
@@ -205,11 +204,6 @@
}
private PageFactory pageFactory = new DefaultPageFactory();
-
- public PageSource getPageSource()
- {
- return encoderContext;
- }
public PageFactory getPageFactory()
{
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageComponentProvider.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageComponentProvider.java?rev=761242&r1=761241&r2=761242&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageComponentProvider.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageComponentProvider.java
Thu Apr 2 10:39:05 2009
@@ -6,17 +6,37 @@
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.request.encoder.PageSource;
+/**
+ * Extension of {...@link PageProvider} that is also capable of providing a
Component belonging to the
+ * page.
+ *
+ * @see PageProvider
+ *
+ * @author Matej Knopp
+ */
public class PageComponentProvider extends PageProvider
{
private IComponent component;
private String componentPath;
+ /**
+ * @see PageProvider#PageProvider(IPage)
+ *
+ * @param page
+ * @param componentPath
+ */
public PageComponentProvider(IPage page, String componentPath)
{
super(page);
setComponentPath(componentPath);
}
+ /**
+ * @see PageProvider#PageProvider(IPage)
+ *
+ * @param page
+ * @param component
+ */
public PageComponentProvider(IPage page, IComponent component)
{
super(page);
@@ -27,6 +47,14 @@
this.component = component;
}
+ /**
+ * @see PageProvider#PageProvider(PageSource, Class, PageParameters)
+ *
+ * @param pageProvider
+ * @param pageClass
+ * @param pageParameters
+ * @param componentPath
+ */
public PageComponentProvider(PageSource pageProvider, Class<? extends
IPage> pageClass,
PageParameters pageParameters, String componentPath)
{
@@ -34,12 +62,28 @@
setComponentPath(componentPath);
}
+ /**
+ * @see PageProvider#PageProvider(PageSource, Class)
+ *
+ * @param pageProvider
+ * @param pageClass
+ * @param componentPath
+ */
public PageComponentProvider(PageSource pageProvider, Class<? extends
IPage> pageClass, String componentPath)
{
super(pageProvider, pageClass);
setComponentPath(componentPath);
}
+ /**
+ * @see PageProvider#PageProvider(PageSource, int, Class, Integer)
+ *
+ * @param pageProvider
+ * @param pageId
+ * @param pageClass
+ * @param renderCount
+ * @param componentPath
+ */
public PageComponentProvider(PageSource pageProvider, int pageId,
Class<? extends IPage> pageClass,
Integer renderCount, String componentPath)
{
@@ -47,6 +91,16 @@
setComponentPath(componentPath);
}
+ /**
+ * @see PageProvider#PageProvider(PageSource, int, Class,
PageParameters, Integer)
+ *
+ * @param pageProvider
+ * @param pageId
+ * @param pageClass
+ * @param pageParameters
+ * @param renderCount
+ * @param componentPath
+ */
public PageComponentProvider(PageSource pageProvider, int pageId,
Class<? extends IPage> pageClass,
PageParameters pageParameters, Integer renderCount,
String componentPath)
{
@@ -54,6 +108,14 @@
setComponentPath(componentPath);
}
+ /**
+ * @see PageProvider#PageProvider(PageSource, int, Integer)
+ *
+ * @param pageProvider
+ * @param pageId
+ * @param renderCount
+ * @param componentPath
+ */
public PageComponentProvider(PageSource pageProvider, int pageId,
Integer renderCount, String componentPath)
{
super(pageProvider, pageId, renderCount);
@@ -65,21 +127,32 @@
{
return true;
}
-
+
+ /**
+ * Returns component on specified page with given path.
+ *
+ * @return component
+ */
public IComponent getComponent()
{
if (component == null)
{
IPage page = getPageInstance();
- component = page.get(componentPath);
+ component = page.get(componentPath);
}
if (component == null)
{
- throw new WicketRuntimeException("Could not find
component '" + componentPath + "' on page '" + getPageClass());
+ throw new WicketRuntimeException("Could not find
component '" + componentPath + "' on page '"
+ + getPageClass());
}
return component;
}
+ /**
+ * Returns the component path.
+ *
+ * @return
+ */
public String getComponentPath()
{
if (componentPath != null)
@@ -91,7 +164,7 @@
return component.getPath();
}
}
-
+
private void setComponentPath(String componentPath)
{
if (componentPath == null)
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageProvider.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageProvider.java?rev=761242&r1=761241&r2=761242&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageProvider.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageProvider.java
Thu Apr 2 10:39:05 2009
@@ -3,10 +3,30 @@
import org.apache.wicket.IPage;
import org.apache.wicket.Page;
import org.apache.wicket.PageParameters;
+import org.apache.wicket.page.PageManager;
import org.apache.wicket.protocol.http.PageExpiredException;
+import org.apache.wicket.request.RequestHandler;
+import org.apache.wicket.request.RequestHandlerEncoder;
import org.apache.wicket.request.encoder.PageSource;
import org.apache.wicket.request.encoder.StalePageException;
+/**
+ * Provides page instance for request handlers. Each of the constructors has
just enough information
+ * to get existing or create new page instance. Requesting or creating page
instance is deferred
+ * until {...@link #getPageInstance()} is called.
+ * <p>
+ * Purpose of this class is to reduce complexity of both {...@link
RequestHandlerEncoder}s and
+ * {...@link RequestHandler}s. {...@link RequestHandlerEncoder} examines the
URL, gathers all relevant
+ * information about the page in the URL (combination of page id, page class,
page parameters and
+ * render count), creates {...@link PageProvider} object and creates a
{...@link RequestHandler} instance
+ * that can use the {...@link PageProvider} to access the page.
+ * <p>
+ * Apart from simplifying {...@link RequestHandlerEncoder}s and {...@link
RequestHandler}s
+ * {...@link PageProvider} also helps performance because creating or
obtaining page from
+ * {...@link PageManager} is delayed until the {...@link RequestHandler}
actually requires the page.
+ *
+ * @author Matej Knopp
+ */
public class PageProvider
{
private Integer renderCount;
@@ -16,6 +36,15 @@
private Integer pageId;
private PageParameters pageParameters;
+ /**
+ * Creates a new page provider object. Upon calling of {...@link
#getPageInstance()} this provider
+ * will return page instance with specified id.
+ *
+ * @param pageSource
+ * @param pageId
+ * @param renderCount
+ * optional argument
+ */
public PageProvider(PageSource pageSource, int pageId, Integer
renderCount)
{
setPageSource(pageSource);
@@ -23,11 +52,34 @@
this.renderCount = renderCount;
}
+ /**
+ * Creates a new page provider object. Upon calling of {...@link
#getPageInstance()} this provider
+ * will return page instance with specified id if it exists and it's
class matches pageClass. If
+ * none of these is true new page instance will be created.
+ *
+ * @param pageSource
+ * @param pageId
+ * @param pageClass
+ * @param renderCount
+ * optional argument
+ */
public PageProvider(PageSource pageSource, int pageId, Class<? extends
IPage> pageClass, Integer renderCount)
{
this(pageSource, pageId, pageClass, new PageParameters(),
renderCount);
}
+ /**
+ * Creates a new page provider object. Upon calling of {...@link
#getPageInstance()} this provider
+ * will return page instance with specified id if it exists and it's
class matches pageClass. If
+ * none of these is true new page instance will be created.
+ *
+ * @param pageSource
+ * @param pageId
+ * @param pageClass
+ * @param pageParameters
+ * @param renderCount
+ * optional argument
+ */
public PageProvider(PageSource pageSource, int pageId, Class<? extends
IPage> pageClass,
PageParameters pageParameters, Integer renderCount)
{
@@ -38,6 +90,14 @@
this.renderCount = renderCount;
}
+ /**
+ * Creates a new page provider object. Upon calling of {...@link
#getPageInstance()} this provider
+ * will return new instance of page with specified class.
+ *
+ * @param pageSource
+ * @param pageClass
+ * @param pageParameters
+ */
public PageProvider(PageSource pageSource, Class<? extends IPage>
pageClass, PageParameters pageParameters)
{
setPageSource(pageSource);
@@ -45,11 +105,24 @@
setPageParameters(pageParameters);
}
+ /**
+ * Creates a new page provider object. Upon calling of {...@link
#getPageInstance()} this provider
+ * will return new instance of page with specified class.
+ *
+ * @param pageSource
+ * @param pageClass
+ */
public PageProvider(PageSource pageSource, Class<? extends IPage>
pageClass)
{
this(pageSource, pageClass, new PageParameters());
}
+ /**
+ * Creates a new page provider object. Upon calling of {...@link
#getPageInstance()} this provider
+ * will return the given page instance.
+ *
+ * @param page
+ */
public PageProvider(IPage page)
{
if (page == null)
@@ -59,6 +132,16 @@
this.pageInstance = page;
}
+ /**
+ * Returns page instance specified by the constructor.
+ *
+ * @return page instance
+ * @throws StalePageException
+ * if render count has been specified in constructor and
the render count of page
+ * does not match the valeu
+ * @throw {...@link PageExpiredException} if the specified page could
not have been found and the
+ * constructor used did not provide enough information to create
new page instance
+ */
public IPage getPageInstance()
{
if (pageInstance == null)
@@ -72,6 +155,11 @@
return pageInstance;
}
+ /**
+ * Returns {...@link PageParameters} of the page specified by
constructor.
+ *
+ * @return page parameters
+ */
public PageParameters getPageParameters()
{
if (pageParameters != null)
@@ -84,6 +172,11 @@
}
}
+ /**
+ * Returns class of the page specified by the constructor.
+ *
+ * @return page class
+ */
public Class<? extends IPage> getPageClass()
{
if (pageClass != null)
@@ -141,6 +234,10 @@
return page;
}
+ /**
+ * Detaches the page if it has been loaded (that means either {...@link
#PageProvider(IPage)}
+ * constructor has been used or {...@link #getPageInstance()} has been
called).
+ */
public void detach()
{
if (pageInstance != null)