Class JavaScriptProvider

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      ChangeModifier and Type Method Description
      void createNewScript​(ResourceFile newScript, java.lang.String category)
      Creates a new script using the specified file.
      boolean deleteScript​(ResourceFile sourceFile)
      Deletes the script file and unloads the script from the script manager.
      NEWprotected java.lang.String fixupName​(java.lang.String scriptName)
      Fix script name for search in script directories, such as Java package parts in the name and inner class names.
      ghidra.app.plugin.core.osgi.GhidraSourceBundle getBundleForSource​(ResourceFile sourceFile)
      Get the GhidraSourceBundle containing the given source file, assuming it already exists.
      NEWprotected java.lang.String getCertifyHeaderEnd()
      Return the end of certification header line if this file type is subject to certification.
      NEWprotected java.lang.String getCertifyHeaderStart()
      Return the start of certification header line if this file type is subject to certification.
      java.lang.String getCommentCharacter()
      Returns the comment character.
      java.lang.String getDescription()
      Returns a description for this type of script.
      java.lang.String getExtension()
      Returns the file extension for this type of script.
      GhidraScript getScriptInstance​(ResourceFile sourceFile, java.io.PrintWriter writer)
      Returns a GhidraScript instance for the specified source file.
      java.lang.Class<?> loadClass​(ResourceFile sourceFile, java.io.PrintWriter writer)
      Activate and build the GhidraSourceBundle containing sourceFile then load the script's class from its class loader.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • JavaScriptProvider

        public JavaScriptProvider()
        Create a new JavaScriptProvider associated with the current bundle host used by scripting.
    • Method Detail

      • getBundleForSource

        public ghidra.app.plugin.core.osgi.GhidraSourceBundle getBundleForSource​(ResourceFile sourceFile)
        Get the GhidraSourceBundle containing the given source file, assuming it already exists.
        Parameters:
        sourceFile - the source file
        Returns:
        the bundle
      • getExtension

        public java.lang.String getExtension()
        Description copied from class: GhidraScriptProvider
        Returns the file extension for this type of script. For example, ".java" or ".py".
        Specified by:
        getExtension in class GhidraScriptProvider
        Returns:
        the file extension for this type of script
      • deleteScript

        public boolean deleteScript​(ResourceFile sourceFile)
        Description copied from class: GhidraScriptProvider
        Deletes the script file and unloads the script from the script manager.
        Overrides:
        deleteScript in class GhidraScriptProvider
        Parameters:
        sourceFile - the script source file
        Returns:
        true if the script was completely deleted and cleaned up
      • getScriptInstance

        public GhidraScript getScriptInstance​(ResourceFile sourceFile,
                                              java.io.PrintWriter writer)
                                       throws java.lang.ClassNotFoundException,
                                              java.lang.InstantiationException,
                                              java.lang.IllegalAccessException
        Description copied from class: GhidraScriptProvider
        Returns a GhidraScript instance for the specified source file.
        Specified by:
        getScriptInstance in class GhidraScriptProvider
        Parameters:
        sourceFile - the source file
        writer - the print writer to write warning/error messages
        Returns:
        a GhidraScript instance for the specified source file
        Throws:
        java.lang.ClassNotFoundException
        java.lang.InstantiationException
        java.lang.IllegalAccessException
      • loadClass

        public java.lang.Class<?> loadClass​(ResourceFile sourceFile,
                                            java.io.PrintWriter writer)
                                     throws java.lang.Exception
        Activate and build the GhidraSourceBundle containing sourceFile then load the script's class from its class loader.
        Parameters:
        sourceFile - the source file
        writer - the target for build messages
        Returns:
        the loaded Class object
        Throws:
        java.lang.Exception - if build, activation, or class loading fail
      • createNewScript

        public void createNewScript​(ResourceFile newScript,
                                    java.lang.String category)
                             throws java.io.IOException
        Description copied from class: GhidraScriptProvider
        Creates a new script using the specified file.
        Specified by:
        createNewScript in class GhidraScriptProvider
        Parameters:
        newScript - the new script file
        category - the script category
        Throws:
        java.io.IOException - if an error occurs writing the file
      • getCertifyHeaderStart NEW

        protected java.lang.String getCertifyHeaderStart()
        Description copied from class: GhidraScriptProvider
        Return the start of certification header line if this file type is subject to certification.
        Overrides:
        getCertifyHeaderStart in class GhidraScriptProvider
        Returns:
        start of certification header or null if not supported
      • getCertifyHeaderEnd NEW

        protected java.lang.String getCertifyHeaderEnd()
        Description copied from class: GhidraScriptProvider
        Return the end of certification header line if this file type is subject to certification.
        Overrides:
        getCertifyHeaderEnd in class GhidraScriptProvider
        Returns:
        end of certification header or null if not supported
      • fixupName NEW

        protected java.lang.String fixupName​(java.lang.String scriptName)
        Fix script name for search in script directories, such as Java package parts in the name and inner class names.

        This method can handle names with '$' (inner classes) and names with '.' characters for package separators

        It is part of a poorly specified behavior that is due for future amendment, see GhidraScriptUtil.fixupName(String).

        Overrides:
        fixupName in class GhidraScriptProvider
        Parameters:
        scriptName - the name of the script
        Returns:
        the name as a '.java' file path (with '/'s and not '.'s)