]
Shigeru Chiba commented on JASSIST-226:
---------------------------------------
It seems that the usage of the API is wrong.
The argument to new Annotation() is the type name of the annotation.
The member of the annotation must be given by addMemberValue().
Please see the javadoc.
automatical modification of class and method Annotation
-------------------------------------------------------
Key: JASSIST-226
URL:
https://issues.jboss.org/browse/JASSIST-226
Project: Javassist
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 3.18.0-GA
Environment: JavaSE-1.7, Eclipse Kepler
Reporter: Paolo Paolo
Assignee: Shigeru Chiba
Labels: annotations
I'm using Javassist to create .class file at runtime. Every method of the created
class must have a Java Annotation ("@annotation example") with an URI. The
problem is that the Annotation class modifies automatically the URI by substituting
slashes with dots.
//the Annotation String that I need
@RDFBean('http://www.semanticweb.org/pi/2014/5/test#Test')
//the resulting String
@RDFBean('http:..www.semanticweb.org.pi.2014.5.test#Test')
Is there a way to prevent this String modification?
I suppose it's related to the different notation between a file path and a Java
package.
This is the code:
ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.makeClass(className);
ClassFile ccFile = cc.getClassFile();
ConstPool constpool = ccFile.getConstPool();
// create the annotation
AnnotationsAttribute attr = new AnnotationsAttribute(constpool,
AnnotationsAttribute.visibleTag);
// classLocalName contains:
http://www.semanticweb.org/pi/2014/5/test#Test
Annotation annot = new Annotation("RDFBean('" + classLocalName +
"')", constpool);
attr.addAnnotation(annot);
ccFile.addAttribute(attr);