Author: knopp
Date: Mon Apr 20 23:10:26 2009
New Revision: 766908
URL: http://svn.apache.org/viewvc?rev=766908&view=rev
Log:
this has been bothering me
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/request/encoder/AbstractBookmarkableEncoder.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/PageInstanceEncoder.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageProvider.java
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/AbstractResourceReferenceEncoderTest.java
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/BookmarkableEncoderTest.java
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/MountedEncoderTest.java
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.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=766908&r1=766907&r2=766908&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
Mon Apr 20 23:10:26 2009
@@ -23,7 +23,6 @@
import org.apache.wicket.request.RequestHandlerStack;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.UrlRenderer;
-import org.apache.wicket.request.encoder.PageSource;
import org.apache.wicket.request.handler.PageProvider;
import org.apache.wicket.request.handler.impl.RenderPageRequestHandler;
import org.apache.wicket.request.request.Request;
@@ -72,7 +71,7 @@
Check.argumentNotNull(request, "request");
Check.argumentNotNull(response, "response");
Check.argumentNotNull(context, "context");
-
+
this.request = request;
this.originalResponse = response;
this.context = context;
@@ -167,7 +166,7 @@
}
return false;
}
-
+
/**
* Convenience method that processes the request and detaches the
{...@link RequestCycle}.
*
@@ -326,7 +325,8 @@
catch (Exception e)
{
log.error("Error detaching
DetachCallback", e);
- };
+ }
+ ;
}
set(null);
}
@@ -385,8 +385,7 @@
public void setResponsePage(Class<? extends IPage> pageClass,
PageParameters parameters)
{
- PageSource source = Application.get().getEncoderContext();
- PageProvider provider = new PageProvider(source, pageClass);
+ PageProvider provider = new PageProvider(pageClass);
replaceCurrentRequestHandler(new
RenderPageRequestHandler(provider,
RenderPageRequestHandler.RedirectPolicy.AUTO_REDIRECT));
}
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=766908&r1=766907&r2=766908&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
Mon Apr 20 23:10:26 2009
@@ -142,15 +142,17 @@
private RequestHandler processBookmarkable(Class<? extends IPage>
pageClass, PageParameters pageParameters)
{
- PageProvider provider = new PageProvider(getContext(),
pageClass, pageParameters);
+ PageProvider provider = new PageProvider(pageClass,
pageParameters);
+ provider.setPageSource(getContext());
return new RenderPageRequestHandler(provider);
}
private RequestHandler processHybrid(PageInfo pageInfo, Class<? extends
IPage> pageClass,
PageParameters pageParameters, Integer renderCount)
{
- PageProvider provider = new PageProvider(getContext(),
pageInfo.getPageId(), pageClass, pageParameters,
+ PageProvider provider = new PageProvider(pageInfo.getPageId(),
pageClass, pageParameters,
renderCount);
+ provider.setPageSource(getContext());
return new RenderPageRequestHandler(provider);
}
@@ -166,9 +168,11 @@
if (listenerInterface != null)
{
- PageAndComponentProvider provider = new
PageAndComponentProvider(getContext(), pageInfo.getPageId(), pageClass,
+ PageAndComponentProvider provider = new
PageAndComponentProvider(pageInfo.getPageId(), pageClass,
pageParameters, renderCount,
componentInfo.getComponentPath());
+ provider.setPageSource(getContext());
+
return new ListenerInterfaceRequestHandler(provider,
listenerInterface, componentInfo.getBehaviorIndex());
}
else
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/PageInstanceEncoder.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/PageInstanceEncoder.java?rev=766908&r1=766907&r2=766908&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/PageInstanceEncoder.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/encoder/PageInstanceEncoder.java
Mon Apr 20 23:10:26 2009
@@ -66,17 +66,20 @@
if (info.getComponentInfo() == null)
{
- // render page
- return new RenderPageRequestHandler(new
PageProvider(getContext(), info.getPageInfo().getPageId(),
- renderCount));
+ PageProvider provider = new
PageProvider(info.getPageInfo().getPageId(), renderCount);
+ provider.setPageSource(getContext());
+ // render page
+ return new
RenderPageRequestHandler(provider);
}
else
{
ComponentInfo componentInfo =
info.getComponentInfo();
- PageAndComponentProvider provider = new
PageAndComponentProvider(getContext(), info.getPageInfo()
+ PageAndComponentProvider provider = new
PageAndComponentProvider(info.getPageInfo()
.getPageId(),
renderCount, componentInfo.getComponentPath());
+ provider.setPageSource(getContext());
+
// listener interface
RequestListenerInterface
listenerInterface = requestListenerInterfaceFromString(componentInfo
.getListenerInterface());
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java?rev=766908&r1=766907&r2=766908&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java
Mon Apr 20 23:10:26 2009
@@ -3,7 +3,6 @@
import org.apache.wicket.IComponent;
import org.apache.wicket.IPage;
import org.apache.wicket.PageParameters;
-import org.apache.wicket.request.encoder.PageSource;
import org.apache.wicket.util.lang.Check;
/**
@@ -47,77 +46,72 @@
}
/**
- * @see PageProvider#PageProvider(PageSource, Class, PageParameters)
+ * @see PageProvider#PageProvider(Class, PageParameters)
*
- * @param pageProvider
* @param pageClass
* @param pageParameters
* @param componentPath
*/
- public PageAndComponentProvider(PageSource pageProvider, Class<?
extends IPage> pageClass,
+ public PageAndComponentProvider(Class<? extends IPage> pageClass,
PageParameters pageParameters, String componentPath)
{
- super(pageProvider, pageClass, pageParameters);
+ super(pageClass, pageParameters);
setComponentPath(componentPath);
}
/**
- * @see PageProvider#PageProvider(PageSource, Class)
+ * @see PageProvider#PageProvider(Class)
*
- * @param pageProvider
* @param pageClass
* @param componentPath
*/
- public PageAndComponentProvider(PageSource pageProvider, Class<?
extends IPage> pageClass, String componentPath)
+ public PageAndComponentProvider(Class<? extends IPage> pageClass,
String componentPath)
{
- super(pageProvider, pageClass);
+ super(pageClass);
setComponentPath(componentPath);
}
/**
- * @see PageProvider#PageProvider(PageSource, int, Class, Integer)
+ * @see PageProvider#PageProvider(int, Class, Integer)
*
- * @param pageProvider
* @param pageId
* @param pageClass
* @param renderCount
* @param componentPath
*/
- public PageAndComponentProvider(PageSource pageProvider, int pageId,
Class<? extends IPage> pageClass,
+ public PageAndComponentProvider(int pageId, Class<? extends IPage>
pageClass,
Integer renderCount, String componentPath)
{
- super(pageProvider, pageId, pageClass, renderCount);
+ super(pageId, pageClass, renderCount);
setComponentPath(componentPath);
}
/**
- * @see PageProvider#PageProvider(PageSource, int, Class,
PageParameters, Integer)
+ * @see PageProvider#PageProvider(int, Class, PageParameters, Integer)
*
- * @param pageProvider
* @param pageId
* @param pageClass
* @param pageParameters
* @param renderCount
* @param componentPath
*/
- public PageAndComponentProvider(PageSource pageProvider, int pageId,
Class<? extends IPage> pageClass,
+ public PageAndComponentProvider(int pageId, Class<? extends IPage>
pageClass,
PageParameters pageParameters, Integer renderCount,
String componentPath)
{
- super(pageProvider, pageId, pageClass, pageParameters,
renderCount);
+ super(pageId, pageClass, pageParameters, renderCount);
setComponentPath(componentPath);
}
/**
- * @see PageProvider#PageProvider(PageSource, int, Integer)
+ * @see PageProvider#PageProvider(int, Integer)
*
- * @param pageProvider
* @param pageId
* @param renderCount
* @param componentPath
*/
- public PageAndComponentProvider(PageSource pageProvider, int pageId,
Integer renderCount, String componentPath)
+ public PageAndComponentProvider(int pageId, Integer renderCount, String
componentPath)
{
- super(pageProvider, pageId, renderCount);
+ super(pageId, renderCount);
setComponentPath(componentPath);
}
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=766908&r1=766907&r2=766908&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
Mon Apr 20 23:10:26 2009
@@ -42,14 +42,12 @@
* 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)
+ public PageProvider(int pageId, Integer renderCount)
{
- setPageSource(pageSource);
this.pageId = pageId;
this.renderCount = renderCount;
}
@@ -59,15 +57,14 @@
* 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)
+ public PageProvider(int pageId, Class<? extends IPage> pageClass,
Integer renderCount)
{
- this(pageSource, pageId, pageClass, new PageParameters(),
renderCount);
+ this(pageId, pageClass, new PageParameters(), renderCount);
}
/**
@@ -75,17 +72,14 @@
* 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)
+ public PageProvider(int pageId, Class<? extends IPage> pageClass,
PageParameters pageParameters, Integer renderCount)
{
- setPageSource(pageSource);
this.pageId = pageId;
setPageClass(pageClass);
setPageParameters(pageParameters);
@@ -96,13 +90,11 @@
* 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)
+ public PageProvider(Class<? extends IPage> pageClass, PageParameters
pageParameters)
{
- setPageSource(pageSource);
setPageClass(pageClass);
setPageParameters(pageParameters);
}
@@ -111,12 +103,11 @@
* 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)
+ public PageProvider(Class<? extends IPage> pageClass)
{
- this(pageSource, pageClass, new PageParameters());
+ this(pageClass, new PageParameters());
}
/**
@@ -195,6 +186,23 @@
return false;
}
+ protected PageSource getPageSource()
+ {
+ if (pageSource != null)
+ {
+ return pageSource;
+ }
+ if (Application.exists())
+ {
+ return Application.get().getEncoderContext();
+ }
+ else
+ {
+ throw new IllegalStateException(
+ "No application is bound to current
thread. Call setPageSource() to manually assign pageSource to this provider.");
+ }
+ }
+
private IPage getPageInstance(Integer pageId, Class<? extends IPage>
pageClass, PageParameters pageParameters,
Integer renderCount)
{
@@ -204,7 +212,7 @@
if (pageId != null)
{
- page = pageSource.getPageInstance(pageId);
+ page = getPageSource().getPageInstance(pageId);
if (page != null && pageClass != null &&
page.getClass().equals(pageClass) == false)
{
page = null;
@@ -218,7 +226,7 @@
{
if (pageClass != null)
{
- page = pageSource.newPageInstance(pageClass,
pageParameters);
+ page =
getPageSource().newPageInstance(pageClass, pageParameters);
freshCreated = true;
if (prepareForRenderNewPage() && page
instanceof Page)
{
@@ -250,10 +258,15 @@
}
}
- private void setPageSource(PageSource pageSource)
+ /**
+ * If the {...@link PageProvider} is used outside request thread
(thread that does not have
+ * application instance assigned) it is necessary to specify a
{...@link PageSource} instance so
+ * that {...@link PageProvider} knows how to get a page instance.
+ *
+ * @param pageSource
+ */
+ public void setPageSource(PageSource pageSource)
{
- Check.argumentNotNull(pageSource, "pageSource");
-
this.pageSource = pageSource;
}
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/AbstractResourceReferenceEncoderTest.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/AbstractResourceReferenceEncoderTest.java?rev=766908&r1=766907&r2=766908&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/AbstractResourceReferenceEncoderTest.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/AbstractResourceReferenceEncoderTest.java
Mon Apr 20 23:10:26 2009
@@ -75,6 +75,8 @@
protected ResourceReference reference1 = new ResourceReference(
AbstractResourceReferenceEncoderTest.class, "reference1", null,
null)
{
+ private static final long serialVersionUID = 1L;
+
public Resource getResource()
{
return resource1;
@@ -84,6 +86,8 @@
protected ResourceReference reference2 = new ResourceReference(
AbstractResourceReferenceEncoderTest.class, "reference2/name2",
new Locale("en", "en"), null)
{
+ private static final long serialVersionUID = 1L;
+
public Resource getResource()
{
return resource2;
@@ -93,6 +97,8 @@
protected ResourceReference reference3 = new ResourceReference(
AbstractResourceReferenceEncoderTest.class, "reference3", null,
"style")
{
+ private static final long serialVersionUID = 1L;
+
public Resource getResource()
{
return resource3;
@@ -102,6 +108,8 @@
protected ResourceReference reference4 = new ResourceReference(
AbstractResourceReferenceEncoderTest.class, "reference4",
Locale.ENGLISH, "style")
{
+ private static final long serialVersionUID = 1L;
+
public Resource getResource()
{
return resource4;
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/BookmarkableEncoderTest.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/BookmarkableEncoderTest.java?rev=766908&r1=766907&r2=766908&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/BookmarkableEncoderTest.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/BookmarkableEncoderTest.java
Mon Apr 20 23:10:26 2009
@@ -240,7 +240,8 @@
*/
public void testEncode1()
{
- PageProvider provider = new PageProvider(context,
MockPage.class, new PageParameters());
+ PageProvider provider = new PageProvider(MockPage.class, new
PageParameters());
+ provider.setPageSource(context);
RequestHandler handler = new
BookmarkablePageRequestHandler(provider);
Url url = encoder.encode(handler);
assertEquals("wicket/bookmarkable/" + PAGE_CLASS_NAME,
url.toString());
@@ -256,7 +257,8 @@
parameters.setIndexedParameter(1, "i2");
parameters.setNamedParameter("a", "b");
parameters.setNamedParameter("b", "c");
- PageProvider provider = new PageProvider(context,
MockPage.class, parameters);
+ PageProvider provider = new PageProvider(MockPage.class,
parameters);
+ provider.setPageSource(context);
RequestHandler handler = new
BookmarkablePageRequestHandler(provider);
Url url = encoder.encode(handler);
assertEquals("wicket/bookmarkable/" + PAGE_CLASS_NAME +
"/i1/i2?a=b&b=c", url.toString());
@@ -273,7 +275,8 @@
parameters.setNamedParameter("a", "b");
parameters.setNamedParameter("b", "c");
- PageProvider provider = new PageProvider(context,
MockPage.class, parameters);
+ PageProvider provider = new PageProvider(MockPage.class,
parameters);
+ provider.setPageSource(context);
RequestHandler handler = new
BookmarkablePageRequestHandler(provider);
Url url = encoder.encode(handler);
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/MountedEncoderTest.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/MountedEncoderTest.java?rev=766908&r1=766907&r2=766908&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/MountedEncoderTest.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/encoder/MountedEncoderTest.java
Mon Apr 20 23:10:26 2009
@@ -267,7 +267,8 @@
*/
public void testEncode1()
{
- PageProvider provider = new PageProvider(context,
MockPage.class, new PageParameters());
+ PageProvider provider = new PageProvider(MockPage.class, new
PageParameters());
+ provider.setPageSource(context);
RequestHandler handler = new
BookmarkablePageRequestHandler(provider);
Url url = encoder.encode(handler);
assertEquals("some/mount/path", url.toString());
@@ -283,7 +284,8 @@
parameters.setIndexedParameter(1, "i2");
parameters.setNamedParameter("a", "b");
parameters.setNamedParameter("b", "c");
- PageProvider provider = new PageProvider(context,
MockPage.class, parameters);
+ PageProvider provider = new PageProvider(MockPage.class,
parameters);
+ provider.setPageSource(context);
RequestHandler handler = new
BookmarkablePageRequestHandler(provider);
Url url = encoder.encode(handler);
assertEquals("some/mount/path/i1/i2?a=b&b=c", url.toString());
@@ -300,7 +302,8 @@
parameters.setNamedParameter("a", "b");
parameters.setNamedParameter("b", "c");
- PageProvider provider = new PageProvider(context,
MockPage.class, parameters);
+ PageProvider provider = new PageProvider(MockPage.class,
parameters);
+ provider.setPageSource(context);
RequestHandler handler = new
BookmarkablePageRequestHandler(provider);
Url url = encoder.encode(handler);
@@ -511,7 +514,8 @@
parameters.setNamedParameter("param2", "p2");
- PageProvider provider = new PageProvider(context,
MockPage.class, parameters);
+ PageProvider provider = new PageProvider(MockPage.class,
parameters);
+ provider.setPageSource(context);
RequestHandler handler = new
BookmarkablePageRequestHandler(provider);
Url url = placeholderEncoder.encode(handler);
assertEquals("some/p1/path/p2/i1/i2?a=b&b=c", url.toString());
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java?rev=766908&r1=766907&r2=766908&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java
Mon Apr 20 23:10:26 2009
@@ -78,7 +78,7 @@
// invoke the listener again - without parsing the URL
cycle = (MockRequestCycle) app.createRequestCycle(request,
response);
- cycle.forceRequestHandler(new
ListenerInterfaceRequestHandler(new
PageAndComponentProvider(app.getEncoderContext(), 0, null, "link"),
ILinkListener.INTERFACE));
+ cycle.forceRequestHandler(new
ListenerInterfaceRequestHandler(new PageAndComponentProvider(0, null, "link"),
ILinkListener.INTERFACE));
cycle.processRequestAndDetach();
// cleanup