summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>2003-09-02 05:23:16 +0000
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>2003-09-02 05:23:16 +0000
commitefa5f73e7d7d3a1c247ef4db79bb867adee356c2 (patch)
treebca5730cc30baa78fdb0b9d302f7968c5a89497c /src
parent1592597bc675e159a13b289e3a62a91fdfd76bdc (diff)
downloadjavassist-efa5f73e7d7d3a1c247ef4db79bb867adee356c2.tar.gz
javassist-efa5f73e7d7d3a1c247ef4db79bb867adee356c2.zip
implemented CtBehavior.setBody with $proceed.
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@41 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
Diffstat (limited to 'src')
-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.