Class ParserAnnotation

java.lang.Object
org.openjdk.asmtools.jasm.ParseBase
org.openjdk.asmtools.jasm.ParserAnnotation

public class ParserAnnotation extends ParseBase
ParserAnnotation

ParserAnnotation is a parser class owned by Parser.java. It is primarily responsible for parsing Annotations (for classes, methods or fields).

ParserAnnotation can parse the different types of Annotation Attributes: Runtime(In)Visible Annotations (JDK 6+) Default Annotations (JDK 6+) Runtime(In)VisibleParameter Annotations (JDK 7+) Runtime(In)VisibleType Annotations (JSR308, JDK8+)

  • Field Details

  • Constructor Details

    • ParserAnnotation

      protected ParserAnnotation(Parser parentParser)
  • Method Details

    • scanParamName

      protected void scanParamName(int totalParams, int paramNum, MethodData curMethod) throws SyntaxError
      Throws:
      SyntaxError
    • scanAnnotations

      ArrayList<AnnotationData> scanAnnotations() throws SyntaxError
      The main entry for parsing an annotation list.
      Returns:
      An ArrayList of parsed annotations
      Throws:
      SyntaxError
    • parseDefaultAnnotation

      protected DefaultAnnotationAttr parseDefaultAnnotation() throws SyntaxError
      parseDefaultAnnotation

      parses a default Annotation attribute

      Returns:
      the parsed Annotation Attribute
      Throws:
      SyntaxError
      SyntaxError - if a scanner error occurs
    • parseParamAnnots

      protected void parseParamAnnots(int totalParams, MethodData curMethod) throws SyntaxError
      Parses Parameter Annotations attributes.
      Parameters:
      totalParams -
      curMethod -
      Throws:
      SyntaxError - if a scanner error occurs
    • parseTypeAnnotation

      private AnnotationData parseTypeAnnotation() throws SyntaxError
      parseTypeAnnotation - parses an individual annotation.
      Returns:
      a parsed annotation.
      Throws:
      SyntaxError - if a scanner error occurs
    • parseAnnotation

      private AnnotationData parseAnnotation() throws SyntaxError
      Parses an individual annotation.
      Returns:
      a parsed annotation.
      Throws:
      SyntaxError - if a scanner error occurs
    • _scanAnnotation

      private void _scanAnnotation(AnnotationData annotData) throws SyntaxError
      Parses an individual annotation-data.
      Throws:
      SyntaxError - if a scanner error occurs
    • _scanTypeTarget

      private void _scanTypeTarget(TypeAnnotationData annotData) throws SyntaxError
      Parses an individual annotation-data.
      Throws:
      SyntaxError - if a scanner error occurs
    • _scanTargetPath

      private void _scanTargetPath(TypeAnnotationData annotData) throws SyntaxError
      _scanTargetPath

      parses and fills the type_path structure (4.7.20.2)

      type_path { u1 path_length; { u1 type_path_kind; u1 type_argument_index; } path[path_length]; }

      Throws:
      SyntaxError - if a scanner error occurs
    • _scanTypePathEntry

      private TypeAnnotationTypes.TypePathEntry _scanTypePathEntry() throws SyntaxError
      _scanTypeLocation

      parses a path entry of the type_path.

      { u1 type_path_kind; u1 type_argument_index; }

      Returns:
      a parsed type path.
      Throws:
      SyntaxError - if a scanner error occurs
    • scanAnnotationArray

      private ParserAnnotation.ArrayElemValue scanAnnotationArray(String name) throws SyntaxError
      scanAnnotationArray

      Scans an Array of annotations.

      Parameters:
      name - Name of the annotation
      Returns:
      Array Element
      Throws:
      SyntaxError - if a scanner error occurs
    • scanAnnotationClass

      private DataWriter scanAnnotationClass(String name) throws SyntaxError
      Scans an annotation enumeration.
      Parameters:
      name - Annotation Name
      Returns:
      Constant element value for the Class Annotation.
      Throws:
      SyntaxError - if a scanner error occurs
    • scanAnnotationEnum

      private ParserAnnotation.EnumElemValue scanAnnotationEnum(String name) throws SyntaxError
      Scans an annotation enum val.
      Parameters:
      name - Annotation Name
      Returns:
      Enumeration Element Value
      Throws:
      SyntaxError - if a scanner error occurs
    • scanAnnotationData

      private DataWriter scanAnnotationData(String name)
      scanAnnotationData

      parses the internals of an annotation.

      Parameters:
      name - Annotation Name
      Returns:
      a Data data structure containing the annotation data.
      Throws:
      IOException - for scanning errors.
    • getElementValueByCPIndex

      private DataWriter getElementValueByCPIndex(int cpIndex)
    • scanAnnotationIdent

      private DataWriter scanAnnotationIdent(String ident, String name) throws SyntaxError
      scanAnnotationIdent

      parses the identifier of an annotation.

      Parameters:
      ident - Basic Type identifier
      name - Annotation Name
      Returns:
      Basic Type Annotation data
      Throws:
      SyntaxError - if a scanning error occurs