Uploaded image for project: 'Commons OGNL (Dormant)'
  1. Commons OGNL (Dormant)
  2. OGNL-112

Unable to find getter when multiple getters exist with similar naming

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.7.1
    • 2.7.1
    • ExpressionCompiler
    • None
    • Tapestry 4.1.3 snapshot from 7-27, Ognl 2.7.1 snapshot from 7-23, WinXP, Firefox 2

    Description

      Ognl seems to be unable to find a getter starting with "get" when there is another method with the same name, except starting with "is". Normally I would expect some confusion from that, except the method with "is" has a different set of parameters. The below Tapestry snippet demonstrates the problem. I could not reproduce the problem without the specific getter names used for some reason. Failsafe does not catch this.

      .html

      <span jwcid="@Insert" value="ognl:getDisplayValue(theTest.allowDisplay)" />

      .java

      public class TestClass

      {

      private int theInt = 1;

      public boolean isAllowDisplay(Object something)

      { return true; }

      public int getAllowDisplay()

      { return theInt; }

      public void setAllowDisplay(int val)

      { theInt = val; }

      }

      public TestClass getTheTest()

      { return new TestClass(); }

      public String getDisplayValue(int val)

      { return "test"; }

      The stack:

      org.apache.tapestry.BindingException: Unable to parse OGNL expression 'getDisplayValue(theTest.allowDisplay)': Unable to add method int ref1(ognl.OgnlContext, java.lang.Object) to class $ASTMethod_114234e6a7a: [source error] isAllowDisplay() not found in collective.md.ui.pages.DirectorAccount$TestClass [context:/WEB-INF/app/DirectorAccount.html, line 9]

      at org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:145)

      at org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:125)

      at org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84)

      at $Insert_46.getValue($Insert_46.java)

      at org.apache.tapestry.components.Insert.renderComponent(Insert.java:48)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)

      at org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)

      at org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:94)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)

      at collective.ui.components.CollectiveComponent.renderComponent(CollectiveComponent.java:70)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)

      at org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)

      at org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)

      at org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)

      at collective.ui.components.CollectiveComponent.renderComponent(CollectiveComponent.java:70)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)

      at org.apache.tapestry.components.Any.renderComponent(Any.java:44)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)

      at org.apache.tapestry.html.Body.renderComponent(Body.java:38)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)

      at org.apache.tapestry.html.Shell.renderComponent(Shell.java:124)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)

      at collective.ui.components.CollectiveComponent.renderComponent(CollectiveComponent.java:70)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)

      at org.apache.tapestry.components.ElseBean.renderComponent(ElseBean.java:47)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)

      at collective.ui.components.CollectiveComponent.renderComponent(CollectiveComponent.java:70)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

      at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)

      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:178)

      at org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:249)

      at org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:397)

      at org.apache.tapestry.services.impl.DefaultResponseBuilder.renderResponse(DefaultResponseBuilder.java:152)

      at org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponse(ResponseRendererImpl.java:33)

      at $ResponseRenderer_114234e683d.renderResponse($ResponseRenderer_114234e683d.java)

      at org.apache.tapestry.engine.PageService.service(PageService.java:68)

      at $IEngineService_114234e68dd.service($IEngineService_114234e68dd.java)

      at org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:72)

      at org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:237)

      at org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:54)

      at $WebRequestServicer_114234e68b8.service($WebRequestServicer_114234e68b8.java)

      at org.apache.tapestry.services.impl.DisableCachingFilter.service(DisableCachingFilter.java:54)

      at $WebRequestServicerFilter_114234e68ba.service($WebRequestServicerFilter_114234e68ba.java)

      at $WebRequestServicer_114234e68bc.service($WebRequestServicer_114234e68bc.java)

      at $WebRequestServicer_114234e68b4.service($WebRequestServicer_114234e68b4.java)

      at org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:61)

      at $ServletRequestServicer_114234e6893.service($ServletRequestServicer_114234e6893.java)

      at collective.ui.custom.HibernateFilter.service(HibernateFilter.java:40)

      at $ServletRequestServicerFilter_114234e6897.service($ServletRequestServicerFilter_114234e6897.java)

      at $ServletRequestServicer_114234e6899.service($ServletRequestServicer_114234e6899.java)

      at collective.ui.custom.LuceneIndexFilter.service(LuceneIndexFilter.java:24)

      at $ServletRequestServicerFilter_114234e6895.service($ServletRequestServicerFilter_114234e6895.java)

      at $ServletRequestServicer_114234e6899.service($ServletRequestServicer_114234e6899.java)

      at org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)

      at $ServletRequestServicerFilter_114234e688f.service($ServletRequestServicerFilter_114234e688f.java)

      at $ServletRequestServicer_114234e6899.service($ServletRequestServicer_114234e6899.java)

      at org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)

      at $ServletRequestServicerFilter_114234e688d.service($ServletRequestServicerFilter_114234e688d.java)

      at $ServletRequestServicer_114234e6899.service($ServletRequestServicer_114234e6899.java)

      at org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)

      at $ServletRequestServicerFilter_114234e6891.service($ServletRequestServicerFilter_114234e6891.java)

      at $ServletRequestServicer_114234e6899.service($ServletRequestServicer_114234e6899.java)

      at $ServletRequestServicer_114234e6883.service($ServletRequestServicer_114234e6883.java)

      at org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:126)

      at collective.ui.CollectiveApplicationServlet.doService(CollectiveApplicationServlet.java:72)

      at org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:103)

      at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)

      at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

      at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427)

      at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:832)

      at collective.servlet.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:32)

      at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:823)

      at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473)

      at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:556)

      at org.mortbay.http.HttpContext.handle(HttpContext.java:1563)

      at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:623)

      at org.mortbay.http.HttpContext.handle(HttpContext.java:1515)

      at org.mortbay.http.HttpServer.service(HttpServer.java:956)

      at org.mortbay.http.HttpConnection.service(HttpConnection.java:814)

      at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981)

      at org.mortbay.http.HttpConnection.handle(HttpConnection.java:831)

      at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)

      at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)

      at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)

      Caused by: org.apache.hivemind.ApplicationRuntimeException: Unable to parse OGNL expression 'getDisplayValue(theTest.allowDisplay)': Unable to add method int ref1(ognl.OgnlContext, java.lang.Object) to class $ASTMethod_114234e6a7a: [source error] isAllowDisplay() not found in collective.md.ui.pages.DirectorAccount$TestClass

      at org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:156)

      at org.apache.tapestry.services.impl.ExpressionCacheImpl.getCompiledExpression(ExpressionCacheImpl.java:115)

      at $ExpressionCache_114234e69bb.getCompiledExpression($ExpressionCache_114234e69bb.java)

      at org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:134)

      ... 115 more

      Caused by: org.apache.hivemind.ApplicationRuntimeException: Unable to add method int ref1(ognl.OgnlContext, java.lang.Object) to class $ASTMethod_114234e6a7a: [source error] isAllowDisplay() not found in collective.md.ui.pages.DirectorAccount$TestClass

      at org.apache.tapestry.enhance.ClassFabImpl.addMethod(ClassFabImpl.java:278)

      at org.apache.tapestry.services.impl.HiveMindExpressionCompiler.createLocalReferences(HiveMindExpressionCompiler.java:383)

      at org.apache.tapestry.services.impl.HiveMindExpressionCompiler.generateGetter(HiveMindExpressionCompiler.java:325)

      at org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:152)

      at ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:524)

      at ognl.Ognl.compileExpression(Ognl.java:141)

      at org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:152)

      ... 118 more

      Caused by: javassist.CannotCompileException: [source error] isAllowDisplay() not found in collective.md.ui.pages.DirectorAccount$TestClass

      at javassist.CtBehavior.setBody(CtBehavior.java:347)

      at javassist.CtBehavior.setBody(CtBehavior.java:316)

      at org.apache.tapestry.enhance.ClassFabImpl.addMethod(ClassFabImpl.java:272)

      ... 124 more

      Caused by: compile error: isAllowDisplay() not found in collective.md.ui.pages.DirectorAccount$TestClass

      at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:716)

      at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)

      at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)

      at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)

      at javassist.compiler.JvstTypeChecker.atMethodArgs(JvstTypeChecker.java:220)

      at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:702)

      at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)

      at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)

      at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)

      at javassist.compiler.TypeChecker.atCastExpr(TypeChecker.java:546)

      at javassist.compiler.JvstTypeChecker.atCastExpr(JvstTypeChecker.java:103)

      at javassist.compiler.ast.CastExpr.accept(CastExpr.java:54)

      at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:653)

      at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)

      at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)

      at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:235)

      at javassist.compiler.CodeGen.compileExpr(CodeGen.java:222)

      at javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:591)

      at javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java:424)

      at javassist.compiler.CodeGen.atStmnt(CodeGen.java:356)

      at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)

      at javassist.compiler.CodeGen.atStmnt(CodeGen.java:344)

      at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)

      at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:285)

      at javassist.compiler.Javac.compileBody(Javac.java:212)

      at javassist.CtBehavior.setBody(CtBehavior.java:341)

      ... 126 more

      Attachments

        Activity

          People

            jkuhnert Jesse Kuhnert
            dotteben Ben Dotte
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: