Package org.eclipse.emf.cdo

## Interface CDOObject

- All Superinterfaces:
    `CDOWithID`, `EObject`, `Notifier`
  All Known Subinterfaces:
    `Access`, `AndFilter`, `Annotation`, `Assignee`, `BooleanValue`, `ByteValue`, `CDOBinaryResource`, `CDOFileResource<IO>`, `CDOResource`, `CDOResourceFolder`, `CDOResourceLeaf`, `CDOResourceNode`, `CDOTextResource`, `CharValue`, `ClassFilter`, `ClassPermission`, `CombinedFilter`, `ContainedObject`, `ContextAccess`, `Directory`, `DoubleValue`, `Expression`, `ExpressionFilter`, `FilterPermission`, `FloatValue`, `FunctionInvocation`, `Group`, `InternalCDOObject`, `InternalCDOResource`, `IntValue`, `Invocation`, `LinkedExpression`, `LinkedFilter`, `LinkedObject`, `ListConstruction`, `LongValue`, `MemberAccess`, `MemberInvocation`, `ModelElement`, `NotFilter`, `ObjectFilter`, `ObjectPermission`, `OrFilter`, `PackageFilter`, `PackagePermission`, `Permission`, `PermissionFilter`, `Realm`, `ResourceFilter`, `ResourcePermission`, `Role`, `SecurityElement`, `SecurityItem`, `ShortValue`, `StaticAccess`, `StringValue`, `User`, `UserPassword`, `Value`
  All Known Implementing Classes:
    `AccessImpl`, `AndFilterImpl`, `AnnotationImpl`, `AssigneeImpl`, `BooleanValueImpl`, `ByteValueImpl`, `CDOBinaryResourceImpl`, `CDOFileResourceImpl`, `CDOObjectImpl`, `CDOResourceFolderImpl`, `CDOResourceImpl`, `CDOResourceLeafImpl`, `CDOResourceNodeImpl`, `CDOTextResourceImpl`, `CharValueImpl`, `ClassFilterImpl`, `ClassPermissionImpl`, `CombinedFilterImpl`, `ContainedObjectImpl`, `ContextAccessImpl`, `DirectoryImpl`, `DoubleValueImpl`, `ExpressionFilterImpl`, `FilterPermissionImpl`, `FloatValueImpl`, `FunctionInvocationImpl`, `GroupImpl`, `IntValueImpl`, `InvocationImpl`, `LinkedExpressionImpl`, `LinkedFilterImpl`, `LinkedObjectImpl`, `ListConstructionImpl`, `LongValueImpl`, `MemberAccessImpl`, `MemberInvocationImpl`, `ModelElementImpl`, `NotFilterImpl`, `ObjectFilterImpl`, `ObjectPermissionImpl`, `OrFilterImpl`, `PackageFilterImpl`, `PackagePermissionImpl`, `PermissionFilterImpl`, `PermissionImpl`, `RealmImpl`, `ResourceFilterImpl`, `ResourcePermissionImpl`, `RoleImpl`, `SecurityElementImpl`, `SecurityItemImpl`, `ShortValueImpl`, `StaticAccessImpl`, `StringValueImpl`, `UserImpl`, `UserPasswordImpl`, `ValueImpl`

      public interface CDOObject
      extends EObject, CDOWithID

  A specialized subinterface of `EObject` that is exposed by all CDO objects and allows access to special CDO properties and features of those objects.

  Note that, by contract, every instance of CDOObject can also be cast to `InternalCDOObject`.

  Author:
    Eike Stepper
  No Implement
    This interface is not intended to be implemented by clients.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `cdoConflict()` | Returns `true` if this object contains local changes that are conflicting with recognized remote changes, `false` otherwise.
    `CDOResource` | `cdoDirectResource()` | Returns the directly containing `resource` of this object, or `null` if this object is not an element of the `contents` list of any CDO resource.
    `CDOObjectHistory` | `cdoHistory()` |
    `CDOID` | `cdoID()` | Returns the technical object identifier of this object, or `null` if the `state` of this object is `TRANSIENT` or `INVALID`.
    `boolean` | `cdoInvalid()` | Returns `true` if this object is considered as locally invalid (TODO Simon: please briefly explain what this state means) , `false` otherwise.
    `CDOLockState` | `cdoLockState()` | Returns the `CDOLockState` of this object.
    `CDOPermission` | `cdoPermission()` | Returns the permission of the current `session`'s user for this object.
    `void` | `cdoPrefetch​(int depth)` | Ensures that the revisions of the contained objects up to the given depth are in the local `revision cache`.
    `CDOLock` | `cdoReadLock()` | Returns the read lock associated with this object.
    `void` | `cdoReload()` | Deprecated. As of 4.3 no longer supported because it is unsafe to reload single objects.
    `CDOResource` | `cdoResource()` | Returns the `resource` of this object, no matter where this object is located in the containment tree of that resource, or `null` if this object is not contained in a CDO resource.
    `CDORevision` | `cdoRevision()` | Returns the `revision` of this object, or `null` if this object does currently not have a revision.
    `CDORevision` | `cdoRevision​(boolean loadOnDemand)` | Returns the `revision` of this object, or `null` if this object does currently not have a revision and loadOnDemand is `false`.
    `CDOState` | `cdoState()` | Returns the local `state` of this object.
    `CDOView` | `cdoView()` | Returns the `view` this object is associated with, or `null` if this object is not associated with a view.
    `CDOLock` | `cdoWriteLock()` | Returns the write lock associated with this object.
    `CDOLock` | `cdoWriteOption()` | Returns the write option associated with this object.

    - ### Methods inherited from interface org.eclipse.emf.ecore.EObject

      `eAllContents, eClass, eContainer, eContainingFeature, eContainmentFeature, eContents, eCrossReferences, eGet, eGet, eInvoke, eIsProxy, eIsSet, eResource, eSet, eUnset`

    - ### Methods inherited from interface org.eclipse.emf.common.notify.Notifier

      `eAdapters, eDeliver, eNotify, eSetDeliver`

- - ### Method Detail

    - #### cdoID

          CDOID cdoID()

      Returns the technical object identifier of this object, or `null` if the `state` of this object is `TRANSIENT` or `INVALID`.

      If the state of this object is `NEW` the returned CDOID instance can be cast to `CDOIDTemp` and is unique in the scope of the associated `transaction`. In all other states a non-`null` return value uniquely identifies a persistent object in the scope of the whole repository.

      Specified by:
        `cdoID` in interface `CDOWithID`
      See Also:
        `cdoState()`

    - #### cdoState

          CDOState cdoState()

      Returns the local `state` of this object.

    - #### cdoConflict

          boolean cdoConflict()

      Returns `true` if this object contains local changes that are conflicting with recognized remote changes, `false` otherwise.

      This method is a convenience method to determine whether the `state` of this object is either `CONFLICT` or `INVALID_CONFLICT`.

      Since:
        2.0

    - #### cdoInvalid

          boolean cdoInvalid()

      Returns `true` if this object is considered as locally invalid (TODO Simon: please briefly explain what this state means) , `false` otherwise.

      This method is a convenience method to determine whether the `state` of this object is either `INVALID` or `INVALID_CONFLICT`.

      Since:
        2.0

    - #### cdoView

          CDOView cdoView()

      Returns the `view` this object is associated with, or `null` if this object is not associated with a view. This view manages all aspects of this object and cahces it as long as required.
      Since:
        2.0

    - #### cdoRevision

          CDORevision cdoRevision()

      Returns the `revision` of this object, or `null` if this object does currently not have a revision. The revision is used to store all modeled data of this object, together with some technical data required by the framework.

    - #### cdoRevision

          CDORevision cdoRevision​(boolean loadOnDemand)

      Returns the `revision` of this object, or `null` if this object does currently not have a revision and loadOnDemand is `false`. The revision is used to store all modeled data of this object, together with some technical data required by the framework.
      Since:
        4.3

    - #### cdoPermission

          CDOPermission cdoPermission()

      Returns the permission of the current `session`'s user for this object.
      Since:
        4.3

    - #### cdoResource

          CDOResource cdoResource()

      Returns the `resource` of this object, no matter where this object is located in the containment tree of that resource, or `null` if this object is not contained in a CDO resource.

      This method may not return `null` return for objects that have no `direct resource`. Please note that, depending on the containment depth of this object, the evaluation of the resource can be a costly operation.

      See Also:
        `cdoDirectResource()`

    - #### cdoDirectResource

          CDOResource cdoDirectResource()

      Returns the directly containing `resource` of this object, or `null` if this object is not an element of the `contents` list of any CDO resource.

      Please note that, independend of the containment depth of this object, the evaluation of the direct resource is an operation with a constant cost.

      Since:
        2.0

    - #### cdoReadLock

          CDOLock cdoReadLock()

      Returns the read lock associated with this object.
      Returns:
        Never `null`.
      Since:
        2.0

    - #### cdoWriteLock

          CDOLock cdoWriteLock()

      Returns the write lock associated with this object.
      Returns:
        Never `null`.
      Since:
        2.0

    - #### cdoWriteOption

          CDOLock cdoWriteOption()

      Returns the write option associated with this object.

      A write option is a lock that

      - is exclusive; i.e. can only be held by one view
      - prevents other views from obtaining a write lock on the same object
      - does not prevent other views from obtaining a read lock on the same object

      It thus allows a view to ensure that it is the only that who will be able to obtain a write lock in the future, without preventing read locks to be obtained by others at this moment.

      Since:
        4.1

    - #### cdoLockState

          CDOLockState cdoLockState()

      Returns the `CDOLockState` of this object.
      Since:
        4.1

    - #### cdoPrefetch

          void cdoPrefetch​(int depth)

      Ensures that the revisions of the contained objects up to the given depth are in the local `revision cache`. Subsequent access to the respective contained objects will not lead to server round-trips after calling this method.
      Parameters:
        `depth` - `CDORevision.DEPTH_NONE`, `CDORevision.DEPTH_INFINITE` or any other positive integer number.
      Since:
        3.0

    - #### cdoReload

          @Deprecated
          void cdoReload()

      Deprecated.
      As of 4.3 no longer supported because it is unsafe to reload single objects.

    - #### cdoHistory

          CDOObjectHistory cdoHistory()

      Since:
        4.2