Programmer's Guide

 

 Introduction
 Understanding the Key Concepts
1 Models
2 Meta Models
3 Model Objects
4 Resources
5 Branches
6 Branch Points
7 Commits
8 Revisions
9 Revision Deltas
10 Repositories
11 Sessions
12 Views
13 Transactions
14 Change Notifications
 Preparing the Workspace
1 Using the Oomph Setup Engine
 Preparing the Models
1 Creating an Ecore Model
2 Using the CDO Model Importer
3 Using the CDO Model Migrator
4 Migrating a GenModel Manually
5 Generating a Model
6 Modifying Generated Getters and Setters
 Developing Client Applications
 Architecture of a Client Application
1 OSGi
2 EMF
3 CDO Client
4 Net4j Core
5 Models
6 Protocol
7 Transport
 Anatomy of a Model Object
1 CDOID
2 CDORevision
3 CDOView
4 CDOState
 Working with Sessions
1 Creating and Configuring Sessions
1.1 Session Configurations
1.2 Net4j Connectors
1.3 Authentication and Security
1.4 Recovering from Disconnects
1.5 Passive Updates and Refreshing
1.6 Waiting For Updates
2 View Management
2.1 Purpose of Views and Transactions
2.2 Branch Points and the View Target
2.3 Opening Views and Transactions
2.4 Accessing Open Views
2.5 Finding Views by ID
2.6 Listening for View-Related Events
2.7 Closing Views
3 Authorizable Operations
4 Client and Server Entities
5 Session Facilities
5.1 Repository Info
5.2 Package Registry
5.3 Revision Manager
5.3.1 Working with Revisions
5.3.2 Pre-fetching Revisions
5.4 Branch Manager
5.4.1 Working with Branches
5.4.2 Working with Tags
5.5 Fetch Rule Manager
5.6 Commit Info Manager
5.7 User Info Manager
5.8 Remote Session Manager
5.8.1 Exchanging Messages With Other Sessions
5.8.2 Collaborating on Shared Topics
5.8.3 Integrating Topics With Your User Interface
6 Session Events
7 Session Options
7.1 Generated Package Emulation
7.2 Passive Update Enabled
7.3 Passive Update Mode
7.4 Lock Notification Enabled
7.5 Lock Notification Mode
7.6 Collection Loading Configuration
7.7 Large Object Cache
7.8 Permission Updater
7.9 Delegable View Lock Enabled
7.10 Prefetch Send Max Revision Keys
8 Session Properties
9 Session Registry
 Working with Views
1 Understanding Views and Their Types
2 Opening and Closing Views
3 Thread Safety
3.1 Using Critical Sections
3.2 Using a Delegable Lock
4 Understanding the CDO File System
4.1 The Root Resource
4.2 Resource Folders
4.3 Model Resources
4.4 Binary Resources
4.5 Text Resources
5 Resource Sets and Their Usage
6 Navigating Models
7 Waiting For Updates
8 Querying Resources
9 Querying Model Objects
10 Querying Cross References
11 Custom Queries
12 Units
13 View Events
14 View Options
15 View Properties
 Working with Transactions
1 Creating and Managing Transactions
2 Local Changes and Dirty State
3 Committing Changes
4 Commit Retry and Conflicts
5 Rolling Back Changes
6 Partial Commits
7 Savepoints
8 Nested Transaction Scopes
9 Merge
10 Revert
11 Change Export and Import
12 File-Backed Transactions
13 Queries in Transactions
14 Transaction Options
 Locking
1 Lock Types
1.1 Read Locks
1.2 Write Locks
1.3 Write Option Locks
2 Acquiring, Releasing, and Inspecting Locks
3 Optimistic Locking
4 Pessimistic Locking
5 Lock State
6 Durable Locking
7 Lock Notifications and Events
8 Locking and Transactions
9 Locking and Reconnection
10 Performance and Usage Guidance
 Large Objects
1 The Large-Object Model
2 Creating Binary Large Objects
3 Creating Character Large Objects
4 Assigning and Persisting Large Objects
5 Reading and Streaming Contents
6 Loading and Caching
7 Repository and Store Support
8 Large Objects in Model Features
9 Identity, Equality, and Change Detection
10 Resource Ownership and Failure Behavior
11 Performance and Usage Guidance
 Branching and Versioning
1 Mental Model
2 Branches and Branch Points
3 Versions and Revisions
4 Historical Views and Navigating History
4.1 An object's commit history is available through
5 Comparing Historical State
6 Branching, Transactions, and Merge Concepts
7 Revert, Tags, and Repository Capability
8 Practical Guidance
 Notifications and Event Handling
1 The Notification and Event Model
2 EMF Model Notifications
3 CDO Events and Listeners
4 Session Events
5 View Events
6 Transaction Events
7 Remote Changes, Invalidations, and Subscriptions
8 Lock Notifications
9 Event Threading and Delivery
10 Listener Lifetime, Errors, and Ordering
11 Choosing the Right Mechanism
 Integrating with EMF and Other Frameworks
1 CDO in the EMF Programming Model
2 ResourceSet Integration
3 CDO URIs
4 View Providers
5 View-Provider Extension Point
6 Standard EMF Tools and Editing
7 Adapters and Remote Changes
8 UI and Other Frameworks
9 Lifecycle and Choosing an Integration
 Advanced Topics
1 Modern Partial Collection Loading
2 Cache-Aware Revision Requests
3 Units and Bounded Graph Loading
4 Queries and Large-Scale Model Access
5 Reconnect and Session Recovery
6 Conflict Customization and Diagnostics
7 Advanced Performance Guidance
 Best Practices and Common Pitfalls
1 Own Sessions, Views, Transactions, and Resources Explicitly
2 Reuse Sessions, Keep Views Purposeful, and Bound Transactions
3 Use Supported Concurrency Boundaries
4 Choose Optimistic or Pessimistic Coordination Deliberately
5 Handle Conflicts and Retries as Business Decisions
6 Load Only What the Operation Needs
7 Treat Remote Changes and Recovery as Asynchronous Failure Modes
8 Preserve Branch, History, and Integration Context
9 Distinguish Failure Classes and Keep APIs Current
10 Common CDO Pitfalls
 Developing Server Applications
 Server Architecture
1 Repository Core
2 Store Boundary
3 Protocol and Transport Boundary
4 Container and Lifecycle
 CDO Server Application and Startup
1 Startup and Shutdown
2 Early Extensions
3 Standalone, Embedded, and OSGi Use
 The Managed Container
1 Factories, Product Groups, and Lookup
2 Lifecycle and Configuration
3 Standalone Container Example
 Application Extensions
1 Choosing an Extension Variant
2 Lifecycle Discipline
3 Repository-aware Extension Example
 Creating and Configuring Repositories
1 Programmatic Repository Setup
2 MEMStore and Embedded Repositories
3 Existing Persistent Stores
 Repository Services and Events
1 Repository Services
2 Server Session, View, and Transaction Context
3 Events and Listener Lifetimes
 Repository Handlers and Commit Processing
1 Read and Write Access
2 Commit Information and Conflicts
3 Application-facing Commit Flow
 Security, Queries, and Specialized Extensions
1 Repository Protection
2 Permission Cache SPI
3 Authentication Example
4 Query Handlers
5 Extension Boundaries
 Advanced Server Integration
1 Synchronization and Failover
2 Monitoring and Activity Logs
3 Import and Export
4 Net4j and Other Intentional Extensions
 Installing the Sources