The explanation is that Wicket injection magic only works for
components: at other places you have to call the magic yourself:-)

Ernesto

P.S. Would it make sense to put you service at application level and
make session fetch it from there?

On Thu, Nov 25, 2010 at 2:39 PM, adam.gibbons <[email protected]> wrote:
>
> It worked!! Thank you sooo much!! \(^_^)/
>
> On 25 November 2010 13:36, Ernesto Reinaldo Barreiro-4 [via Apache Wicket] <
> [email protected]<ml-node%[email protected]>
>> wrote:
>
>> Can you try adding line
>>
>> InjectorHolder.getInjector().inject(this);
>>
>> on CustomAuthenticatedWebSession constructor?
>>
>> Ernesto
>>
>> On Thu, Nov 25, 2010 at 2:31 PM, Adam Gibbons <[hidden 
>> email]<http://user/SendEmail.jtp?type=node&node=3058948&i=0>>
>> wrote:
>>
>> > Hi there,
>> > I was wondering if anyone could help me with spring annotations, I seem
>> to
>> > have having some problems.
>> >
>> > I'm trying to inject my UserService into a CustomAuthenticatedWebSession
>> I
>> > wrote to do validation for my pages.
>> >
>> > I get a NPE when I hit any page because my bean does not seem to have
>> been
>> > injected.
>> >
>> > Here's my AuthenticatedWebSession Class:
>> >
>> > public class CustomAuthenticatedWebSession extends
>> AuthenticatedWebSession{
>> >    private static final long serialVersionUID = 4713195500103052768L;
>> >
>> >   �...@springbean(name="userService")
>> >    transient private UserService userService;
>> >    public void setUserService(final UserService userService){
>> >        this.userService = userService;
>> >    }
>> >
>> >    transient private String currentUser = null;
>> >
>> >    public CustomAuthenticatedWebSession(final Request request){
>> >        super(request);
>> >    }
>> >
>> >   �...@override
>> >    public boolean authenticate(final String username, final String
>> > password){
>> >        currentUser = username;
>> >        return userService.authenticate(username, password);
>> >    }
>> >
>> >   �...@override
>> >    public Roles getRoles(){
>> >        return userService.getRoles(currentUser, isSignedIn());
>> >    }
>> > }
>> >
>> >
>> > my applicationContext.xml file:
>> >
>> > <?xml version="1.0" encoding="UTF-8"?>
>> > <beans
>> >    xmlns="http://www.springframework.org/schema/beans";
>> >    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>> >    xmlns:aop="http://www.springframework.org/schema/aop";
>> >    xmlns:tx="http://www.springframework.org/schema/tx";
>> >    xmlns:context="http://www.springframework.org/schema/context";
>> >    xsi:schemaLocation="
>> >        http://www.springframework.org/schema/beans
>> > http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>> >        http://www.springframework.org/schema/aop
>> > http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
>> >        http://www.springframework.org/schema/tx
>> > http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
>> >        http://www.springframework.org/schema/context
>> > http://www.springframework.org/schema/context/spring-context-2.5.xsd
>> >    "
>> >>
>> >    <bean id="wicketApplication"
>> > class="uk.co.company.product.presentation.wicket.app.WicketApplication"
>> />
>> >
>> >    <bean id="placeholderConfigurer"
>> >
>> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
>>
>> >        <property name="ignoreUnresolvablePlaceholders" value="false" />
>> >        <property name="systemPropertiesModeName"
>> > value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
>> >        <property name="ignoreResourceNotFound" value="false" />
>> >        <property name="locations">
>> >            <list>
>> >                <value>classpath*:/application.properties</value>
>> >            </list>
>> >        </property>
>> >    </bean>
>> >
>> >    <bean id="dataSource"
>> > class="org.springframework.jdbc.datasource.DriverManagerDataSource">
>> >        <property
>> > name="driverClassName"><value>${jdbc.driver}</value></property>
>> >        <property name="url"><value>${jdbc.url}</value></property>
>> >        <property
>> name="username"><value>${jdbc.username}</value></property>
>> >        <property
>> name="password"><value>${jdbc.password}</value></property>
>> >    </bean>
>> >
>> >    <tx:annotation-driven transaction-manager="txManager" />
>> >
>> >    <bean id="txManager"
>> >
>> > class="org.springframework.orm.hibernate3.HibernateTransactionManager">
>> >        <property name="sessionFactory">
>> >            <ref bean="sessionFactory" />
>> >        </property>
>> >    </bean>
>> >
>> > <!--
>> >    <bean id="interceptor"
>> > class="org.springframework.orm.hibernate3.HibernateInterceptor">
>> >
>> >    </bean>
>> > -->
>> >
>> >    <bean id="sessionFactory"
>> >
>> class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
>>
>> >        <property name="dataSource" ref="dataSource" />
>> >        <property name="hibernateProperties">
>> >            <props>
>> >                <!-- <prop key="hibernate.hbm2ddl.auto">create</prop> -->
>> >                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
>> >                <prop key="hibernate.connection.pool_size">5</prop>
>> >                <prop
>> > key="hibernate.current_session_context_class">thread</prop>
>> >                <prop key="hibernate.show_sql">true</prop>
>> >                <prop
>> > key="hibernate.cglib.use_reflection_optimizer">true</prop>
>> >                <prop
>> >
>> key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
>>
>> >                <prop
>> > key="hibernate.hibernate.cache.use_query_cache">true</prop>
>> >            </props>
>> >        </property>
>> >        <!-- <property name="entityInterceptor"><ref bean="interceptor"
>> > /></property> -->
>> >        <property name="packagesToScan"><list>
>> >            <value>uk.co.company.product.persistance.hibernate</value>
>> >        </list></property>
>> >    </bean>
>> >    <context:component-scan base-package="uk.co.company.product" />
>> >
>> > </beans>
>> >
>> >
>> > and web.xml
>> >
>> > <?xml version="1.0" encoding="UTF-8"?>
>> > <web-app
>> >    xmlns="http://java.sun.com/xml/ns/j2ee";
>> >    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>> >    xsi:schemaLocation="
>> >        http://java.sun.com/xml/ns/j2ee
>> >        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd
>> >    "
>> >    version="2.4"
>> >>
>> >    <display-name>ZenTemplate</display-name>
>> >    <context-param>
>> >        <param-name>contextConfigLocation</param-name>
>> >        <param-value>classpath:applicationContext.xml</param-value>
>> >    </context-param>
>> >    <listener>
>> >
>> >
>> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
>>
>> >    </listener>
>> >    <filter>
>> >        <filter-name>opensessioninview</filter-name>
>> >
>> >
>> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
>>
>> >    </filter>
>> >    <filter>
>> >        <filter-name>wicket-spring-hibernate</filter-name>
>> >
>> > <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
>>
>> >        <init-param>
>> >            <param-name>applicationFactoryClassName</param-name>
>> >
>> >
>> <param-value>org.apache.wicket.spring.SpringWebApplicationFactory</param-value>
>>
>> >        </init-param>
>> >        <init-param>
>> >            <param-name>applicationClassName</param-name>
>> >
>> >
>> <param-value>uk.co.company.product.presentation.wicket.app.WicketApplication</param-value>
>>
>> >        </init-param>
>> >    </filter>
>> >    <filter-mapping>
>> >        <filter-name>opensessioninview</filter-name>
>> >        <url-pattern>/*</url-pattern>
>> >    </filter-mapping>
>> >    <filter-mapping>
>> >        <filter-name>wicket-spring-hibernate</filter-name>
>> >        <url-pattern>/*</url-pattern>
>> >    </filter-mapping>
>> > </web-app>
>> >
>> > Also here is my simple service:
>> >
>> > @Service("userService")
>> > public class UserService{
>> >
>> >    final private TestUserService testUserService = new TestUserService();
>>
>> >
>> >    public UserService(){
>> >        super();
>> >    }
>> >
>> >   �...@transactional
>> >    final public boolean authenticate(final String userName, final String
>> > password){
>> >        return testUserService.authenticate(userName, password);
>> >    }
>> >
>> >   �...@transactional
>> >    final public Roles getRoles(final String userName, final boolean
>> > signedIn){
>> >        return testUserService.getRoles(userName, signedIn);
>> >    }
>> > }
>> >
>> >
>> > If anyone has any ideas please let me know!
>> >
>> > Cheers,
>> > Adam
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [hidden 
>> email]<http://user/SendEmail.jtp?type=node&node=3058948&i=1>
>> For additional commands, e-mail: [hidden 
>> email]<http://user/SendEmail.jtp?type=node&node=3058948&i=2>
>>
>>
>>
>> ------------------------------
>>  View message @
>> http://apache-wicket.1842946.n4.nabble.com/need-help-with-spring-annotations-tp3058944p3058948.html
>>
>> To start a new topic under Apache Wicket, email
>> [email protected]<ml-node%[email protected]>
>> To unsubscribe from Apache Wicket, click 
>> here<http://apache-wicket.1842946.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=1842946&code=YWRhbS5zLmdpYmJvbnNAZ21haWwuY29tfDE4NDI5NDZ8LTUzNzMyMDU4OQ==>.
>>
>>
>
> --
> View this message in context: 
> http://apache-wicket.1842946.n4.nabble.com/need-help-with-spring-annotations-tp3058944p3058950.html
> Sent from the Users forum mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> 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]

Reply via email to