org.eclipse.emf.spi.cdo

## Class AbstractObjectConflictResolver.ThreeWayMerge

- java.lang.Object
- - org.eclipse.emf.spi.cdo.AbstractConflictResolver
  - - org.eclipse.emf.spi.cdo.AbstractObjectConflictResolver
    - - org.eclipse.emf.spi.cdo.AbstractObjectConflictResolver.ThreeWayMerge

- All Implemented Interfaces:
    CDOConflictResolver, CDOConflictResolver2, CDOAdapterPolicy
  Direct Known Subclasses:
    AbstractObjectConflictResolver.MergeLocalChangesPerFeature
  Enclosing class:
    AbstractObjectConflictResolver

      public abstract static class AbstractObjectConflictResolver.ThreeWayMerge
      extends AbstractObjectConflictResolver
      implements CDOAdapterPolicy

  If the meaning of this type isn't clear, there really should be more of a description here...
  Since:
    2.0
  Author:
    Eike Stepper

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `AbstractObjectConflictResolver.ThreeWayMerge.RevisionDeltaCollector` If the meaning of this type isn't clear, there really should be more of a description here...

    - ### Nested classes/interfaces inherited from class org.eclipse.emf.spi.cdo.AbstractObjectConflictResolver

      `AbstractObjectConflictResolver.MergeLocalChangesPerFeature, AbstractObjectConflictResolver.TakeRemoteChangesThenApplyLocalChanges, AbstractObjectConflictResolver.ThreeWayMerge`

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

      `CDOConflictResolver.NonConflictAware`

  - ### Field Summary

    - ### Fields inherited from interface org.eclipse.emf.cdo.view.CDOAdapterPolicy

      `ALL, CDO, NONE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ThreeWayMerge()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `hookTransaction(CDOTransaction transaction)`
    `boolean` | `isValid(EObject object, Adapter adapter)` Returns `true` if the given adapter on the given object should trigger a certain operation or behavior, `false` otherwise.
    `protected void` | `resolveConflict(CDOObject conflict, CDORevision oldRemoteRevision, CDORevisionDelta localDelta, CDORevisionDelta remoteDelta, List<CDORevisionDelta> allRemoteDeltas)` Resolves the conflict of a single object in the current transaction.
    `protected abstract void` | `resolveConflict(CDOObject conflict, CDORevisionDelta localDelta, List<CDORevisionDelta> remoteDeltas)`
    `void` | `resolveConflicts(Set<CDOObject> conflicts)` Resolves conflicts after remote invalidations arrived for objects that are locally dirty or detached.
    `protected void` | `unhookTransaction(CDOTransaction transaction)`

    - ### Methods inherited from class org.eclipse.emf.spi.cdo.AbstractObjectConflictResolver

      `changeObject, readObject, resolveConflict, resolveConflicts, rollbackObject`

    - ### Methods inherited from class org.eclipse.emf.spi.cdo.AbstractConflictResolver

      `getTransaction, setTransaction`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

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

      `getTransaction, setTransaction`

- - ### Constructor Detail

    - #### ThreeWayMerge

          public ThreeWayMerge()

  - ### Method Detail

    - #### isValid

          public boolean isValid(EObject object,
                                 Adapter adapter)

      Description copied from interface: `CDOAdapterPolicy`
      Returns `true` if the given adapter on the given object should trigger a certain operation or behavior, `false` otherwise.
      Specified by:
        `isValid` in interface `CDOAdapterPolicy`
      See Also:
        `CDOView.Options.addChangeSubscriptionPolicy(CDOAdapterPolicy)`, `CDOView.Options.setStrongReferencePolicy(CDOAdapterPolicy)`

    - #### hookTransaction

          protected void hookTransaction(CDOTransaction transaction)

      Overrides:
        `hookTransaction` in class `AbstractConflictResolver`

    - #### unhookTransaction

          protected void unhookTransaction(CDOTransaction transaction)

      Overrides:
        `unhookTransaction` in class `AbstractConflictResolver`

    - #### resolveConflicts

          public void resolveConflicts(Set<CDOObject> conflicts)

      Description copied from interface: `CDOConflictResolver`
      Resolves conflicts after remote invalidations arrived for objects that are locally dirty or detached.
      Specified by:
        `resolveConflicts` in interface `CDOConflictResolver`
      Overrides:
        `resolveConflicts` in class `AbstractObjectConflictResolver`

    - #### resolveConflict

          protected void resolveConflict(CDOObject conflict,
                                         CDORevision oldRemoteRevision,
                                         CDORevisionDelta localDelta,
                                         CDORevisionDelta remoteDelta,
                                         List<CDORevisionDelta> allRemoteDeltas)

      Description copied from class: `AbstractObjectConflictResolver`
      Resolves the conflict of a single object in the current transaction. Depending on the decision taken to resolve the conflict, it may be necessary to adjust the notification that will be sent to the adapters in the current transaction. This can be achieved by adjusting the `CDORevisionDelta` in `deltas`.
      Overrides:
        `resolveConflict` in class `AbstractObjectConflictResolver`

    - #### resolveConflict

          protected abstract void resolveConflict(CDOObject conflict,
                                                  CDORevisionDelta localDelta,
                                                  List<CDORevisionDelta> remoteDeltas)

Copyright (c) 2014 Eike Stepper (Berlin, 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