Class EnhancedClassDataBase

java.lang.Object
org.glassfish.pfl.tf.spi.EnhancedClassDataBase
All Implemented Interfaces:
EnhancedClassData
Direct Known Subclasses:
EnhancedClassDataASMImpl, EnhancedClassDataReflectiveImpl

public abstract class EnhancedClassDataBase extends Object implements EnhancedClassData
  • Field Details

    • util

      protected Util util
    • annotationNames

      protected final Set<String> annotationNames
    • className

      protected String className
    • annoNamesForClass

      protected final Set<String> annoNamesForClass
    • annoToHolderName

      protected final Map<String,String> annoToHolderName
    • methodNames

      protected final List<String> methodNames
    • methodDescriptions

      protected final List<String> methodDescriptions
    • methodTPTs

      protected final List<TimingPointType> methodTPTs
    • methodTPNames

      protected final List<String> methodTPNames
    • methodAnnoList

      protected final List<String> methodAnnoList
    • infoMethodDescs

      protected final Set<String> infoMethodDescs
    • mmMethodDescs

      protected final Set<String> mmMethodDescs
    • methodToAnno

      protected final Map<String,String> methodToAnno
  • Constructor Details

    • EnhancedClassDataBase

      protected EnhancedClassDataBase(Util util, Set<String> annotationNames)
  • Method Details

    • getClassName

      public String getClassName()
      Description copied from interface: EnhancedClassData
      Return the internal name of the class.
      Specified by:
      getClassName in interface EnhancedClassData
      Returns:
      The class name.
    • getAnnotationToHolderName

      public Map<String,String> getAnnotationToHolderName()
      Description copied from interface: EnhancedClassData
      Map from MM annotation name to the name of the holder field that contains the SynchronizedHolder for the corresponding MethodMonitor. The domain of this map is the set of MM annotations on this class.
      Specified by:
      getAnnotationToHolderName in interface EnhancedClassData
      Returns:
      Map from MM annotations defined on this class to the names of the holder fields.
    • getMethodNames

      public List<String> getMethodNames()
      Description copied from interface: EnhancedClassData
      List of method names for all MM methods and info methods in the class. Order is significant, as the index of the method in the list is the ordinal used to represent it. This list is in sorted order.
      Specified by:
      getMethodNames in interface EnhancedClassData
      Returns:
      List of all method tracing names in sorted order.
    • getMethodIndex

      public int getMethodIndex(String methodName)
      Description copied from interface: EnhancedClassData
      Index of method name in the list of method names.
      Specified by:
      getMethodIndex in interface EnhancedClassData
      Parameters:
      methodName - The method name as defined for tracing.
      Returns:
      the method index
    • getHolderName

      public String getHolderName(String fullMethodDescriptor)
      Description copied from interface: EnhancedClassData
      Name of the holder fields corresponding to a particular method. Note that the full descriptor (name + arg/return descriptor) is used to unambiguously identify the method in the class.
      Specified by:
      getHolderName in interface EnhancedClassData
      Parameters:
      fullMethodDescriptor - The full method descriptor of the method.
      Returns:
      The name of the holder field used for this method.
    • classifyMethod

      public EnhancedClassData.MethodType classifyMethod(String fullMethodDescriptor)
      Description copied from interface: EnhancedClassData
      Classify the method.
      Specified by:
      classifyMethod in interface EnhancedClassData
      Parameters:
      fullMethodDescriptor - The full method descriptor of the method.
      Returns:
      The kind of the corresponding method.
    • isTracedClass

      public boolean isTracedClass()
      Description copied from interface: EnhancedClassData
      Returns true iff this class is monitored.
      Specified by:
      isTracedClass in interface EnhancedClassData
      Returns:
      true iff this class has one or more MM annotations.
    • updateInfoDesc

      public void updateInfoDesc()
      Description copied from interface: EnhancedClassData
      Enhance all of the descriptors for infoMethods.
      Specified by:
      updateInfoDesc in interface EnhancedClassData
    • getDescriptions

      public List<String> getDescriptions()
      List of descriptions of monitored methods and info methods. If no description was given in the annotations, the value is "".
      Specified by:
      getDescriptions in interface EnhancedClassData
      Returns:
      List of descriptions in the same order as in getMethodTracingNames.
    • getTimingPointTypes

      public List<TimingPointType> getTimingPointTypes()
      List of timing point types of monitored methods and info methods. The list contains BOTH for a monitored method. An info method that does not represent a timing point is represented by NONE.
      Specified by:
      getTimingPointTypes in interface EnhancedClassData
      Returns:
      List of TimingPointTypes in the same order as in getMethodTracingNames.
    • getTimingPointNames

      public List<String> getTimingPointNames()
      Description copied from interface: EnhancedClassData
      List of timing point names corresponding to method names. For monitored methods, this is just the method name. For info methods whose tpType is not NONE, this is specified in tpName.
      Specified by:
      getTimingPointNames in interface EnhancedClassData
      Returns:
      List of timing point names, in the same order as in getMethodTracingNames.
    • getMethodMMAnnotationName

      public List<String> getMethodMMAnnotationName()
      Description copied from interface: EnhancedClassData
      List of annotation names for each info method and monitored method. It is interpreted as follows:
      • If the entry in the list is not null, it is the only annotation applicable to this method. This is the case for monitored methods.
      • If the entry in the list is null, all annotations on the enclosing class apply to this method. This is the case for an InfoMethod, which can be called from any monitored method regardless of the annotation on the monitored method.
      Specified by:
      getMethodMMAnnotationName in interface EnhancedClassData
      Returns:
      List of annotation names for methods.