diff options
-rw-r--r-- | src/main/javassist/CtBehavior.java | 22 | ||||
-rw-r--r-- | src/main/javassist/CtMethod.java | 19 |
2 files changed, 41 insertions, 0 deletions
diff --git a/src/main/javassist/CtBehavior.java b/src/main/javassist/CtBehavior.java index 54338a0a..636a8105 100644 --- a/src/main/javassist/CtBehavior.java +++ b/src/main/javassist/CtBehavior.java @@ -158,9 +158,31 @@ public abstract class CtBehavior extends CtMember { * body does nothing except returning zero or null. */ public void setBody(String src) throws CannotCompileException { + setBody(src, null, null); + } + + /** + * Sets a member body. + * + * @param src the source code representing the member body. + * It must be a single statement or block. + * If it is <code>null</code>, the substituted member + * body does nothing except returning zero or null. + * @param delegateObj the source text specifying the object + * that is called on by <code>$proceed()</code>. + * @param delegateMethod the name of the method + * that is called by <code>$proceed()</code>. + */ + public void setBody(String src, + String delegateObj, String delegateMethod) + throws CannotCompileException + { declaringClass.checkModify(); try { Javac jv = new Javac(declaringClass); + if (delegateMethod != null) + jv.recordProceed(delegateObj, delegateMethod); + Bytecode b = jv.compileBody(this, src); methodInfo.setCodeAttribute(b.toCodeAttribute()); methodInfo.setAccessFlags(methodInfo.getAccessFlags() diff --git a/src/main/javassist/CtMethod.java b/src/main/javassist/CtMethod.java index 22796467..035a3b9e 100644 --- a/src/main/javassist/CtMethod.java +++ b/src/main/javassist/CtMethod.java @@ -312,6 +312,25 @@ public final class CtMethod extends CtBehavior { } /** + * Sets a method body. + * + * @param src the source code representing the method body. + * It must be a single statement or block. + * If it is <code>null</code>, the substituted method + * body does nothing except returning zero or null. + * @param delegateObj the source text specifying the object + * that is called on by <code>$proceed()</code>. + * @param delegateMethod the name of the method + * that is called by <code>$proceed()</code>. + */ + public void setBody(String src, + String delegateObj, String delegateMethod) + throws CannotCompileException + { + super.setBody(src, delegateObj, delegateMethod); + } + + /** * Copies a method body from another method. * If this method is abstract, the abstract modifier is removed * after the method body is copied. |