Class ModuleWriter

java.lang.Object
org.datanucleus.enhancer.asm.ModuleVisitor
org.datanucleus.enhancer.asm.ModuleWriter

final class ModuleWriter extends ModuleVisitor
A ModuleVisitor that generates the corresponding Module, ModulePackages and ModuleMainClass attributes, as defined in the Java Virtual Machine Specification (JVMS).
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final ByteVector
    The binary content of the 'exports' array of the JVMS Module attribute.
    private int
    The exports_count field of the JVMS Module attribute.
    private int
    The main_class_index field of the JVMS ModuleMainClass attribute, or 0.
    private final int
    The module_flags field of the JVMS Module attribute.
    private final int
    The module_name_index field of the JVMS Module attribute.
    private final int
    The module_version_index field of the JVMS Module attribute.
    private final ByteVector
    The binary content of the 'opens' array of the JVMS Module attribute.
    private int
    The opens_count field of the JVMS Module attribute.
    private int
    The provides_count field of the JVMS ModulePackages attribute.
    private final ByteVector
    The binary content of the 'package_index' array of the JVMS ModulePackages attribute.
    private final ByteVector
    The binary content of the 'provides' array of the JVMS Module attribute.
    private int
    The provides_count field of the JVMS Module attribute.
    private final ByteVector
    The binary content of the 'requires' array of the JVMS Module attribute.
    private int
    The requires_count field of the JVMS Module attribute.
    private final SymbolTable
    Where the constants used in this AnnotationWriter must be stored.
    private int
    The uses_count field of the JVMS Module attribute.
    private final ByteVector
    The binary content of the 'uses_index' array of the JVMS Module attribute.

    Fields inherited from class org.datanucleus.enhancer.asm.ModuleVisitor

    api, mv
  • Constructor Summary

    Constructors
    Constructor
    Description
    ModuleWriter(SymbolTable symbolTable, int name, int access, int version)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    (package private) int
    Returns the size of the Module, ModulePackages and ModuleMainClass attributes generated by this ModuleWriter.
    (package private) int
    Returns the number of Module, ModulePackages and ModuleMainClass attributes generated by this ModuleWriter.
    (package private) void
    Puts the Module, ModulePackages and ModuleMainClass attributes generated by this ModuleWriter in the given ByteVector.
    void
    Visits the end of the module.
    void
    visitExport(String packaze, int access, String... modules)
    Visit an exported package of the current module.
    void
    Visit the main class of the current module.
    void
    visitOpen(String packaze, int access, String... modules)
    Visit an open package of the current module.
    void
    Visit a package of the current module.
    void
    visitProvide(String service, String... providers)
    Visit an implementation of a service.
    void
    visitRequire(String module, int access, String version)
    Visits a dependence of the current module.
    void
    visitUse(String service)
    Visit a service used by the current module.

    Methods inherited from class org.datanucleus.enhancer.asm.ModuleVisitor

    getDelegate

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • symbolTable

      private final SymbolTable symbolTable
      Where the constants used in this AnnotationWriter must be stored.
    • moduleNameIndex

      private final int moduleNameIndex
      The module_name_index field of the JVMS Module attribute.
    • moduleFlags

      private final int moduleFlags
      The module_flags field of the JVMS Module attribute.
    • moduleVersionIndex

      private final int moduleVersionIndex
      The module_version_index field of the JVMS Module attribute.
    • requiresCount

      private int requiresCount
      The requires_count field of the JVMS Module attribute.
    • requires

      private final ByteVector requires
      The binary content of the 'requires' array of the JVMS Module attribute.
    • exportsCount

      private int exportsCount
      The exports_count field of the JVMS Module attribute.
    • exports

      private final ByteVector exports
      The binary content of the 'exports' array of the JVMS Module attribute.
    • opensCount

      private int opensCount
      The opens_count field of the JVMS Module attribute.
    • opens

      private final ByteVector opens
      The binary content of the 'opens' array of the JVMS Module attribute.
    • usesCount

      private int usesCount
      The uses_count field of the JVMS Module attribute.
    • usesIndex

      private final ByteVector usesIndex
      The binary content of the 'uses_index' array of the JVMS Module attribute.
    • providesCount

      private int providesCount
      The provides_count field of the JVMS Module attribute.
    • provides

      private final ByteVector provides
      The binary content of the 'provides' array of the JVMS Module attribute.
    • packageCount

      private int packageCount
      The provides_count field of the JVMS ModulePackages attribute.
    • packageIndex

      private final ByteVector packageIndex
      The binary content of the 'package_index' array of the JVMS ModulePackages attribute.
    • mainClassIndex

      private int mainClassIndex
      The main_class_index field of the JVMS ModuleMainClass attribute, or 0.
  • Constructor Details

    • ModuleWriter

      ModuleWriter(SymbolTable symbolTable, int name, int access, int version)
  • Method Details

    • visitMainClass

      public void visitMainClass(String mainClass)
      Description copied from class: ModuleVisitor
      Visit the main class of the current module.
      Overrides:
      visitMainClass in class ModuleVisitor
      Parameters:
      mainClass - the internal name of the main class of the current module (see Type.getInternalName()).
    • visitPackage

      public void visitPackage(String packaze)
      Description copied from class: ModuleVisitor
      Visit a package of the current module.
      Overrides:
      visitPackage in class ModuleVisitor
      Parameters:
      packaze - the internal name of a package (see Type.getInternalName()).
    • visitRequire

      public void visitRequire(String module, int access, String version)
      Description copied from class: ModuleVisitor
      Visits a dependence of the current module.
      Overrides:
      visitRequire in class ModuleVisitor
      Parameters:
      module - the fully qualified name (using dots) of the dependence.
      access - the access flag of the dependence among ACC_TRANSITIVE, ACC_STATIC_PHASE, ACC_SYNTHETIC and ACC_MANDATED.
      version - the module version at compile time, or null.
    • visitExport

      public void visitExport(String packaze, int access, String... modules)
      Description copied from class: ModuleVisitor
      Visit an exported package of the current module.
      Overrides:
      visitExport in class ModuleVisitor
      Parameters:
      packaze - the internal name of the exported package (see Type.getInternalName()).
      access - the access flag of the exported package, valid values are among ACC_SYNTHETIC and ACC_MANDATED.
      modules - the fully qualified names (using dots) of the modules that can access the public classes of the exported package, or null.
    • visitOpen

      public void visitOpen(String packaze, int access, String... modules)
      Description copied from class: ModuleVisitor
      Visit an open package of the current module.
      Overrides:
      visitOpen in class ModuleVisitor
      Parameters:
      packaze - the internal name of the opened package (see Type.getInternalName()).
      access - the access flag of the opened package, valid values are among ACC_SYNTHETIC and ACC_MANDATED.
      modules - the fully qualified names (using dots) of the modules that can use deep reflection to the classes of the open package, or null.
    • visitUse

      public void visitUse(String service)
      Description copied from class: ModuleVisitor
      Visit a service used by the current module. The name must be the internal name of an interface or a class.
      Overrides:
      visitUse in class ModuleVisitor
      Parameters:
      service - the internal name of the service (see Type.getInternalName()).
    • visitProvide

      public void visitProvide(String service, String... providers)
      Description copied from class: ModuleVisitor
      Visit an implementation of a service.
      Overrides:
      visitProvide in class ModuleVisitor
      Parameters:
      service - the internal name of the service (see Type.getInternalName()).
      providers - the internal names (see Type.getInternalName()) of the implementations of the service (there is at least one provider).
    • visitEnd

      public void visitEnd()
      Description copied from class: ModuleVisitor
      Visits the end of the module. This method, which is the last one to be called, is used to inform the visitor that everything have been visited.
      Overrides:
      visitEnd in class ModuleVisitor
    • getAttributeCount

      int getAttributeCount()
      Returns the number of Module, ModulePackages and ModuleMainClass attributes generated by this ModuleWriter.
      Returns:
      the number of Module, ModulePackages and ModuleMainClass attributes (between 1 and 3).
    • computeAttributesSize

      int computeAttributesSize()
      Returns the size of the Module, ModulePackages and ModuleMainClass attributes generated by this ModuleWriter. Also add the names of these attributes in the constant pool.
      Returns:
      the size in bytes of the Module, ModulePackages and ModuleMainClass attributes.
    • putAttributes

      void putAttributes(ByteVector output)
      Puts the Module, ModulePackages and ModuleMainClass attributes generated by this ModuleWriter in the given ByteVector.
      Parameters:
      output - where the attributes must be put.