Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

!!! Work In Progress !!!

RepositoryService and Repository

Because CMIS allows several repositories to live in the same server, the information about the remote server and how to talk to it is encapsulated in a RepositoryService. The RepositoryManager is the global registry of RepositoryServices, and from a RepositoryService you can get to several Repositories.

Your code can either instantiate a protocol-specific version of the Repository interface, or :

Code Block
titleInstantiating an AtomPub repository service

RepositoryService repositoryService = new APPRepositoryService(url, null);
Code Block
titleGetting to a repository directly

Repository repository = repositoryService.getRepository("myrepo");

Or rely on it being already registered and look up the repository by name:

Code Block
titleRegistering a repository service

RepositoryManager.getInstance().registerService(repositoryService);
Code Block
titleLooking up a repository by name

Repository repository = RepositoryManager.getInstance().getRepository("myrepo");

High-level, object-oriented API: Connection, Folder, Document

From a Repository you can get a new Connection, get the root folder, get the first of its children and change its description:

Code Block
titleObject-oriented API

Map<String, Serializable> params = new HashMap<String, Serializable>();
params.put(Repository.PARAM_USERNAME, "username");
params.put(Repository.PARAM_PASSWORD, "password");

Connection conn = repository.getConnection(params);
try {
    Folder root = conn.getRootFolder();
    List<CMISObject> children = root.getChildren();
    for (CMISObject child : children) {
        System.out.println(child.getName());
    }
    Document doc = (Document) children.get(0);
    doc.setValue("description", "First child");
    doc.save();
} finally {
    conn.close();
}

Low-level SPI: SPI, ObjectEntry

Here you access the DTO for the object itself. This example does the same thing as above:

Code Block
titleObject-oriented API

Map<String, Serializable> params = new HashMap<String, Serializable>();
params.put(Repository.PARAM_USERNAME, "username");
params.put(Repository.PARAM_PASSWORD, "password");

SPI spi = repository.getSPI(params);
try {
    ObjectId rootId = repository.getInfo().getRootFolderId();
    ListPage<ObjectEntry> page = spi.getChildren(rootId, null, null, null);
    for (ObjectEntry entry : page) {
        System.out.println(entry.getValue(Property.NAME));
    }
    ObjectId docId = page.get(0); // ObjectEntry implements ObjectId
    Map<String, Serializable> props = new HashMap<String, Serializable>();
    props.put("description", "First child");
    spi.updateProperties(docId, null, props);    
} finally {
    spi.close();
}

...