This document is outdated!
The former Chemistry library and OpenCMIS were merged into one Java library (OpenCMIS).
Chemistry is the name of the Apache CMIS implementation project, while OpenCMIS is the name of Chemistry's Java implementation.

The Chemistry API encompasses two levels:

  • a low-level SPI between a client and a server that mirrors the CMIS specification closely (it is expected that the SPI will be used when either the client or the server implements one of the HTTP protocols defined in CMIS),
  • a high-level API that wraps the SPI to provide more object-oriented notions of connections, folders and documents, and that hides the nitty-gritty details of the protocols.

Both levels of APIs are based on a common set of low-level constants and enums tied to the CMIS domain model (property types, capabilities, etc.).

You will find example uses of the API on a separate page.

Repository

A Repository is the main access point to a remote CMIS repository. You get a Repository from the static RepositoryManager, which holds instances of local or remote repositories, registered there by bootstrap application code.

From a Repository you can get to the object types and property definitions (using the TypeManager interface), and create actual connections to the repository. A connection can be high-level (Connection), or low-level (SPI). A Connection is always tied to a low-level SPI.

Data transfer objects and constants

These are used both by Connections and SPIs.

  • ObjectId: this holds the id of an object.
  • Type, PropertyDefinition, PropertyType: type-related interfaces and constants.
  • ObjectEntry: this holds data about an object: mainly its type and the values of its properties.
  • ContentStream: a content stream, basically a stream, MIME type, filename and length.
  • Rendition: information about a rendition (kind, id, etc.).
  • ACLPropagation, BaseType, CapabilityACL, CapabilityChange, CapabilityJoin, CapabilityQuery, CapabilityRendition, ChangeType, ContentStreamPresence, PermissionsSupported, RelationshipDirection, RepositoryCapabilities, Unfiling, Updatability, VersioningState: various enums used in the SPI methods.
  • Inclusion: a simple record holding information about properties or rendition filter, whether relationships, allowable actions, policies or ACLs are requested; this is passed to a number of SPI methods.
  • ListPage, Tree: datastructures returned from SPI calls, when the standard Java Lists or Sets are not enough to express what is defined in the CMIS domain model.

SPI

The SPI interface describes the set of methods that can be done on a CMIS server. They follow closely the domain model defined by CMIS.

Connection

The Connection interface is the object-oriented entry point to CMIS. From it you get to the various Document, Folder, Relationship, Policy, with CMISObject as their base class.