|
|
|
|
|
|
|
|
import java.io.FileInputStream; |
|
|
import java.io.FileInputStream; |
|
|
import java.io.IOException; |
|
|
import java.io.IOException; |
|
|
import java.lang.annotation.Annotation; |
|
|
import java.lang.annotation.Annotation; |
|
|
|
|
|
import java.lang.reflect.Method; |
|
|
import java.lang.reflect.TypeVariable; |
|
|
import java.lang.reflect.TypeVariable; |
|
|
|
|
|
|
|
|
import javassist.bytecode.AccessFlag; |
|
|
import javassist.bytecode.AccessFlag; |
|
|
|
|
|
|
|
|
CtClass cc = sloader.makeClass("test5.JIRA256"); |
|
|
CtClass cc = sloader.makeClass("test5.JIRA256"); |
|
|
ClassFile ccFile = cc.getClassFile(); |
|
|
ClassFile ccFile = cc.getClassFile(); |
|
|
ConstPool constpool = ccFile.getConstPool(); |
|
|
ConstPool constpool = ccFile.getConstPool(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AnnotationsAttribute attr = new AnnotationsAttribute(constpool, AnnotationsAttribute.visibleTag); |
|
|
AnnotationsAttribute attr = new AnnotationsAttribute(constpool, AnnotationsAttribute.visibleTag); |
|
|
javassist.bytecode.annotation.Annotation entityAnno |
|
|
javassist.bytecode.annotation.Annotation entityAnno |
|
|
= new javassist.bytecode.annotation.Annotation("test5.Entity", constpool); |
|
|
= new javassist.bytecode.annotation.Annotation("test5.Entity", constpool); |
|
|
|
|
|
|
|
|
assertTrue(o.getClass().getName().equals("test5.JIRA256")); |
|
|
assertTrue(o.getClass().getName().equals("test5.JIRA256")); |
|
|
|
|
|
|
|
|
java.lang.annotation.Annotation[] annotations = o.getClass().getDeclaredAnnotations(); |
|
|
java.lang.annotation.Annotation[] annotations = o.getClass().getDeclaredAnnotations(); |
|
|
assertEquals(1, annotations.length); |
|
|
|
|
|
|
|
|
assertEquals(1, annotations.length); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public void testJIRA250() throws Exception { |
|
|
public void testJIRA250() throws Exception { |
|
|
|
|
|
|
|
|
assertEquals(1, attr.size()); |
|
|
assertEquals(1, attr.size()); |
|
|
assertNull(attr.parameterName(0)); |
|
|
assertNull(attr.parameterName(0)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void testSuperCall() throws Exception { |
|
|
|
|
|
String javacResult = new BearKeeper().javacResult(); |
|
|
|
|
|
assertEquals("Man feed(Bear)", javacResult); |
|
|
|
|
|
|
|
|
|
|
|
CtClass cc = sloader.get("javassist.BearKeeper"); |
|
|
|
|
|
CtMethod cm = CtMethod.make( |
|
|
|
|
|
"public String javassistResult() {return super.feed(new javassist.Bear());}", |
|
|
|
|
|
cc); |
|
|
|
|
|
cc.addMethod(cm); |
|
|
|
|
|
cc.setModifiers(Modifier.PUBLIC); |
|
|
|
|
|
cc.writeFile(); |
|
|
|
|
|
Object obj = make(cc.getName()); |
|
|
|
|
|
Method m = obj.getClass().getMethod("javassistResult"); |
|
|
|
|
|
Object javassistResult = m.invoke(obj); |
|
|
|
|
|
|
|
|
|
|
|
//before this fix |
|
|
|
|
|
//expected:<Man feed(Bear)> but was:<Keeper feed(Animal)> |
|
|
|
|
|
assertEquals(javacResult, javassistResult); |
|
|
|
|
|
} |
|
|
} |
|
|
} |