[
https://issues.apache.org/jira/browse/TAP5-2813?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18036506#comment-18036506
]
ASF subversion and git services commented on TAP5-2813:
-------------------------------------------------------
Commit aa12d279adbc06471257a96036435bd7095268ea in tapestry-5's branch
refs/heads/master from Thiago H. de Paula Figueiredo
[ https://gitbox.apache.org/repos/asf?p=tapestry-5.git;h=aa12d279a ]
TAP5-2813: Hopefully last workaround
> NPE when @Cached applied to method returning a generic type in multiple
> classloader mode
> ----------------------------------------------------------------------------------------
>
> Key: TAP5-2813
> URL: https://issues.apache.org/jira/browse/TAP5-2813
> Project: Tapestry 5
> Issue Type: Bug
> Components: tapestry-core
> Affects Versions: 5.9.0
> Reporter: Thiago Henrique De Paula Figueiredo
> Assignee: Thiago Henrique De Paula Figueiredo
> Priority: Minor
> Fix For: 5.10.0
>
>
> With production mode on, methods annotated with @Cached and returning a
> generic type, for example {{@Cached public SomeType<T> getData()}} , would
> throw this error:
> {noformat}
> java.lang.RuntimeException: Exception assembling root component of page
> CachedGenericsDemo: Exception assembling embedded component 'cachedgenerics'
> (of type org.apache.tapestry5.integration.app1.components.CachedGenerics,
> within CachedGenericsDemo): Could not convert 'EmptyTable' into a component
> parameter binding: Exception generating conduit for expression 'EmptyTable':
> java.lang.NullPointerException
> at
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.java:129)
> at
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.access$0(ComponentAssemblerImpl.java:86)
> at
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:81)
> at
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:1)
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
> at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
> at
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1292)
> at
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.assembleRootComponent(ComponentAssemblerImpl.java:76)
> at
> org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:255)
> at
> org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:1)
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
> at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
> at
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1292)
> at
> org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.java:247)
> at $PageLoader_2909eea08d1.loadPage(Unknown Source)
> at
> org.apache.tapestry5.internal.services.PageSourceImpl.getPage(PageSourceImpl.java:219)
> at
> org.apache.tapestry5.internal.services.PageSourceImpl.getPage(PageSourceImpl.java:147)
> at $PageSource_2909eea08d0.getPage(Unknown Source)
> at $PageSource_2909eea08cf.getPage(Unknown Source)
> at
> org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:93)
> at $RequestPageCache_2909eea08ce.get(Unknown Source)
> at $RequestPageCache_2909eea08cd.get(Unknown Source)
> at
> org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:61)
> at
> org.apache.tapestry5.modules.TapestryModule$33.handle(TapestryModule.java:2055)
> at $PageRenderRequestHandler_2909eea0aa5.handle(Unknown Source)
> at $PageRenderRequestHandler_2909eea0aa0.handle(Unknown Source)
> at
> org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.lambda$1(ComponentRequestHandlerTerminator.java:74)
> at
> org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.run(ComponentRequestHandlerTerminator.java:93)
> at
> org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:74)
> at
> org.apache.tapestry5.internal.services.DeferredResponseRenderer.handlePageRender(DeferredResponseRenderer.java:57)
> at $ComponentRequestFilter_2909eea0a9e.handlePageRender(Unknown Source)
> at $ComponentRequestHandler_2909eea0aa1.handlePageRender(Unknown Source)
> at
> org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:49)
> at $ComponentRequestFilter_2909eea0a9d.handlePageRender(Unknown Source)
> at $ComponentRequestHandler_2909eea0aa1.handlePageRender(Unknown Source)
> at
> org.apache.tapestry5.internal.services.RequestOperationTracker$2.run(RequestOperationTracker.java:78)
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:56)
> at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:60)
> at
> org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1286)
> at
> org.apache.tapestry5.internal.services.RequestOperationTracker.handlePageRender(RequestOperationTracker.java:71)
> at $ComponentRequestFilter_2909eea0a9c.handlePageRender(Unknown Source)
> at $ComponentRequestHandler_2909eea0aa1.handlePageRender(Unknown Source)
> at $ComponentRequestHandler_2909eea0a5d.handlePageRender(Unknown Source)
> at
> org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:61)
> at $Dispatcher_2909eea0a5b.dispatch(Unknown Source)
> at $Dispatcher_2909eea0a5c.dispatch(Unknown Source)
> at $Dispatcher_2909eea0a46.dispatch(Unknown Source)
> at
> org.apache.tapestry5.http.modules.TapestryHttpModule$RequestHandlerTerminator.service(TapestryHttpModule.java:492)
> at
> org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:31)
> at $RequestFilter_2909eea0a45.service(Unknown Source)
> at $RequestHandler_2909eea0a47.service(Unknown Source)
> at
> org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.java:995)
> at $RequestHandler_2909eea0a47.service(Unknown Source)
> at
> org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.java:985)
> at $RequestHandler_2909eea0a47.service(Unknown Source)
> at
> org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89)
> at $RequestHandler_2909eea0a47.service(Unknown Source)
> at
> org.apache.tapestry5.integration.app1.services.AppModule$2.service(AppModule.java:144)
> at $RequestFilter_2909eea0a42.service(Unknown Source)
> at $RequestHandler_2909eea0a47.service(Unknown Source)
> at
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:110)
> at
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:1)
> at
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:83)
> at
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:124)
> at $RequestFilter_2909eea0a44.service(Unknown Source)
> at $RequestHandler_2909eea0a47.service(Unknown Source)
> at $RequestHandler_2909eea0a39.service(Unknown Source)
> at
> org.apache.tapestry5.http.modules.TapestryHttpModule$HttpServletRequestHandlerTerminator.service(TapestryHttpModule.java:469)
> at
> org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:69)
> at $HttpServletRequestFilter_2909eea0a41.service(Unknown Source)
> at $HttpServletRequestFilter_2909eea0a38.service(Unknown Source)
> at $HttpServletRequestHandler_2909eea0a3b.service(Unknown Source)
> at
> org.apache.tapestry5.http.internal.gzip.GZipFilter.service(GZipFilter.java:60)
> at $HttpServletRequestHandler_2909eea0a3b.service(Unknown Source)
> at
> org.apache.tapestry5.http.services.CorsHttpServletRequestFilter.service(CorsHttpServletRequestFilter.java:65)
> at $HttpServletRequestHandler_2909eea0a3b.service(Unknown Source)
> at
> org.apache.tapestry5.http.modules.TapestryHttpModule$2.service(TapestryHttpModule.java:318)
> at $HttpServletRequestHandler_2909eea0a3b.service(Unknown Source)
> at $HttpServletRequestHandler_2909eea0a33.service(Unknown Source)
> at
> org.apache.tapestry5.http.TapestryFilter.runFilter(TapestryFilter.java:178)
> at
> org.apache.tapestry5.http.TapestryFilter.doFilter(TapestryFilter.java:225)
> at
> org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
> at
> org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
> at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
> at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
> at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1381)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
> at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
> at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1303)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
> at org.eclipse.jetty.server.Server.handle(Server.java:563)
> at
> org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598)
> at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753)
> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501)
> at
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282)
> at
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
> at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
> at
> org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
> at
> org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421)
> at
> org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390)
> at
> org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277)
> at
> org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199)
> at
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
> at java.base/java.lang.Thread.run(Thread.java:829)
> Caused by: org.apache.tapestry5.ioc.internal.OperationException: Exception
> assembling embedded component 'cachedgenerics' (of type
> org.apache.tapestry5.integration.app1.components.CachedGenerics, within
> CachedGenericsDemo): Could not convert 'EmptyTable' into a component
> parameter binding: Exception generating conduit for expression 'EmptyTable':
> java.lang.NullPointerException [at context:CachedGenericsDemo.tml, line 2]
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:196)
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:62)
> at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:60)
> at
> org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1286)
> at
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.assembleEmbeddedComponent(ComponentAssemblerImpl.java:158)
> at
> org.apache.tapestry5.internal.pageload.PageLoaderImpl$12.execute(PageLoaderImpl.java:1021)
> at
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.runActions(ComponentAssemblerImpl.java:229)
> at
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.java:105)
> ... 114 more
> Caused by: org.apache.tapestry5.commons.internal.util.TapestryException:
> Exception assembling embedded component 'cachedgenerics' (of type
> org.apache.tapestry5.integration.app1.components.CachedGenerics, within
> CachedGenericsDemo): Could not convert 'EmptyTable' into a component
> parameter binding: Exception generating conduit for expression 'EmptyTable':
> java.lang.NullPointerException [at context:CachedGenericsDemo.tml, line 2]
> at
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$2.run(ComponentAssemblerImpl.java:187)
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:56)
> ... 120 more
> Caused by: org.apache.tapestry5.commons.internal.util.TapestryException:
> Could not convert 'EmptyTable' into a component parameter binding: Exception
> generating conduit for expression 'EmptyTable':
> java.lang.NullPointerException [at
> classpath:org/apache/tapestry5/integration/app1/base/AbstractCachedGenerics.tml,
> line 4]
> at
> org.apache.tapestry5.internal.services.BindingSourceImpl.newBinding(BindingSourceImpl.java:85)
> at $BindingSource_2909eea0981.newBinding(Unknown Source)
> at $BindingSource_2909eea0925.newBinding(Unknown Source)
> at
> org.apache.tapestry5.internal.services.PageElementFactoryImpl.newExpansionElement(PageElementFactoryImpl.java:164)
> at $PageElementFactory_2909eea0980.newExpansionElement(Unknown Source)
> at $PageElementFactory_2909eea08f8.newExpansionElement(Unknown Source)
> at
> org.apache.tapestry5.internal.pageload.PageLoaderImpl$15.execute(PageLoaderImpl.java:1100)
> at
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.runActions(ComponentAssemblerImpl.java:229)
> at
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.access$3(ComponentAssemblerImpl.java:224)
> at
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$2.run(ComponentAssemblerImpl.java:180)
> ... 121 more
> Caused by:
> org.apache.tapestry5.beanmodel.internal.services.PropertyExpressionException:
> Exception generating conduit for expression 'EmptyTable':
> java.lang.NullPointerException
> at
> org.apache.tapestry5.beanmodel.internal.services.PropertyConduitSourceImpl.build(PropertyConduitSourceImpl.java:1531)
> at
> org.apache.tapestry5.beanmodel.internal.services.PropertyConduitSourceImpl.create(PropertyConduitSourceImpl.java:1441)
> at $PropertyConduitSource_2909eea08c4.create(Unknown Source)
> at $PropertyConduitSource_2909eea08b6.create(Unknown Source)
> at
> org.apache.tapestry5.internal.bindings.PropBindingFactory.newBinding(PropBindingFactory.java:56)
> at $BindingFactory_2909eea098a.newBinding(Unknown Source)
> at $BindingFactory_2909eea0982.newBinding(Unknown Source)
> at
> org.apache.tapestry5.internal.services.BindingSourceImpl.newBinding(BindingSourceImpl.java:82)
> ... 130 more
> Caused by: java.lang.RuntimeException: java.lang.NullPointerException
> at
> org.apache.tapestry5.beanmodel.internal.services.PropertyAccessImpl.buildAdapter(PropertyAccessImpl.java:117)
> at
> org.apache.tapestry5.beanmodel.internal.services.PropertyAccessImpl.getAdapter(PropertyAccessImpl.java:80)
> at $PropertyAccess_2909eea0923.getAdapter(Unknown Source)
> at $PropertyAccess_2909eea089f.getAdapter(Unknown Source)
> at
> org.apache.tapestry5.beanmodel.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.findPropertyAdapter(PropertyConduitSourceImpl.java:1194)
> at
> org.apache.tapestry5.beanmodel.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.implementPropertyAccessors(PropertyConduitSourceImpl.java:547)
> at
> org.apache.tapestry5.beanmodel.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.implementAccessors(PropertyConduitSourceImpl.java:451)
> at
> org.apache.tapestry5.beanmodel.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.implementNavMethodAndAccessors(PropertyConduitSourceImpl.java:442)
> at
> org.apache.tapestry5.beanmodel.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.transform(PropertyConduitSourceImpl.java:312)
> at
> org.apache.tapestry5.plastic.PlasticManager.createProxy(PlasticManager.java:287)
> at
> org.apache.tapestry5.plastic.PlasticManager.createProxy(PlasticManager.java:262)
> at
> org.apache.tapestry5.plastic.PlasticManager.createProxy(PlasticManager.java:229)
> at
> org.apache.tapestry5.beanmodel.services.PlasticProxyFactoryImpl.createProxy(PlasticProxyFactoryImpl.java:86)
> at
> org.apache.tapestry5.beanmodel.internal.services.PropertyConduitSourceImpl.build(PropertyConduitSourceImpl.java:1527)
> ... 137 more
> Caused by: java.lang.NullPointerException
> at
> java.desktop/com.sun.beans.TypeResolver.resolve(TypeResolver.java:203)
> at
> java.desktop/com.sun.beans.TypeResolver.resolve(TypeResolver.java:218)
> at
> java.desktop/com.sun.beans.TypeResolver.resolve(TypeResolver.java:169)
> at
> java.desktop/com.sun.beans.TypeResolver.resolveInClass(TypeResolver.java:81)
> at
> java.desktop/com.sun.beans.introspect.MethodInfo.resolve(MethodInfo.java:63)
> at
> java.desktop/com.sun.beans.introspect.MethodInfo.<init>(MethodInfo.java:50)
> at
> java.desktop/com.sun.beans.introspect.PropertyInfo.add(PropertyInfo.java:245)
> at
> java.desktop/com.sun.beans.introspect.PropertyInfo.get(PropertyInfo.java:285)
> at
> java.desktop/com.sun.beans.introspect.ClassInfo.getProperties(ClassInfo.java:91)
> at
> java.desktop/java.beans.Introspector.getTargetPropertyInfo(Introspector.java:499)
> at
> java.desktop/java.beans.Introspector.getBeanInfo(Introspector.java:447)
> at
> java.desktop/java.beans.Introspector.getBeanInfo(Introspector.java:195)
> at
> org.apache.tapestry5.beanmodel.internal.services.PropertyAccessImpl.buildAdapter(PropertyAccessImpl.java:99)
> {noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)