You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Howard M. Lewis Ship (JIRA)" <ta...@jakarta.apache.org> on 2005/07/09 19:13:10 UTC
[jira] Closed: (TAPESTRY-391) Cannot inject the same bean twice
[ http://issues.apache.org/jira/browse/TAPESTRY-391?page=all ]
Howard M. Lewis Ship closed TAPESTRY-391:
-----------------------------------------
Fix Version: 4.0
Resolution: Fixed
Explanation: when you inject an object, the InjectObjectWorker asks the EnhancementOperation to add a constructor parameter and a field. When you inject the same object a second time, the EnhacementOperation doesn't add another constructor parameter ... it uses the same parameter and field, and returns the previous field name. However the InjectObjectWorker code was ignoring the field name provided by the EnhancementOperation and ended up referencing what it thought the field should be ... which didn't exit.
> Cannot inject the same bean twice
> ---------------------------------
>
> Key: TAPESTRY-391
> URL: http://issues.apache.org/jira/browse/TAPESTRY-391
> Project: Tapestry
> Type: Bug
> Versions: 4.0
> Environment: Eclipse 3.1, Jetty 5.1.4-all, Jetty Launcher 1.3.0, Tapestry 4.0beta1, Hivemind 1.1beta2, Spring 1.2.2
> Reporter: Adam Czysciak
> Assignee: Howard M. Lewis Ship
> Fix For: 4.0
>
> Tried to inject twice the same bean into one page, under different property keys and I got the exception. The beans are shared, therefore I think it should be possible to inject them twice.
> The exception (with part of my .page file) follows:
> org.apache.hivemind.ApplicationRuntimeException
> Error at context:/WEB-INF/Home.page, line 10, column 68: Error adding
> property 'testBean2' to class pages.Home: Unable to add method
> java.lang.Object getTestBean2() to class $Home_0: [source error] no such
> field: _$testBean2
> location:
> context:/WEB-INF/Home.page, line 10, column 68
> 5 "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
> 6
> 7 <page-specification class="pages.Home">
> 8
> 9 <inject property="testBean" object="spring:questionGroupDao" />
> 10 <inject property="testBean2" object="spring:questionGroupDao" />
> 11
> 12 </page-specification>
>
> org.apache.hivemind.ApplicationRuntimeException
> Unable to add method java.lang.Object getTestBean2() to class $Home_0:
> [source error] no such field: _$testBean2
>
> javassist.CannotCompileException
> [source error] no such field: _$testBean2
> Stack Trace:
> javassist.CtBehavior.setBody(CtBehavior.java:194)
> javassist.CtBehavior.setBody(CtBehavior.java:163)
> org.apache.hivemind.service.impl.ClassFabImpl.addMethod(ClassFabImpl.java:288)
> org.apache.tapestry.enhance.EnhancementOperationImpl.addMethod(EnhancementOperationImpl.java:337)
> org.apache.tapestry.enhance.InjectObjectWorker.injectObject(InjectObjectWorker.java:77)
> org.apache.tapestry.enhance.InjectObjectWorker.performEnhancement(InjectObjectWorker.java:43)
> $InjectEnhancementWorker_104f83b8b1f.performEnhancement($InjectEnhancementWorker_104f83b8b1f.java)
> org.apache.tapestry.enhance.DispatchToInjectWorker.invokeWorker(DispatchToInjectWorker.java:63)
> org.apache.tapestry.enhance.DispatchToInjectWorker.performEnhancement(DispatchToInjectWorker.java:45)
> $EnhancementWorker_104f83b8b09.performEnhancement($EnhancementWorker_104f83b8b09.java)
> $EnhancementWorker_104f83b8b08.performEnhancement($EnhancementWorker_104f83b8b08.java)
> $EnhancementWorker_104f83b8b1e.performEnhancement($EnhancementWorker_104f83b8b1e.java)
> $EnhancementWorker_104f83b8aff.performEnhancement($EnhancementWorker_104f83b8aff.java)
> $EnhancementWorker_104f83b8afe.performEnhancement($EnhancementWorker_104f83b8afe.java)
> org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor(ComponentConstructorFactoryImpl.java:76)
> $ComponentConstructorFactory_104f83b8ae8.getComponentConstructor($ComponentConstructorFactory_104f83b8ae8.java)
> $ComponentConstructorFactory_104f83b8ae7.getComponentConstructor($ComponentConstructorFactory_104f83b8ae7.java)
> org.apache.tapestry.pageload.PageLoader.instantiatePage(PageLoader.java:611)
> org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:639)
> $IPageLoader_104f83b8ae3.loadPage($IPageLoader_104f83b8ae3.java)
> $IPageLoader_104f83b8ae4.loadPage($IPageLoader_104f83b8ae4.java)
> org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:118)
> $IPageSource_104f83b8a54.getPage($IPageSource_104f83b8a54.java)
> $IPageSource_104f83b8a53.getPage($IPageSource_104f83b8a53.java)
> org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:252)
> org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:235)
> org.apache.tapestry.engine.RequestCycle.activate(RequestCycle.java:596)
> org.apache.tapestry.engine.HomeService.service(HomeService.java:63)
> $IEngineService_104f83b8acf.service($IEngineService_104f83b8acf.java)
> org.apache.tapestry.services.impl.EngineServiceInnerProxy.service(EngineServiceInnerProxy.java:74)
> org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:65)
> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:241)
> org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60)
> $WebRequestServicer_104f83b8ab4.service($WebRequestServicer_104f83b8ab4.java)
> $WebRequestServicer_104f83b8ab3.service($WebRequestServicer_104f83b8ab3.java)
> $WebRequestServicer_104f83b8ab0.service($WebRequestServicer_104f83b8ab0.java)
> $WebRequestServicer_104f83b8aaf.service($WebRequestServicer_104f83b8aaf.java)
> org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:56)
> $ServletRequestServicer_104f83b8a94.service($ServletRequestServicer_104f83b8a94.java)
> $ServletRequestServicer_104f83b8a93.service($ServletRequestServicer_104f83b8a93.java)
> org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
> $ServletRequestServicerFilter_104f83b8a90.service($ServletRequestServicerFilter_104f83b8a90.java)
> $ServletRequestServicerFilter_104f83b8a8f.service($ServletRequestServicerFilter_104f83b8a8f.java)
> $ServletRequestServicer_104f83b8a95.service($ServletRequestServicer_104f83b8a95.java)
> org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
> $ServletRequestServicerFilter_104f83b8a8e.service($ServletRequestServicerFilter_104f83b8a8e.java)
> $ServletRequestServicerFilter_104f83b8a8d.service($ServletRequestServicerFilter_104f83b8a8d.java)
> $ServletRequestServicer_104f83b8a95.service($ServletRequestServicer_104f83b8a95.java)
> org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
> $ServletRequestServicerFilter_104f83b8a92.service($ServletRequestServicerFilter_104f83b8a92.java)
> $ServletRequestServicerFilter_104f83b8a91.service($ServletRequestServicerFilter_104f83b8a91.java)
> $ServletRequestServicer_104f83b8a95.service($ServletRequestServicer_104f83b8a95.java)
> $ServletRequestServicer_104f83b8a88.service($ServletRequestServicer_104f83b8a88.java)
> $ServletRequestServicer_104f83b8a87.service($ServletRequestServicer_104f83b8a87.java)
> org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:145)
> org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:101)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:596)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427)
> org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:475)
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
> org.mortbay.http.HttpContext.handle(HttpContext.java:1565)
> org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:635)
> org.mortbay.http.HttpContext.handle(HttpContext.java:1517)
> org.mortbay.http.HttpServer.service(HttpServer.java:954)
> org.mortbay.http.HttpConnection.service(HttpConnection.java:814)
> org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981)
> org.mortbay.http.HttpConnection.handle(HttpConnection.java:831)
> org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
> org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
> org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
> Caused by:
> compile error: no such field: _$testBean2
> javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:744)
> javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:702)
> javassist.compiler.TypeChecker.atMember(TypeChecker.java:852)
> javassist.compiler.JvstTypeChecker.atMember(JvstTypeChecker.java:65)
> javassist.compiler.ast.Member.accept(Member.java:38)
> javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:235)
> javassist.compiler.CodeGen.compileExpr(CodeGen.java:222)
> javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:591)
> javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java:424)
> javassist.compiler.CodeGen.atStmnt(CodeGen.java:356)
> javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
> javassist.compiler.CodeGen.atMethodBody(CodeGen.java:285)
> javassist.compiler.Javac.compileBody(Javac.java:208)
> javassist.CtBehavior.setBody(CtBehavior.java:188)
> javassist.CtBehavior.setBody(CtBehavior.java:163)
> org.apache.hivemind.service.impl.ClassFabImpl.addMethod(ClassFabImpl.java:288)
> org.apache.tapestry.enhance.EnhancementOperationImpl.addMethod(EnhancementOperationImpl.java:337)
> org.apache.tapestry.enhance.InjectObjectWorker.injectObject(InjectObjectWorker.java:77)
> org.apache.tapestry.enhance.InjectObjectWorker.performEnhancement(InjectObjectWorker.java:43)
> $InjectEnhancementWorker_104f83b8b1f.performEnhancement($InjectEnhancementWorker_104f83b8b1f.java)
> org.apache.tapestry.enhance.DispatchToInjectWorker.invokeWorker(DispatchToInjectWorker.java:63)
> org.apache.tapestry.enhance.DispatchToInjectWorker.performEnhancement(DispatchToInjectWorker.java:45)
> $EnhancementWorker_104f83b8b09.performEnhancement($EnhancementWorker_104f83b8b09.java)
> $EnhancementWorker_104f83b8b08.performEnhancement($EnhancementWorker_104f83b8b08.java)
> $EnhancementWorker_104f83b8b1e.performEnhancement($EnhancementWorker_104f83b8b1e.java)
> $EnhancementWorker_104f83b8aff.performEnhancement($EnhancementWorker_104f83b8aff.java)
> $EnhancementWorker_104f83b8afe.performEnhancement($EnhancementWorker_104f83b8afe.java)
> org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor(ComponentConstructorFactoryImpl.java:76)
> $ComponentConstructorFactory_104f83b8ae8.getComponentConstructor($ComponentConstructorFactory_104f83b8ae8.java)
> $ComponentConstructorFactory_104f83b8ae7.getComponentConstructor($ComponentConstructorFactory_104f83b8ae7.java)
> org.apache.tapestry.pageload.PageLoader.instantiatePage(PageLoader.java:611)
> org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:639)
> $IPageLoader_104f83b8ae3.loadPage($IPageLoader_104f83b8ae3.java)
> $IPageLoader_104f83b8ae4.loadPage($IPageLoader_104f83b8ae4.java)
> org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:118)
> $IPageSource_104f83b8a54.getPage($IPageSource_104f83b8a54.java)
> $IPageSource_104f83b8a53.getPage($IPageSource_104f83b8a53.java)
> org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:252)
> org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:235)
> org.apache.tapestry.engine.RequestCycle.activate(RequestCycle.java:596)
> org.apache.tapestry.engine.HomeService.service(HomeService.java:63)
> $IEngineService_104f83b8acf.service($IEngineService_104f83b8acf.java)
> org.apache.tapestry.services.impl.EngineServiceInnerProxy.service(EngineServiceInnerProxy.java:74)
> org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:65)
> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:241)
> org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60)
> $WebRequestServicer_104f83b8ab4.service($WebRequestServicer_104f83b8ab4.java)
> $WebRequestServicer_104f83b8ab3.service($WebRequestServicer_104f83b8ab3.java)
> $WebRequestServicer_104f83b8ab0.service($WebRequestServicer_104f83b8ab0.java)
> $WebRequestServicer_104f83b8aaf.service($WebRequestServicer_104f83b8aaf.java)
> org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:56)
> $ServletRequestServicer_104f83b8a94.service($ServletRequestServicer_104f83b8a94.java)
> $ServletRequestServicer_104f83b8a93.service($ServletRequestServicer_104f83b8a93.java)
> org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
> $ServletRequestServicerFilter_104f83b8a90.service($ServletRequestServicerFilter_104f83b8a90.java)
> $ServletRequestServicerFilter_104f83b8a8f.service($ServletRequestServicerFilter_104f83b8a8f.java)
> $ServletRequestServicer_104f83b8a95.service($ServletRequestServicer_104f83b8a95.java)
> org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
> $ServletRequestServicerFilter_104f83b8a8e.service($ServletRequestServicerFilter_104f83b8a8e.java)
> $ServletRequestServicerFilter_104f83b8a8d.service($ServletRequestServicerFilter_104f83b8a8d.java)
> $ServletRequestServicer_104f83b8a95.service($ServletRequestServicer_104f83b8a95.java)
> org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
> $ServletRequestServicerFilter_104f83b8a92.service($ServletRequestServicerFilter_104f83b8a92.java)
> $ServletRequestServicerFilter_104f83b8a91.service($ServletRequestServicerFilter_104f83b8a91.java)
> $ServletRequestServicer_104f83b8a95.service($ServletRequestServicer_104f83b8a95.java)
> $ServletRequestServicer_104f83b8a88.service($ServletRequestServicer_104f83b8a88.java)
> $ServletRequestServicer_104f83b8a87.service($ServletRequestServicer_104f83b8a87.java)
> org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:145)
> org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:101)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:596)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427)
> org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:475)
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
> org.mortbay.http.HttpContext.handle(HttpContext.java:1565)
> org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:635)
> org.mortbay.http.HttpContext.handle(HttpContext.java:1517)
> org.mortbay.http.HttpServer.service(HttpServer.java:954)
> org.mortbay.http.HttpConnection.service(HttpConnection.java:814)
> org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981)
> org.mortbay.http.HttpConnection.handle(HttpConnection.java:831)
> org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
> org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
> org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org