<p>-version 3.24 | <p>-version 3.24 | ||||
<ul> | <ul> | ||||
<li>JIRA JASSIST-267. | |||||
<li>JIRA JASSIST-267.</li> | |||||
<li>Github PR #218.</li> | |||||
</ul> | </ul> | ||||
</p> | </p> | ||||
<p>-version 3.23.1 on July 2, 2018 | <p>-version 3.23.1 on July 2, 2018 | ||||
<ul> | <ul> | ||||
<li>Github pull issue #171.</li> | |||||
<li>Github PR #171.</li> | |||||
</ul> | </ul> | ||||
</p> | </p> | ||||
<project name="javassist" default="jar" basedir="."> | <project name="javassist" default="jar" basedir="."> | ||||
<property name="dist-version" value="javassist-3.23.1-GA"/> | |||||
<property name="dist-version" value="javassist-3.24-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.23.1-GA</version> | |||||
<version>3.24-GA</version> | |||||
<name>Javassist</name> | <name>Javassist</name> | ||||
<url>http://www.javassist.org/</url> | <url>http://www.javassist.org/</url> | ||||
<artifactId>maven-compiler-plugin</artifactId> | <artifactId>maven-compiler-plugin</artifactId> | ||||
<version>3.2</version> | <version>3.2</version> | ||||
<configuration> | <configuration> | ||||
<source>1.6</source> | |||||
<target>1.6</target> | |||||
<testSource>1.9</testSource> | |||||
<testTarget>1.9</testTarget> | |||||
<source>1.8</source> | |||||
<target>1.8</target> | |||||
<testSource>11</testSource> | |||||
<testTarget>11</testTarget> | |||||
<testCompilerArgument>-parameters</testCompilerArgument> | <testCompilerArgument>-parameters</testCompilerArgument> | ||||
</configuration> | </configuration> | ||||
</plugin> | </plugin> |
Specification-Title: Javassist | Specification-Title: Javassist | ||||
Specification-Vendor: Shigeru Chiba, www.javassist.org | Specification-Vendor: Shigeru Chiba, www.javassist.org | ||||
Specification-Version: 3.23.1-GA | |||||
Specification-Version: 3.24-GA | |||||
Main-Class: javassist.CtClass | Main-Class: javassist.CtClass |
/* | |||||
* Javassist, a Java-bytecode translator toolkit. | |||||
* Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. | |||||
* | |||||
* The contents of this file are subject to the Mozilla Public License Version | |||||
* 1.1 (the "License"); you may not use this file except in compliance with | |||||
* the License. Alternatively, the contents of this file may be used under | |||||
* the terms of the GNU Lesser General Public License Version 2.1 or later, | |||||
* or the Apache License Version 2.0. | |||||
* | |||||
* Software distributed under the License is distributed on an "AS IS" basis, | |||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | |||||
* for the specific language governing rights and limitations under the | |||||
* License. | |||||
*/ | |||||
package javassist.bytecode; | package javassist.bytecode; | ||||
import java.io.DataInputStream; | import java.io.DataInputStream; | ||||
/** | /** | ||||
* <code>NestHost_attribute</code>. | * <code>NestHost_attribute</code>. | ||||
* It was introduced by JEP-181. See JVMS 4.7.28 for the specification. | |||||
*/ | */ | ||||
public class NestHostAttribute extends AttributeInfo { | public class NestHostAttribute extends AttributeInfo { | ||||
/** | /** | ||||
int newHostIndex = getConstPool().copy(hostIndex, newCp, classnames); | int newHostIndex = getConstPool().copy(hostIndex, newCp, classnames); | ||||
return new NestHostAttribute(newCp, newHostIndex); | return new NestHostAttribute(newCp, newHostIndex); | ||||
} | } | ||||
/** | |||||
* Returns <code>host_class_index</code>. The constant pool entry | |||||
* at this entry is a <code>CONSTANT_Class_info</code> structure. | |||||
* @return the value of <code>host_class_index</code>. | |||||
*/ | |||||
public int hostClassIndex() { | |||||
return ByteArray.readU16bit(info, 0); | |||||
} | |||||
} | } |
/* | |||||
* Javassist, a Java-bytecode translator toolkit. | |||||
* Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. | |||||
* | |||||
* The contents of this file are subject to the Mozilla Public License Version | |||||
* 1.1 (the "License"); you may not use this file except in compliance with | |||||
* the License. Alternatively, the contents of this file may be used under | |||||
* the terms of the GNU Lesser General Public License Version 2.1 or later, | |||||
* or the Apache License Version 2.0. | |||||
* | |||||
* Software distributed under the License is distributed on an "AS IS" basis, | |||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | |||||
* for the specific language governing rights and limitations under the | |||||
* License. | |||||
*/ | |||||
package javassist.bytecode; | package javassist.bytecode; | ||||
import java.io.DataInputStream; | import java.io.DataInputStream; | ||||
/** | /** | ||||
* <code>NestMembers_attribute</code>. | * <code>NestMembers_attribute</code>. | ||||
* It was introduced by JEP-181. See JVMS 4.7.29 for the specification. | |||||
*/ | */ | ||||
public class NestMembersAttribute extends AttributeInfo { | public class NestMembersAttribute extends AttributeInfo { | ||||
/** | /** | ||||
return new NestMembersAttribute(newCp, dest); | return new NestMembersAttribute(newCp, dest); | ||||
} | } | ||||
/** | |||||
* Returns <code>number_of_classes</code>. | |||||
* @return the number of the classes recorded in this attribute. | |||||
*/ | |||||
public int numberOfClasses() { | |||||
return ByteArray.readU16bit(info, 0); | |||||
} | |||||
/** Returns <code>classes[index]</code>. | |||||
* | |||||
* @param index the index into <code>classes</code>. | |||||
* @return the value at the given index in the <code>classes</code> array. | |||||
* It is an index into the constant pool. | |||||
* The constant pool entry at the returned index is a | |||||
* <code>CONSTANT_Class_info</code> structure. | |||||
*/ | |||||
public int memberClass(int index) { | |||||
return ByteArray.readU16bit(info, index * 2 + 2); | |||||
} | |||||
} | } |
import javassist.bytecode.ClassFile; | import javassist.bytecode.ClassFile; | ||||
import javassist.bytecode.ConstPool; | import javassist.bytecode.ConstPool; | ||||
import javassist.bytecode.InnerClassesAttribute; | import javassist.bytecode.InnerClassesAttribute; | ||||
import javassist.bytecode.NestHostAttribute; | |||||
import javassist.bytecode.NestMembersAttribute; | |||||
import javassist.expr.ExprEditor; | import javassist.expr.ExprEditor; | ||||
import javassist.expr.Handler; | import javassist.expr.Handler; | ||||
import javassist.expr.MethodCall; | import javassist.expr.MethodCall; | ||||
Object obj = make(cc.getName()); | Object obj = make(cc.getName()); | ||||
assertEquals(1, invoke(obj, "test")); | assertEquals(1, invoke(obj, "test")); | ||||
} | } | ||||
public void testNestHostAttribute() throws Exception { | |||||
CtClass cc = sloader.get("test5.NestHost$Foo"); | |||||
ClassFile cf = cc.getClassFile(); | |||||
NestHostAttribute attr = (NestHostAttribute)cf.getAttribute(NestHostAttribute.tag); | |||||
assertEquals(test5.NestHost.class.getName(), | |||||
cf.getConstPool().getClassInfo(attr.hostClassIndex())); | |||||
} | |||||
public void testNestMembersAttribute() throws Exception { | |||||
CtClass cc = sloader.get("test5.NestHost"); | |||||
ClassFile cf = cc.getClassFile(); | |||||
NestMembersAttribute attr = (NestMembersAttribute)cf.getAttribute(NestMembersAttribute.tag); | |||||
assertEquals(2, attr.numberOfClasses()); | |||||
String[] names = new String[2]; | |||||
for (int i = 0; i < 2; i++) | |||||
names[i] = cf.getConstPool().getClassInfo(attr.memberClass(i)); | |||||
assertFalse(names[0].equals(names[1])); | |||||
assertTrue(names[0].equals("test5.NestHost$Foo") || names[0].equals("test5.NestHost$Bar")); | |||||
assertTrue(names[1].equals("test5.NestHost$Foo") || names[1].equals("test5.NestHost$Bar")); | |||||
} | |||||
} | } |