Package ghidra.app.script
Class JavaScriptProvider
- java.lang.Object
-
- ghidra.app.script.GhidraScriptProvider
-
- ghidra.app.script.JavaScriptProvider
-
- All Implemented Interfaces:
ExtensionPoint,java.lang.Comparable<GhidraScriptProvider>
public class JavaScriptProvider extends GhidraScriptProvider
-
-
Constructor Summary
Constructors Change Constructor Description JavaScriptProvider()Create a newJavaScriptProviderassociated with the current bundle host used by scripting.
-
Method Summary
All Methods Instance Methods Concrete Methods Change Modifier and Type Method Description voidcreateNewScript(ResourceFile newScript, java.lang.String category)Creates a new script using the specified file.booleandeleteScript(ResourceFile sourceFile)Deletes the script file and unloads the script from the script manager.NEW protected java.lang.StringfixupName(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.GhidraSourceBundlegetBundleForSource(ResourceFile sourceFile)Get theGhidraSourceBundlecontaining the given source file, assuming it already exists.NEW protected java.lang.StringgetCertifyHeaderEnd()Return the end of certification header line if this file type is subject to certification.NEW protected java.lang.StringgetCertifyHeaderStart()Return the start of certification header line if this file type is subject to certification.java.lang.StringgetCommentCharacter()Returns the comment character.java.lang.StringgetDescription()Returns a description for this type of script.java.lang.StringgetExtension()Returns the file extension for this type of script.GhidraScriptgetScriptInstance(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 theGhidraSourceBundlecontainingsourceFilethen load the script's class from its class loader.-
Methods inherited from class ghidra.app.script.GhidraScriptProvider
compareTo, equals, getCertificationBodyPrefix, hashCode, toString, writeBody, writeHeader
-
-
-
-
Constructor Detail
-
JavaScriptProvider
public JavaScriptProvider()
Create a newJavaScriptProviderassociated with the current bundle host used by scripting.
-
-
Method Detail
-
getBundleForSource
public ghidra.app.plugin.core.osgi.GhidraSourceBundle getBundleForSource(ResourceFile sourceFile)
Get theGhidraSourceBundlecontaining the given source file, assuming it already exists.- Parameters:
sourceFile- the source file- Returns:
- the bundle
-
getDescription
public java.lang.String getDescription()
Description copied from class:GhidraScriptProviderReturns a description for this type of script.- Specified by:
getDescriptionin classGhidraScriptProvider- Returns:
- a description for this type of script
-
getExtension
public java.lang.String getExtension()
Description copied from class:GhidraScriptProviderReturns the file extension for this type of script. For example, ".java" or ".py".- Specified by:
getExtensionin classGhidraScriptProvider- Returns:
- the file extension for this type of script
-
deleteScript
public boolean deleteScript(ResourceFile sourceFile)
Description copied from class:GhidraScriptProviderDeletes the script file and unloads the script from the script manager.- Overrides:
deleteScriptin classGhidraScriptProvider- 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:GhidraScriptProviderReturns a GhidraScript instance for the specified source file.- Specified by:
getScriptInstancein classGhidraScriptProvider- Parameters:
sourceFile- the source filewriter- the print writer to write warning/error messages- Returns:
- a GhidraScript instance for the specified source file
- Throws:
java.lang.ClassNotFoundExceptionjava.lang.InstantiationExceptionjava.lang.IllegalAccessException
-
loadClass
public java.lang.Class<?> loadClass(ResourceFile sourceFile, java.io.PrintWriter writer) throws java.lang.Exception
Activate and build theGhidraSourceBundlecontainingsourceFilethen load the script's class from its class loader.- Parameters:
sourceFile- the source filewriter- the target for build messages- Returns:
- the loaded
Classobject - 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:GhidraScriptProviderCreates a new script using the specified file.- Specified by:
createNewScriptin classGhidraScriptProvider- Parameters:
newScript- the new script filecategory- the script category- Throws:
java.io.IOException- if an error occurs writing the file
-
getCommentCharacter
public java.lang.String getCommentCharacter()
Description copied from class:GhidraScriptProviderReturns the comment character. For example, "//" or "#".- Specified by:
getCommentCharacterin classGhidraScriptProvider- Returns:
- the comment character
-
getCertifyHeaderStart NEW
protected java.lang.String getCertifyHeaderStart()
Description copied from class:GhidraScriptProviderReturn the start of certification header line if this file type is subject to certification.- Overrides:
getCertifyHeaderStartin classGhidraScriptProvider- Returns:
- start of certification header or null if not supported
-
getCertifyHeaderEnd NEW
protected java.lang.String getCertifyHeaderEnd()
Description copied from class:GhidraScriptProviderReturn the end of certification header line if this file type is subject to certification.- Overrides:
getCertifyHeaderEndin classGhidraScriptProvider- 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:
fixupNamein classGhidraScriptProvider- Parameters:
scriptName- the name of the script- Returns:
- the name as a '.java' file path (with '/'s and not '.'s)
-
-