Class ProgramContentHandler

java.lang.Object
ghidra.framework.data.DBContentHandler
ghidra.program.database.ProgramContentHandler
All Implemented Interfaces:
ContentHandler, ExtensionPoint

public class ProgramContentHandler extends DBContentHandler
ProgramContentHandler converts between Program instantiations and FolderItem storage. This class also produces the appropriate Icon for Program files.
  • Field Details

  • Constructor Details

    • ProgramContentHandler

      public ProgramContentHandler()
  • Method Details

    • createFile

      public long createFile(FileSystem fs, FileSystem userfs, String path, String name, DomainObject obj, TaskMonitor monitor) throws IOException, InvalidNameException, CancelledException
      Description copied from interface: ContentHandler
      Creates a new folder item within a specified file-system. If fs is versioned, the resulting item is marked as checked-out within the versioned file-system. The specified domainObj will become associated with the newly created database.
      Parameters:
      fs - the file system in which to create the folder item
      userfs - file system which contains associated user data
      path - the path of the folder item
      name - the name of the new folder item
      obj - the domain object to store in the newly created folder item
      monitor - the monitor that allows the user to cancel
      Returns:
      checkout ID for new item
      Throws:
      IOException - if an i/o error occurs
      InvalidNameException - if the specified name contains invalid characters
      CancelledException - if the user cancels
    • getImmutableObject

      public DomainObjectAdapter getImmutableObject(FolderItem item, Object consumer, int version, int minChangeVersion, TaskMonitor monitor) throws IOException, VersionException, CancelledException
      Description copied from interface: ContentHandler
      Open a folder item for immutable use. If any changes are attempted on the returned object, an IllegalStateException state exception may be thrown.
      Parameters:
      item - stored folder item
      consumer - consumer of the returned object
      version - version of the stored folder item to be opened. DomainFile.DEFAULT_VERSION (-1) should be specified when not opening a specific file version.
      minChangeVersion - the minimum version which should be included in the change set for the returned object. A value of -1 indicates the default change set.
      monitor - the monitor that allows the user to cancel
      Returns:
      immutable domain object
      Throws:
      IOException - if a folder item access error occurs
      VersionException - if unable to handle file content due to version difference which could not be handled.
      CancelledException - if operation is cancelled by user
    • getReadOnlyObject

      public DomainObjectAdapter getReadOnlyObject(FolderItem item, int version, boolean okToUpgrade, Object consumer, TaskMonitor monitor) throws IOException, VersionException, CancelledException
      Description copied from interface: ContentHandler
      Open a folder item for read-only use. While changes are permitted on the returned object, the original folder item may not be overwritten / updated.
      Parameters:
      item - stored folder item
      version - version of the stored folder item to be opened. DomainFile.DEFAULT_VERSION should be specified when not opening a specific file version.
      okToUpgrade - if true a version upgrade to the content will be done if necessary.
      consumer - consumer of the returned object
      monitor - the monitor that allows the user to cancel
      Returns:
      read-only domain object
      Throws:
      IOException - if a folder item access error occurs
      VersionException - if unable to handle file content due to version difference which could not be handled.
      CancelledException - if operation is cancelled by user
    • getDomainObject

      public DomainObjectAdapter getDomainObject(FolderItem item, FileSystem userfs, long checkoutId, boolean okToUpgrade, boolean recover, Object consumer, TaskMonitor monitor) throws IOException, VersionException, CancelledException
      Description copied from interface: ContentHandler
      Open a folder item for update. Changes made to the returned object may be saved to the original folder item.
      Parameters:
      item - stored folder item
      userfs - file system which contains associated user data
      checkoutId - an appropriate checout ID required to update the specified folder item.
      okToUpgrade - if true a version upgrade to the content will be done if necessary.
      recover - if true an attempt to recover any unsaved changes resulting from a crash will be attempted.
      consumer - consumer of the returned object
      monitor - cancelable task monitor
      Returns:
      updateable domain object
      Throws:
      IOException - if a folder item access error occurs
      VersionException - if unable to handle file content due to version difference which could not be handled.
      CancelledException - if operation is cancelled by user
    • getChangeSet

      public ChangeSet getChangeSet(FolderItem item, int fromVer, int toVer) throws VersionException, IOException
      Description copied from interface: ContentHandler
      Returns the object change data which includes changes made to the specified olderVersion through to the specified newerVersion.
      Parameters:
      item - versioned folder item
      fromVer - the older version number
      toVer - the newer version number
      Returns:
      the set of changes that were made
      Throws:
      VersionException - if a database version change prevents reading of data.
      IOException - if a folder item access error occurs or change set was produced by newer version of software and can not be read
    • getDomainObjectClass

      public Class<? extends DomainObject> getDomainObjectClass()
      Description copied from interface: ContentHandler
      Returns domain object implementation class supported.
    • getContentType

      public String getContentType()
      Description copied from interface: ContentHandler
      Returns list of unique content-types supported. A minimum of one content-type will be returned. If more than one is returned, these are considered equivalent aliases.
    • getContentTypeDisplayString

      public String getContentTypeDisplayString()
      Description copied from interface: ContentHandler
      A string that is meant to be presented to the user.
    • getDefaultToolName

      public String getDefaultToolName()
      Description copied from interface: ContentHandler
      Returns the name of the default tool that should be used to open this content type
    • getIcon

      public Icon getIcon()
      Description copied from interface: ContentHandler
      Returns the Icon associated with this handlers content type.
    • isPrivateContentType

      public boolean isPrivateContentType()
      Description copied from interface: ContentHandler
      Returns true if the content type is always private (i.e., can not be added to the versioned filesystem).
    • getMergeManager

      public DomainObjectMergeManager getMergeManager(DomainObject resultsObj, DomainObject sourceObj, DomainObject originalObj, DomainObject latestObj)
      Description copied from interface: ContentHandler
      Get an instance of a suitable merge manager to be used during the merge of a Versioned object which has been modified by another user since it was last merged or checked-out.
      Parameters:
      resultsObj - object to which merge results should be written
      sourceObj - object which contains user's changes to be merged
      originalObj - object which corresponds to checked-out version state
      latestObj - object which corresponds to latest version with which the sourceObj must be merged.
      Returns:
      merge manager