aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchibash <chiba@javassist.org>2018-09-02 22:56:45 +0900
committerchibash <chiba@javassist.org>2018-09-02 22:56:45 +0900
commitc52b9c7100412288eecf2ed098c63a0ba1643000 (patch)
tree0fa3a3e32fb327059f269bd6d6271957bcf70142
parent808dfb862f2967534e9250060b895eb0c8762cb9 (diff)
downloadjavassist-c52b9c7100412288eecf2ed098c63a0ba1643000.tar.gz
javassist-c52b9c7100412288eecf2ed098c63a0ba1643000.zip
modifies NestHostAttribute and NestMembersAttribute and adds test code
-rw-r--r--Readme.html5
-rw-r--r--build.xml2
-rw-r--r--javassist.jarbin761569 -> 763786 bytes
-rw-r--r--pom.xml10
-rw-r--r--src/main/META-INF/MANIFEST.MF2
-rw-r--r--src/main/javassist/bytecode/NestHostAttribute.java26
-rw-r--r--src/main/javassist/bytecode/NestMembersAttribute.java37
-rw-r--r--src/test/javassist/JvstTest5.java24
8 files changed, 97 insertions, 9 deletions
diff --git a/Readme.html b/Readme.html
index 5ffb7165..b1ff16ff 100644
--- a/Readme.html
+++ b/Readme.html
@@ -283,13 +283,14 @@ see javassist.Dump.
<p>-version 3.24
<ul>
- <li>JIRA JASSIST-267.
+ <li>JIRA JASSIST-267.</li>
+ <li>Github PR #218.</li>
</ul>
</p>
<p>-version 3.23.1 on July 2, 2018
<ul>
- <li>Github pull issue #171.</li>
+ <li>Github PR #171.</li>
</ul>
</p>
diff --git a/build.xml b/build.xml
index d654536f..365aa604 100644
--- a/build.xml
+++ b/build.xml
@@ -6,7 +6,7 @@
<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 name="target.jar" value="javassist.jar"/>
diff --git a/javassist.jar b/javassist.jar
index 7a5d8200..4ff2cc13 100644
--- a/javassist.jar
+++ b/javassist.jar
Binary files differ
diff --git a/pom.xml b/pom.xml
index adb9c619..8900978f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
Javassist (JAVA programming ASSISTant) makes Java bytecode manipulation
simple. It is a class library for editing bytecodes in Java.
</description>
- <version>3.23.1-GA</version>
+ <version>3.24-GA</version>
<name>Javassist</name>
<url>http://www.javassist.org/</url>
@@ -151,10 +151,10 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<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>
</configuration>
</plugin>
diff --git a/src/main/META-INF/MANIFEST.MF b/src/main/META-INF/MANIFEST.MF
index 448c6fca..90fb0144 100644
--- a/src/main/META-INF/MANIFEST.MF
+++ b/src/main/META-INF/MANIFEST.MF
@@ -1,4 +1,4 @@
Specification-Title: Javassist
Specification-Vendor: Shigeru Chiba, www.javassist.org
-Specification-Version: 3.23.1-GA
+Specification-Version: 3.24-GA
Main-Class: javassist.CtClass
diff --git a/src/main/javassist/bytecode/NestHostAttribute.java b/src/main/javassist/bytecode/NestHostAttribute.java
index ae9f1e5d..5a52336d 100644
--- a/src/main/javassist/bytecode/NestHostAttribute.java
+++ b/src/main/javassist/bytecode/NestHostAttribute.java
@@ -1,3 +1,19 @@
+/*
+ * 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;
import java.io.DataInputStream;
@@ -6,6 +22,7 @@ import java.util.Map;
/**
* <code>NestHost_attribute</code>.
+ * It was introduced by JEP-181. See JVMS 4.7.28 for the specification.
*/
public class NestHostAttribute extends AttributeInfo {
/**
@@ -36,4 +53,13 @@ public class NestHostAttribute extends AttributeInfo {
int newHostIndex = getConstPool().copy(hostIndex, newCp, classnames);
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);
+ }
}
diff --git a/src/main/javassist/bytecode/NestMembersAttribute.java b/src/main/javassist/bytecode/NestMembersAttribute.java
index 679dc28c..6a3023b4 100644
--- a/src/main/javassist/bytecode/NestMembersAttribute.java
+++ b/src/main/javassist/bytecode/NestMembersAttribute.java
@@ -1,3 +1,19 @@
+/*
+ * 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;
import java.io.DataInputStream;
@@ -6,6 +22,7 @@ import java.util.Map;
/**
* <code>NestMembers_attribute</code>.
+ * It was introduced by JEP-181. See JVMS 4.7.29 for the specification.
*/
public class NestMembersAttribute extends AttributeInfo {
/**
@@ -46,4 +63,24 @@ public class NestMembersAttribute extends AttributeInfo {
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);
+ }
}
diff --git a/src/test/javassist/JvstTest5.java b/src/test/javassist/JvstTest5.java
index 6f6eb075..b0cbbcca 100644
--- a/src/test/javassist/JvstTest5.java
+++ b/src/test/javassist/JvstTest5.java
@@ -9,6 +9,8 @@ import javassist.bytecode.AttributeInfo;
import javassist.bytecode.ClassFile;
import javassist.bytecode.ConstPool;
import javassist.bytecode.InnerClassesAttribute;
+import javassist.bytecode.NestHostAttribute;
+import javassist.bytecode.NestMembersAttribute;
import javassist.expr.ExprEditor;
import javassist.expr.Handler;
import javassist.expr.MethodCall;
@@ -416,4 +418,26 @@ public class JvstTest5 extends JvstTestRoot {
Object obj = make(cc.getName());
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"));
+ }
}