I think it's because the code you add is effectively inside a block, i.e. in Java it would be: { int i = 5; }
So the scope of the new variable is limited. That means you need to generate all the code that uses the variable as a single body passed to ClassTransformation. On Feb 19, 2008 10:55 AM, Robin Helgelin <[EMAIL PROTECTED]> wrote: > On Feb 19, 2008 7:44 PM, Howard Lewis Ship <[EMAIL PROTECTED]> wrote: > > Could the extend method be failing because it does not return a value? > > I tried returning a value, no change. It barfs on my variable i, > backtrace as this: > > Caused by: org.apache.tapestry.internal.services.MethodCompileException: > Error compiling method public java.lang.String onActionFromCounter() > (i += 1;): [source error] no such field: i > at > org.apache.tapestry.internal.services.InternalClassTransformationImpl.extendMethod(InternalClassTransformationImpl.java:625) > at > nu.localhost.tapestry.acegi.services.internal.AcegiWorker.transformMethod(AcegiWorker.java:112) > at > nu.localhost.tapestry.acegi.services.internal.AcegiWorker.transform(AcegiWorker.java:46) > at > $ComponentClassTransformWorker_118330aced0.transform($ComponentClassTransformWorker_118330aced0.java) > at > $ComponentClassTransformWorker_118330aceca.transform($ComponentClassTransformWorker_118330aceca.java) > at > org.apache.tapestry.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:147) > ... 94 more > Caused by: javassist.CannotCompileException: [source error] no such field: i > at javassist.CtBehavior.insertAfter(CtBehavior.java:703) > at javassist.CtBehavior.insertAfter(CtBehavior.java:627) > at > org.apache.tapestry.internal.services.InternalClassTransformationImpl.extendMethod(InternalClassTransformationImpl.java:621) > ... 99 more > Caused by: compile error: no such field: i > at javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:812) > at javassist.compiler.TypeChecker.atFieldAssign(TypeChecker.java:270) > at > javassist.compiler.JvstTypeChecker.atFieldAssign(JvstTypeChecker.java:83) > at javassist.compiler.TypeChecker.atAssignExpr(TypeChecker.java:229) > at javassist.compiler.ast.AssignExpr.accept(AssignExpr.java:38) > at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:241) > at javassist.compiler.CodeGen.atStmnt(CodeGen.java:329) > at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49) > at javassist.compiler.Javac.compileStmnt(Javac.java:568) > at javassist.CtBehavior.insertAfterAdvice(CtBehavior.java:724) > at javassist.CtBehavior.insertAfter(CtBehavior.java:669) > ... 101 more > > -- > > regards, > Robin > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Howard M. Lewis Ship Creator Apache Tapestry and Apache HiveMind --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]