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



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



+ 1
- 1
build.xml View File



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

BIN
javassist.jar View File


+ 5
- 5
pom.xml View File

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>

+ 1
- 1
src/main/META-INF/MANIFEST.MF View File

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

+ 26
- 0
src/main/javassist/bytecode/NestHostAttribute.java View File

/*
* 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);
}
} }

+ 37
- 0
src/main/javassist/bytecode/NestMembersAttribute.java View File

/*
* 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);
}
} }

+ 24
- 0
src/test/javassist/JvstTest5.java View File

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"));
}
} }

Loading…
Cancel
Save