Package ghidra.framework.model
Interface DomainObject
- 
- All Known Subinterfaces:
- DataTypeArchive,- DataTypeManagerDomainObject,- Program,- UndoableDomainObject
 - All Known Implementing Classes:
- DataTypeArchiveDB,- DomainObjectAdapter,- DomainObjectAdapterDB,- ProgramDB
 
 public interface DomainObjectDomainObjectis the interface that must be supported by data objects that are persistent.DomainObjects maintain an association with aDomainFile. ADomainObjectthat has never been saved will have a nullDomainFile.
- 
- 
Field SummaryFields Modifier and Type Field Description static intDO_DOMAIN_FILE_CHANGEDEvent type generated when the domain file associated with the domain object changes.static intDO_OBJECT_CLOSEDEvent type generated when this domain object is closed.static intDO_OBJECT_ERROREvent type generated when a fatal error occurs which renders the domain object invalid.static intDO_OBJECT_RENAMEDEvent type generated when the object name changes.static intDO_OBJECT_RESTOREDEvent type generated when domain object is restored.static intDO_OBJECT_SAVEDEvent type generated when the domain object is saved.static intDO_PROPERTY_CHANGEDEvent type generated when a property on this DomainObject is changed.static java.lang.ObjectundoLockObject to synchronize on for undo/redo operations.
 - 
Method SummaryAll Methods Instance Methods Abstract Methods Modifier and Type Method Description voidaddCloseListener(DomainObjectClosedListener listener)Adds a listener that will be notified when this DomainObject is closed.booleanaddConsumer(java.lang.Object consumer)Adds the given object as a consumer.voidaddListener(DomainObjectListener dol)Adds a listener for this object.booleancanLock()Returns true if a modification lock can be obtained on this domain object.booleancanSave()Returns true if this object can be saved; a read-only file cannot be saved.EventQueueIDcreatePrivateEventQueue(DomainObjectListener listener, int maxDelay)Creates a private event queue that can be flushed independently from the main event queue.voidflushEvents()Makes sure all pending domainEvents have been sent.voidflushPrivateEventQueue(EventQueueID id)Flush events from the specified event queue.voidforceLock(boolean rollback, java.lang.String reason)Cancels any previous lock and aquires it.java.util.ArrayList<java.lang.Object>getConsumerList()Returns the list of consumers on this domainObjectjava.lang.StringgetDescription()Returns a word or short phrase that best describes or categorizes the object in terms that a user will understand.DomainFilegetDomainFile()Get the domain file for this domain object.java.util.Map<java.lang.String,java.lang.String>getMetadata()Returns a map containing all the stored metadata associated with this domain object.longgetModificationNumber()Returns a long value that gets incremented every time a change, undo, or redo takes place.java.lang.StringgetName()Get the name of this domain object.OptionsgetOptions(java.lang.String propertyListName)Get the property list for the given name.java.util.List<java.lang.String>getOptionsNames()Returns all properties lists contained by this domain object.booleanhasExclusiveAccess()Returns true if the user has exclusive access to the domain object.booleanisChangeable()Returns true if changes are permitted.booleanisChanged()Returns whether the object has changed.booleanisClosed()Returns true if this domain object has been closed as a result of the last releasebooleanisLocked()Returns true if the domain object currenly has a modification lock enabled.booleanisSendingEvents()Returns true if this object is sending out events as it is changed.booleanisTemporary()Returns true if this object has been marked as Temporary.booleanisUsedBy(java.lang.Object consumer)Returns true if the given consumer is using (has open) this domain object.booleanlock(java.lang.String reason)Attempt to obtain a modification lock on the domain object.voidrelease(java.lang.Object consumer)Notify the domain object that the specified consumer is no longer using it.voidremoveCloseListener(DomainObjectClosedListener listener)Removes the given close listener.voidremoveListener(DomainObjectListener dol)Remove the listener for this object.booleanremovePrivateEventQueue(EventQueueID id)Removes the specified private event queuevoidsave(java.lang.String comment, TaskMonitor monitor)Saves changes to the DomainFile.voidsaveToPackedFile(java.io.File outputFile, TaskMonitor monitor)Saves (i.e., serializes) the current content to a packed file.voidsetEventsEnabled(boolean enabled)If true, domain object change events are sent.voidsetName(java.lang.String name)Set the name for this domain object.voidsetTemporary(boolean state)Set the temporary state of this object.voidunlock()Release a modification lock previously granted with the lock method.
 
- 
- 
- 
Field Detail- 
undoLockstatic final java.lang.Object undoLock Object to synchronize on for undo/redo operations.
 - 
DO_OBJECT_SAVEDstatic final int DO_OBJECT_SAVED Event type generated when the domain object is saved.- See Also:
- Constant Field Values
 
 - 
DO_DOMAIN_FILE_CHANGEDstatic final int DO_DOMAIN_FILE_CHANGED Event type generated when the domain file associated with the domain object changes.- See Also:
- Constant Field Values
 
 - 
DO_OBJECT_RENAMEDstatic final int DO_OBJECT_RENAMED Event type generated when the object name changes.- See Also:
- Constant Field Values
 
 - 
DO_OBJECT_RESTOREDstatic final int DO_OBJECT_RESTORED Event type generated when domain object is restored.- See Also:
- Constant Field Values
 
 - 
DO_PROPERTY_CHANGEDstatic final int DO_PROPERTY_CHANGED Event type generated when a property on this DomainObject is changed.- See Also:
- Constant Field Values
 
 - 
DO_OBJECT_CLOSEDstatic final int DO_OBJECT_CLOSED Event type generated when this domain object is closed.- See Also:
- Constant Field Values
 
 - 
DO_OBJECT_ERRORstatic final int DO_OBJECT_ERROR Event type generated when a fatal error occurs which renders the domain object invalid.- See Also:
- Constant Field Values
 
 
- 
 - 
Method Detail- 
isChangedboolean isChanged() Returns whether the object has changed.
 - 
setTemporaryvoid setTemporary(boolean state) Set the temporary state of this object. If this object is temporary, the isChanged() method will always return false. The default temporary state is false.- Parameters:
- state- if true object is marked as temporary
 
 - 
isTemporaryboolean isTemporary() Returns true if this object has been marked as Temporary.
 - 
isChangeableboolean isChangeable() Returns true if changes are permitted.
 - 
canSaveboolean canSave() Returns true if this object can be saved; a read-only file cannot be saved.
 - 
savevoid save(java.lang.String comment, TaskMonitor monitor) throws java.io.IOException, CancelledExceptionSaves changes to the DomainFile.- Parameters:
- comment- comment used for new version
- monitor- monitor that shows the progress of the save
- Throws:
- java.io.IOException- thrown if there was an error accessing this domain object
- ReadOnlyException- thrown if this DomainObject is read only and cannot be saved
- CancelledException- thrown if the user canceled the save operation
 
 - 
saveToPackedFilevoid saveToPackedFile(java.io.File outputFile, TaskMonitor monitor) throws java.io.IOException, CancelledExceptionSaves (i.e., serializes) the current content to a packed file.- Parameters:
- outputFile- packed output file
- monitor- progress monitor
- Throws:
- java.io.IOException
- CancelledException
- java.lang.UnsupportedOperationException- if not supported by object implementation
 
 - 
releasevoid release(java.lang.Object consumer) Notify the domain object that the specified consumer is no longer using it. When the last consumer invokes this method, the domain object will be closed and will become invalid.- Parameters:
- consumer- the consumer (e.g., tool, plugin, etc) of the domain object previously established with the addConsumer method.
 
 - 
addListenervoid addListener(DomainObjectListener dol) Adds a listener for this object.- Parameters:
- dol- listener notified when any change occurs to this domain object
 
 - 
removeListenervoid removeListener(DomainObjectListener dol) Remove the listener for this object.- Parameters:
- dol- listener
 
 - 
addCloseListenervoid addCloseListener(DomainObjectClosedListener listener) Adds a listener that will be notified when this DomainObject is closed. This is meant for clients to have a chance to cleanup, such as reference removal.- Parameters:
- listener- the reference to add
 
 - 
removeCloseListenervoid removeCloseListener(DomainObjectClosedListener listener) Removes the given close listener.- Parameters:
- listener- the listener to remove.
 
 - 
createPrivateEventQueueEventQueueID createPrivateEventQueue(DomainObjectListener listener, int maxDelay) Creates a private event queue that can be flushed independently from the main event queue.- Parameters:
- listener- the listener to be notified of domain object events.
- maxDelay- the time interval (in milliseconds) used to buffer events.
- Returns:
- a unique identifier for this private queue.
 
 - 
removePrivateEventQueueboolean removePrivateEventQueue(EventQueueID id) Removes the specified private event queue- Parameters:
- id- the id of the queue to remove.
- Returns:
- true if the id represents a valid queue that was removed.
 
 - 
getDescriptionjava.lang.String getDescription() Returns a word or short phrase that best describes or categorizes the object in terms that a user will understand.
 - 
getNamejava.lang.String getName() Get the name of this domain object.
 - 
setNamevoid setName(java.lang.String name) Set the name for this domain object.- Parameters:
- name- object name
 
 - 
getDomainFileDomainFile getDomainFile() Get the domain file for this domain object.- Returns:
- the associated domain file
 
 - 
addConsumerboolean addConsumer(java.lang.Object consumer) Adds the given object as a consumer. The release method must be invoked with this same consumer instance when this domain object is no longer in-use.- Parameters:
- consumer- domain object consumer
- Returns:
- false if this domain object has already been closed
 
 - 
getConsumerListjava.util.ArrayList<java.lang.Object> getConsumerList() Returns the list of consumers on this domainObject- Returns:
- the list of consumers.
 
 - 
isUsedByboolean isUsedBy(java.lang.Object consumer) Returns true if the given consumer is using (has open) this domain object.- Parameters:
- consumer- the object to test to see if it is a consumer of this domain object.
- Returns:
- true if the given consumer is using (has open) this domain object;
 
 - 
setEventsEnabledvoid setEventsEnabled(boolean enabled) If true, domain object change events are sent. If false, no events are sent.NOTE: disabling events could cause plugins to be out of sync! NOTE: when re-enabling events, an event will be sent to the system to signal that every listener should update. - Parameters:
- enabled- true means to enable events
 
 - 
isSendingEventsboolean isSendingEvents() Returns true if this object is sending out events as it is changed. The default is true. You can change this value by callingsetEventsEnabled(boolean).- See Also:
- setEventsEnabled(boolean)
 
 - 
flushEventsvoid flushEvents() Makes sure all pending domainEvents have been sent.
 - 
flushPrivateEventQueuevoid flushPrivateEventQueue(EventQueueID id) Flush events from the specified event queue.- Parameters:
- id- the id specifying the event queue to be flushed.
 
 - 
canLockboolean canLock() Returns true if a modification lock can be obtained on this domain object. Care should be taken with using this method since this will not prevent another thread from modifying the domain object.
 - 
isLockedboolean isLocked() Returns true if the domain object currenly has a modification lock enabled.
 - 
lockboolean lock(java.lang.String reason) Attempt to obtain a modification lock on the domain object. Multiple locks may be granted on this domain object, although all lock owners must release their lock in a timely fashion.- Parameters:
- reason- very short reason for requesting lock
- Returns:
- true if lock obtained successfully, else false which indicates that a modification is in process.
 
 - 
forceLockvoid forceLock(boolean rollback, java.lang.String reason)Cancels any previous lock and aquires it.- Parameters:
- rollback- if true, any changes in made with the previous lock should be discarded.
- reason- very short reason for requesting lock
 
 - 
unlockvoid unlock() Release a modification lock previously granted with the lock method.
 - 
getOptionsNamesjava.util.List<java.lang.String> getOptionsNames() Returns all properties lists contained by this domain object.- Returns:
- all property lists contained by this domain object.
 
 - 
getOptionsOptions getOptions(java.lang.String propertyListName) Get the property list for the given name.- Parameters:
- propertyListName- name of property list
 
 - 
isClosedboolean isClosed() Returns true if this domain object has been closed as a result of the last release
 - 
hasExclusiveAccessboolean hasExclusiveAccess() Returns true if the user has exclusive access to the domain object. Exclusive access means either the object is not shared or the user has an exclusive checkout on the object.
 - 
getMetadatajava.util.Map<java.lang.String,java.lang.String> getMetadata() Returns a map containing all the stored metadata associated with this domain object. The map contains key,value pairs and are ordered by their insertion order.- Returns:
- a map containing all the stored metadata associated with this domain object.
 
 - 
getModificationNumberlong getModificationNumber() Returns a long value that gets incremented every time a change, undo, or redo takes place. Useful for implementing a lazy caching system.- Returns:
- a long value that is incremented for every change to the program.
 
 
- 
 
-