Argh, hotkeys in gmail, and daughter jumping around , heres the code
notice the extra call in acessor method:

import org.apache.wicket.injection.web.InjectorHolder;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;

import com.google.inject.Inject;
import com.netdesign.codan.dao.PhoneDao;

public abstract class DetachableModelWithDao<T> extends
                LoadableDetachableModel<T> implements IModel<T> {

        @Inject
        private transient PhoneDao phoneDao;

        public DetachableModelWithDao() {
                InjectorHolder.getInjector().inject(this);
        }

        public PhoneDao getPhoneDao() {
                InjectorHolder.getInjector().inject(this);
                return phoneDao;
        }

        public void setPhoneDao(PhoneDao phoneDao) {
                this.phoneDao = phoneDao;
        }

}


2010/5/31 nino martinez wael <[email protected]>:
> As workaround for now I am doing this, but are a very ugly way:
>
>
>
> 2010/5/31 nino martinez wael <[email protected]>:
>> Okay tried moving the @Inject from the setter to the field
>> declaration, still not working. Tried to add the keyword transient to
>> the field, still not working :/ Im a little lost here for once..
>> Remember it's only when my loadable detachable models are called the
>> 2nd time, on first load it works.. The injector part of the ldms look
>> like this, and im on wicket 1.4.9:
>>
>> import org.apache.wicket.injection.web.InjectorHolder;
>>
>> import com.google.inject.Inject;
>> import com.netdesign.codan.dao.PhoneDao;
>>
>> public class ClassWithDao {
>>
>>        public ClassWithDao() {
>>
>>                InjectorHolder.getInjector().inject(this);
>>        }
>>
>>       �...@inject
>>        private transient PhoneDao phoneDao;
>>
>>        public PhoneDao getPhoneDao() {
>>                return phoneDao;
>>        }
>>
>>        public void setPhoneDao(PhoneDao phoneDao) {
>>                this.phoneDao = phoneDao;
>>        }
>>
>> }
>>
>>
>> 2010/5/28 nino martinez wael <[email protected]>:
>>> Hi Guys
>>>
>>> I wanted to try out the now working wicket injector holder for my
>>> webapp. But I keep getting:
>>> "java.lang.IllegalStateException: EntityManager is closed
>>>     at 
>>> org.hibernate.ejb.EntityManagerImpl.getSession(EntityManagerImpl.java:66)
>>>     at 
>>> org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:93)"
>>>
>>> I've traced it so far that it's not an issue with page creation or
>>> page reloads. But seems to be when my detachablemodels or
>>> datasources(inmethod) are being loaded. It's like the entity manager
>>> gets closed after a request and never opened again.
>>>
>>> I followed this guide:
>>> http://www.atomicgamer.com/dev/2009/10/wicket-guice-2-0-warp-persist-2-0/
>>>
>>> web.xml looks like this:
>>>
>>>        <filter>
>>>                <filter-name>warpPersistFilter</filter-name>
>>>                
>>> <filter-class>com.wideplay.warp.persist.PersistenceFilter</filter-class>
>>>        </filter>
>>>
>>>        <filter-mapping>
>>>                <filter-name>warpPersistFilter</filter-name>
>>>                <url-pattern>/*</url-pattern>
>>>        </filter-mapping>
>>>
>>>        <filter-mapping>
>>>                <filter-name>wicket.WicketWarp</filter-name>
>>>                <url-pattern>/*</url-pattern>
>>>        </filter-mapping>
>>>
>>> And my warpmodule like this:
>>>
>>>                Module warpModule = PersistenceService.usingJpa().across(
>>>                                UnitOfWork.REQUEST).forAll(
>>>                                Matchers.annotatedWith(Transactional.class), 
>>> Matchers.any())
>>>                                .buildModule();
>>>
>>> WicketApplication:
>>>       �...@override
>>>        protected void init() {
>>>                super.init();
>>>                addComponentInstantiationListener(new 
>>> GuiceComponentInjector(this,
>>>                                getGuiceInjector()));
>>>        }
>>>        protected Injector getGuiceInjector() {
>>>                return Guice.createInjector(new Module());
>>>        }
>>>
>>>
>>> In advance thanks, and please ask if I forgot something. Otherwise I
>>> have to roll back and ask a singleton for the dao each time and that
>>> would be really undesirable.
>>>
>>> -Nino
>>>
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to