Do you have any idea why javax.faces is trying to create an instance of DelegatingResultList? Maybe someone from one of the other mailing lists can help us out?
[1] javax.faces.component.UIComponentBase.restoreAttachedState( UIComponentBase.java:1842) On Thu, Aug 30, 2012 at 10:32 AM, José Luis Cetina <maxtorz...@gmail.com>wrote: > Hi. I have a problem using myfaces 2.1.8 + openjpa 2.2.0 + primefaces > 3.4-SNAPSHOT. > > I dont know if asked this in myfaces list or here, anyway, i hope somebody > can help me. > > I have 2 SelectOneMenu in a composite component(cc), this cc has a > componentType in a facescomponent class. > > The first selectonemenu have a change event in the cc, when this event is > fired the second selectonemenu load data from the database. > > In the facescomponent class i use statehelper to save the state of the 2 > selectonemenu's, but i have a problem: > > This is the scenario: > > I have this in my database: > > Table country: > id name > 1 Spain > 2 Mexico > 3 USA > > Table cities: > id fk name > 1 3 New York > 2 3 LA > > When my page load the country selectonemenu show all the countries without > problem (i retrive them using openjpa), in the cities selectonemenu's show > nothing because Spain doesnt have cities, well then if i select Mexico my > valuechangelistener method execute and load all the cities, but Mexico > doesnt have nothing in the database then again nothing showed as expected, > then if a select USA the cities are retrived OK and they are shown in the > cities selectonemenu although if i select another city like Spain i can see > this error (my valuechangelistener never get called again): > > java.lang.InstantiationException: > org.apache.openjpa.kernel.DelegatingResultList > java.lang.InstantiationException: > org.apache.openjpa.kernel.DelegatingResultList at > java.lang.Class.newInstance0(Class.java:357) at > java.lang.Class.newInstance(Class.java:325) at > javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:1842) > at > javax.faces.component._DeltaStateHelper.restoreState(_DeltaStateHelper.java:616) > at > javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:2021) > at > org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:661) > at > org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:680) > at > org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:680) > at > org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:680) > at > org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreView(DefaultFaceletsStateManagementStrategy.java:330) > at > org.apache.myfaces.application.StateManagerImpl.restoreView(StateManagerImpl.java:130) > at > org.apache.myfaces.shared.view.ViewDeclarationLanguageBase.restoreView(ViewDeclarationLanguageBase.java:106) > at > org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.restoreView(FaceletViewDeclarationLanguage.java:2109) > at > org.apache.myfaces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:300) > at > com.ocpsoft.pretty.faces.application.PrettyViewHandler.restoreView(PrettyViewHandler.java:109) > at > org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.WindowContextAwareViewHandler.restoreView(WindowContextAwareViewHandler.java:122) > at > org.apache.myfaces.extensions.cdi.jsf.impl.CodiViewHandler.restoreView(CodiViewHandler.java:99) > at > javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:83) > at > javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:83) > at > org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:127) > at > org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170) > at > org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) > at > org.apache.myfaces.extensions.cdi.jsf2.impl.listener.phase.CodiLifecycleWrapper.execute(CodiLifecycleWrapper.java:95) > at > javax.faces.webapp.FacesServlet.service(FacesServlet.java:197) at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) > at > com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) > at > org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45) at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) > at > org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) > at > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) > at > org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) > at > java.lang.Thread.run(Thread.java:722) > > > I observe this: > > If you select countries that doesnt have cities no error is shown > (something like moving from Spain to Mexico and viceversa), but when i > select a country like USA that have cities the cities load ok, but if i try > to select another country like mexico then the valuechangelistener method > never get called again because the exception is thrown. > > I get the cities using this method: > > public List<City> getCities(Country country) { > > CriteriaBuilder cb = em.getCriteriaBuilder(); > CriteriaQuery<City> cq = cb.createQuery(City.class); > Root<City> root = cq.from(City.class); > cq.select(root); > cq.where(cb.equal(root.get(City_.countryId).get(Country_.countryId), > country.getCountryId())); > List<City> resultList = (List<City>) > em.createQuery(cq).getResultList(); > return resultList; > } > > I debug my example and i can see in the saveAttachedState method of > UIComponentBase.java the list of cities is a type of DelagatingResultList > but i dont understand why, if im doing a cast when i use the getResultList > method, why openjpa encapsulate my object in a DelagatingResultList? > > Then the attachedObject from the saveAttachedState method arrives as > DelagatingResultList and then it cant create an instance. > > What i did is return a manual arraylist something like this, and the > exception never thrown. > > public List<City> getCities(Country country) { > ArrayList<City> list = new ArrayList<City>(2); > list.add(new City("New York")); > list.add(new City("LA")); > return list; > } > > Finally i dont know what or which is wrong, openjpa or myfaces, openjpa > return a DelagatingResultList object and myfaces cant create an instance of > that object. > What can i do ? > > > > > > -- > ------------------------------------------------------------------- > *SCJA. José Luis Cetina* > ------------------------------------------------------------------- > -- *Rick Curtis*