apache chemistry face-to-face meeting april 2010
TRANSCRIPT
OpenCMISApache Chemistry face-to-face meeting April
2010
OpenCMIS Overview
OpenCMIS Commons
Interfaces, classes, enums and exceptions used across all other modules
JAXB classes are generated and packaged here
OpenCMIS Client APIObject Oriented API
Easy adoptionEasy consumption
Session ConceptPersistent SessionTransient Session *
CachingException Handling *
Eventing for Extension Handling *
Session based Configuration Context
Iterator based Paging Support
OpenCMIS Session ConceptPersistent SessionApplication
Controlled Lifetime Support
Read CacheIsolation Level: Read
CommittedComposite
Application Support
Transient SessionSupports
Save/Cancel Scenarios
Cached Write OperationsMeta Data in
MemoryContent in Shadow
Repository
OpenCMIS Provider (1)CMIS binding implementations – client side
Exposes an API that is very close the CMIS specification and the CMIS schema
Fine grained control including getting and setting extension data
Completely independent of the client APICaches repository infos and typesCaches AtomPub links and Web Services port
objects
OpenCMIS Provider (2)Serializable and thread-safe
Authentication:WS-Security UsernameTokens and HTTP basic
auth out-of-boxHooks for custom authentication code
AtomPub: StAX + JAX-BWeb Services: JAX-WS RI
OpenCMIS Server (1)CMIS binding implementations – server side
AtomPub: StAX + JAX-BWeb Services: JAX-WS RICalls are processed and mapped to interfaces
that a repository connector has to implementSPI inspired by the CMIS specification
OpenCMIS Server (2)Authentication:
WS-Security UsernameTokens and HTTP basic auth out-of-box
Hooks for custom authentication code
OpenCMIS Server SupportConvenience classes and wrappers for repository
connectors
Examples:Required parameters that are not provided by the
client are caught and an appropriate error is returnedOptional parameters that are not provided by the
client are set with the default value defined in CMIS specification
None CMIS exceptions are caught and translated into CMIS exceptions
Helpers to quickly build a connector prototype
OpenCMIS InMemory RepositoryA simple implementation of a CMIS repository
based on an in-memory storeTesting-only, no real persistenceFastNo dependencies(Future: Base for experimental spec
enhancements)Based on a huge static HashMap plus internal
interfaces and impl.Covers major aspects of CMIS spec, but not allType creation supported by Java code
InMemory Repository Impl ScopeImplemented:
Type validationRepository ServiceObject Service (Documents, Folders, object read+write,
metadata, content, unfiling, multi-filing)Navigation Service (Folder navigation, tree and descendents)Versioning Service (simple linear versioning model with
majors, minors)Not (yet)implemented:
Relations, Renditions, Query, ACLs, PoliciesPotential use case:
Implement internal interfaces using real persistence layerVery experimental, enforces specific document model
OpenCMIS File System RepositoryA simple repository implementation that uses
the file system as back-end
Only for testing!Supports everything a file system can support
plus metadata handlingNo versioning, no policies, no relationships,
no query, no rendition, read-only ACLs, no content changes,...
Types can be defined via XML file
OpenCMIS Tests and ToolsObject Generator
Automatic creation of folders and documentsJava interface and command line tool
Simple browser for AtomPub repositoriesWeb basedStraight forward XSLT transformation
OpenCMIS Full Integration TestsTests the whole stack:
JUnit tests Client API Provider APINetwork (Atom/SOAP) CMIS server (on Jetty) InMemory repository
Executed as part of a regular build
This will eventually become the home of most tests
SAP UseCase (1) – EPM Attachments
SAP Use Case (2) - uPods
SAP Use Case (3) - Development