package temp.xxx; import java.io.ByteArrayInputStream; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.chemistry.opencmis.client.api.Document; import org.apache.chemistry.opencmis.client.api.DocumentType; import org.apache.chemistry.opencmis.client.api.Folder; import org.apache.chemistry.opencmis.client.api.Repository; import org.apache.chemistry.opencmis.client.api.Session; import org.apache.chemistry.opencmis.client.api.SessionFactory; import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl; import org.apache.chemistry.opencmis.commons.PropertyIds; import org.apache.chemistry.opencmis.commons.SessionParameter; import org.apache.chemistry.opencmis.commons.data.ContentStream; import org.apache.chemistry.opencmis.commons.enums.BindingType; import org.apache.chemistry.opencmis.commons.enums.VersioningState; public class DocumentVersioningTest { public static void main(String args[]) { // Create a SessionFactory and set up the SessionParameter map final SessionFactory sessionFactory = SessionFactoryImpl.newInstance(); final Map mapParam = new HashMap(); if (false) { // Nuxeo mapParam.put(SessionParameter.ATOMPUB_URL, "http://cmis.demo.nuxeo.org/nuxeo/atom/cmis"); mapParam.put(SessionParameter.USER, "Administrator"); mapParam.put(SessionParameter.PASSWORD, "Administrator"); mapParam.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value()); } else { // Alfresco mapParam.put(SessionParameter.ATOMPUB_URL, "http://cmis.alfresco.com/cmisatom"); mapParam.put(SessionParameter.USER, "admin"); mapParam.put(SessionParameter.PASSWORD, "admin"); mapParam.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value()); } System.out.println("Accessing ATOMPUB_URL: " + mapParam.get(SessionParameter.ATOMPUB_URL) + " userid: " + mapParam.get(SessionParameter.USER) + " password: " + mapParam.get(SessionParameter.PASSWORD)); // find all the repositories at this URL - there should only be one. final List repositories; repositories = sessionFactory.getRepositories(mapParam); for (Repository r : repositories) { System.out.println("Found repository: " + r.getName()); } // create session with the first (and only) repository final Repository repository = repositories.get(0); mapParam.put(SessionParameter.REPOSITORY_ID, repository.getId()); Session session = sessionFactory.createSession(mapParam); System.out.println("Got a connection to repository: " + repository.getName() + ", with id: " + repository.getId()); final Folder rootFolder = session.getRootFolder(); final ContentStream contentStream = session.getObjectFactory().createContentStream("filename", 0, "text/plain", new ByteArrayInputStream(new byte[0])); Document doc = null; try { { final Map map = new HashMap(); map.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document"); map.put(PropertyIds.NAME, "poaewjoijjfaDocument.tmp"); doc = rootFolder.createDocument(map, /* contentStream */null, VersioningState.CHECKEDOUT); // <--- // VersioningState.CHECKEDOUT // !!! } // Versioning System.out.println("\nVersioning..."); System.out.println("-------------"); // Check whether a document is versionable boolean versionable = false; if (((DocumentType) (doc.getType())).isVersionable()) { System.out.println(doc.getName() + " is versionable"); versionable = true; } else { System.out.println(doc.getName() + " is NOT versionable"); } /** *
       * // With Alfresco there is an exception on the following line of code!
       * //      poaewjoijjfaDocument.tmp is versionable
       * //      Exception in thread "main" org.apache.chemistry.opencmis.commons.exceptions.CmisVersioningException: Object is not a PWC!
       * //        at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(AbstractAtomPubService.java:439)
       * //        at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.put(AbstractAtomPubService.java:593)
       * //        at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.put(AbstractAtomPubService.java:579)
       * //        at org.apache.chemistry.opencmis.client.bindings.spi.atompub.VersioningServiceImpl.checkIn(VersioningServiceImpl.java:178)
       * //        at org.apache.chemistry.opencmis.client.runtime.DocumentImpl.checkIn(DocumentImpl.java:201)
       * //        at org.apache.chemistry.opencmis.client.runtime.DocumentImpl.checkIn(DocumentImpl.java:411)
       * // at temp.xxx.DocumentVersioningTest.main(DocumentVersioningTest.java:102)
       * 
*/ doc.checkIn(/* major */true, null, contentStream, "checkinComment 1"); final Document pwc2 = (Document) session.getObject(doc.checkOut()); pwc2.checkIn(/* major */false, null, contentStream, "checkinComment 2"); System.out.println("Versions:"); for (Document version : doc.getAllVersions()) { System.out.println(" versionLabel: " + version.getVersionLabel()); System.out.println(" checkinComment: " + version.getCheckinComment()); } } finally { if (doc != null) { doc.deleteAllVersions(); } } } }