Class GenericSaveable

java.lang.Object
ghidra.program.database.properties.GenericSaveable
All Implemented Interfaces:
Saveable

public class GenericSaveable extends Object implements Saveable
GenericSaveable is used by the DBPropertyMapManager when the class can not be found and loaded for the class path name of a property in the database. This allows the properties for that class to be accessed in a generic way so that the manager can copy or remove the property at a particular address. This allows the Diff and MultiUser Merge to compare and manipulate the property as needed.
  • Method Details

    • getObjectStorageFields

      public Class<?>[] getObjectStorageFields()
      Description copied from interface: Saveable
      Returns the field classes, in Java types, in the same order as used Saveable.save(ghidra.util.ObjectStorage) and Saveable.restore(ghidra.util.ObjectStorage).

      For example, if the save method calls objStorage.putInt() and then objStorage.putFloat(), then this method must return Class[]{ Integer.class, Float.class }.

      Specified by:
      getObjectStorageFields in interface Saveable
      Returns:
    • save

      public void save(ObjectStorage objStorage)
      Description copied from interface: Saveable
      Save to the given ObjectStorage.
      Specified by:
      save in interface Saveable
      Parameters:
      objStorage - Object that can handle Java primitives, Strings, and arrays of primitives and Strings
    • restore

      public void restore(ObjectStorage objStorage)
      Description copied from interface: Saveable
      Restore from the given ObjectStorage.
      Specified by:
      restore in interface Saveable
      Parameters:
      objStorage - Object that can handle Java primitives, Strings, and arrays of primitives and Strings TODO: document how errors should be handled (i.e, exception, null return)
    • getSchemaVersion

      public int getSchemaVersion()
      Description copied from interface: Saveable
      Get the storage schema version. Any time there is a software release in which the implementing class has changed the data structure used for the save and restore methods, the schema version must be incremented. NOTE: While this could be a static method, the Saveable interface is unable to define such methods.
      Specified by:
      getSchemaVersion in interface Saveable
      Returns:
      storage schema version.
    • isUpgradeable

      public boolean isUpgradeable(int oldSchemaVersion)
      Description copied from interface: Saveable
      Determine if the implementation supports an storage upgrade of the specified oldSchemaVersion to the current schema version.
      Specified by:
      isUpgradeable in interface Saveable
      Returns:
      true if upgrading is supported for the older schema version.
    • upgrade

      public boolean upgrade(ObjectStorage oldObjStorage, int oldSchemaVersion, ObjectStorage currentObjStorage)
      Description copied from interface: Saveable
      Upgrade an older stored object to the current storage schema.
      Specified by:
      upgrade in interface Saveable
      Parameters:
      oldObjStorage - the old stored object
      oldSchemaVersion - storage schema version number for the old object
      currentObjStorage - new object for storage in the current schema
      Returns:
      true if data was upgraded to the currentObjStorage successfully.
    • isPrivate

      public boolean isPrivate()
      Description copied from interface: Saveable
      Returns true if this saveable should not have it's changes broadcast.
      Specified by:
      isPrivate in interface Saveable
      Returns:
      true if this saveable should not have it's changes broadcast.
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object