org.eclipse.emf.transaction
Interface TransactionChangeDescription

All Superinterfaces:
ChangeDescription, EObject, Notifier
All Known Implementing Classes:
CommandChangeDescription, CompositeChangeDescription, OperationChangeDescription

public interface TransactionChangeDescription
extends ChangeDescription

A specialized change description that may not be able to apply itself, especially in the case where it includes non-EMF changes that are not reversible.

When a transaction rolls back, the assumption is that all changes that it performed can be undone, even any non-EMF changes that are captured in its TransactionChangeDescription. This assumption is necessary because the semantics of rollback guarantee that rollback cannot fail: rollback must restore the system to the state it was in before the transaction started. Thus, any change description (possibly nested in a composite) that cannot be applied will be ignored and a best effort made to apply all other changes.

However, the same should not hold for undo/redo of the changes performed by a transaction after it has committed. If the transaction's change description is stored on some kind of "command stack" as an encapsulation of an undoable change, then the possibility that a change description cannot be applied should be respected by disabling undo/redo.


Method Summary
 boolean canApply()
          Queries whether I can apply my changes.
 boolean isEmpty()
          Queries whether I have no changes.
 
Methods inherited from interface org.eclipse.emf.ecore.change.ChangeDescription
apply, applyAndReverse, getObjectChanges, getObjectsToAttach, getObjectsToDetach, getResourceChanges
 
Methods inherited from interface org.eclipse.emf.ecore.EObject
eAllContents, eClass, eContainer, eContainingFeature, eContainmentFeature, eContents, eCrossReferences, eGet, eGet, eIsProxy, eIsSet, eResource, eSet, eUnset
 
Methods inherited from interface org.eclipse.emf.common.notify.Notifier
eAdapters, eDeliver, eNotify, eSetDeliver
 

Method Detail

canApply

boolean canApply()
Queries whether I can apply my changes. If I can, then it is assumed that I could reverse them also.

Returns:
true if my changes can be applied; false otherwise (i.e., they are not invertible)

isEmpty

boolean isEmpty()
Queries whether I have no changes.

Returns:
true if I have no changes (applying me would have no effect on anything); false, otherwise

Copyright 2002, 2007 IBM Corporation and others.
All Rights Reserved.