org.eclipse.emf.cdo.transaction

## Interface CDOTransactionHandler1.WithUndo

- All Superinterfaces:
    CDOTransactionHandler1, CDOTransactionHandlerBase
  All Known Implementing Classes:
    CDOAutoAttacher, CDOAutoLocker, CDOAutoLocker.ForSingleValuedChanges, CDODefaultTransactionHandler, CDODefaultTransactionHandler1
  Enclosing interface:
    CDOTransactionHandler1

      public static interface CDOTransactionHandler1.WithUndo
      extends CDOTransactionHandler1

  Since:
    4.6
  Author:
    Eike Stepper

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.eclipse.emf.cdo.transaction.CDOTransactionHandler1

      `CDOTransactionHandler1.WithUndo`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `undoingObject(CDOTransaction transaction, CDOObject object, CDOFeatureDelta featureDelta)` Called by a `CDOTransaction` before an object is modified.

    - ### Methods inherited from interface org.eclipse.emf.cdo.transaction.CDOTransactionHandler1

      `attachingObject, detachingObject, modifyingObject`

- - ### Method Detail

    - #### undoingObject

          void undoingObject(CDOTransaction transaction,
                             CDOObject object,
                             CDOFeatureDelta featureDelta)

      Called by a `CDOTransaction` before an object is modified. The implementor of this method is allowed to throw an unchecked exception that will propagate up to the operation that is about to modify the object (thereby preventing the operation from completing successfully).

      Note: Implementors must not start threads which access the `view` and wait for their completion since deadlocks can result. The following example causes a deadlock:

           getDisplay().syncExec(new Runnable()
           {
             public void run()
             {
               try
               {
                 cdoObject.getName();
               }
               catch (Exception ignore)
               {
               }
             }
           });

      If you need to synchronously execute threads which access the `view` you should use `CDOAsyncTransactionHandler`.

Copyright (c) 2004-2019 Eike Stepper (Loehne, Germany) and others.
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html