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

Reply via email to