<h2>Changes</h2> | <h2>Changes</h2> | ||||
<p>-version 3.20 | |||||
<p>-version 3.20 on June 25, 2015 | |||||
<ul> | <ul> | ||||
<li>JIRA JASSIST-241, 242, 246. | <li>JIRA JASSIST-241, 242, 246. | ||||
</ul> | </ul> |
<project name="javassist" default="jar" basedir="."> | <project name="javassist" default="jar" basedir="."> | ||||
<property name="dist-version" value="javassist-3.19.0-GA"/> | |||||
<property name="dist-version" value="javassist-3.20.0-GA"/> | |||||
<property environment="env"/> | <property environment="env"/> | ||||
<property name="target.jar" value="javassist.jar"/> | <property name="target.jar" value="javassist.jar"/> |
Javassist (JAVA programming ASSISTant) makes Java bytecode manipulation | Javassist (JAVA programming ASSISTant) makes Java bytecode manipulation | ||||
simple. It is a class library for editing bytecodes in Java. | simple. It is a class library for editing bytecodes in Java. | ||||
</description> | </description> | ||||
<version>3.19.0-GA</version> | |||||
<version>3.20.0-GA</version> | |||||
<name>Javassist</name> | <name>Javassist</name> | ||||
<url>http://www.javassist.org/</url> | <url>http://www.javassist.org/</url> | ||||
Specification-Title: Javassist | Specification-Title: Javassist | ||||
Specification-Vendor: Shigeru Chiba, www.javassist.org | Specification-Vendor: Shigeru Chiba, www.javassist.org | ||||
Specification-Version: 3.19.0-GA | |||||
Specification-Version: 3.20.0-GA | |||||
Main-Class: javassist.CtClass | Main-Class: javassist.CtClass |
* <code>ClassFile</code> represents a Java <code>.class</code> file, which | * <code>ClassFile</code> represents a Java <code>.class</code> file, which | ||||
* consists of a constant pool, methods, fields, and attributes. | * consists of a constant pool, methods, fields, and attributes. | ||||
* | * | ||||
* <p>For example, | |||||
* <p>For example,</p> | |||||
* <blockquote><pre> | * <blockquote><pre> | ||||
* ClassFile cf = new ClassFile(false, "test.Foo", null); | * ClassFile cf = new ClassFile(false, "test.Foo", null); | ||||
* cf.setInterfaces(new String[] { "java.lang.Cloneable" }); | * cf.setInterfaces(new String[] { "java.lang.Cloneable" }); | ||||
* | * | ||||
* cf.write(new DataOutputStream(new FileOutputStream("Foo.class"))); | * cf.write(new DataOutputStream(new FileOutputStream("Foo.class"))); | ||||
* </pre></blockquote> | * </pre></blockquote> | ||||
* This code generates a class file <code>Foo.class</code> for the following class: | |||||
* <p>This code generates a class file <code>Foo.class</code> for the following class:</p> | |||||
* <blockquote><pre> | * <blockquote><pre> | ||||
* package test; | * package test; | ||||
* class Foo implements Cloneable { | * class Foo implements Cloneable { | ||||
* public int width; | * public int width; | ||||
* } | * } | ||||
* </pre></blockquote> | * </pre></blockquote> | ||||
* </p> | |||||
* | * | ||||
* @see FieldInfo | * @see FieldInfo | ||||
* @see MethodInfo | * @see MethodInfo |
/** | /** | ||||
* Creates bytecode that when executed calls back to the instance's result method. | * Creates bytecode that when executed calls back to the instance's result method. | ||||
* | * | ||||
* Example of how to create and insert a callback: | |||||
* <pre>{@code | |||||
* <p>Example of how to create and insert a callback:</p> | |||||
* <pre> | |||||
* ctMethod.insertAfter(new Callback("Thread.currentThread()") { | * ctMethod.insertAfter(new Callback("Thread.currentThread()") { | ||||
* @literal@Override | |||||
* public void result(Object... objects) { | * public void result(Object... objects) { | ||||
* Thread thread = (Thread) objects[0]; | * Thread thread = (Thread) objects[0]; | ||||
* // do something with thread... | * // do something with thread... | ||||
* } | * } | ||||
* }.sourceCode()); | * }.sourceCode()); | ||||
* }</pre> | |||||
* Contains utility methods for inserts callbacks in <code>CtBehaviour</code>, example: | |||||
* <pre>{@code | |||||
* </pre> | |||||
* <p>Contains utility methods for inserts callbacks in <code>CtBehaviour</code>, example:</p> | |||||
* <pre> | |||||
* insertAfter(ctBehaviour, new Callback("Thread.currentThread(), dummyString") { | * insertAfter(ctBehaviour, new Callback("Thread.currentThread(), dummyString") { | ||||
* @literal@Override | |||||
* public void result(Object... objects) { | * public void result(Object... objects) { | ||||
* Thread thread = (Thread) objects[0]; | * Thread thread = (Thread) objects[0]; | ||||
* // do something with thread... | * // do something with thread... | ||||
* } | * } | ||||
* }); | * }); | ||||
* }</pre> | |||||
* </pre> | |||||
* | * | ||||
* @author Marten Hedborg | * @author Marten Hedborg | ||||
*/ | */ |