Browse Source

modifies NestHostAttribute and NestMembersAttribute and adds test code

tags/rel_3_24_0_rc
chibash 5 years ago
parent
commit
c52b9c7100

+ 3
- 2
Readme.html View 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>


+ 1
- 1
build.xml View File

@@ -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"/>

BIN
javassist.jar View File


+ 5
- 5
pom.xml View File

@@ -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>

+ 1
- 1
src/main/META-INF/MANIFEST.MF View 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

+ 26
- 0
src/main/javassist/bytecode/NestHostAttribute.java View 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);
}
}

+ 37
- 0
src/main/javassist/bytecode/NestMembersAttribute.java View 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);
}
}

+ 24
- 0
src/test/javassist/JvstTest5.java View 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"));
}
}

Loading…
Cancel
Save