summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/javassist/CtBehavior.java22
-rw-r--r--src/main/javassist/CtMethod.java19
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.