Difference between revisions of "CDO/Client"

From Eclipsepedia

< CDO
Jump to: navigation, search
(CDOObject Introduction)
(CDOObject Categories)
Line 22: Line 22:
  
 
==CDOObject Categories==
 
==CDOObject Categories==
 +
 +
While a user application always deals with EObjects the internal CDOStateMachine interacts with InternalCDOObjects. Depending on how the EObjects relate to the InternalCDOObjects there are a handful of different categories of CDOObjects, that is, implementations of InternalCDOObject. The following type hierarchy shows an example with the shipped test model installed:
 +
 +
 +
[[Image:InternalCDOObject.png]]
 +
 +
 +
The main categories are:
 +
* '''Native objects''' result from dynamic models
  
 
{|border="1" cellspacing="0" cellpadding="4" width="60%" style="background:#FFFFDD"
 
{|border="1" cellspacing="0" cellpadding="4" width="60%" style="background:#FFFFDD"

Revision as of 06:53, 19 October 2007

CDOObject Introduction

CDOObjects represent the object instances of the models that your application deals with. Internally each such object is managed by a singleton CDOStateMachine. The state machine accurately transits objects and trees of objects through the states TRANSIENT, NEW, CLEAN, DIRTY, PROXY and CONFLICT. When a CDOObject is in one of the persistent states NEW, CLEAN or DIRTY the state machine associates a CDORevision that carries the current values of the modeled structural features. All revisions created or used in a CDOSession are shared by the CDORevisionMnager of that session. CDOObjects are only known to the CDO client. Only revisions are subject to (network) transfers between client and server.


CDOObject.png


A CDOObject is basically an EObject with a handful of additional read-only features as the following java code shows:

public interface CDOObject extends EObject
{
  public CDOClass    cdoClass();
  public CDOID       cdoID();
  public CDOState    cdoState();
  public CDOView     cdoView();
  public CDOResource cdoResource();
  public CDORevision cdoRevision();
}

The method names differ from the regular Java getter notation to make it less likely that name collisions with your model name space occur. To understand the details about the return types you should browse the JavaDoc.

CDOObject Categories

While a user application always deals with EObjects the internal CDOStateMachine interacts with InternalCDOObjects. Depending on how the EObjects relate to the InternalCDOObjects there are a handful of different categories of CDOObjects, that is, implementations of InternalCDOObject. The following type hierarchy shows an example with the shipped test model installed:


InternalCDOObject.png


The main categories are:

  • Native objects result from dynamic models
Model Type Native Legacy Meta
Dynamic Generated Unwoven Woven
Development
Artifacts
Ecore Unaffected N/A
Genmodel N/A Slightly modified Unaffected
Instance Interface CDOObject EObject EModelObject
Statemachine Interface CDOAdapter CDOCallback CDOMeta
Location of
Internal Values
class DynamicCDOObject Java Byte Code
store CDOObject N/A
view CDOAdapter CDOCallback CDOMeta
id CDOSession
state N/A
revision
resource
Location of
Model Values
per CDOState
TRANSIENT EObject
NEW CDORevision EObject
and
CDORevision
DIRTY
CLEAN EModelObject

Wikis: CDO | Net4j | EMF | Eclipse

CDOObject Categories

Model Type Native Legacy Meta
Dynamic Generated Unwoven Woven
Development
Artifacts
Ecore Unaffected N/A
Genmodel N/A Slightly modified Unaffected
Instance Interface CDOObject EObject EModelObject
Statemachine Interface CDOAdapter CDOCallback CDOMeta
Location of
Internal Values
class DynamicCDOObject Java Byte Code
store CDOObject N/A
view CDOAdapter CDOCallback CDOMeta
id CDOSession
state N/A
revision
resource
Location of
Model Values
per CDOState
TRANSIENT EObject
NEW CDORevision EObject
and
CDORevision
DIRTY
CLEAN EModelObject

Wikis: CDO | Net4j | EMF | Eclipse