Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Invalid
-
5.0.14
-
None
-
None
-
Jboss 4.2.3 + JDK 1.5.0_16-b02 + Tapestry 5.0.14
Description
As per the previous issue with ClassCastExceptions in CoercingPropertyConduitWrapper, I am seeing a ClassCastException when trying to use parent / child classes in a Grid.
I have class 1 (Campaign) and Class 2 (CCOCampaign) where Class2 extends Class1. I return a list of Campaigns thru my business layer via a List<Campaign> to the page.
Different to the first issue is tht i am expecting to only see the properties of the parent class (Class1 / Campaign), but instead I get a ClassCastException whenever a CCOCampaign is present in the List.
This looks to be the same issue as previously reported, with only the expected outcome differing?
Cheers,
Ben
A full stack trace is as follows:
18:44:29,641 ERROR [ClientLandingPage] Render queue error in BeginRender[ClientLandingPage:grid.rows.gridcell]: au.com.voicelogic.teleblast.business.model.Campaign
org.apache.tapestry5.ioc.internal.util.TapestryException: au.com.voicelogic.teleblast.business.model.Campaign [at classpath:org/apache/tapestry5/corelib/components/GridRows.tml, line 4, column 81]
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:909)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$200(ComponentPageElementImpl.java:50)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$11.render(ComponentPageElementImpl.java:338)
at org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:68)
at org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:108)
at $PageRenderQueue_11c1d152070.render($PageRenderQueue_11c1d152070.java)
at $PageRenderQueue_11c1d152069.render($PageRenderQueue_11c1d152069.java)
at org.apache.tapestry5.services.TapestryModule$15.renderMarkup(TapestryModule.java:1128)
at org.apache.tapestry5.services.TapestryModule$24.renderMarkup(TapestryModule.java:1472)
at $MarkupRenderer_11c1d152071.renderMarkup($MarkupRenderer_11c1d152071.java)
at org.apache.tapestry5.services.TapestryModule$23.renderMarkup(TapestryModule.java:1453)
at $MarkupRenderer_11c1d152071.renderMarkup($MarkupRenderer_11c1d152071.java)
at org.apache.tapestry5.services.TapestryModule$22.renderMarkup(TapestryModule.java:1435)
at $MarkupRenderer_11c1d152071.renderMarkup($MarkupRenderer_11c1d152071.java)
at org.apache.tapestry5.services.TapestryModule$21.renderMarkup(TapestryModule.java:1415)
at $MarkupRenderer_11c1d152071.renderMarkup($MarkupRenderer_11c1d152071.java)
at $MarkupRenderer_11c1d15206e.renderMarkup($MarkupRenderer_11c1d15206e.java)
at org.apache.tapestry5.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:64)
at $PageMarkupRenderer_11c1d15206c.renderPageMarkup($PageMarkupRenderer_11c1d15206c.java)
at org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:57)
at $PageResponseRenderer_11c1d152027.renderPageResponse($PageResponseRenderer_11c1d152027.java)
at org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:59)
at org.apache.tapestry5.services.TapestryModule$29.handle(TapestryModule.java:1653)
at $PageRenderRequestHandler_11c1d152028.handle($PageRenderRequestHandler_11c1d152028.java)
at $PageRenderRequestHandler_11c1d15201d.handle($PageRenderRequestHandler_11c1d15201d.java)
at org.apache.tapestry5.internal.services.PageRenderDispatcher.process(PageRenderDispatcher.java:97)
at org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:73)
at $Dispatcher_11c1d152023.dispatch($Dispatcher_11c1d152023.java)
at $Dispatcher_11c1d152016.dispatch($Dispatcher_11c1d152016.java)
at org.apache.tapestry5.services.TapestryModule$13.service(TapestryModule.java:953)
at org.apache.tapestry5.internal.services.LocalizationFilter.service(LocalizationFilter.java:42)
at $RequestHandler_11c1d152017.service($RequestHandler_11c1d152017.java)
at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:586)
at $RequestHandler_11c1d152017.service($RequestHandler_11c1d152017.java)
at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
at $RequestHandler_11c1d152017.service($RequestHandler_11c1d152017.java)
at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:79)
at $RequestHandler_11c1d152017.service($RequestHandler_11c1d152017.java)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:93)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:84)
at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:83)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:106)
at $RequestHandler_11c1d152017.service($RequestHandler_11c1d152017.java)
at $RequestHandler_11c1d15200f.service($RequestHandler_11c1d15200f.java)
at org.apache.tapestry5.services.TapestryModule$12.service(TapestryModule.java:933)
at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
at $HttpServletRequestFilter_11c1d15200e.service($HttpServletRequestFilter_11c1d15200e.java)
at $HttpServletRequestHandler_11c1d152010.service($HttpServletRequestHandler_11c1d152010.java)
at $HttpServletRequestHandler_11c1d15200d.service($HttpServletRequestHandler_11c1d15200d.java)
at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:177)
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:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
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:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:437)
at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:366)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.ClassCastException: au.com.voicelogic.teleblast.business.model.Campaign
at $PropertyConduit_11c1d1520ca.navigate($PropertyConduit_11c1d1520ca.java)
at $PropertyConduit_11c1d1520ca.get($PropertyConduit_11c1d1520ca.java)
at org.apache.tapestry5.internal.services.CoercingPropertyConduitWrapper.get(CoercingPropertyConduitWrapper.java:36)
at org.apache.tapestry5.corelib.base.AbstractPropertyOutput.readPropertyForObject(AbstractPropertyOutput.java:138)
at org.apache.tapestry5.corelib.base.AbstractPropertyOutput.renderPropertyValue(AbstractPropertyOutput.java:117)
at org.apache.tapestry5.corelib.components.GridCell.beginRender(GridCell.java:28)
at org.apache.tapestry5.corelib.components.GridCell.beginRender(GridCell.java)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$11$1.run(ComponentPageElementImpl.java:334)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:899)
... 67 more
18:44:29,651 ERROR [RequestExceptionHandler] Processing of request failed with uncaught exception: Render queue error in BeginRender[ClientLandingPage:grid.rows.gridcell]: au.com.voicelogic.teleblast.business.model.Campaign
org.apache.tapestry5.internal.services.RenderQueueException: Render queue error in BeginRender[ClientLandingPage:grid.rows.gridcell]: au.com.voicelogic.teleblast.business.model.Campaign [at classpath:org/apache/tapestry5/corelib/components/GridRows.tml, line 4, column 81]
at org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:80)
at org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:108)
at $PageRenderQueue_11c1d152070.render($PageRenderQueue_11c1d152070.java)
at $PageRenderQueue_11c1d152069.render($PageRenderQueue_11c1d152069.java)
at org.apache.tapestry5.services.TapestryModule$15.renderMarkup(TapestryModule.java:1128)
at org.apache.tapestry5.services.TapestryModule$24.renderMarkup(TapestryModule.java:1472)
at $MarkupRenderer_11c1d152071.renderMarkup($MarkupRenderer_11c1d152071.java)
at org.apache.tapestry5.services.TapestryModule$23.renderMarkup(TapestryModule.java:1453)
at $MarkupRenderer_11c1d152071.renderMarkup($MarkupRenderer_11c1d152071.java)
at org.apache.tapestry5.services.TapestryModule$22.renderMarkup(TapestryModule.java:1435)
at $MarkupRenderer_11c1d152071.renderMarkup($MarkupRenderer_11c1d152071.java)
at org.apache.tapestry5.services.TapestryModule$21.renderMarkup(TapestryModule.java:1415)
at $MarkupRenderer_11c1d152071.renderMarkup($MarkupRenderer_11c1d152071.java)
at $MarkupRenderer_11c1d15206e.renderMarkup($MarkupRenderer_11c1d15206e.java)
at org.apache.tapestry5.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:64)
at $PageMarkupRenderer_11c1d15206c.renderPageMarkup($PageMarkupRenderer_11c1d15206c.java)
at org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:57)
at $PageResponseRenderer_11c1d152027.renderPageResponse($PageResponseRenderer_11c1d152027.java)
at org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:59)
at org.apache.tapestry5.services.TapestryModule$29.handle(TapestryModule.java:1653)
at $PageRenderRequestHandler_11c1d152028.handle($PageRenderRequestHandler_11c1d152028.java)
at $PageRenderRequestHandler_11c1d15201d.handle($PageRenderRequestHandler_11c1d15201d.java)
at org.apache.tapestry5.internal.services.PageRenderDispatcher.process(PageRenderDispatcher.java:97)
at org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:73)
at $Dispatcher_11c1d152023.dispatch($Dispatcher_11c1d152023.java)
at $Dispatcher_11c1d152016.dispatch($Dispatcher_11c1d152016.java)
at org.apache.tapestry5.services.TapestryModule$13.service(TapestryModule.java:953)
at org.apache.tapestry5.internal.services.LocalizationFilter.service(LocalizationFilter.java:42)
at $RequestHandler_11c1d152017.service($RequestHandler_11c1d152017.java)
at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:586)
at $RequestHandler_11c1d152017.service($RequestHandler_11c1d152017.java)
at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
at $RequestHandler_11c1d152017.service($RequestHandler_11c1d152017.java)
at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:79)
at $RequestHandler_11c1d152017.service($RequestHandler_11c1d152017.java)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:93)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:84)
at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:83)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:106)
at $RequestHandler_11c1d152017.service($RequestHandler_11c1d152017.java)
at $RequestHandler_11c1d15200f.service($RequestHandler_11c1d15200f.java)
at org.apache.tapestry5.services.TapestryModule$12.service(TapestryModule.java:933)
at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
at $HttpServletRequestFilter_11c1d15200e.service($HttpServletRequestFilter_11c1d15200e.java)
at $HttpServletRequestHandler_11c1d152010.service($HttpServletRequestHandler_11c1d152010.java)
at $HttpServletRequestHandler_11c1d15200d.service($HttpServletRequestHandler_11c1d15200d.java)
at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:177)
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:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
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:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:437)
at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:366)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException: au.com.voicelogic.teleblast.business.model.Campaign [at classpath:org/apache/tapestry5/corelib/components/GridRows.tml, line 4, column 81]
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:909)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$200(ComponentPageElementImpl.java:50)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$11.render(ComponentPageElementImpl.java:338)
at org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:68)
... 64 more
Caused by: java.lang.ClassCastException: au.com.voicelogic.teleblast.business.model.Campaign
at $PropertyConduit_11c1d1520ca.navigate($PropertyConduit_11c1d1520ca.java)
at $PropertyConduit_11c1d1520ca.get($PropertyConduit_11c1d1520ca.java)
at org.apache.tapestry5.internal.services.CoercingPropertyConduitWrapper.get(CoercingPropertyConduitWrapper.java:36)
at org.apache.tapestry5.corelib.base.AbstractPropertyOutput.readPropertyForObject(AbstractPropertyOutput.java:138)
at org.apache.tapestry5.corelib.base.AbstractPropertyOutput.renderPropertyValue(AbstractPropertyOutput.java:117)
at org.apache.tapestry5.corelib.components.GridCell.beginRender(GridCell.java:28)
at org.apache.tapestry5.corelib.components.GridCell.beginRender(GridCell.java)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$11$1.run(ComponentPageElementImpl.java:334)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:899)
... 67 more
18:44:29,939 ERROR [PagePool] Page Page[ClientLandingPage en] is dirty, and will be discarded (rather than returned to the page pool).
Previous Case:
When a bean editor receives beans from differenct classes (superclass & subclass) sometimes the wrong fields are displayed and other times a ClassCastException is throws in the CoercingPropertyConduitWrapper.
This happens only, when bean editing is finished by the onSubmit method.
TestCase:
TT1 is the superclasss of TT2
TT1.java
-------------------
public class TT1 {
private String name;
public String getName()
{ return name; }public void setName(String name)
{ this.name = name; }}
TT2.java
----------------------------
public class TT2 extends TT1 {
private String v2;
public String getV2()
{ return v2; }public void setV2(String v2)
{ this.v2 = v2; }}
CoercTest.java
-----------------------
public class CoercTest {
@Persist
private TT1 testObject;
@OnEvent(component="typeTO1")
public void onTypeTO1()
@OnEvent(component="typeTO2")
public void onTypeTO2()
public TT1 getTestObject()
{ return testObject; }public void setTestObject(TT1 testObject)
{ this.testObject = testObject; }public void onSubmit()
{ testObject = null; }public boolean isTestObjectNotNull()
{ return testObject != null; }}
CoercTest.tml
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<body>
<t:ActionLink t:id="typeTO1">TT1</t:ActionLink><br/>
<t:ActionLink t:id="typeTO2">TT2</t:ActionLink><br/>
<t:If test="testObjectNotNull">
<t:BeanEditForm object="testObject"/>
</t:If>
</body>
</html>
Attachments
Issue Links
- is a clone of
-
TAPESTRY-2123 ClassCastException in CoercingPropertyConduitWrapper
- Closed