1 Preface

1.1 Previous Versions
1.2 Coverage
1.2.1 Classes and Interfaces
1.2.2 Null Parameters
1.3 Typographical Conventions
1.3.1 String Literals in Syntactic
1.4 System
1.5 License
1.6 Acknowledgements

2 Introduction

3 Repository Model

3.1 Overview
3.1.1 Persistent Workspaces
3.1.2 Items
3.1.2.1 Shared Nodes
3.1.3 Names
3.1.3.1 Same-Name Siblings
3.1.4 Paths
3.1.5 Identifiers
3.1.6 Property Types
3.1.6.1 Repository Diagram
3.1.7 Node Types
3.1.8 Sessions
3.1.8.1 User
3.1.8.2 Current Session and Workspace
3.2 Names
3.2.1 Namespaces
3.2.2 Local Names
3.2.3 Use of JCR Names
3.2.3.1 Item Names
3.2.3.2 Paths
3.2.3.3 NAME and PATH Values
3.2.3.4 Node Types
3.2.3.5 Constants
3.2.4 Naming Restrictions
3.2.5 Lexical Form of JCR Names
3.2.5.1 Expanded Form
3.2.5.2 Qualified Form
3.2.5.3 Qualified Form with the Empty Namespace
3.2.5.4 Exposing Non-JCR Names
3.2.6 Use of Qualified and Expanded Names
3.2.7 Equality of Names
3.3 Identifiers
3.3.1 Identifier Assignment
3.3.2 Referenceable Identifiers
3.3.3 Correspondence by Identifier
3.4 Paths
3.4.1 Path Segment
3.4.1.1 Position of Segments in a Path
3.4.2 Path Resolution
3.4.2.1 Parent Resolution
3.4.2.2 Child Resolution
3.4.3 Lexical Forms
3.4.3.1 Standard Form
3.4.3.2 Non-Standard Form
3.4.3.3 Lexical Path Grammar
3.4.3.4 Parsing Lexical Paths
3.4.4 Absolute and Relative Paths
3.4.4.1 Absolute Path
3.4.4.2 Relative Path
3.4.5 Normalized Paths
3.4.6 Passing Paths
3.4.7 Returning Paths
3.4.8 Equality of Paths
3.4.8.1 Segment Equality
3.4.8.2 Semantic Equality
3.4.8.3 Application of Path Equality
3.5 Namespace Mapping
3.5.1 Namespace Registry
3.5.1.1 Empty Prefix and Empty Namespace
3.5.1.2 Additional Built-in Namespaces
3.5.2 Session-Local Mappings
3.5.2.1 Effect of Session Namespace Mappings
3.5.3 Namespace Conventions
3.6 Properties
3.6.1 Property Types
3.6.1.1 STRING
3.6.1.2 URI
3.6.1.3 BOOLEAN
3.6.1.4 LONG
3.6.1.5 DOUBLE
3.6.1.6 DECIMAL
3.6.1.7 BINARY
3.6.1.8 DATE
3.6.1.9 NAME
3.6.1.10 PATH
3.6.1.11 WEAKREFERENCE
3.6.1.12 REFERENCE
3.6.2 Undefined Type
3.6.3 Single and Multi-Value Properties
3.6.4 Property Type Conversion
3.6.4.1 From STRING To
3.6.4.2 From BINARY To
3.6.4.3 From DATE To
3.6.4.4 From DOUBLE To
3.6.4.5 From DECIMAL To
3.6.4.6 From LONG To
3.6.4.7 From BOOLEAN To
3.6.4.8 From NAME To
3.6.4.9 From PATH To
3.6.4.10 From URI To
3.6.4.11 From REFERENCE To
3.6.4.12 From WEAKREFERENCE To
3.6.5 Comparison of Values
3.6.5.1 CompareTo Semantics
3.6.5.2 STRING, URI, REFERENCE and WEAKREFERENCE
3.6.5.3 DATE
3.6.5.4 DOUBLE
3.6.5.5 LONG
3.6.5.6 DECIMAL
3.6.5.7 BOOLEAN
3.6.5.8 NAME
3.6.5.9 PATH
3.6.5.10 BINARY
3.6.6 Value.equals Method
3.6.7 Length of a Value
3.7 Node Types
3.7.1 Node Type Definition Attributes
3.7.1.1 Node Type Name
3.7.1.2 Supertypes
3.7.1.3 Abstract
3.7.1.4 Mixin
3.7.1.5 Queryable Node Type
3.7.1.6 Orderable Child Nodes
3.7.1.7 Primary Item
3.7.1.8 Property Definitions
3.7.1.9 Child Node Definitions
3.7.2 Item Definition Attributes
3.7.2.1 Item Definition Name
3.7.2.2 Protected
3.7.2.3 Auto-Created
3.7.2.4 Mandatory
3.7.2.5 On-Parent-Version
3.7.3 Property Definition Attributes
3.7.3.1 Property Type
3.7.3.2 Default Values
3.7.3.3 Available Query Operators
3.7.3.4 Full-Text Searchable
3.7.3.5 Query-Orderable
3.7.3.6 Value Constraints
3.7.3.7 Multi-Value
3.7.4 Child Node Definition Attributes
3.7.4.1 Required Primary Node Types
3.7.4.2 Default Primary Node Type
3.7.4.3 Same-Name Siblings
3.7.5 Mixin Node Types
3.7.5.1 Mixins Apply Per Node Instance
3.7.5.2 Mixins and Inheritance
3.7.5.3 Mixins Are Not Stand-Alone
3.7.6 Node Type Inheritance
3.7.6.1 Supertype Relation
3.7.6.2 Subtype Relation
3.7.6.3 Is-of-Type Relation
3.7.6.4 Abstract Node Types
3.7.6.5 Effective Node Type
3.7.6.6 Semantics of Subtyping
3.7.6.7 Node Type Attribute Subtyping Rules
3.7.6.8 Item Definitions in Subtypes
3.7.6.9 Effect of Inheritance Rules
3.7.7 Applicable Item Definition
3.7.8 Root Node Type
3.7.9 Node Type Notation
3.7.9.1 Implementation Variants in Node Types
3.7.10 Base Primary Node Type
3.7.10.1 nt:base
3.7.11 Standard Application Node Types
3.7.11.1 nt:hierarchyNode
3.7.11.2 nt:file
3.7.11.3 nt:linkedFile
3.7.11.4 nt:folder
3.7.11.5 nt:resource
3.7.11.6 mix:title
3.7.11.7 mix:created
3.7.11.8 mix:lastModified
3.7.11.9 mix:language
3.7.11.10 mix:mimeType
3.7.11.11 nt:address
3.7.12 Entity Tags
3.7.12.1 mix:etag
3.7.13 Unstructured Content
3.7.13.1 nt:unstructured
3.7.14 Node Type Definition Storage
3.7.14.1 nt:nodeType
3.7.14.2 nt:propertyDefinition
3.7.14.3 nt:childNodeDefinition
3.7.14.4 Representing Null Attributes
3.7.14.5 Representing Residual Items
3.7.15 Repository Feature Node Types
3.7.16 JCR Node Type Variants
3.7.17 External Node Types
3.7.17.1 Restrictions
3.8 Referenceable Nodes
3.8.1.1 mix:referenceable
3.8.2 Referential Integrity
3.8.2.1 Exceptions to Referential Integrity
3.8.3 Referenceable Identifiers
3.8.3.1 Identifier Assignment
3.8.3.2 Identifier Immutable across Move and Clone
3.8.3.3 Implementation Variations
3.9 Shareable Nodes Model
3.9.1 mix:shareable
3.9.2 Shared Set
3.9.3 Child Nodes of Shared Nodes
3.9.4 Properties of Shared Nodes
3.9.5 Shared Nodes Diagram
3.9.6 Deemed Path
3.9.7 Ancestors of Shared Nodes
3.9.8 Identifiers
3.9.9 Share Cycle
3.10 Corresponding Nodes
3.10.1.1 Root Node Correspondence
3.10.1.2 Correspondence Semantics
3.10.1.3 Cross-Workspace Operations
3.10.1.4 Versioning and Corresponding Nodes
3.10.1.5 Corresponding Nodes Diagram
3.11 System Node
3.12 Unfiled Content
3.13 Versioning Model
3.13.1 Overview
3.13.1.1 Versionable Nodes
3.13.1.2 Check-In
3.13.1.3 Version History
3.13.1.4 Successor and Predecessor
3.13.1.5 Simple and Full Versioning
3.13.1.6 Version Storage
3.13.1.7 Check-Out
3.13.1.8 Restore
3.13.2 Versionable Nodes
3.13.2.1 mix:simpleVersionable
3.13.2.2 Checked-In or Checked-Out
3.13.2.3 mix:versionable
3.13.2.4 Version History Reference
3.13.2.5 Base Version Reference
3.13.2.6 Predecessors
3.13.2.7 Merge Failed
3.13.2.8 Activity
3.13.2.9 Configuration
3.13.3 Versions
3.13.3.1 nt:version
3.13.3.2 Creation Date
3.13.3.3 Predecessors
3.13.3.4 Successors
3.13.3.5 Frozen Node
3.13.3.6 Activity
3.13.4 Frozen Nodes
3.13.4.1 nt:frozenNode
3.13.4.2 Frozen Primary Type
3.13.4.3 Frozen Mixin Types
3.13.4.4 Frozen Identifier
3.13.4.5 Residual Properties and Child Nodes
3.13.4.6 References in a Frozen Node
3.13.5 Version History
3.13.5.1 nt:versionHistory
3.13.5.2 Root Version
3.13.5.3 Versions
3.13.5.4 Versionable Identifier
3.13.5.5 Version Labels
3.13.5.6 Copied From
3.13.6 Version Graph
3.13.6.1 Root Version
3.13.6.2 Base Version
3.13.7 Versioning and Multiple Workspaces
3.13.8 Version Storage
3.13.9 Versionable State
3.13.10 FullVersioning Diagram
3.13.11 Simple Versioning Diagram
3.13.12 Versioning and Corresponding Nodes Diagram

4 Connecting

4.1 Repository Object
4.1 Repository Object
4.1.1 Example Repository Acquisition
4.1.2 Thread Safety
4.2 Login
4.2.1 Credentials
4.2.2 Guest Credentials
4.2.3 Workspace Name
4.2.4 External Authentication
4.3 Impersonate
4.4 Session
4.4.1 User
4.4.2 Attributes
4.4.3 Session to Repository
4.4.4 Live Status
4.4.5 Logout
4.5 Workspace
4.5.1 Session to Workspace
4.5.2 Workspace to Session
4.5.3 Workspace Name
4.5.4 Accessible Workspaces

5 Reading

5.1 Direct Access
5.1.1 Getting the Root Node
5.1.2 Testing for Existence by Absolute Path
5.1.3 Access by Absolute Path
5.1.4 Getting a Node by Identifier
5.1.5 Testing for Existence by Relative Path
5.1.6 Access by Relative Path
5.1.7 Primary Item Access
5.1.8 Node and Property with Same Name
5.2 Traversal Access
5.2.1 Testing Existence
5.2.2 Iterating Over Child Items
5.2.2.1 Name Patterns
5.2.2.2 Name Globs
5.2.2.3 Child Node Order Preservation
5.2.3 Export
5.3 Query Access
5.4 Relationship among Access Modes
5.5 Effect of Access Denial on Read
5.6 Item Information
5.6.1 Item to Session
5.6.2 Item in Hierarchy
5.6.3 Item Subclass
5.6.4 Item Comparison
5.6.5 Item Visitor
5.7 Node Identifier
5.8 Node Index
5.9 Iterators
5.9.1 Iterator Lifespan
5.10 Reading Properties
5.10.1 Getting a Value
5.10.2 Value Type
5.10.3 Value Length
5.10.4 Standard Value Read Methods
5.10.4.1 STRING
5.10.4.2 BINARY
5.10.4.3 LONG
5.10.4.4 DOUBLE
5.10.4.5 DECIMAL
5.10.4.6 DATE
5.10.4.7 BOOLEAN
5.10.4.8 NAME
5.10.4.9 PATH
5.10.4.10 REFERENCE and WEAKREFERENCE
5.10.5 Binary Object
5.10.5.1 Disposing of a Binary Object
5.10.5.2 Deprecated Binary Behavior
5.10.6 Dereferencing
5.10.6.1 Manual Dereference
5.10.6.2 Dereferencing Convenience Methods
5.10.7 Backtracking References
5.10.8 Single-Value Property Read Methods
5.10.9 Reading Multi-Value Properties
5.10.10 PropertyType Class
5.11 Namespace Mapping

6 Query

6.1 Optional Joins
6.2 Introduction to the Abstract Query Model
6.2.1 Selectors
6.2.2 Joins
6.2.3 Constraints
6.2.4 Orderings
6.2.5 Query Results
6.3 Equality and Comparison
6.4 Query Validity
6.5 Search Scope
6.6 Notations
6.6.1 AQM Notation
6.6.2 JCR-SQL2 Notation
6.6.2.1 String Literals in JCR-SQL2 Grammar
6.6.3 JCR-JQOM Notation
6.7 Abstract Query Model and Language Bindings
6.7.1 Query
6.7.2 Source
6.7.3 Selector
6.7.4 Name
6.7.5 Join
6.7.6 JoinType
6.7.7 JoinCondition
6.7.8 EquiJoinCondition
6.7.9 SameNodeJoinCondition
6.7.10 ChildNodeJoinCondition
6.7.11 DescendantNodeJoinCondition
6.7.12 Constraint
6.7.13 And
6.7.14 Or
6.7.15 Not
6.7.16 Comparison
6.7.17 Operator
6.7.18 PropertyExistence
6.7.19 FullTextSearch
6.7.20 SameNode
6.7.21 ChildNode
6.7.22 DescendantNode
6.7.23 Path
6.7.24 Operand
6.7.25 StaticOperand
6.7.26 DynamicOperand
6.7.27 PropertyValue
6.7.28 Length
6.7.29 NodeName
6.7.30 NodeLocalName
6.7.31 FullTextSearchScore
6.7.32 LowerCase
6.7.33 UpperCase
6.7.34 Literal
6.7.35 BindVariable
6.7.36 Prefix
6.7.37 Ordering
6.7.38 Order
6.7.39 Column
6.8 QueryManager
6.8.1 Supported Languages
6.9 Query Object
6.9.1 QueryObjectModelFactory
6.9.1.1 Serialized Query Object Model
6.9.2 Getting the Statement
6.9.3 Getting the Language
6.9.4 Query Limit
6.9.5 Query Offset
6.9.6 Bind Variables
6.9.7 Stored Query
6.9.7.1 nt:query
6.9.7.2 Stored Query Path
6.9.7.3 Retrieving a Stored Query
6.9.7.4 Namespace Fragility
6.10 Literal Values
6.11 QueryResult
6.11.1 Table View
6.11.1.1 Row
6.11.2 Node View
6.12 Query Scope
6.12.1 Access Restrictions
6.12.2 Queryable Content
6.12.3 Query Result Items

7 Export

7.1 Exporting a Subgraph
7.2 System View
7.3 Document View
7.3.1 XML Text
7.3.2 Invalid Item Names
7.3.3 Multi-Value Properties
7.3.4 Invalid Characters in Values
7.4 Escaping of Names
7.5 Escaping of Values
7.6 Export API
7.6.1 System View Export
7.6.2 Document View Export
7.7 Export Scope
7.8 Encoding

8 Node Type Discovery

8.1 NodeTypeManager Object
8.2 NodeType Object
8.2.1 Name
8.2.2 Supertypes and Subtypes
8.2.3 Abstract
8.2.4 Mixin
8.2.5 Queryable Node Type
8.2.6 Orderable Child Nodes
8.2.7 Primary Item
8.2.8 Property Definitions
8.2.9 Child Node Definitions
8.3 ItemDefinition Object
8.3.1 Name
8.3.2 Protected
8.3.3 Auto-Created
8.3.4 Mandatory
8.3.5 On-Parent-Version
8.3.6 Declaring Node Type
8.4 PropertyDefinition Object
8.4.1 Required Type
8.4.2 Default Values
8.4.3 Available Query Operators
8.4.4 Full-Text Searchable
8.4.5 Query-Orderable
8.4.6 Value Constraints
8.4.7 Multi-value
8.5 NodeDefinition Object
8.5.1 Required Primary Node Types
8.5.2 Default Primary Node Type
8.5.3 Same-Name Siblings
8.6 Node Type Information for Existing Nodes
8.6.1.1 Discovery of Item Definitions
8.6.1.2 Root Node Definition
8.6.1.3 Root Declaring Node Type

9 Permissions and Capabilities

9.1 Permissions
9.2 Capabilities

10 Writing

10.1 Types of Write Methods
10.1.1 Session-Write
10.1.2 Workspace-Write
10.1.3 Transactions
10.1.4 Visibility of Changes
10.1.5 Write Methods
10.1.5.1 Session-Write
10.1.5.2 Workspace-Write Methods
10.1.5.3 Optional In-Content Side-Effects
10.2 Core Write Methods
10.3 Session and Workspace Objects
10.3.1 Writing Without a Transaction
10.3.2 Writing Within a Transaction
10.4 Adding Nodes and Setting Properties
10.4.1 Adding a Node
10.4.2 Setting a Property
10.4.2.1 Changing Existing Properties
10.4.2.2 Type-Specific Signatures
10.4.2.3 Setting a DECIMAL Property
10.4.2.4 No Null Values
10.4.2.5 Multi-value Properties and Null
10.4.2.6 Setting Multi-value vs. Single-value Properties
10.4.3 Creating Value Objects
10.4.3.1 Type-Specific Methods
10.4.3.2 Creating a BINARY Value
10.5 Selecting the Applicable Item Definition
10.6 Moving Nodes
10.6.1 Referenceable vs Non-Referenceable Nodes
10.7 Copying Nodes
10.7.1 Copying Within a Workspace
10.7.2 Copying Across Workspaces
10.7.3 Copying to an Empty Location
10.7.4 Copying to an Existing Node
10.8 Cloning and Updating Nodes
10.8.1 Cloning Nodes Across Workspaces
10.8.2 Getting a Corresponding Node
10.8.3 Updating Nodes Across Workspaces
10.9 Removing Nodes and Properties
10.9.1 Setting a Property to Null
10.9.1.1 Removing a REFERENCE Target
10.10 Node Type Assignment
10.10.1 Node Type Assignment Behavior
10.10.2 Updating a Node\'s Primary
10.10.3 Assigning Mixin Node Types
10.10.3.1 jcr:mixinTypes
10.10.3.2 Pre-emptive Node Type Validation
10.10.3.3 Automatic Addition and Removal of Mixins
10.11 Saving
10.11.1 Refresh
10.11.2 Session Status
10.11.3 Item Status
10.11.4 Persisting by Identifier
10.11.5 Timing of Validation
10.11.6 Invalid States
10.11.7 Reflecting Item State
10.11.8 Invalid Items
10.11.9 Seeing Changes Made by Other Sessions
10.12 Namespace Registration
10.12.1 Registering a Namespace
10.12.2 Unregistering a Namespace
10.12.3 Namespace Restrictions
10.12.4 Namespace Information
10.12.4.1 Relationship to Session Namespace Mapping

11 Import

11.1 Importing Document View
11.1.1 Roundtripping
11.2 Import System View
11.3 Respecting Property Semantics
11.4 Determining Node Types
11.5 Determining Property Types
11.6 Event-Based Import Methods
11.6.1 Workspace Event-Based Import
11.6.2 Session Event-Based Import
11.7 Stream-Based Import Methods
11.7.1 Workspace Stream-Based Import
11.7.2 Session Stream-Based Import
11.8 Identifier Handling
11.8.1 Create New Identifiers
11.8.2 Remove Existing Node
11.8.3 Replace Existing Node
11.8.4 Throw on Identifier Collision
11.8.5 Usage of Term UUID
11.9 Importing jcr:root

12 Observation

12.1 Event Model
12.2 Scope of Event Reporting
12.2.1 Externally Caused Events
12.3 The Event Object
12.3.1 Event Types
12.3.2 Event Information
12.3.3 Event Information on Move and Order
12.3.3.1 Externally Caused NODE_MOVED Event
12.3.4 User ID
12.3.5 User Data
12.3.6 Event Date
12.4 Event Bundling
12.4.1 Event Ordering
12.5 Asynchronous Observation
12.5.1 Observation Manager
12.5.2 Adding an Event Listener
12.5.3 Event Filtering
12.5.3.1 Access Privileges
12.5.3.2 Event Types
12.5.3.3 Local and Nonlocal
12.5.3.4 Node Characteristics
12.5.4 Re-registration of Event Listeners
12.5.5 Implementation-Specific Restrictions
12.5.6 Event Iterator
12.5.7 Listing Event Listeners
12.5.7.1 EventListenerIterator
12.5.8 Removing Event Listeners
12.5.9 User Data
12.6 Journaled Observation
12.6.1 Event Journal
12.6.2 Journaling Configuration
12.6.3 Event Bundling in Journaled Observation
12.7 Importing Content
12.8 Exceptions

13 Workspace Management

13.1 Creation and Deletion of Workspaces

14 Shareable Nodes

14.1 Creation of Shared Nodes
14.1.1 Shared Node Creation on Restore
14.1.2 Shared Node Creation on Import
14.2 Shared Set
14.3 Removing Shared Nodes
14.4 Transient Layer
14.5 Copy
14.6 Share Cycles
14.7 Export
14.8 Import
14.9 Observation
14.10 Locking
14.11 Node Type Constraints
14.12 Versioning
14.13 Restore
14.14 IsSame
14.15 RemoveMixin
14.16 Query

15 Versioning

15.1 Creating a Versionable Node
15.1.1 VersionHistory Object
15.1.1.1 Root Version
15.1.1.2 Versions
15.1.1.3 Frozen Nodes
15.1.1.4 VersionHistory Extends Node
15.1.2 Getting the Base Version
15.1.3 Moving Versionable Nodes
15.1.4 Copying Versionable Nodes and Version Lineage
15.1.4.1 Version Lineage
15.1.5 Cloning Versionable Nodes
15.1.6 Sharing Versionable Nodes
15.2 Check-In: Creating a Version
15.2.1 Version Object
15.2.1.1 Version Name
15.2.1.2 Created Date
15.2.1.3 Containing History
15.2.1.4 Predecessors
15.2.1.5 Successors
15.2.1.6 Frozen Node
15.2.1.7 Version Extends Node
15.2.2 Read-Only on Check-In
15.3 Check-Out
15.3.1.1 Testing for Checked-Out Status
15.3.2 Checkpoint
15.4 Version Labels
15.4.1.1 nt:versionLabels
15.4.1.2 Adding a Version Label
15.4.1.3 Testing for a Version Label
15.4.1.4 Getting Version Labels
15.4.1.5 Removing a Version Label
15.5 Searching Version Histories
15.6 Retrieving Version Storage Nodes
15.7 Restoring a Version
15.7.1 Simple vs. Full Versioning Before Restore
15.7.2 Restoring Type and Identifier
15.7.3 Restoring Properties
15.7.4 Identifier collision
15.7.5 Chained Versions on Restore
15.7.6 Restoring Child Nodes
15.7.7 Simple vs. Full Versioning after Restore
15.7.8 Restore Variants
15.7.8.1 Restore by Version Name
15.7.8.2 Restore by Version Label
15.7.8.3 Restoring a Group of Versions
15.8 Removing a Version
15.9 Merge
15.9.1 Merge Algorithm
15.9.2 Merging Branches
15.9.3 Merging Activities
15.10 Serialization of Version Storage
15.11 Versioning within a Transaction
15.12 Activities
15.12.1 Support for Activities
15.12.2 Related Node Types
15.12.3 Activity Storage
15.12.3.1 Activity Storage is Read-Only
15.12.4 Creating an Activity
15.12.5 Setting the Current Activity
15.12.6 Getting the Current Activity
15.12.7 Merging an Activity into Another Workspace
15.12.8 Removing an Activity
15.13 Configurations and Baselines
15.13.1 Support for Configurations and Baselines
15.13.2 Configuration Proxy Nodes
15.13.2.1 nt:configuration
15.13.2.2 Structure of Configuration Storage
15.13.3 Creating a Configuration
15.13.4 Baselines
15.13.4.1 Creating a Baseline
15.13.4.2 Restoring a Baseline
15.13.4.3 Creating a Configuration from an Existing Baseline

16 Access Control Management

16.1 Access Control Manager
16.2 Privilege Discovery
16.2.1 Aggregate Privileges
16.2.2 Abstract Privileges
16.2.3 Standard Privileges
16.2.4 Supported Privileges
16.2.5 Retrieving Privileges by Name
16.2.6 Privilege Object
16.2.7 Testing Privileges
16.3 Access Control Policies
16.3.1 Applicable Policies
16.3.2 Binding a Policy to a Node
16.3.3 Binding vs. Effect
16.3.4 Getting the Bound Policies
16.3.5 Scope of a Policy
16.3.6 Default Access Control
16.3.7 Removing a Policy
16.3.8 Interaction with the Transient Layer and Transactions
16.3.9 Access to Properties
16.3.10 Access Control Restrictions
16.3.11 Exposing Policies in Content
16.3.12 Interaction with Protected Properties
16.3.13 Interaction with Versioning
16.4 Named Access Control Policies
16.5 Access Control Lists
16.5.1 Access Control Entries
16.5.2 Getting the Access Control Entries
16.5.3 Adding an Access Control Entry
16.5.4 Removing an Access Control Entry
16.5.5 Modification vs. Effect
16.5.6 Privileges to Manage Entries
16.5.7 Principal Discovery
16.6 Privileges Permissions and Capabilities
16.6.1 Privileges
16.6.2 Permissions
16.6.3 Capabilities

17 Locking

17.1 Lockable
17.2 Shallow and Deep Locks
17.3 Lock Owner
17.4 Placing and Removing a Lock
17.5 Lock Token
17.6 Session-Scoped and Open-Scoped Locks
17.7 Effect of a Lock
17.8 Timing Out
17.9 Locks and Persistence
17.10 Locks and Transactions
17.11 LockManager Object
17.11.1 Locking a Node
17.11.2 Getting a Lock
17.11.3 Unlocking a Node
17.11.4 Testing for Lock Holding
17.11.5 Testing for Locked Status
17.11.6 Adding a Lock Token
17.11.7 Getting Lock Tokens
17.11.8 Removing a Lock Token
17.12 Lock Object
17.12.1 Getting the Lock Owner
17.12.2 Testing Lock Depth
17.12.3 Getting the Lock Holding Node
17.12.4 Getting a Lock Token
17.12.5 Testing Lock Aliveness
17.12.6 Testing Lock Scope
17.12.7 Testing Lock Owning Session
17.12.8 Getting Seconds Remaining
17.12.9 Refreshing a Lock
17.13 LockException

18 Lifecycle Management

18.1 mix:lifecycle
18.2 Node Methods

19 Node Type Management

19.1 NodeTypeDefinition
19.2 NodeTypeManager
19.2.1 Creating a NodeTypeTemplate
19.2.2 Creating a NodeDefinitionTemplate
19.2.3 Creating a PropertyDefinitionTemplate
19.2.4 Registering a Node Type
19.2.4.1 Updating Node Types
19.2.5 Unregistering a Node Type
19.2.6 Testing for Node Types
19.3 Node Type Registration Restrictions
19.4 Templates
19.4.1 NodeTypeTemplate
19.4.1.1 Setting Property and Child Node Definitions
19.4.1.2 Default Values of Node Type Attributes
19.4.2 PropertyDefinitionTemplate
19.4.2.1 Default Values of Property Definition Attributes
19.4.3 NodeDefinitionTemplate
19.4.3.1 Default Values of Child Node Definition Attributes

20 Retention and Hold

20.1 Retention Manager
20.2 Placing a Hold
20.3 Effect of a Hold
20.4 Getting the Holds present on a Node
20.5 Removing a Hold
20.6 Hold Object
20.7 Setting a Retention Policy
20.8 Getting a Retention Policy
20.9 Effect of a Retention Policy
20.10 RetentionPolicy object
20.11 Removing a Retention Policy

21 Transactions


21.2 User Managed Transactions: Sample Code
21.3 Save vs. Commit
21.4 Single Session Across Multiple Transactions

22 Same-Name Siblings

22.1 Scope of Same-Name Siblings
22.2 Addressing Same-Name Siblings by Path
22.3 Reading and Writing Same-Name Siblings
22.3.1 Getting a Same-Name Sibling Set
22.3.2 Getting a Particular Same-Name Sibling Node
22.3.3 Getting a Node\'s Index
22.3.4 When a Same-Name Sibling is a Primary Item
22.3.5 Removing a Same-Name Sibling Node
22.4 Properties Cannot Have Same-Name Siblings
22.5 Effect of Access Denial on Read of Same-Name Siblings

23 Orderable Child Nodes

23.1 Scope of Orderable Child Nodes
23.2 Ordering Child Nodes
23.3 Adding a New Child Node
23.4 Orderable Same-Name Siblings
23.5 Non-orderable Child Nodes
23.6 Properties are Never Orderable

24 Repository Compliance

24.1 Definition of Support
24.2 Repository Descriptors
24.2.1 Repository Information
24.2.2 General
24.2.3 Node Operations
24.2.4 Node Type Management
24.2.5 Query
24.2.6 Deprecated Descriptors
24.2.7 Implementation-Specific Descriptors
24.3 Node Type-Related Features
24.4 Implementation Issues

25 Appendix

25.1 Treatment of Identifiers
25.2 Compact Node Type Definition Notation
25.2.1 String Literals in CND Grammar
25.2.2 Variant Node Type Definitions
25.2.3 CND Grammar
25.2.3.1 Case Insensitive Keywords
25.2.3.2 Escaping
25.2.3.3 Comments
25.2.3.4 Extension Syntax
25.2.3.5 Whitespace and Short Forms
25.2.4 Examples