Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.7
-
None
-
Tapestry 4.1.2-SNAPSHOT
Description
The following Tapestry page works as expected:
package test;
import org.apache.tapestry.annotations.Component;
import org.apache.tapestry.components.Insert;
import org.apache.tapestry.html.BasePage;
public abstract class Test extends BasePage
{
public static class A
{
public int methodOfA(B b)
{ return 0; }}
public static class B
{
public int methodOfB(int i)
{ return 0; }
}
@Component(bindings = "value=b.methodOfB(a.methodOfA(b))")
public abstract Insert getInsert();
public A getA()
{ return new A(); }public B getB()
{ return new B(); }}
After the following modification it stops working:
@Component(bindings = "value=b.methodOfB(a.methodOfA(b)-1)")
The exception:
javassist.compiler.CompileError
getA() not found in test.Test$B
Stack Trace:
javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:716)
javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
javassist.compiler.TypeChecker.atCastExpr(TypeChecker.java:546)
javassist.compiler.JvstTypeChecker.atCastExpr(JvstTypeChecker.java:103)
javassist.compiler.ast.CastExpr.accept(CastExpr.java:54)
javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:653)
javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:326)
javassist.compiler.ast.BinExpr.accept(BinExpr.java:40)
javassist.compiler.JvstTypeChecker.atMethodArgs(JvstTypeChecker.java:220)
javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:702)
javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
javassist.compiler.TypeChecker.atCastExpr(TypeChecker.java:546)
javassist.compiler.JvstTypeChecker.atCastExpr(JvstTypeChecker.java:103)
javassist.compiler.ast.CastExpr.accept(CastExpr.java:54)
javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:653)
javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
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.atStmnt(CodeGen.java:344)
javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
javassist.compiler.CodeGen.atMethodBody(CodeGen.java:285)
javassist.compiler.Javac.compileBody(Javac.java:212)
javassist.CtBehavior.setBody(CtBehavior.java:341)
javassist.CtBehavior.setBody(CtBehavior.java:316)
org.apache.tapestry.enhance.ClassFabImpl.addMethod(ClassFabImpl.java:272)
org.apache.tapestry.services.impl.HiveMindExpressionCompiler.createLocalReferences(HiveMindExpressionCompiler.java:379)
org.apache.tapestry.services.impl.HiveMindExpressionCompiler.generateGetter(HiveMindExpressionCompiler.java:321)
org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:152)
ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:388)
ognl.Ognl.compileExpression(Ognl.java:123)
org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:129)
org.apache.tapestry.services.impl.ExpressionCacheImpl.getCompiledExpression(ExpressionCacheImpl.java:91)
$ExpressionCache_112f6d6b500.getCompiledExpression($ExpressionCache_112f6d6b500.java)
org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:141)
org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:132)
org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84)
$Insert_1.getValue($Insert_1.java)
If I change the - operator to + the expression compiles, but fails with -,*,/.
Regards,
Norbi