I've found how to make the ClassFile working for defining my new class, but I'm still unable to add the annotation. Now I work as follows: 1) I create a CtClass object and set the inheritance chain on that; 2) I get the byte[] from the CtClass and place them into a ByteArrayInputStream, used to create a ClassFile; 3) I add the annotation to the classfile; 4) I get the byte[] from the classfile thru a ByteArrayOutputStream; 5) I load the class thru the defineClass method.
Now the class is of the right type, but it has no the annotation. The following is my code; anyone has an idea of which is my error adding the annotation? | subProxyClassName += this.getSubClassNameSuffix(); | | // make a new class and prepare the annotation | CtClass newProxyClass = pool.makeClass(subProxyClassName); | newProxyClass.setSuperclass( baseProxyClass ); | ByteArrayInputStream is = new ByteArrayInputStream( newProxyClass.toBytecode() ); | DataInputStream dis = new DataInputStream( is ); | ClassFile classFile = new ClassFile( dis ); | newProxyClass.defrost(); | ConstPool constantPool = classFile.getConstPool(); | AnnotationsAttribute attribute = new AnnotationsAttribute( constantPool, AnnotationsAttribute.visibleTag ); | javassist.bytecode.annotation.Annotation annotation = new javassist.bytecode.annotation.Annotation( this.annotationClassName, constantPool ); | attribute.setAnnotation( annotation ); | classFile.addAttribute( attribute ); | classFile.setVersionToJava5(); | ByteArrayOutputStream bos = new ByteArrayOutputStream(); | DataOutputStream os = new DataOutputStream( bos ); | classFile.write( os ); | new javassist.bytecode.annotation.Annotation( constantPool, subProxy ); | bytecode = bos.toByteArray(); | baseProxyClass = null; | | ... | | Class clazz = this.defineClass(subProxyClassName, bytecode, 0, bytecode.length); | | Thanks, Luca View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4133098#4133098 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4133098 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user