OpenCMIS API Examples

Here are two code snippets performing the same operations. The first snippet uses the client API; the second snippet uses the provider API. As you can see the provider API is clunkier and more difficult to use but it gives you access to all CMIS extension points and provides more fine-grained control.

Client API

Client API JavaDoc . See also [OpenCMIS Client API|OpenCMIS Client API] .

Map<String, String> parameters = new HashMap<String, String>();
parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
parameters.put(SessionParameter.ATOMPUB_URL,
    "http://localhost:8080/opencmis/atom");
parameters.put(SessionParameter.REPOSITORY_ID, "A1");
parameters.put(SessionParameter.USER, "test");
parameters.put(SessionParameter.PASSWORD, "test");

// create the session
Session session =
    SessionFactoryImpl.newInstance().createSession(parameters);

// get repository info
RepositoryInfo repInfo = session.getRepositoryInfo();
System.out.println("Repository name: " + repInfo.getName());

// get root folder and its path
Folder rootFolder = session.getRootFolder();
String path = rootFolder.getPath();
System.out.println("Root folder path: " + path);

// list root folder children
ItemIterable<CmisObject> children = rootFolder.getChildren();
for (CmisObject object : children) {
  System.out.println("---------------------------------");
  System.out.println("  Id:       " + object.getId());
  System.out.println("  Name:         " + object.getName());
  System.out.println("  Base Type:    " + object.getBaseTypeId());
  System.out.println("  Property 'bla':   " +
object.getPropertyValue("bla"));

  ObjectType type = object.getType();
  System.out.println("  Type Id:      " + type.getId());
  System.out.println("  Type Name:    " + type.getDisplayName());
  System.out.println("  Type Query Name:  " + type.getQueryName());

  AllowableActions actions = object.getAllowableActions();
  System.out.println("  canGetProperties: " +
    actions.getAllowableActions().contains(Action.CAN_GET_PROPERTIES));
  System.out.println("  canDeleteObject:  " +
    actions.getAllowableActions().contains(Action.CAN_DELETE_OBJECT));
}

// get an object
ObjectId objectId = session.createObjectId("100");
CmisObject object = session.getObject(objectId);

if (object instanceof Folder) {
  Folder folder = (Folder) object;
  System.out.println("Is root folder: " + folder.isRootFolder());
}

if (object instanceof Document) {
  Document document = (Document) object;
  ContentStream content = document.getContentStream();
  System.out.println("Document MIME type: " + content.getMimeType());
}

Client Binding API

Client Binding API JavaDoc . See also [OpenCMIS Client Binding API|OpenCMIS Client Bindings] .

    Map<String, String> parameters = new HashMap<String, String>();
    parameters.put(SessionParameter.ATOMPUB_URL,
    "http://localhost:8080/opencmis/atom");
    parameters.put(SessionParameter.USER, "test");
    parameters.put(SessionParameter.PASSWORD, "test");

    // create provider
    CmisBinding binding =
    CmisBindingFactory.newInstance().createCmisAtomPubBinding(parameters);

    String repositoryId = "A1";

    // get repository info
    RepositoryInfo repInfo =
    binding.getRepositoryService().getRepositoryInfo(repositoryId, null);
    System.out.println("Repository name: " + repInfo.getName());

    // get root folder and its path
    ObjectData rootFolder = binding.getObjectService().getObject(repositoryId,
    repInfo.getRootFolderId(), "*",
          true, IncludeRelationships.NONE, null, false, false, null);

    PropertyString pathProperty = (PropertyString)
    rootFolder.getProperties().getProperties().get(PropertyIds.PATH);
    String path = pathProperty.getFirstValue();
    System.out.println("Root folder path: " + path);

    // list root folder children
    ObjectInFolderList childrenList =
    binding.getNavigationService().getChildren(repositoryId,
          repInfo.getRootFolderId(), "*", null, true,
    IncludeRelationships.NONE, null, false,
          BigInteger.valueOf(10000), BigInteger.ZERO, null);

    for (ObjectInFolderData object : childrenList.getObjects()) {
       System.out.println("---------------------------------");

       PropertyString nameProperty = (PropertyString)
    object.getObject().getProperties().getProperties().get(
             PropertyIds.NAME);
       PropertyString blaProperty = (PropertyString)
    object.getObject().getProperties().getProperties().get("bla");
       PropertyId typeProperty = (PropertyId)
    object.getObject().getProperties().getProperties().get(
             PropertyIds.OBJECT_TYPE_ID);

       System.out.println("  Id:        " +
    object.getObject().getId());
       System.out.println("  Name:      " +
    nameProperty.getFirstValue());
       System.out.println("  Base Type: " +
    object.getObject().getBaseTypeId());
       System.out.println("  Property 'bla':    " + (blaProperty == null ?
    null : blaProperty.getFirstValue()));

       TypeDefinition type =
    binding.getRepositoryService().getTypeDefinition(repositoryId,
             typeProperty.getFirstValue(), null);
       System.out.println("  Type Id:       " + type.getId());
       System.out.println("  Type Name: " + type.getDisplayName());
       System.out.println("  Type Query Name:   " + type.getQueryName());

       AllowableActions actions =
    object.getObject().getAllowableActions();
       System.out.println("  canGetProperties: "
             +
    actions.getAllowableActions().contains(Action.CAN_GET_PROPERTIES));
       System.out.println("  canDeleteObject:   "
             +
    actions.getAllowableActions().contains(Action.CAN_DELETE_OBJECT));
    }

    // get an object
    String objectId = "100";

    ObjectData object = binding.getObjectService().getObject(repositoryId,
    objectId, "*", false,
          IncludeRelationships.NONE, null, false, false, null);

    if (object.getBaseTypeId() == BaseTypeId.CMIS_FOLDER) {
       System.out.println("Is root folder: " +
    (repInfo.getRootFolderId().equals(object.getId())));
    }

    if (object.getBaseTypeId() == BaseTypeId.CMIS_DOCUMENT) {
       ContentStream content =
    binding.getObjectService().getContentStream(repositoryId, objectId, null,
    null,
             null, null);
       System.out.println("Document MIME type: " + content.getMimeType());
    }