{color:#ff0000}{}{}This document is outdated!{}{color}
{color:#ff0000}{}{}The former Chemistry library and OpenCMIS were merged
into one Java library (OpenCMIS).{}{color}
{color:#ff0000}{}{}Chemistry is the name of the Apache CMIS
implementation project, while OpenCMIS is the name of Chemistry's Java
implementation.{}{color}
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|Chemistry API Examples]
.
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.