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]