diff options
author | chiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3> | 2003-09-02 05:23:16 +0000 |
---|---|---|
committer | chiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3> | 2003-09-02 05:23:16 +0000 |
commit | efa5f73e7d7d3a1c247ef4db79bb867adee356c2 (patch) | |
tree | bca5730cc30baa78fdb0b9d302f7968c5a89497c /src | |
parent | 1592597bc675e159a13b289e3a62a91fdfd76bdc (diff) | |
download | javassist-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.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. |