Class JSONAnnotationValueVisitor

  • All Implemented Interfaces:
    javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>

    public class JSONAnnotationValueVisitor
    extends javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
    A visitor implementation for converting AnnotationValue objects into JSON-formatted strings. This class extends SimpleAnnotationValueVisitor6 and is designed to work with Java annotation processing tools to generate JSON representations of annotation values.

    Example Usage

    
     // Example 1: Visiting a simple annotation value
     AnnotationValue value = ...; // e.g., a String, int, or boolean value
     ExecutableElement method = ...; // the method corresponding to the annotation attribute
     StringBuilder jsonBuilder = new StringBuilder();
     JSONAnnotationValueVisitor visitor = new JSONAnnotationValueVisitor(jsonBuilder);
     visitor.visit(value, method); // Result: appends JSON key-value pair to jsonBuilder
    
     // Example 2: Visiting an array annotation value
     List<? extends AnnotationValue> arrayValues = ...; // list of annotation values
     visitor.visitArray(arrayValues, method); // Result: appends JSON array to jsonBuilder
    
     // Example 3: Visiting a nested annotation
     AnnotationMirror annotationMirror = ...;
     visitor.visitAnnotation(annotationMirror, method); // Result: appends JSON object to jsonBuilder
     

    This visitor is typically used during annotation processing to serialize annotation values into a structured JSON format, useful for configuration or metadata generation purposes.

    Since:
    1.0.0
    Author:
    Mercy
    See Also:
    SimpleAnnotationValueVisitor6
    • Field Summary

      • Fields inherited from class javax.lang.model.util.SimpleAnnotationValueVisitor6

        DEFAULT_VALUE
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.StringBuilder doAppend​(javax.lang.model.element.ExecutableElement attributeMethod, java.lang.StringBuilder value)  
      java.lang.StringBuilder visitAnnotation​(javax.lang.model.element.AnnotationMirror value, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.StringBuilder visitArray​(java.util.List<? extends javax.lang.model.element.AnnotationValue> values, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.StringBuilder visitBoolean​(boolean value, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.StringBuilder visitByte​(byte value, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.StringBuilder visitChar​(char value, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.StringBuilder visitDouble​(double value, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.StringBuilder visitEnumConstant​(javax.lang.model.element.VariableElement value, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.StringBuilder visitFloat​(float value, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.StringBuilder visitInt​(int value, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.StringBuilder visitLong​(long value, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.StringBuilder visitShort​(short value, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.StringBuilder visitString​(java.lang.String value, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.StringBuilder visitType​(javax.lang.model.type.TypeMirror value, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.StringBuilder visitUnknown​(javax.lang.model.element.AnnotationValue annotationValue, javax.lang.model.element.ExecutableElement attributeMethod)  
      • Methods inherited from class javax.lang.model.util.SimpleAnnotationValueVisitor6

        defaultAction
      • Methods inherited from class javax.lang.model.util.AbstractAnnotationValueVisitor6

        visit, visit
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • JSONAnnotationValueVisitor

        public JSONAnnotationValueVisitor​(java.lang.StringBuilder jsonBuilder)
    • Method Detail

      • visitBoolean

        public java.lang.StringBuilder visitBoolean​(boolean value,
                                                    javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitBoolean in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitBoolean in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • visitByte

        public java.lang.StringBuilder visitByte​(byte value,
                                                 javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitByte in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitByte in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • visitChar

        public java.lang.StringBuilder visitChar​(char value,
                                                 javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitChar in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitChar in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • visitDouble

        public java.lang.StringBuilder visitDouble​(double value,
                                                   javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitDouble in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitDouble in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • visitFloat

        public java.lang.StringBuilder visitFloat​(float value,
                                                  javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitFloat in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitFloat in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • visitInt

        public java.lang.StringBuilder visitInt​(int value,
                                                javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitInt in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitInt in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • visitLong

        public java.lang.StringBuilder visitLong​(long value,
                                                 javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitLong in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitLong in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • visitShort

        public java.lang.StringBuilder visitShort​(short value,
                                                  javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitShort in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitShort in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • visitString

        public java.lang.StringBuilder visitString​(java.lang.String value,
                                                   javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitString in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitString in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • visitType

        public java.lang.StringBuilder visitType​(javax.lang.model.type.TypeMirror value,
                                                 javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitType in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitType in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • visitEnumConstant

        public java.lang.StringBuilder visitEnumConstant​(javax.lang.model.element.VariableElement value,
                                                         javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitEnumConstant in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitEnumConstant in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • visitAnnotation

        public java.lang.StringBuilder visitAnnotation​(javax.lang.model.element.AnnotationMirror value,
                                                       javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitAnnotation in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitAnnotation in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • visitArray

        public java.lang.StringBuilder visitArray​(java.util.List<? extends javax.lang.model.element.AnnotationValue> values,
                                                  javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitArray in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitArray in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • visitUnknown

        public java.lang.StringBuilder visitUnknown​(javax.lang.model.element.AnnotationValue annotationValue,
                                                    javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitUnknown in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitUnknown in class javax.lang.model.util.AbstractAnnotationValueVisitor6<java.lang.StringBuilder,​javax.lang.model.element.ExecutableElement>
      • doAppend

        protected java.lang.StringBuilder doAppend​(javax.lang.model.element.ExecutableElement attributeMethod,
                                                   java.lang.StringBuilder value)