]> source.dussan.org Git - javassist.git/commitdiff
modifies NestHostAttribute and NestMembersAttribute and adds test code
authorchibash <chiba@javassist.org>
Sun, 2 Sep 2018 13:56:45 +0000 (22:56 +0900)
committerchibash <chiba@javassist.org>
Sun, 2 Sep 2018 13:56:45 +0000 (22:56 +0900)
Readme.html
build.xml
javassist.jar
pom.xml
src/main/META-INF/MANIFEST.MF
src/main/javassist/bytecode/NestHostAttribute.java
src/main/javassist/bytecode/NestMembersAttribute.java
src/test/javassist/JvstTest5.java

index 5ffb7165ca30d7c3c1fea8c0c8e8828c8bd65244..b1ff16ff4b70e023da23b7595d12f71ddfc74b82 100644 (file)
@@ -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>
 
index d654536f7c98b75885f5542b01f167aa722768c8..365aa6042dd32afa46a2f63fd85dc1e21fab7146 100644 (file)
--- 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"/>
index 7a5d820067fcbbd003d3f9705be6310e58ece554..4ff2cc139a0b7026f65e2723b5808286710bc0c8 100644 (file)
Binary files a/javassist.jar and b/javassist.jar differ
diff --git a/pom.xml b/pom.xml
index adb9c6196436d0e3f9f235a9e9646cf6ccb7d0d6..8900978f2552e5272b075746f0c0f802b8a43ec0 100644 (file)
--- 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>
 
         <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>
index 448c6fca078392d88ee8957ae704d2e28f7b6aa7..90fb0144991d8592e76eb9b7dfa50ab46126c26c 100644 (file)
@@ -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
index ae9f1e5d5b750c67d290d843403c53c8515022fb..5a52336d5b0b2f9e78faee828c3d6b68777d1dd4 100644 (file)
@@ -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);
+    }
 }
index 679dc28c053a2715fd66a6c7b9b746fec93c7a23..6a3023b45c4f987a4cc6d218925fa54c5cfa6b69 100644 (file)
@@ -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);
+    }
 }
index 6f6eb0759604fbf598e2f52d4522e301cf58e862..b0cbbcca0aca7e0172ad5481a3fa9cbab4d23336 100644 (file)
@@ -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"));
+    }
 }