Tapestry 5
  1. Tapestry 5
  2. TAP5-1075

When a template contains a reference to an unknown component, the new UnknownValueException is reported but the Location is no longer reported, making it much harder to determine where the error occurred

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: 5.2.0
    • Fix Version/s: 5.2.0
    • Component/s: tapestry-core
    • Labels:
      None

      Activity

      Hide
      Howard M. Lewis Ship added a comment -

      In my case, it was <t:delete> instead of <t:delegate>, but the exception:

      org.apache.tapestry5.ioc.util.UnknownValueException
      Unable to resolve 'delete' to a component class name.

      org.apache.tapestry5.internal.services.ComponentClassResolverImpl$6.invoke(ComponentClassResolverImpl.java:469)
      org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
      org.apache.tapestry5.internal.services.ComponentClassResolverImpl.resolveComponentTypeToClassName(ComponentClassResolverImpl.java:462)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl.startComponent(PageLoaderImpl.java:729)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl.component(PageLoaderImpl.java:610)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl.processTemplateToken(PageLoaderImpl.java:400)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl.element(PageLoaderImpl.java:670)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl.processTemplateToken(PageLoaderImpl.java:395)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl.element(PageLoaderImpl.java:670)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl.processTemplateToken(PageLoaderImpl.java:395)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl.element(PageLoaderImpl.java:670)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl.processTemplateToken(PageLoaderImpl.java:395)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl.programAssembler(PageLoaderImpl.java:234)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl.createAssembler(PageLoaderImpl.java:207)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl.getAssembler(PageLoaderImpl.java:183)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl$12.execute(PageLoaderImpl.java:943)
      org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.runActions(ComponentAssemblerImpl.java:207)
      org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.assembleRootComponent(ComponentAssemblerImpl.java:88)
      org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.java:159)
      org.apache.tapestry5.internal.services.PagePoolCache.checkout(PagePoolCache.java:210)
      org.apache.tapestry5.internal.services.PagePoolImpl.checkout(PagePoolImpl.java:99)
      org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:51)
      org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:53)
      org.apache.tapestry5.services.TapestryModule$35.handle(TapestryModule.java:2253)
      org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
      org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:47)
      org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)
      org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:294)
      org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
      org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:923)
      org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:913)
      org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85)
      org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90)
      org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
      org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103)
      org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:245)
      org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
      org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
      org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:866)
      org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:147)

      .... didn't leave enough clues about where to find the problem!

      An exception catch around component creation from template tokens is needed, to associate a TapestryRuntimeException with location around the UnknownValueException.

      Show
      Howard M. Lewis Ship added a comment - In my case, it was <t:delete> instead of <t:delegate>, but the exception: org.apache.tapestry5.ioc.util.UnknownValueException Unable to resolve 'delete' to a component class name. org.apache.tapestry5.internal.services.ComponentClassResolverImpl$6.invoke(ComponentClassResolverImpl.java:469) org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85) org.apache.tapestry5.internal.services.ComponentClassResolverImpl.resolveComponentTypeToClassName(ComponentClassResolverImpl.java:462) org.apache.tapestry5.internal.pageload.PageLoaderImpl.startComponent(PageLoaderImpl.java:729) org.apache.tapestry5.internal.pageload.PageLoaderImpl.component(PageLoaderImpl.java:610) org.apache.tapestry5.internal.pageload.PageLoaderImpl.processTemplateToken(PageLoaderImpl.java:400) org.apache.tapestry5.internal.pageload.PageLoaderImpl.element(PageLoaderImpl.java:670) org.apache.tapestry5.internal.pageload.PageLoaderImpl.processTemplateToken(PageLoaderImpl.java:395) org.apache.tapestry5.internal.pageload.PageLoaderImpl.element(PageLoaderImpl.java:670) org.apache.tapestry5.internal.pageload.PageLoaderImpl.processTemplateToken(PageLoaderImpl.java:395) org.apache.tapestry5.internal.pageload.PageLoaderImpl.element(PageLoaderImpl.java:670) org.apache.tapestry5.internal.pageload.PageLoaderImpl.processTemplateToken(PageLoaderImpl.java:395) org.apache.tapestry5.internal.pageload.PageLoaderImpl.programAssembler(PageLoaderImpl.java:234) org.apache.tapestry5.internal.pageload.PageLoaderImpl.createAssembler(PageLoaderImpl.java:207) org.apache.tapestry5.internal.pageload.PageLoaderImpl.getAssembler(PageLoaderImpl.java:183) org.apache.tapestry5.internal.pageload.PageLoaderImpl$12.execute(PageLoaderImpl.java:943) org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.runActions(ComponentAssemblerImpl.java:207) org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.assembleRootComponent(ComponentAssemblerImpl.java:88) org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.java:159) org.apache.tapestry5.internal.services.PagePoolCache.checkout(PagePoolCache.java:210) org.apache.tapestry5.internal.services.PagePoolImpl.checkout(PagePoolImpl.java:99) org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:51) org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:53) org.apache.tapestry5.services.TapestryModule$35.handle(TapestryModule.java:2253) org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48) org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:47) org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45) org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:294) org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:923) org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:913) org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85) org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90) org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85) org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103) org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:245) org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53) org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:866) org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:147) .... didn't leave enough clues about where to find the problem! An exception catch around component creation from template tokens is needed, to associate a TapestryRuntimeException with location around the UnknownValueException.

        People

        • Assignee:
          Igor Drobiazko
          Reporter:
          Howard M. Lewis Ship
        • Votes:
          0 Vote for this issue
          Watchers:
          0 Start watching this issue

          Dates

          • Created:
            Updated:
            Resolved:

            Development