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]

Reply via email to