Hi Martin, thank you for your quick response ... indeed I have another problem too ...
In our own BookmarkablePageFactoryTest I set up now the test environment the following way ... @Before public void setUp() { // see issue https://issues.apache.org/jira/browse/WICKET-4093 tester = new WicketTester(new MockApplication() { protected IPageFactory newPageFactory() { return new BookmarkablePageFactory( linkFactory ); } }); ConverterLocator converterLocator = (ConverterLocator)tester.getApplication().getConverterLocator(); converterLocator.set( DummyData.class, new DummyDataConverter() ); } and test a page with one named parameter ... @Test public void oneParameter() { PageParameters params = new PageParameters(); params.set("data", "~~abc~~"); tester.startPage( OneParameterPage.class, params); tester.isRenderedPage( OneParameterPage.class ); assertInfoMessages( tester, "OneParameterPage(abc)" ); Assert.assertEquals( 200, tester.getLastResponse().getStatus() ); } But this test (and other tests as well) are not working anymore (as it was with Wicket 1.4). I've got always a PageExpiredException although the Page is really created and returned within our own PageFactory implementation. Additional I've dumped the stack trace for getting a hint where the method is called ... @Override public final <C extends IRequestablePage> IRequestablePage newPage(final Class<C> pageClass, final PageParameters pageParameters) { System.out.println(">>> newPage Class "+pageClass+" PageParameters "+pageParameters); Thread.dumpStack(); ... IRequestablePage page = createPage( constructor, arguments ); System.out.println(">>> created page "+page); return page; } This is the stack trace: >>> newPage Class class com.exedio.wig.bookmark.dummy.OneParameterPage PageParameters data=[~~abc~~] java.lang.Exception: Stack trace at java.lang.Thread.dumpStack(Unknown Source) at com.exedio.wig.bookmark.BookmarkablePageFactory.newPage(BookmarkablePageFactory.java:80) at org.apache.wicket.DefaultMapperContext.newPageInstance(DefaultMapperContext.java:107) at org.apache.wicket.request.handler.PageProvider.getPageInstance(PageProvider.java:273) at org.apache.wicket.request.handler.PageProvider.getPageInstance(PageProvider.java:167) at org.apache.wicket.util.tester.BaseWicketTester$LastPageRecordingPageRendererProvider.get(BaseWicketTester.java:2514) at org.apache.wicket.util.tester.BaseWicketTester$LastPageRecordingPageRendererProvider.get(BaseWicketTester.java:2501) at org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:146) at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:719) at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:63) at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210) at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:253) at org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:596) at org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:516) at org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:488) at org.apache.wicket.util.tester.BaseWicketTester.startPage(BaseWicketTester.java:1097) at com.exedio.wig.bookmark.BookmarkablePageFactoryTest.oneParameter(BookmarkablePageFactoryTest.java:135) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:24) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) >>> Found @Bookmarkable annotation ... >>> Constructor public com.exedio.wig.bookmark.dummy.OneParameterPage(org.apache.wicket.request.mapper.parameter.PageParameters,com.exedio.wig.bookmark.dummy.data.DummyData) >>> created page [Page class = com.exedio.wig.bookmark.dummy.OneParameterPage, id = 0, render count = 0] As far as I understand, the DefaultMapperContext#newPageInstance(final Class<? extends IRequestablePage> pageClass, final PageParameters pageParameters) method calls the IPageFactory method for creating a new page instance. This works fine. But afterwards the PageExpiredException is thrown although the pageInstance should not be NULL!!!???? I don't understand this. Maybe I miss something? public IRequestablePage getPageInstance() { if (pageInstance == null) { pageInstance = getPageInstance(pageId, pageClass, pageParameters, renderCount); if (pageInstance == null) { throw new PageExpiredException("Page expired."); } touchPageInstance(pageInstance); } return pageInstance; } This is the Failure trace running the Junit test: org.apache.wicket.protocol.http.PageExpiredException: Page expired. at org.apache.wicket.request.handler.PageProvider.getPageInstance(PageProvider.java:171) at org.apache.wicket.util.tester.BaseWicketTester$LastPageRecordingPageRendererProvider.get(BaseWicketTester.java:2514) at org.apache.wicket.util.tester.BaseWicketTester$LastPageRecordingPageRendererProvider.get(BaseWicketTester.java:2501) at org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:146) at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:719) at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:63) at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210) at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:253) at org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:596) at org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:646) at org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:516) at org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:488) at org.apache.wicket.util.tester.BaseWicketTester.startPage(BaseWicketTester.java:1097) at com.exedio.wig.bookmark.BookmarkablePageFactoryTest.oneParameter(BookmarkablePageFactoryTest.java:135) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:24) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Am 29.09.2011 08:55, schrieb Martin Grigorov-4 [via Apache Wicket]: > Indeed this is missed. > I'll create a ticket for it. > > Thanks! > > On Thu, Sep 29, 2011 at 8:05 AM, Dirk Forchel <[hidden email] > </user/SendEmail.jtp?type=node&node=3854567&i=0>> wrote: > > > After migration to Wicket 1.5 I'm wondering why our tests with our own > > IPageFactory implementation is not working anymore. In our tests we > use the > > following code ... > > > > WicketTester tester = new WicketTester(); > > tester.getApplication().getSessionSettings().setPageFactory( new > > FooPageFactory() ); > > > > But in Wicket 1.5 the implemented SessionSettings class and their > method > > getPageFacory() is only called from Session#getPageFactory() and > > SignInPanel#onBeforeRender methods, in which the first call is used > in the > > InlineFrame class only. > > > > As I figured out you should use and override the newPageFactory() > method > > from the Application class instead to create a custom IPageFactory > > implementation. Which whould result in the following code ... > > > > WicketTester tester = new WicketTester(new MockApplication() { > > protected IPageFactory newPageFactory() { > > return new FooPageFactory(); > > } > > }); > > > > The Application#getPageFactory() method is used in the > DefaultMapperContext > > class to create a new Page instance, therefore our own > implementation is > > used. But this is confusing to me. Maybe I miss a point but in my > opinion > > the ISessionSettings interface should be marked as deprecated. > > > > > > -- > > View this message in context: > http://apache-wicket.1842946.n4.nabble.com/PageFactory-and-SessionSettings-tp3854493p3854493.html > > Sent from the Users forum mailing list archive at Nabble.com. > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [hidden email] > </user/SendEmail.jtp?type=node&node=3854567&i=1> > > For additional commands, e-mail: [hidden email] > </user/SendEmail.jtp?type=node&node=3854567&i=2> > > > > > > > > -- > Martin Grigorov > jWeekend > Training, Consulting, Development > http://jWeekend.com > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [hidden email] > </user/SendEmail.jtp?type=node&node=3854567&i=3> > For additional commands, e-mail: [hidden email] > </user/SendEmail.jtp?type=node&node=3854567&i=4> > > > > ------------------------------------------------------------------------ > If you reply to this email, your message will be added to the > discussion below: > http://apache-wicket.1842946.n4.nabble.com/PageFactory-and-SessionSettings-tp3854493p3854567.html > > > To unsubscribe from PageFactory and SessionSettings, click here > <http://apache-wicket.1842946.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3854493&code=ZGlyay5mb3JjaGVsQGV4ZWRpby5jb218Mzg1NDQ5M3wxOTkzMTkyMTE4>. > > -- Dirk Forchel Software Engineer Telefon +49 (351) 4108-115 Fax +49 (351) 4108-5115 dirk.forc...@exedio.com www.exedio.com exedio Gesellschaft für Softwareentwicklung mbH Buchenstraße 16 B 01097 Dresden Deutschland Handelsregister: HRB 22109, Amtsgericht Dresden Sitz der Gesellschaft: Dresden Geschäftsführer: Sven-Erik Bornscheuer, Lutz Kirchner, Falk Krause -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/PageFactory-and-SessionSettings-tp3854493p3854668.html Sent from the Users forum mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org