0 Replies Latest reply on Oct 19, 2009 4:41 AM by bsgcic

    Accessing parameters on many side of a OneToMany relationship

    bsgcic Newbie

      I have been stuck on figuring out how to access parameters on the many side of a OneToMany relationship. (I am able to access from ManyToOne.) I have tried many many different ways. Below is one of the attempts. If someone could help direct me as to how best to do this, it would be greatly appreciated. If a different type of approach is better, then that would be helpful as well.


      Below are snippets from the code. Then after the snippets, I provided most of the code (relevant parts). At the end is the error output.


      Inside CountUnit:


      @DataModel
      private List<CountUnitsLocale> countUnitsLocales = new ArrayList<CountUnitsLocale>();
      
      @OneToMany(mappedBy="countUnitsLocalePK.countUnit", cascade=CascadeType.ALL, fetch = FetchType.LAZY)
      public List<CountUnitsLocale> getCountUnitsLocales()
      
      public void setCountUnitsLocales(List<CountUnitsLocale> countUnitsLocales)
      



      Inside countUnitsLocale:


      @Transient
      public CountUnit getCountUnit()
      
      @Transient
      public Locale getLocale()
      



      Inside countUnitsLocalePK:


      private CountUnit countUnit;
      private Locale locale;
      
      @ManyToOne
      @NotNull
      @JoinColumn(name="countUnitAutoIdInt", insertable=false, updatable=false)
      public CountUnit getCountUnit()
      
      public void setCountUnit(CountUnit countUnit)
      
      @ManyToOne
      @NotNull
      @JoinColumn(name="localeAutoIdInt", insertable=false, updatable=false)
      public Locale getLocale()
      
      public void setLocale(Locale locale)
      
      



      Inside QuoteCalculatingAction.java:


      public CountUnit getSelectedTestCountUnit()
      public void setSelectedTestCountUnit(CountUnit selectedTestCountUnit)
      public Locale getSelectedTestLocale()
      public void setSelectedTestLocale(Locale selectedTestLocale)
      public CountUnitsLocale getSelectedTestCountUnitsLocale()
      public void setSelectedTestCountUnitsLocale(CountUnitsLocale selectedTestCountUnitsLocale)
      
      @BypassInterceptors
      public void selectedTestLocaleChange(ValueChangeEvent e) {
        selectedTestCountUnitsLocale =
          (CountUnitsLocale) entityManager.createQuery("select c from CountUnitsLocale c where c.countUnitsLocalePK.countUnit.id = :countUnitId and c.countUnitsLocalePK.locale.id = :localeId")
          .setParameter("countUnitId", this.getSelectedTestCountUnit().getId())
          .setParameter("localeId", this.getSelectedTestLocale().getId())
          .getSingleResult();
      }
      
      



      Inside quote15.xhtml:


      <h:selectOneMenu id="selectedTestCountUnitSelectOneMenu" 
        value="#{quoteCalculate.selectedTestCountUnit}" 
        onchange="submit()">
      <s:selectItems value="#{countUnits}"
        var="countUnitVar"
        label="#{countUnitVar.idStr}"
        noSelectionLabel="Please Select TestCountUnit"/>
      
      <h:selectOneMenu id="selectedTestLocaleSelectOneMenu"
        value="#{quoteCalculate.selectedTestLocale}"
        onchange="submit()"
        valueChangeListener="#{quoteCalculate.selectedTestLocaleChange}">
      <s:selectItems value="#{locales}"
        var="localeVar"
        label="#{localeVar.idStr}"
        noSelectionLabel="Please Select TestLocale"/>
      
      



      Result:


      10:46:32,734 ERROR [TxPolicy] javax.ejb.EJBTransactionRolledbackException
      10:46:32,734 ERROR [AjaxViewRoot] Error processing faces event for the component quoteLocationLanguagesEtc:selectedTestLocaleDecorate:selectedTestLocaleSelectOneMenu
      javax.faces.event.AbortProcessingException: /quote15.xhtml @98,7 valueChangeListener="#{quoteCalculate.selectedTestLocaleChange}": javax.ejb.EJBTransactionRolledbackException
      
      Caused by: javax.ejb.EJBTransactionRolledbackException
      Caused by: java.lang.NullPointerException
      
      



      Below is the full relevant code:


      CountUnit.java


      @Entity
      @Name("countUnit")
      public class CountUnit implements Serializable
      {
        private Long id;
        @DataModel
        private List<CountUnitsLocale> countUnitsLocales = new ArrayList<CountUnitsLocale>();
        public CountUnit() {}
        public CountUnit(Long id)
         {
             this.id = id;
         }
      
        @OneToMany(mappedBy="countUnitsLocalePK.countUnit", cascade=CascadeType.ALL, fetch = FetchType.LAZY)
        public List<CountUnitsLocale> getCountUnitsLocales()
         {
              return countUnitsLocales;
         }
      
         public void setCountUnitsLocales(List<CountUnitsLocale> countUnitsLocales)
         {
              this.countUnitsLocales = countUnitsLocales;
         }
      
         @Id
         @NotNull
         @GeneratedValue
         public Long getId()
         {
            return id;
         }
         public void setId(Long id)
         {
            this.id = id;
         }
         @Override
         public String toString()
         {
            return "CountUnit(" + id + ")";
         }
         
      }
      
      



      countUnitsLocale


      @Entity
      @Name("countUnitsLocale")
      public class CountUnitsLocale implements Serializable
      {
         private Long id;
         private CountUnitsLocalePK countUnitsLocalePK;
         public CountUnitsLocale() {}
         @EmbeddedId
         public CountUnitsLocalePK getCountUnitsLocalePK()
         {
              return countUnitsLocalePK;
         }
      
         public void setCountUnitsLocalePK(CountUnitsLocalePK countUnitsLocalePK)
         {
            this.countUnitsLocalePK = countUnitsLocalePK;
         }
         
         
         @Transient
         public CountUnit getCountUnit()
         {
            return countUnitsLocalePK.getCountUnit();
         }
         
         
         @Transient
         public Locale getLocale()
         {
            return countUnitsLocalePK.getLocale();
         }
         
         
         @NotNull
         public Long getId()
         {
            return id;
         }
         
         public void setId(Long id)
         {
            this.id = id;
         }
      
         @Override
         public String toString()
         {
            return "CountUnitsLocale(" +
                      id + "," +
                      countUnitsLocalePK + 
                      ")";
         }
         
      }
      
      



      CountUnitsLocalePK


      @Embeddable
      public class CountUnitsLocalePK implements Serializable
      {
           private CountUnit countUnit;
           private Locale locale;
         
           public CountUnitsLocalePK() {}
           
           public CountUnitsLocalePK(CountUnit countUnit, Locale locale)
           {
                this.countUnit = countUnit;
                this.locale = locale;
           }
           
           
           @ManyToOne
           @NotNull
           @JoinColumn(name="countUnitAutoIdInt", insertable=false, updatable=false)
           public CountUnit getCountUnit()
           {
                return countUnit;
           }
           
           public void setCountUnit(CountUnit countUnit)
           {
                this.countUnit = countUnit;
           }
           
           
           @ManyToOne
           @NotNull
           @JoinColumn(name="localeAutoIdInt", insertable=false, updatable=false)
           public Locale getLocale()
           {
                return locale;
           }
           
           public void setLocale(Locale locale)
           {
                this.locale = locale;
           }
         
           
           @Override
           public int hashCode()
           {
                return (int) countUnit.hashCode() + locale.hashCode();
           }
           
           
           @Override
           public boolean equals(Object obj)
           {
                if (obj == this) return true;
                if (!(obj instanceof CountUnitsLocalePK)) return false;
                if (obj == null) return false;
                CountUnitsLocalePK pk = (CountUnitsLocalePK) obj;
                return pk.countUnit == countUnit && 
                pk.locale == locale;
           }
              
              
           @Override
           public String toString()
           {
                return "CountUnitsLocale(" +
                      countUnit + "," +
                      locale +
                      ")";
           }
           
      }
      
      



      QuoteCalculate.java


      @Stateful
      @Name("quoteCalculate")
      @Scope(ScopeType.CONVERSATION)
      public class QuoteCalculatingAction implements QuoteCalculating
      {
           
           @PersistenceContext
           private EntityManager entityManager;
      
           private CountUnit selectedTestCountUnit;
           
           private Locale selectedTestLocale;
           
           private CountUnitsLocale selectedTestCountUnitsLocale;
           public CountUnit getSelectedTestCountUnit()
           {
                return selectedTestCountUnit;
           }
           
           public void setSelectedTestCountUnit(CountUnit selectedTestCountUnit)
           {
                this.selectedTestCountUnit = selectedTestCountUnit;
           }
           
           
           public Locale getSelectedTestLocale()
           {
                return selectedTestLocale;
           }
           
           public void setSelectedTestLocale(Locale selectedTestLocale)
           {
                this.selectedTestLocale = selectedTestLocale;
           }
           
           
           @BypassInterceptors 
           public void selectedTestLocaleChange(ValueChangeEvent e) { 
                
                FacesMessages.instance().add("selectedTestCountUnitsLocale Testing Message 1!");
                selectedTestCountUnitsLocale = 
                               (CountUnitsLocale) entityManager.createQuery("select c from CountUnitsLocale c where c.countUnitsLocalePK.countUnit.id = :countUnitId and c.countUnitsLocalePK.locale.id = :localeId")
                                    .setParameter("countUnitId", this.getSelectedTestCountUnit().getId())
                                    .setParameter("localeId", this.getSelectedTestLocale().getId())
                                 .getSingleResult();
                
           }
      
           public CountUnitsLocale getSelectedTestCountUnitsLocale()
           {
                return selectedTestCountUnitsLocale;
           }
           
           public void setSelectedTestCountUnitsLocale(CountUnitsLocale selectedTestCountUnitsLocale)
           {
                this.selectedTestCountUnitsLocale = selectedTestCountUnitsLocale;
           }
           @Destroy
           @Remove
           public void destroy() {}
           
      }
      
      



      QuoteCalculating.java:


      @Local
      public interface QuoteCalculating
      {
           public CountUnit getSelectedTestCountUnit();
           
           public void setSelectedTestCountUnit(CountUnit selectedTestCountUnit);
           
           public Locale getSelectedTestLocale();
           
           public void setSelectedTestLocale(Locale selectedTestLocale);
           
           public void selectedTestLocaleChange(ValueChangeEvent e);
           
           public CountUnitsLocale getSelectedTestCountUnitsLocale();
           
           public void setSelectedTestCountUnitsLocale(CountUnitsLocale selectedTestCountUnitsLocale);
           public void destroy();
      }
      
      



      quote15.xhtml:


      <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <ui:composition
           xmlns="http://www.w3.org/1999/xhtml"
           xmlns:ui="http://java.sun.com/jsf/facelets"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core"
           xmlns:s="http://jboss.com/products/seam/taglib"
           xmlns:rich="http://richfaces.org/rich"
           xmlns:a="http://richfaces.org/a4j"
           template="layout/defaultATemplate.xhtml">
      <!-- content -->
      <ui:define name="content">
      <div class="section"><!-- RandomRef_MDGHaa -->
       <h:form id="quoteLocationLanguagesEtc">
        <fieldset><!-- RandomRef_34adG -->
         <s:decorate id="selectedTestCountUnitDecorate" template="layout/edit.xhtml">
          <ui:define name="label">selectedTestCountUnit</ui:define>
          <h:selectOneMenu id="selectedTestCountUnitSelectOneMenu" 
           value="#{quoteCalculate.selectedTestCountUnit}" 
           onchange="submit()">
           <s:selectItems value="#{countUnits}" var="countUnitVar"
            label="#{countUnitVar.idStr}"
            noSelectionLabel="Please Select TestCountUnit"/>
           <s:convertEntity />
          </h:selectOneMenu><!-- id="countUnitsSelectOneMenu" -->
          <h:outputText value="quoteCalculate.selectedTestCountUnit.idStr: #{quoteCalculate.selectedTestCountUnit.idStr}"/>
         </s:decorate><!-- id="selectedTestCountUnitDecorate" -->
      
         <s:decorate id="selectedTestLocaleDecorate" template="layout/edit.xhtml">
          <ui:define name="label">selectedTestLocale</ui:define>
          <h:selectOneMenu id="selectedTestLocaleSelectOneMenu" 
           value="#{quoteCalculate.selectedTestLocale}" 
           onchange="submit()" 
           valueChangeListener="#{quoteCalculate.selectedTestLocaleChange}" >
           <s:selectItems value="#{locales}" var="localeVar" label="#{localeVar.idStr}"
             noSelectionLabel="Please Select TestLocale" />
           <s:convertEntity />
          </h:selectOneMenu><!-- id="countUnitsSelectOneMenu" -->
          <h:outputText value="quoteCalculate.selectedTestLocale.idStr: #{quoteCalculate.selectedTestLocale.idStr}" />
          <br/>
          <h:outputText value="quoteCalculate.selectedTestCountUnitsLocale.idStr: #{quoteCalculate.selectedTestCountUnitsLocale.idStr}"
         </s:decorate><!-- id="selectedTestLocaleDecorate" -->
      
        </fieldset><!-- RandomRef_34adG -->
       </h:form><!-- id="quoteLocationLanguagesEtc" -->
      </div><!-- class="section" --><!-- RandomRef_MDGHaa -->
      </ui:define><!-- content -->
      </ui:composition>
      
      



      Error output:


      10:46:32,734 ERROR [TxPolicy] javax.ejb.EJBTransactionRolledbackException
      10:46:32,734 ERROR [AjaxViewRoot] Error processing faces event for the component quoteLocationLanguagesEtc:selectedTestLocaleDecorate:selectedTestLocaleSelectOneMenu
      javax.faces.event.AbortProcessingException: /quote15.xhtml @98,7 valueChangeListener="#{quoteCalculate.selectedTestLocaleChange}": javax.ejb.EJBTransactionRolledbackException
              at javax.faces.event.MethodExpressionValueChangeListener.processValueChange(MethodExpressionValueChangeListener.java:93)
              at javax.faces.event.ValueChangeEvent.processListener(ValueChangeEvent.java:134)
              at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:771)
              at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
              at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:294)
              at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
              at org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:455)
              at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
              at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
              at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
              at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
              at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
              at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
              at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
              at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
              at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
              at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
              at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
              at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
              at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
              at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
              at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
              at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
              at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
              at java.lang.Thread.run(Thread.java:619)
      Caused by: javax.ejb.EJBTransactionRolledbackException
              at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:115)
              at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130)
              at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:194)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.security.RoleBasedAuthorizationInterceptorv2.invoke(RoleBasedAuthorizationInterceptorv2.java:201)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:176)
              at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:216)
              at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
              at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
              at $Proxy2644.selectedTestLocaleChange(Unknown Source)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
              at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
              at org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideInterceptor.java:76)
              at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
              at org.jboss.seam.ejb.RemoveInterceptor.aroundInvoke(RemoveInterceptor.java:43)
              at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
              at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
              at org.jboss.seam.intercept.ClientSideInterceptor.invoke(ClientSideInterceptor.java:54)
              at org.javassist.tmp.java.lang.Object_$$_javassist_seam_3.selectedTestLocaleChange(Object_$$_javassist_seam_3.java)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:335)
              at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:348)
              at org.jboss.el.parser.AstPropertySuffix.invoke(AstPropertySuffix.java:58)
              at org.jboss.el.parser.AstValue.invoke(AstValue.java:96)
              at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
              at org.jboss.seam.el.OptionalParameterMethodExpression.invoke(OptionalParameterMethodExpression.java:39)
              at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
              at javax.faces.event.MethodExpressionValueChangeListener.processValueChange(MethodExpressionValueChangeListener.java:91)
              ... 52 more
      Caused by: java.lang.NullPointerException
              at com.oneaction.session.QuoteCalculatingAction.selectedTestLocaleChange(QuoteCalculatingAction.java:229)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
              at org.jboss.ejb3.EJBContainerInvocationWrapper.invokeNext(EJBContainerInvocationWrapper.java:69)
              at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor$InvocationContext.proceed(InvocationContextInterceptor.java:138)
              at org.jboss.seam.intercept.EJBInvocationContext.proceed(EJBInvocationContext.java:44)
              at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
              at org.jboss.seam.intercept.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:50)
              at sun.reflect.GeneratedMethodAccessor1936.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at org.jboss.ejb3.interceptors.aop.EJB3InterceptorInterceptor.invoke(EJB3InterceptorInterceptor.java:83)
              at org.jboss.ejb3.interceptors.aop.EJB3InterceptorInterceptor.invoke(EJB3InterceptorInterceptor.java:70)
              at org.jboss.ejb3.EJBContainerInvocationWrapper.invokeNext(EJBContainerInvocationWrapper.java:59)
              at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:73)
              at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:59)
              at sun.reflect.GeneratedMethodAccessor1934.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:72)
              at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_13046161.invoke(InvocationContextInterceptor_z_fillMethod_13046161.java)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:88)
              at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_13046161.invoke(InvocationContextInterceptor_z_setup_13046161.java)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor.invoke(ExtendedPersistenceContextPropagationInterceptor.java:60)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulInstanceInterceptor.java:81)
              at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
              at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)
              ... 98 more