[
https://issues.apache.org/jira/browse/TAP5-2423?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nourredine K. updated TAP5-2423:
--------------------------------
Attachment: sample.zip
A sample based on the "Tapestry 5 Quickstart Project" that reproduces the issue.
Unzip and mvn jetty:run, then access to
http://localhost:8080/sample/overrideIndex
OverrideIndex page extends index and provides its own template.
Tapestry complains about
{code}
Method sample.pages.Index.onActionFromIncrement() references component id
'Increment' which does not exist.
{code}
The stack :
{code}
EXCEPTION STACK:
Exception type: org.apache.tapestry5.ioc.internal.OperationException
Message: Method sample.pages.Index.onActionFromIncrement() references
component id 'Increment' which does not exist.
trace: Handling page render request for page OverrideIndex
Constructing instance of page class
sample.pages.OverrideIndex
Exception type: org.apache.tapestry5.ioc.internal.util.TapestryException
Message: Method sample.pages.Index.onActionFromIncrement() references
component id 'Increment' which does not exist.
Exception type: org.apache.tapestry5.ioc.util.UnknownValueException
Message: Component OverrideIndex does not contain embedded component
'Increment'.
availableValues: AvailableValues[Embedded components: layout, pagelink]
Stack trace:
-
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.getEmbeddedElement(ComponentPageElementImpl.java:854)
-
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.getEmbeddedComponent(InternalComponentResourcesImpl.java:186)
-
org.apache.tapestry5.internal.transform.OnEventWorker$ComponentIdValidator.validate(OnEventWorker.java:88)
-
org.apache.tapestry5.internal.transform.OnEventWorker$ValidateComponentIds.advise(OnEventWorker.java:112)
-
org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:92)
- sample.pages.Index.containingPageDidLoad(Index.java)
- org.apache.tapestry5.internal.structure.PageImpl$1.run(PageImpl.java:176)
-
org.apache.tapestry5.internal.structure.PageImpl.invokeCallbacks(PageImpl.java:365)
- org.apache.tapestry5.internal.structure.PageImpl.loaded(PageImpl.java:228)
-
org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:205)
-
org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:190)
-
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
-
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
-
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1258)
-
org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.java:189)
- $PageLoader_4e96edbf84d06.loadPage(Unknown Source)
-
org.apache.tapestry5.internal.services.PageSourceImpl.getPage(PageSourceImpl.java:104)
- $PageSource_4e96edbf84d05.getPage(Unknown Source)
-
org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:86)
- $RequestPageCache_4e96edbf84d04.get(Unknown Source)
- $RequestPageCache_4e96edbf84cff.get(Unknown Source)
-
org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:56)
-
org.apache.tapestry5.modules.TapestryModule$34.handle(TapestryModule.java:1968)
- $PageRenderRequestHandler_4e96edbf84d03.handle(Unknown Source)
- $PageRenderRequestHandler_4e96edbf84cfd.handle(Unknown Source)
-
org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
-
org.apache.tapestry5.internal.services.DeferredResponseRenderer.handlePageRender(DeferredResponseRenderer.java:52)
- $ComponentRequestHandler_4e96edbf84cfe.handlePageRender(Unknown Source)
-
org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:47)
- $ComponentRequestHandler_4e96edbf84cfe.handlePageRender(Unknown Source)
-
org.apache.tapestry5.internal.services.RequestOperationTracker$2.run(RequestOperationTracker.java:73)
-
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:56)
-
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:60)
- org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1252)
-
org.apache.tapestry5.internal.services.RequestOperationTracker.handlePageRender(RequestOperationTracker.java:66)
- $ComponentRequestHandler_4e96edbf84cfe.handlePageRender(Unknown Source)
- $ComponentRequestHandler_4e96edbf84ccc.handlePageRender(Unknown Source)
-
org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:55)
- $Dispatcher_4e96edbf84ccf.dispatch(Unknown Source)
- $Dispatcher_4e96edbf84cc6.dispatch(Unknown Source)
-
org.apache.tapestry5.modules.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:305)
- sample.services.AppModule$1.service(AppModule.java:94)
- $RequestFilter_4e96edbf84cc5.service(Unknown Source)
- $RequestHandler_4e96edbf84cc7.service(Unknown Source)
-
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
- $RequestHandler_4e96edbf84cc7.service(Unknown Source)
-
org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.java:844)
- $RequestHandler_4e96edbf84cc7.service(Unknown Source)
-
org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.java:834)
- $RequestHandler_4e96edbf84cc7.service(Unknown Source)
-
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89)
- $RequestHandler_4e96edbf84cc7.service(Unknown Source)
-
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105)
-
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95)
-
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
-
org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119)
- $RequestHandler_4e96edbf84cc7.service(Unknown Source)
- $RequestHandler_4e96edbf84cbb.service(Unknown Source)
-
org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:256)
- org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59)
- $HttpServletRequestHandler_4e96edbf84cbd.service(Unknown Source)
-
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
- $HttpServletRequestFilter_4e96edbf84cb8.service(Unknown Source)
- $HttpServletRequestHandler_4e96edbf84cbd.service(Unknown Source)
-
org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.java:794)
- $HttpServletRequestHandler_4e96edbf84cbd.service(Unknown Source)
- $HttpServletRequestHandler_4e96edbf84cb7.service(Unknown Source)
- org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:168)
-
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1148)
- org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:387)
- org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
- org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
- org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
- org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
-
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
-
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
- org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
- org.mortbay.jetty.Server.handle(Server.java:324)
- org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
-
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:865)
- org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
- org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
- org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
- org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
-
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
{code}
> Wrong component id check whith inherited pages/components
> ---------------------------------------------------------
>
> Key: TAP5-2423
> URL: https://issues.apache.org/jira/browse/TAP5-2423
> Project: Tapestry 5
> Issue Type: Bug
> Components: tapestry-core
> Reporter: Nourredine K.
> Attachments: sample.zip
>
>
> When page B inherits page A (providing its own temmplate) and A implements
> some event handler methods on some components, displaying page B throws an
> TapestryException that claims page B does not contain those components in its
> template.
> I think the pb occurs in the
> [ComponentIdValidator#validate(ComponentResources)|https://git-wip-us.apache.org/repos/asf?p=tapestry-5.git;a=blob;f=tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java;h=c640158666493ebc669ff561de25b62a9236f54a;hb=HEAD#l91]
> method because, we only check in the current ComponentResource and never in
> its parents if they exist.
> Remarks :
> - Occurs with tapestry 5.4-beta-22
> - Symbol tapestry.compatibility.unknown-component-id-check-enabled can't be
> used (no more used in 5.4-beta-22)
> Regards,
> Nourredine.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)