Class PluginManager


  • public class PluginManager
    extends java.lang.Object
    Executes manages external decompiler wrapper plugins. Wrapper plugins are stored as .java files along with .json file containing classname, wrapper url and dependencies url. When user calls decompile method with decompiler name and bytecode, wrapper plugin gets compiled and executed.
    • Field Detail

      • gson

        com.google.gson.Gson gson
      • UNDECOMPILABLE_LAMBDA

        public static final java.lang.String UNDECOMPILABLE_LAMBDA
        See Also:
        Constant Field Values
      • LAMBDA_FORM

        public static final java.util.regex.Pattern LAMBDA_FORM
    • Constructor Detail

      • PluginManager

        public PluginManager()
    • Method Detail

      • loadConfigs

        public void loadConfigs()
        Searches plugin configuration locations and calls loadConfig(file) on files.
      • loadConfig

        private void loadConfig​(java.io.File file)
        Loads information decompiler json file into ListWrapper.
      • isDecompilableInnerClass

        private boolean isDecompilableInnerClass​(java.lang.String baseClass,
                                                 java.lang.String currentClass)
      • decompile

        public java.lang.String decompile​(DecompilerWrapperInformation wrapper,
                                          java.lang.String name,
                                          byte[] bytecode,
                                          java.lang.String[] options,
                                          VmInfo vmInfo,
                                          VmManager vmManager)
                                   throws java.lang.Exception
        Parameters:
        wrapper - decompiler used for decompiling
        name - optional name for decompielrs supporting inner classes
        bytecode - bytecode to be decompiled
        options - decompile options
        vmInfo - otional vminfo to find inner classes
        vmManager - otional vmmanager to find inner classes
        Returns:
        Decompiled bytecode or exception String
        Throws:
        java.lang.Exception - exception String
      • haveCompiler

        public boolean haveCompiler​(DecompilerWrapperInformation wrapper)
                             throws java.lang.Exception
        Throws:
        java.lang.Exception
      • InitializeWrapper

        private void InitializeWrapper​(DecompilerWrapperInformation wrapper)
        Compiles wrapper plugin, loads it into JVM and stores it for later.
      • validatePlugin

        public java.lang.String validatePlugin​(DecompilerWrapperInformation plugin)
        Validating the @param plugin using compilation
        Parameters:
        plugin - - plugin to validate
        Returns:
        error message or null
      • createUserPluginDir

        public static void createUserPluginDir()
      • URLListToCSV

        private java.lang.String URLListToCSV​(java.util.List<ExpandableUrl> list,
                                              java.lang.String delimeter)
        Converts list of URLs to CSV String
        example: (list){URL1,URL2,URL3} -> (String)URL1:URL2:URL3
      • flipWrapperExtension

        public static java.lang.String flipWrapperExtension​(java.lang.String filePath)