|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.ow2.asmdex.AnnotationVisitor
org.ow2.asmdex.AnnotationWriter
public class AnnotationWriter
The Annotation Writer. Visits an Annotation and stores its content.
A visitor can have children when it needs to visit an Array or sub-Annotations. It has no link with them,
but a child knows its father, and once the visit of all its elements are over, the child builds a single
element (array, sub-annotation) and adds it to its parent Annotation Item list.
Once the father has visited everything, it registers its list to the Constant Pool (unless its a Default
Annotation, which will be registered by the Class, in another constructed AnnotationItem consisting all the
DefaultAnnotation of the Class).
There are exceptions though : the Signature Array, String, Enum and Class array must NOT be sorted.
So in the case of a visit(), if we're encoding an Array, we don't add the Elements to the current
AnnotationItem like we do for the other cases, but add the Elements directly to the Array, which in turn
will be added to the AnnotationItem at visitEnd().
| Field Summary | |
|---|---|
protected AnnotationItem |
annotationItem
The Annotation Item currently being visited. |
protected java.lang.String |
annotationType
Type of the Annotation. |
protected java.lang.String |
currentName
Current name of the Annotation. |
protected AnnotationWriter |
father
"Father" of the current AnnotationWriter. |
protected boolean |
mustSortArray
Indicates if the Array elements must be sorted. |
protected EncodedValueArray |
unsortedArray
This is an Array, only used for Signature Array, String Array, Enum and Class Arrays, as these ones are unsorted. |
| Fields inherited from class org.ow2.asmdex.AnnotationVisitor |
|---|
api, av |
| Constructor Summary | |
|---|---|
AnnotationWriter(ConstantPool constantPool,
AnnotationItem annotationItem)
Constructor of the Annotation Writer. |
|
| Method Summary | |
|---|---|
static AnnotationWriter |
createAnnotationWriter(java.lang.String desc,
boolean visible,
ConstantPool constantPool,
ClassDefinitionItem classDefinitionItem)
Creates an Annotation Writer for it to visit a following Annotation. |
AnnotationItem |
getAnnotationItem()
Returns the Annotation Item being visited. |
void |
setMustSortArray(boolean mustSortArray)
Indicates if the array must be sorted. |
void |
visit(java.lang.String name,
java.lang.Object value)
Visits a primitive value of the annotation. |
AnnotationVisitor |
visitAnnotation(java.lang.String name,
java.lang.String desc)
Visits a nested annotation value of the annotation. |
AnnotationVisitor |
visitArray(java.lang.String name)
Visits an array value of the annotation. |
void |
visitClass(java.lang.String annotationName,
java.lang.String className)
Visits a Class declaration inside an annotation (example : class |
void |
visitEnd()
Visits the end of the annotation. |
protected void |
visitEndRegisterAnnotationItemNotDefaultAnnotation()
Registers the annotation_item to the Constant Pool. |
void |
visitEnum(java.lang.String name,
java.lang.String desc,
java.lang.String value)
Visits an enumeration value of the annotation. |
protected void |
visitManageNonDefaultAnnotation(java.lang.String name,
java.lang.Object value,
boolean isArrayAnnotation)
Method called only by Visit, in the case our annotation is not a DefaultAnnotation. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected AnnotationItem annotationItem
protected java.lang.String currentName
protected java.lang.String annotationType
protected AnnotationWriter father
protected EncodedValueArray unsortedArray
protected boolean mustSortArray
| Constructor Detail |
|---|
public AnnotationWriter(ConstantPool constantPool,
AnnotationItem annotationItem)
constantPool - the Constant Pool of the Application.annotationItem - the Annotation Item to visit.| Method Detail |
|---|
public AnnotationItem getAnnotationItem()
public void setMustSortArray(boolean mustSortArray)
mustSortArray - true to sort the Array.
public void visit(java.lang.String name,
java.lang.Object value)
AnnotationVisitor
visit in class AnnotationVisitorname - the value name.value - the actual value, whose type must be Byte,
Boolean, Character, Short,
Integer, Long, Float, Double,
String or Type. This value can also be an array
of byte, boolean, short, char, int, long, float or double values
(this is equivalent to using visitArray and
visiting each array element in turn, but is more convenient).
protected void visitManageNonDefaultAnnotation(java.lang.String name,
java.lang.Object value,
boolean isArrayAnnotation)
name - the value name.value - the actual value.isArrayAnnotation - indicates if the current Annotation is an Array Annotation.public void visitEnd()
AnnotationVisitor
visitEnd in class AnnotationVisitorprotected void visitEndRegisterAnnotationItemNotDefaultAnnotation()
public void visitEnum(java.lang.String name,
java.lang.String desc,
java.lang.String value)
AnnotationVisitor
visitEnum in class AnnotationVisitorname - the value name.desc - the class descriptor of the enumeration class.value - the actual enumeration value.public AnnotationVisitor visitArray(java.lang.String name)
AnnotationVisitorvisit. This is what
ClassVisitor does.
visitArray in class AnnotationVisitorname - the value name.
public AnnotationVisitor visitAnnotation(java.lang.String name,
java.lang.String desc)
AnnotationVisitor
visitAnnotation in class AnnotationVisitorname - the value name.desc - the class descriptor of the nested annotation class.
public void visitClass(java.lang.String annotationName,
java.lang.String className)
AnnotationVisitor
visitClass in class AnnotationVisitorannotationName - the name of the annotation. Null if the visit of the Class is
inside an Array.className - the name of the class.
public static AnnotationWriter createAnnotationWriter(java.lang.String desc,
boolean visible,
ConstantPool constantPool,
ClassDefinitionItem classDefinitionItem)
desc - the class descriptor of the annotation class.visible - true if the annotation is visible at runtime.constantPool - the Constant Pool of the Application.classDefinitionItem - the Class the Annotation is linked to. This is ONLY useful for
Default Annotation, and must be Null otherwise.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||