[ 
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)

Reply via email to