The class SortableDataProvider  throws a NPE. The PersonService and the
GUIService that should be getting injected both end up being null values. 
I've tried both annotations @Autowired and @SpringBean. Neither seems to
work.

I turned on logging and I can see in the log that SortableDataProvider being
injected but obviously it isn't happening.

Not sure how to diagnose this problem?  Any Ideas?  


Lee



Here is the SortableDataProvider Class:

package org.seelink.web2.ui.user;

import
org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
import org.apache.wicket.model.IModel;
import org.seelink.web2.model.role.Person;
import org.seelink.web2.serv.GuiService;
import org.seelink.web2.serv.PersonService;
import org.seelink.web2.ui.appadm.DetachablePersonModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.io.Serializable;
import java.util.Iterator;


/**
 * Created by IntelliJ IDEA.
 * User: lchalupa
 * Date: 1/12/11
 * Time: 4:31 PM
 * To change this template use File | Settings | File Templates.
 */
@Component("sortablePersonDataProvider")
public class SortablePersonDataProvider extends SortableDataProvider<Person>
implements Serializable{

    @Autowired(required=true)
    private PersonService personService;
    @Autowired(required=true)
    private GuiService guiService;


    /**
     * constructor
     */
    public SortablePersonDataProvider() {


        // set default sort
        setSort("lastName", true);
    }


    /**
     * @see
org.apache.wicket.markup.repeater.data.IDataProvider#iterator(int, int)
     */
    public Iterator<Person> iterator(int first, int count) {
        return getPersonService().findPersonSubset(first, count, getSort());
    }

    /**
     * @see org.apache.wicket.markup.repeater.data.IDataProvider#size()
     */
    public int size() {
         if (personService == null ) throw new
                 RuntimeException("personService is null value");
        return getPersonService().personCount();
       
    }

    /**
     * @see
org.apache.wicket.markup.repeater.data.IDataProvider#model(java.lang.Object)
     */
    public IModel<Person> model(Person object) {
        return new DetachablePersonModel(object);
    }


    public PersonService getPersonService() {
            System.out.println("Person Service getter");
        return personService;
    }

    public void setPersonService(PersonService personService) {
        this.personService = personService;
            System.out.println("Person Service setter");
    }


    public GuiService getGuiService() {
            System.out.println("Gui Service getter");
        return guiService;
    }

    public void setGuiService(GuiService guiService) {
        this.guiService = guiService;
            System.out.println("Gui Service setter");
    }
}

Here is the stackTrace:

Caused by: java.lang.NullPointerException
        at
org.seelink.web2.ui.user.SortablePersonDataProvider.iterator(SortablePersonDataProvider.java:47)
        at
org.apache.wicket.markup.repeater.data.DataViewBase$ModelIterator.<init>(DataViewBase.java:109)
        at
org.apache.wicket.markup.repeater.data.DataViewBase.getItemModels(DataViewBase.java:76)
        at
org.apache.wicket.markup.repeater.AbstractPageableView.getItemModels(AbstractPageableView.java:107)
        at
org.apache.wicket.markup.repeater.RefreshingView.onPopulate(RefreshingView.java:94)
        at
org.apache.wicket.markup.repeater.AbstractRepeater.onBeforeRender(AbstractRepeater.java:131)
        at
org.apache.wicket.markup.repeater.AbstractPageableView.onBeforeRender(AbstractPageableView.java:121)
        at
org.apache.wicket.Component.internalBeforeRender(Component.java:1073)
        at org.apache.wicket.Component.beforeRender(Component.java:1107)
        at
org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)


Here is the log entries that show the Beans getting injected:

DEBUG - DefaultListableBeanFactory - Creating shared instance of singleton
bean 'sortablePersonDataProvider'
DEBUG - DefaultListableBeanFactory - Creating instance of bean
'sortablePersonDataProvider'
DEBUG - InjectionMetadata          - Found injected element on class
[org.seelink.web2.ui.user.SortablePersonDataProvider]: AutowiredFieldElement
for private org.seelink.web2.serv.PersonService
org.seelink.web2.ui.user.SortablePersonDataProvider.personService
DEBUG - InjectionMetadata          - Found injected element on class
[org.seelink.web2.ui.user.SortablePersonDataProvider]: AutowiredFieldElement
for private org.seelink.web2.serv.GuiService
org.seelink.web2.ui.user.SortablePersonDataProvider.guiService
DEBUG - DefaultListableBeanFactory - Eagerly caching bean
'sortablePersonDataProvider' to allow for resolving potential circular
references
DEBUG - InjectionMetadata          - Processing injected method of bean
'sortablePersonDataProvider': AutowiredFieldElement for private
org.seelink.web2.serv.PersonService
org.seelink.web2.ui.user.SortablePersonDataProvider.personService
DEBUG - DefaultListableBeanFactory - Returning cached instance of singleton
bean 'personService'
DEBUG - nnotationBeanPostProcessor - Autowiring by type from bean name
'sortablePersonDataProvider' to bean named 'personService'
DEBUG - InjectionMetadata          - Processing injected method of bean
'sortablePersonDataProvider': AutowiredFieldElement for private
org.seelink.web2.serv.GuiService
org.seelink.web2.ui.user.SortablePersonDataProvider.guiService
DEBUG - DefaultListableBeanFactory - Returning cached instance of singleton
bean 'guiServiceImpl'
DEBUG - nnotationBeanPostProcessor - Autowiring by type from bean name
'sortablePersonDataProvider' to bean named 'guiServiceImpl'
DEBUG - DefaultListableBeanFactory - Returning cached instance of singleton
bean 'org.springframework.transaction.config.internalTransactionAdvisor'
DEBUG - DefaultListableBeanFactory - Finished creating instance of bean
'sortablePersonDataProvider' 
-- 
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Can-t-get-a-SortableDataProvider-class-to-accept-DI-of-service-class-tp3218602p3218602.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