Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

  • OpenCMIS
    Code Block
    Map<String, String> params = ...; // URL, user, password
    Session session = sessionFactory.createSession(parameters);
    

Internal layer hierarchy (OpenCMIS)

(All classes and interfaces in bold are for public use. Everything else belongs to the internal machinery.)

  • Session
    Main interface of the client API.
  • SessionFactory
    Interface of the session factory class.
  • SessionFactoryImpl
    Factory class that creates Session objects from a given configuration.
  • PersistentSessionImpl
    Implementation of the Session interface that follows the persistent model. Should be created with SessionFactoryImpl.
  • TransientSessionImpl (does not exist, yet)
    Implementation of the Session interface that follows the transient model. Should be created with SessionFactoryImpl.
  • CmisProviderHelper
    Internal helper class that creates a CmisProvider object. It contains code that is shared by PersistentSessionImpl and TransientSessionImpl. It shouldn't be used by anybody else.
  • CmisProvider
    The low-level client interface.
  • CmisProviderImpl
    Implementation of the low-level client interface.
  • CmisProviderFactory
    Factory class for CmisProvider objects. Although CmisProviderImpl can be instantiated directly, this factory sets some reasonable defaults and does a sanity check on the configuration. It is recommended to use this factory to create a CmisProvider object.
  • CmisSpi
    Interface of the binding implementations. This interface is only interesting for binding developers. Applications use the CmisProvider or Session interfaces that hide the binding.
  • CmisAtomPubSpi
    AtomPub binding implementation.
  • CmisWebServicesSpi
    Web Services binding implementation.

From an application point of view it easy to use:

  • If you want to use the client API, create a Session object with SessionFactoryImpl and don't bother about the rest.
  • If you want to use the low-level provider API, create a CmisProvider object with CmisProviderFactory and don't bother about the rest.

High-level APIs

From a connection/session you can get the root folder and express high-level operations

...

  • Chemistry
    The high-level and SPI interfaces are mutualized (ex: org.apache.chemistry.RepositoryInfo).
    Florian> For some objects there are different interfaces on these two levels. For example, the step from ObjectEntry to CMISObject is comparable to OpenCMIS' step from the provider API to the client API.
    Florian> JAXB objects will be necessary for Web Services, similar to OpenCMIS.

...