I have a component that generates images based on multiple inputs. Lately I
increased the parameters for that component. The new parameters acquire
their primitive values during an iteration in 2 loops. So 2 loops are
eventually generated a set of images.

The image-generating component generates images with a url that invokes an
event for the component and passes it's parameters as context. The images
URLs are generated as expected but right before using one of the new
primitive parameters (long) to generate the image, an error is thrown:

Caused by: java.lang.NullPointerException: Property 'pieChartDetails'
> (within property expression 'pieChartDetails.id', of
> com.sc.ipk.portal.ixl.pages.IxlTrends@74a5eac1) is null.


Here is my TML

<t:loop t:source="ixlDao.getCsvResultFiles(ixlTest?.getTestType().getId())"
> t:value="csvFileResults">
> <article t:type="if" t:test="displayPieCharts" class="module width_full"
> style="text-align: center;">
> <div class="module_content" style="margin: 5px 5px;">
> <div class="pieChartImg" t:type="loop" t:source="availablePieCharts"
> t:value="pieChartDetails">
> <img t:type="ixl/Chart" t:chartType="literal:pie" t:chartId="*
> pieChartDetails.id*" t:csvResultFileId="*csvFileResults.id*"
> t:requestId="ixlTest?.id"
> t:from="formattedStartTime" t:to="formattedEndTime"
> t:interval="profile.timeInterval" t:width="300" t:height="300" />
> </div>
> </div>
> </article>
> </t:loop>


So the error is thrown AFTER the image URL is correctly generated. I just
don't know why does it try to re-acquire the parameters value once again
from the page !

When I debug through the component (*IxlChart i.e. ixl/Chart*) I find that
I'm about to generate an image, but I need the *chartId* parameter,
inspecting it using eclipse shows the expected value, but still that line
of code that uses that value, keeps throwing the following exception


Caused by: org.apache.tapestry5.ioc.internal.OperationException: Failure
> reading parameter 'chartId' of component ixl/Trends:chart: Property
> 'pieChartDetails' (within property expression 'pieChartDetails.id', of
> com.sc.ipk.portal.ixl.pages.ixlTrends@74a5eac1) is null. [at
> classpath:com/sc/ipk/portal/ixl/pages/ixlTrends.tml, line 100]
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121)
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88)
> at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
> at
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
> at
> org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146)
> at
> org.apache.tapestry5.internal.services.EventImpl.storeResult(EventImpl.java:84)
> at
> com.sc.ipk.portal.ixl.components.TapestryImage.dispatchComponentEvent(TapestryImage.java)
> at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:927)
> at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1112)
> ... 76 more
> Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException:
> Failure reading parameter 'chartId' of component ixl/Trends:chart: Property
> 'pieChartDetails' (within property expression 'pieChartDetails.id', of
> com.sc.ipk.portal.ixl.pages.ixlTrends@74a5eac1) is null. [at
> classpath:com/sc/ipk/portal/ixl/pages/ixlTrends.tml, line 100]
> at
> org.apache.tapestry5.internal.transform.ParameterWorker$3$1.readFromBinding(ParameterWorker.java:268)
> at
> org.apache.tapestry5.internal.transform.ParameterWorker$3$1.get(ParameterWorker.java:381)
> at
> com.sc.ipk.portal.ixl.components.TapestryImage.conduit_get_chartId(TapestryImage.java)
> at com.sc.ipk.portal.ixl.components.ixlChart.getPieChart(ixlChart.java:37)
> at com.sc.ipk.portal.ixl.components.ixlChart.getImage(ixlChart.java:29)
> at
> com.sc.ipk.portal.ixl.components.TapestryImage$1.getStream(TapestryImage.java:125)
> at
> org.apache.tapestry5.internal.services.StreamResponseResultProcessor.processResultValue(StreamResponseResultProcessor.java:52)
> at
> org.apache.tapestry5.internal.services.StreamResponseResultProcessor.processResultValue(StreamResponseResultProcessor.java:28)
> at $ComponentEventResultProcessor_7bcda80107c9.processResultValue(Unknown
> Source)
> at $ComponentEventResultProcessor_7bcda8010785.processResultValue(Unknown
> Source)
> at
> org.apache.tapestry5.internal.services.ComponentResultProcessorWrapper.handleResult(ComponentResultProcessorWrapper.java:47)
> at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$6.handleResult(ComponentPageElementImpl.java:1084)
> at
> org.apache.tapestry5.internal.services.EventImpl$1.invoke(EventImpl.java:89)
> at
> org.apache.tapestry5.internal.services.EventImpl$1.invoke(EventImpl.java:86)
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
> ... 83 more
> Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException:
> Property 'pieChartDetails' (within property expression
> 'pieChartDetails.id', of com.sc.ipk.portal.ixl.pages.ixlTrends@74a5eac1)
> is null. [at classpath:com/sc/ipk/portal/ixl/pages/ixlTrends.tml, line 100]
> at
> org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:63)
> at
> org.apache.tapestry5.internal.transform.ParameterWorker$3$1.readFromBinding(ParameterWorker.java:263)
> ... 97 more
> Caused by: java.lang.NullPointerException: Property 'pieChartDetails'
> (within property expression 'pieChartDetails.id', of
> com.sc.ipk.portal.ixl.pages.ixlTrends@74a5eac1) is null.
> at
> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.nullTerm(PropertyConduitSourceImpl.java:1495)
> at $InternalPropertyConduit_7bcda8010737.navigate(Unknown Source)
> at $InternalPropertyConduit_7bcda8010737.get(Unknown Source)
> at
> org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:59)
> ... 98 more


Thank you for your time

Reply via email to