In the above code you are showing 2 different codes for MyApplication, both override the init method. one of them calls super.init the other does not. your init should look like this: protected void init() { super.init(); addComponentInstantiationListener(new SpringComponentInjector(this)); InjectorHolder.getInjector().inject(this); // optional other stuff by you }; Also you are overriding the wrong place to return a new custom session. you are overriding WicketTester.getWicketSession() but you should be overriding MyApplication.newSession(Request, Response)
Hope this helps. Maurice On Thu, Jun 19, 2008 at 8:43 AM, Andrea Jahn <[EMAIL PROTECTED]> wrote: > Hi, > Sorry, if this is a stupid Java question: > > But how can I call SwarmWebApplication.init() without calling > MyApplication.init() ? > > Thanks > Andrea > > public class MyWicketTester extends WicketTester > { > public MyWicketTester(final ApplicationContextMock appctx) > { > super(new MyApplication() { > @Override > protected void init() { > > super.init(); <--- MyApplication.init() > }; > }); > } > } > > > public class MyApplication extends SwarmWebApplication > { > protected void init() { > super.init(); > } > } > > > > > > 2008/6/18, Maurice Marrink <[EMAIL PROTECTED]>: >> >> You need to call super.init(). that will fix your swarm problems. as >> for spring i think you need: >> >> addComponentInstantiationListener(new SpringComponentInjector(this)); >> InjectorHolder.getInjector().inject(this); >> >> Maurice >> >> >> On Wed, Jun 18, 2008 at 10:23 AM, Andrea Jahn >> <[EMAIL PROTECTED]> wrote: >> > Hi, >> > >> > after the integration of the Wasp/Swarm framework (only basic >> functionality >> > at the moment) I have to adapt the wicket JUnit tests. >> > >> > But I have the following problems: >> > >> > >> > public class LoginTest >> > { >> > private WicketTester tester; >> > private FormTester form; >> > private PersonService personServiceMock; >> > private final int personId = 2000000; //same id is used in whole test >> > >> > @Before >> > public void setUp() throws Exception { >> > tester = new MyWicketTester(); <-------------------------------- >> > >> > personServiceMock = EasyMock.createStrictMock(PersonService.class); >> > >> > ApplicationContextMock appctx = new ApplicationContextMock(); >> > appctx.putBean("personService", personServiceMock); >> > >> > // setup WicketTester and injection for @SpringBean >> > tester.getApplication().addComponentInstantiationListener >> > (new SpringComponentInjector(tester.getApplication(), appctx)); >> > } >> > >> > @Test >> > public void testLoginPageRender(){ >> > tester.startPage(Login.class); >> > tester.assertRenderedPage(Login.class); >> > >> > tester.assertNoErrorMessage(); >> > >> > form = tester.newFormTester("loginForm"); >> > assertNotNull(form); >> > tester.assertComponent("loginForm:userName", TextField.class); >> > tester.assertComponent("loginForm:password", TextField.class); >> > } >> > >> > ... >> > } >> > >> > >> > public class MyWicketTester extends WicketTester >> > { >> > public MyWicketTester() >> > { >> > super(new MyApplication()); <---------------- >> > } >> > >> > @SuppressWarnings("serial") >> > @Override >> > >> > public WebSession getWicketSession() { >> > MySession session = >> > new MySession((MyApplication)getApplication(), getWicketRequest()) { >> > public boolean isPersonLoggedIn() { >> > return true; >> > } >> > }; >> > >> > session.setPerson(HibernateTestHelper.createTestPerson( new >> Integer(123) >> > )); >> > return session; >> > } >> > } >> > >> > >> > public class MyApplication extends SwarmWebApplication >> > { >> > protected void init() { >> > super.init(); >> > >> > addComponentInstantiationListener(new SpringComponentInjector(this)); >> > <----------------------- >> > } >> > >> > ... >> > } >> > >> > java.lang.IllegalStateException: No WebApplicationContext found: no >> > ContextLoaderListener registered? >> > at >> > >> org.springframework.web.context.support.WebApplicationContextUtils.getRequiredWebApplicationContext(WebApplicationContextUtils.java:86) >> > at >> > >> org.apache.wicket.spring.injection.annot.SpringComponentInjector.<init>(SpringComponentInjector.java:74) >> > at xxx.yyy.zzz.front.MyApplication.init(MyApplication.java:37) >> > at >> org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:526) >> > at >> > >> org.apache.wicket.protocol.http.MockWebApplication.<init>(MockWebApplication.java:151) >> > at >> > >> org.apache.wicket.util.tester.BaseWicketTester.<init>(BaseWicketTester.java:205) >> > at >> org.apache.wicket.util.tester.WicketTester.<init>(WicketTester.java:308) >> > at >> org.apache.wicket.util.tester.WicketTester.<init>(WicketTester.java:291) >> > at test.front.MyWicketTester.<init>(MyWicketTester.java:18) >> > at test.front.LoginTest.setUp(LoginTest.java:34) >> > 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.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:122) >> > at >> > >> org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:86) >> > at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77) >> > at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42) >> > at >> > >> org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88) >> > at >> > >> org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51) >> > at >> > >> org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44) >> > at >> > >> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27) >> > at >> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37) >> > at >> > >> org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42) >> > at >> > >> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38) >> > at >> > >> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) >> > at >> > >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) >> > at >> > >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) >> > at >> > >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) >> > at >> > >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) >> > >> > >> > >> > I tried to override the init() method as described in the spring wiki: >> > >> > >> http://cwiki.apache.org/WICKET/spring.html#Spring-UnitTestingtheProxyApproach >> > >> > >> > >> > public class MyWicketTester extends WicketTester >> > { >> > public MyWicketTester(final ApplicationContextMock appctx) >> > { >> > super(new MyApplication() { >> > @Override >> > protected void init() { >> > addComponentInstantiationListener(new >> > SpringComponentInjector(this, appctx)); >> > }; >> > }); >> > } >> > >> > @SuppressWarnings("serial") >> > @Override >> > public WebSession getWicketSession() { >> > MySession session = new MySession((MyApplication)getApplication(), >> > getWicketRequest()) { >> > public boolean isPersonLoggedIn() { >> > return true; >> > } >> > }; >> > >> > session.setPerson(HibernateTestHelper.createTestPerson( new >> Integer(123) >> > )); >> > return session; >> > } >> > } >> > >> > >> > But now the init() method of SwarmWebApplication, where the >> ActionFactory, >> > the Hive and the StrategyFactory are set up, >> > is not called and the following error is in init() of WaspSession. >> > >> > >> > public class MySession extends WaspSession >> > { >> > // logged in user >> > private Person person; >> > >> > public MySession(WaspApplication application, Request request){ >> > super(application, request); <--------------------------------- >> > } >> > >> > public Person getPerson() { >> > return person; >> > } >> > >> > public void setPerson(Person person) { >> > this.person = person; >> > } >> > ... >> > } >> > >> > >> > public class WaspSession extends WebSession >> > { >> > ... >> > public WaspSession(WaspApplication application, Request request) >> > { >> > super(request); >> > securityStrategy = application.getStrategyFactory().newStrategy(); >> > <----------------------- >> > } >> > ... >> > } >> > >> > >> > java.lang.NullPointerException >> > at org.apache.wicket.security.WaspSession.<init>(WaspSession.java:48) >> > at xxx.yyy.zzz.front.MySession.<init>(MySession.java:36) >> > at xxx.yyy.zzz.front.MyApplication.newSession(MyApplication.java:67) >> > at org.apache.wicket.Session.findOrCreate(Session.java:228) >> > at org.apache.wicket.Session.findOrCreate(Session.java:211) >> > at >> > >> org.apache.wicket.protocol.http.MockWebApplication.createRequestCycle(MockWebApplication.java:518) >> > at >> > >> org.apache.wicket.protocol.http.MockWebApplication.<init>(MockWebApplication.java:199) >> > at >> > >> org.apache.wicket.util.tester.BaseWicketTester.<init>(BaseWicketTester.java:205) >> > at >> org.apache.wicket.util.tester.WicketTester.<init>(WicketTester.java:308) >> > at >> org.apache.wicket.util.tester.WicketTester.<init>(WicketTester.java:291) >> > at test.front.MyWicketTester.<init>(MyWicketTester.java:22) >> > at test.front.LoginTest.setUp(LoginTest.java:47) >> > at junit.framework.TestCase.runBare(TestCase.java:132) >> > at junit.framework.TestResult$1.protect(TestResult.java:110) >> > at junit.framework.TestResult.runProtected(TestResult.java:128) >> > at junit.framework.TestResult.run(TestResult.java:113) >> > at junit.framework.TestCase.run(TestCase.java:124) >> > at junit.framework.TestSuite.runTest(TestSuite.java:232) >> > at junit.framework.TestSuite.run(TestSuite.java:227) >> > at >> > >> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81) >> > at >> > >> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38) >> > at >> > >> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) >> > at >> > >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) >> > at >> > >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) >> > at >> > >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) >> > at >> > >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) >> > >> > >> > >> > I'm not sure, if I'm on the right track here (trying to remove the >> > Wasp/Swarm dependencies from the test). >> > >> > Is there a possibility to call addComponentInstantiationListener outside >> of >> > init() in MyApplication, >> > so that I don't have to override the init() method in MyWicketTester ? >> > >> > Thanks >> > Andrea >> > >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]