Package org.jrd.agent

Class Transformer

  • All Implemented Interfaces:
    java.lang.instrument.ClassFileTransformer

    public class Transformer
    extends java.lang.Object
    implements java.lang.instrument.ClassFileTransformer
    This class represent our transformer for retrieving bytecode.
    • Constructor Summary

      Constructors 
      Constructor Description
      Transformer()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void allowToSaveBytecode()
      This method allows saving of bytecode
      java.util.List<java.lang.String[]> cleanOverrides​(java.lang.String patterns)  
      void denyToSaveBytecode()
      This method denies the bytecode to be saved during transformation.
      java.util.List<java.lang.String[]> getOverriddenFqnPairs()  
      java.util.List<java.lang.String> getOverriddenFqns()  
      byte[] getResult​(java.lang.String name, java.lang.String classloader)
      Returns bytecode of transformed class.
      (package private) void removeOverride​(java.lang.String clazz)  
      (package private) void removeOverride​(java.lang.String clazz, java.lang.String classloader)  
      void resetLastValidResult()
      Resets the map with results to empty map
      void setOverride​(java.lang.String name, byte[] body, java.lang.String classloader)  
      byte[] transform​(java.lang.ClassLoader loader, java.lang.String className, java.lang.Class<?> clazz, java.security.ProtectionDomain domain, byte[] classfileBuffer)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.lang.instrument.ClassFileTransformer

        transform
    • Constructor Detail

      • Transformer

        public Transformer()
    • Method Detail

      • transform

        public byte[] transform​(java.lang.ClassLoader loader,
                                java.lang.String className,
                                java.lang.Class<?> clazz,
                                java.security.ProtectionDomain domain,
                                byte[] classfileBuffer)
                         throws java.lang.instrument.IllegalClassFormatException
        Specified by:
        transform in interface java.lang.instrument.ClassFileTransformer
        Throws:
        java.lang.instrument.IllegalClassFormatException
      • getResult

        public byte[] getResult​(java.lang.String name,
                                java.lang.String classloader)
        Returns bytecode of transformed class.
        Parameters:
        name - name of class we want to get
        Returns:
        bytes of given class
      • setOverride

        public void setOverride​(java.lang.String name,
                                byte[] body,
                                java.lang.String classloader)
      • getOverriddenFqns

        public java.util.List<java.lang.String> getOverriddenFqns()
      • getOverriddenFqnPairs

        public java.util.List<java.lang.String[]> getOverriddenFqnPairs()
      • resetLastValidResult

        public void resetLastValidResult()
        Resets the map with results to empty map
      • allowToSaveBytecode

        public void allowToSaveBytecode()
        This method allows saving of bytecode
      • denyToSaveBytecode

        public void denyToSaveBytecode()
        This method denies the bytecode to be saved during transformation.
      • removeOverride

        void removeOverride​(java.lang.String clazz)
      • removeOverride

        void removeOverride​(java.lang.String clazz,
                            java.lang.String classloader)
      • cleanOverrides

        public java.util.List<java.lang.String[]> cleanOverrides​(java.lang.String patterns)