Hello all, In my current application I have the requirement to implement a cart of Quotation Products. The cart cannot contain duplicate elements, hence the need to define the cart as TreeSet. I have implemented compareTo(), equals() and hashCode() for the type of objects that are going to be stored in the cart, but for some reason I when I try to add a second item to my cart I get the following exception :
----------------------------------------------------- org.apache.tapestry.BindingException Exception invoking listener method addToCart of component QuotationSupplierProductDetails: Failure invoking listener method 'public net.pokkie.jupiter.tapestry.quotationsupplierproduct.QuotationSupplierProductCartPage net.pokkie.jupiter.tapestry.quotationsupplierproduct.QuotationSupplierProductDetailsPage.addToCart()' on [EMAIL PROTECTED]: java.lang.NullPointerException binding: [EMAIL PROTECTED] listener, component=QuotationSupplierProductDetails, methodName=addToCart, location=context:/WEB-INF/QuotationSupplierProductDetails.page, line 61, column 59] component: [EMAIL PROTECTED] location: context:/WEB-INF/QuotationSupplierProductDetails.page, line 61, column 59 60 <component id="addToCart" type="Submit"> 61 <binding name="listener" value="listener:addToCart"/> 62 </component> 63 64 <component id="continueShopping" type="Submit"> 65 <binding name="listener" value="listener:continueShopping"/> 66 </component> org.apache.hivemind.ApplicationRuntimeException Failure invoking listener method 'public net.pokkie.jupiter.tapestry.quotationsupplierproduct.QuotationSupplierProductCartPage net.pokkie.jupiter.tapestry.quotationsupplierproduct.QuotationSupplierProductDetailsPage.addToCart()' on [EMAIL PROTECTED]: java.lang.NullPointerException component: [EMAIL PROTECTED] location: context:/WEB-INF/QuotationSupplierProductDetails.page, line 6, column 118 1 <?xml version="1.0"?> 2 <!DOCTYPE page-specification PUBLIC 3 "-//Apache Software Foundation//Tapestry Specification 4.0//EN" 4 "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd"> 5 6 <page-specification class=" net.pokkie.jupiter.tapestry.quotationsupplierproduct.QuotationSupplierProductDetailsPage "> 7 8 9 <inject property="agent" type="state" object="agent"/> 10 <inject property="quotationProductCart" type="state" object="quotationProductCart"/> 11 java.lang.NullPointerException Stack Trace: * net.pokkie.jupiter.model.quotationproduct.QuotationProduct.compareTo( QuotationProduct.java:196) * java.util.TreeMap.compare(TreeMap.java:1093) * java.util.TreeMap.put(TreeMap.java:465) * java.util.TreeSet.add(TreeSet.java:210) * net.pokkie.jupiter.tapestry.quotationsupplierproduct.QuotationSupplierProductDetailsPage.addToCart (QuotationSupplierProductDetailsPage.java:116) * sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) * sun.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:39) * sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:25) * java.lang.reflect.Method.invoke(Method.java:585) * org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeTargetMethod( ListenerMethodInvokerImpl.java:214) * org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeListenerMethod( ListenerMethodInvokerImpl.java:155) * org.apache.tapestry.listener.ListenerMethodInvokerImpl.searchAndInvoke (ListenerMethodInvokerImpl.java:124) * org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeListenerMethod( ListenerMethodInvokerImpl.java:65) * org.apache.tapestry.listener.SyntheticListener.actionTriggered( SyntheticListener.java:51) * org.apache.tapestry.binding.ListenerMethodBinding.actionTriggered( ListenerMethodBinding.java:77) * org.apache.tapestry.listener.ListenerInvokerTerminator.invokeListener( ListenerInvokerTerminator.java:51) * $ListenerInvoker_1093b995c1a.invokeListener($ListenerInvoker_1093b995c1a.java) * org.apache.tapestry.form.AbstractSubmit.handleClick( AbstractSubmit.java:81) * org.apache.tapestry.form.AbstractSubmit.rewindFormComponent( AbstractSubmit.java:49) * org.apache.tapestry.form.AbstractFormComponent.renderComponent( AbstractFormComponent.java:115) * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java :617) * org.apache.tapestry.AbstractComponent.renderBody( AbstractComponent.java:434) * org.apache.tapestry.form.FormSupportImpl.rewind(FormSupportImpl.java :564) * org.apache.tapestry.form.Form.renderComponent(Form.java:226) * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java :617) * org.apache.tapestry.form.Form.rewind(Form.java:327) * org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java :439) * org.apache.tapestry.form.Form.trigger(Form.java:338) * org.apache.tapestry.engine.DirectService.triggerComponent( DirectService.java:146) * org.apache.tapestry.engine.DirectService.service(DirectService.java :132) * $IEngineService_1093b995c72.service($IEngineService_1093b995c72.java) * org.apache.tapestry.services.impl.EngineServiceOuterProxy.service( EngineServiceOuterProxy.java:66) * org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java :248) * org.apache.tapestry.services.impl.InvokeEngineTerminator.service( InvokeEngineTerminator.java:60) * $WebRequestServicer_1093b995c50.service($WebRequestServicer_1093b995c50.java) * $WebRequestServicer_1093b995c4c.service($WebRequestServicer_1093b995c4c.java) * org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service( WebRequestServicerPipelineBridge.java:56) * $ServletRequestServicer_1093b995c30.service($ServletRequestServicer_1093b995c30.java) * org.apache.tapestry.request.DecodedRequestInjector.service( DecodedRequestInjector.java:55) * $ServletRequestServicerFilter_1093b995c2c.service($ServletRequestServicerFilter_1093b995c2c.java) * $ServletRequestServicer_1093b995c32.service($ServletRequestServicer_1093b995c32.java) * org.apache.tapestry.multipart.MultipartDecoderFilter.service( MultipartDecoderFilter.java:52) * $ServletRequestServicerFilter_1093b995c2a.service($ServletRequestServicerFilter_1093b995c2a.java) * $ServletRequestServicer_1093b995c32.service($ServletRequestServicer_1093b995c32.java) * org.apache.tapestry.services.impl.SetupRequestEncoding.service( SetupRequestEncoding.java:53) * $ServletRequestServicerFilter_1093b995c2e.service($ServletRequestServicerFilter_1093b995c2e.java) * $ServletRequestServicer_1093b995c32.service($ServletRequestServicer_1093b995c32.java) * $ServletRequestServicer_1093b995c24.service($ServletRequestServicer_1093b995c24.java) * org.apache.tapestry.ApplicationServlet.doService( ApplicationServlet.java:123) * org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java :168) * javax.servlet.http.HttpServlet.service(HttpServlet.java:717) * javax.servlet.http.HttpServlet.service(HttpServlet.java:810) * org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:252) * org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:173) * org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter( ReplyHeaderFilter.java:81) * org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:202) * org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:173) * org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:213) * org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:178) * org.jboss.web.tomcat.security.CustomPrincipalValve.invoke( CustomPrincipalValve.java:39) * org.jboss.web.tomcat.security.SecurityAssociationValve.invoke( SecurityAssociationValve.java:159) * org.jboss.web.tomcat.security.JaccContextValve.invoke( JaccContextValve.java:59) * org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:126) * org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:105) * org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:107) * org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java :148) * org.apache.coyote.http11.Http11Processor.process(Http11Processor.java :856) * org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection (Http11Protocol.java:744) * org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket( PoolTcpEndpoint.java:527) * org.apache.tomcat.util.net.MasterSlaveWorkerThread.run( MasterSlaveWorkerThread.java:112) * java.lang.Thread.run(Thread.java:595) ----------------------------------------------------- If I set my Application State Object (QuotationProductCart) to be of class " java.util.ArrayList" then it works fine. Thanks in advance -- Pokkkie
