Hi,

I'm trying to do a simple prefix and extend to a single method,
however, it seems that ClassTransformation.extendMethod(), doesn't
find variables declared with prefixMethod().

Simple example which throws a javassist.CannotCompileException:

        transformation.prefixMethod(method, "int i = 1;");
        transformation.extendMethod(method, "i += 1;");

I also tried expanding the method by wrapping it, but that seems to
break @Persist:et members. I attach my attempt. It seems the problem
is that Tapestry only scans the new method, not the old one copied, am
I correct?

    public void renameAndExtendMethod(TransformMethodSignature
methodSignature, String newMethodName, String methodBody)
    {
        failIfFrozen();

        CtMethod methodOld = findMethod(methodSignature);
        methodOld.setName(newMethodName);

        CtMethod methodNew;
        try
        {
             methodNew = CtNewMethod.copy(methodOld,
                     methodSignature.getMethodName(),
                     _ctClass,
                     null);
             methodNew.setBody(methodBody);
             _ctClass.addMethod(methodNew);
        }
        catch (CannotCompileException ex)
        {
            throw new
MethodCompileException(ServicesMessages.methodCompileError(
                    methodSignature,
                    methodBody,
                    ex), methodBody, ex);
        }

        addMethodToDescription("renameAndExtend", methodSignature, methodBody);
        _addedMethods.add(methodOld);
    }

-- 
        regards,
        Robin

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to