1.2. Setting up a CMIS test environment
1.2.2. Installing the OpenCMIS InMemory Repository web application
1.3. Writing your first CMIS code using Groovy
1.3.1. Connecting to the repository
1.3.2. Try it—browse the repository using the CMIS Workbench
1.3.3. Try it—run CMIS code in the CMIS Workbench Groovy console
1.4.1. Understanding the limitations of CMIS
1.4.2. Comparing CMIS to the Java Content Repository (JCR) API
Chapter 2. Exploring the CMIS domain model
2.2. Repository—the CMIS database
2.2.1. Repository info and capabilities
Chapter 3. Creating, updating, and deleting objects with CMIS
3.1.1. Requirements for creating an object
3.1.3. Things to think about when creating folders
3.2.1. Try it—rename a document or a folder
3.2.2. Try it—update the content stream
3.3.1. Requirements for deleting objects
Chapter 4. CMIS metadata: types and properties
4.1. What is metadata and why do we need it?
4.2.1. Type definitions are hierarchical and attributes are inherited
4.2.2. Try it—view the types and property definitions using Workbench
4.3. Type collections and hierarchies
4.3.1. Try it—traversing the type hierarchy
4.3.2. Try it—examining property definitions on types
4.3.3. Constraints on property definitions
4.4. CMIS 1.1 metadata features
5.1. Query: a familiar face on search
5.2. Introduction to the CMIS Query language
5.2.1. Reviewing clauses of the SELECT statement
5.2.2. Checking Query capabilities on a service
5.2.3. Try it—checking the Query capabilities of a CMIS service
5.2.4. Try it—your first CMIS Query
5.2.5. Try it—running a query from code
5.4. CMIS SQL extension functions
2. Hands-on CMIS client development
Chapter 6. Meet your new project: The Blend
6.1. Understanding the business requirements and technical approach
6.2. Walking through the finished product
6.3. Setting up the development environment
6.4. Configuring the InMemory server
6.5. Taking first steps with The Blend
6.5.1. Setting up the Eclipse project
Chapter 7. The Blend: read and query functionality
7.1.1. Preparing the HTML part of the browse page
7.1.2. Getting the folder object
7.1.3. Taking advantage of the OperationContext
7.1.4. Getting the folder children
7.2.1. Preparing the HTML part of the document page
7.3.1. Ways to query: there be three
Chapter 8. The Blend: create, update, and delete functionality
8.1.1. Two ways to create folders
8.4. Updating and deleting content
Chapter 9. Using other client libraries
9.1. Working with other client libraries
9.2. Coding in .NET with DotCMIS
9.2.1. Comparing DotCMIS and OpenCMIS
9.2.2. Getting started with DotCMIS
9.2.3. Try it—building a web part with .NET and CMIS to browse The Blend
9.3. Coding in Python with cmislib
9.3.1. Comparing cmislib and OpenCMIS
9.3.3. Connecting to a CMIS repository using the interactive shell
9.3.4. Using cmislib to synchronize objects between two CMIS repositories
9.4.1. Installing the PHP Client
9.4.2. About the PHP Client library
9.4.3. PHP Client architecture
Chapter 10. Building mobile apps with CMIS
10.1. Writing mobile apps with OpenCMIS for Android
10.1.2. Setting up an Android environment
10.2. Writing iOS apps with ObjectiveCMIS
10.2.1. What is ObjectiveCMIS?
10.2.2. Comparing ObjectiveCMIS with OpenCMIS
10.2.3. Getting started with ObjectiveCMIS
10.2.5. Try it—writing an iOS application to capture new tracks for The Blend
11.1.2. The need for JavaScript support
11.2. A close look at the three bindings
11.3. CMIS schemas and schema extensions
11.4. The OpenCMIS low-level API
Chapter 12. Security and control
12.1. General security considerations
12.3. Authentication in web applications using the Browser binding
12.3.1. JavaScript entry points
12.4. Authorization and permissions
12.5.1. Repository-managed retentions
13.2. Selecting the smallest data set
13.3. Performance notes specific to OpenCMIS and DotCMIS
13.5. Selecting the fastest binding
Chapter 14. Building a CMIS server
14.1. Introduction to the OpenCMIS Server Framework
14.2. Generating a server stub
14.3. Implementing the CmisServiceFactory interface
14.4. Implementing the CmisService interface
14.5. Testing the CMIS server with the OpenCMIS TCK
14.6.2. Handling create and delete requests
14.8. Extracting authentication information
Appendix A. Apache Chemistry OpenCMIS components
A.1. Apache Chemistry OpenCMIS
A.1.1. OpenCMIS components overview
A.1.2. Getting and using OpenCMIS components
A.1.6. OpenCMIS components for this book
A.1.7. Using the OpenCMIS client library on an application server
Appendix D. Building web applications with JavaScript
D.1. JavaScript and CMIS background
D.1.1. CMIS and web browsers using XML
D.2. Try it—Hello Browser binding
D.2.2. Your first Browser binding call (getting the repository info)
D.3. CMIS basic operations with the Browser binding and JQuery
D.3.1. Enumerating a folder’s children
Appendix E. References and resources