You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2011/06/22 11:00:01 UTC

svn commit: r1138346 - in /chemistry/opencmis/trunk/chemistry-opencmis-samples: ./ chemistry-opencmis-getting-started/ chemistry-opencmis-getting-started/src/ chemistry-opencmis-getting-started/src/main/ chemistry-opencmis-getting-started/src/main/java...

Author: fmui
Date: Wed Jun 22 09:00:00 2011
New Revision: 1138346

URL: http://svn.apache.org/viewvc?rev=1138346&view=rev
Log:
added OpenCMIS documentation samples

Added:
    chemistry/opencmis/trunk/chemistry-opencmis-samples/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/pom.xml   (with props)
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/main/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/main/java/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/main/java/org/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/main/java/org/apache/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/main/java/org/apache/chemistry/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/main/java/org/apache/chemistry/opencmis/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/main/java/org/apache/chemistry/opencmis/doc/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/main/java/org/apache/chemistry/opencmis/doc/GettingStarted.java   (with props)
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/pom.xml   (with props)
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/main/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/main/java/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/main/java/org/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/main/java/org/apache/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/main/java/org/apache/chemistry/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/main/java/org/apache/chemistry/opencmis/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/main/java/org/apache/chemistry/opencmis/doc/
    chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/main/java/org/apache/chemistry/opencmis/doc/Hello.java   (with props)

Added: chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/pom.xml
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/pom.xml?rev=1138346&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/pom.xml (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/pom.xml Wed Jun 22 09:00:00 2011
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+    <!--
+        Licensed under the Apache License, Version 2.0 (the "License");
+        you may not use this file except in compliance with the License.
+        You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+        applicable law or agreed to in writing, software distributed
+        under the License is distributed on an "AS IS" BASIS, WITHOUT
+        WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+        See the License for the specific language governing permissions
+        and limitations under the License.
+    -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>9</version>
+    </parent>
+
+    <!-- Project Information -->
+
+    <groupId>org.apache.chemistry.opencmis</groupId>
+    <artifactId>chemistry-opencmis-gettingstarted</artifactId>
+    <name>Apache Chemistry OpenCMIS Getting Started Example</name>
+    <version>0.1-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <organization>
+        <name>The Apache Software Foundation</name>
+        <url>http://www.apache.org/</url>
+    </organization>
+
+    <licenses>
+        <license>
+            <name>Apache 2</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo</distribution>
+        </license>
+    </licenses>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compile.source>1.5</maven.compile.source>
+        <maven.compile.target>1.5</maven.compile.target>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <inherited>true</inherited>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <target>${maven.compile.target}</target>
+                    <source>${maven.compile.source}</source>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.3</version>
+                <configuration>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-eclipse-plugin</artifactId>
+                <version>2.8</version>
+                <configuration>
+                    <downloadSources>true</downloadSources>
+                    <downloadJavadocs>true</downloadJavadocs>
+                    <workspace>..</workspace>
+                </configuration>
+            </plugin>
+   <plugin>
+    <groupId>org.codehaus.mojo</groupId>
+    <artifactId>exec-maven-plugin</artifactId>
+    <version>1.1.1</version>
+    <executions>
+     <execution>
+      <phase>test</phase>
+      <goals>
+       <goal>java</goal>
+      </goals>
+     </execution>
+    </executions>
+    <configuration>
+     <mainClass>org.apache.chemistry.opencmis.doc.GettingStarted</mainClass>
+    </configuration>
+   </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.chemistry.opencmis</groupId>
+            <artifactId>chemistry-opencmis-client-impl</artifactId>
+            <version>0.3.0</version>
+        </dependency>
+    </dependencies>
+
+</project>

Propchange: chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/main/java/org/apache/chemistry/opencmis/doc/GettingStarted.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/main/java/org/apache/chemistry/opencmis/doc/GettingStarted.java?rev=1138346&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/main/java/org/apache/chemistry/opencmis/doc/GettingStarted.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/main/java/org/apache/chemistry/opencmis/doc/GettingStarted.java Wed Jun 22 09:00:00 2011
@@ -0,0 +1,824 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.doc;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+
+import org.apache.chemistry.opencmis.client.api.CmisObject;
+import org.apache.chemistry.opencmis.client.api.Document;
+import org.apache.chemistry.opencmis.client.api.DocumentType;
+import org.apache.chemistry.opencmis.client.api.FileableCmisObject;
+import org.apache.chemistry.opencmis.client.api.Folder;
+import org.apache.chemistry.opencmis.client.api.ItemIterable;
+import org.apache.chemistry.opencmis.client.api.ObjectId;
+import org.apache.chemistry.opencmis.client.api.ObjectType;
+import org.apache.chemistry.opencmis.client.api.OperationContext;
+import org.apache.chemistry.opencmis.client.api.Property;
+import org.apache.chemistry.opencmis.client.api.QueryResult;
+import org.apache.chemistry.opencmis.client.api.Rendition;
+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.api.Tree;
+import org.apache.chemistry.opencmis.client.runtime.OperationContextImpl;
+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.data.RepositoryCapabilities;
+import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
+import org.apache.chemistry.opencmis.commons.enums.Action;
+import org.apache.chemistry.opencmis.commons.enums.BindingType;
+import org.apache.chemistry.opencmis.commons.enums.CapabilityQuery;
+import org.apache.chemistry.opencmis.commons.enums.CapabilityRenditions;
+import org.apache.chemistry.opencmis.commons.enums.UnfileObject;
+import org.apache.chemistry.opencmis.commons.enums.VersioningState;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
+
+public class GettingStarted {
+    public static void main(String args[]) {
+
+        System.out.println("Getting Started...");
+        System.out.println("------------------");
+
+        // Create a SessionFactory and set up the SessionParameter map
+        SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
+        Map<String, String> parameter = new HashMap<String, String>();
+
+        // user credentials - using the standard admin/admin
+
+        parameter.put(SessionParameter.USER, "admin");
+        parameter.put(SessionParameter.PASSWORD, "admin");
+
+        // connection settings - we're connecting to a public cmis repo,
+        // using the AtomPUB binding, but there are other options here,
+        // or you can substitute your own URL
+        parameter.put(SessionParameter.ATOMPUB_URL,
+//       "http://opencmis.cloudapp.net/inmemory/atom/");
+//       "http://cmis.alfresco.com/service/cmis");
+         "http://localhost:8080/alfresco/service/api/cmis");
+        parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
+
+        // find all the repositories at this URL - there should only be one.
+        List<Repository> repositories = new ArrayList<Repository>();
+        repositories = sessionFactory.getRepositories(parameter);
+        for (Repository r : repositories) {
+            System.out.println("Found repository: " + r.getName());
+        }
+
+        // create session with the first (and only) repository
+        Repository repository = repositories.get(0);
+        parameter.put(SessionParameter.REPOSITORY_ID, repository.getId());
+        Session session = sessionFactory.createSession(parameter);
+
+        System.out.println("Got a connection to repository: " + repository.getName()
+                + ", with id: " + repository.getId());
+
+        // // An example of creating a session with a known repository id.
+        // parameter.put(SessionParameter.REPOSITORY_ID, "A1");
+        // Session session = sessionFactory.createSession(parameter);
+
+        // Remove anything that was created by a previous run of this program
+        cleanup(session);
+
+        // Get everything in the root folder and print the names of the objects
+        Folder root = session.getRootFolder();
+        ItemIterable<CmisObject> children = root.getChildren();
+        System.out.println("Found the following objects in the root folder:-");
+        for (CmisObject o : children) {
+            System.out.println(o.getName() + " which is of type " + o.getType().getDisplayName());
+        }
+
+        System.out.println("\nFile and Folders...");
+        System.out.println("-------------------");
+
+        // Add a new folder to the root folder
+        System.out.println("Creating 'ADGNewFolder' in the root folder");
+        Map<String, String> newFolderProps = new HashMap<String, String>();
+        newFolderProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
+        newFolderProps.put(PropertyIds.NAME, "ADGNewFolder");
+        Folder newFolder = root.createFolder(newFolderProps);
+
+        // Did it work?
+        children = root.getChildren();
+        System.out.println("Now finding the following objects in the root folder:-");
+        for (CmisObject o : children) {
+            System.out.println(o.getName());
+        }
+
+        // Create a simple text document in the new folder
+        // First, create the content stream
+        final String textFileName = "test.txt";
+        System.out.println("creating a simple text document, " + textFileName);
+        String mimetype = "text/plain; charset=UTF-8";
+        String content = "This is some test content.";
+        String filename = textFileName;
+
+        byte[] buf = null;
+        try {
+            buf = content.getBytes("UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        ByteArrayInputStream input = new ByteArrayInputStream(buf);
+        ContentStream contentStream = session.getObjectFactory().createContentStream(filename,
+                buf.length, mimetype, input);
+
+        // Create the Document Object
+        Map<String, Object> properties = new HashMap<String, Object>();
+        properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
+        properties.put(PropertyIds.NAME, filename);
+        ObjectId id = newFolder.createDocument(properties, contentStream, VersioningState.NONE);
+
+        // Did it work?
+        // Get the contents of the document by id
+        Document doc = (Document) session.getObject(id);
+        try {
+            content = getContentAsString(doc.getContentStream());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        // Get the contents of the document by path
+        String path = newFolder.getPath() + "/" + textFileName;
+        System.out.println("Getting object by path " + path);
+        doc = (Document) session.getObjectByPath(path);
+        try {
+            content = getContentAsString(doc.getContentStream());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        System.out.println("Contents of " + doc.getName() + " are: " + content);
+
+        // Create a new document and then update its name
+        final String textFileName2 = "test2.txt";
+        System.out.println("creating a simple text document, " + textFileName2);
+        mimetype = "text/plain; charset=UTF-8";
+        content = "This is some test content for our second document.";
+        filename = textFileName2;
+
+        buf = null;
+        try {
+            buf = content.getBytes("UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        input = new ByteArrayInputStream(buf);
+        contentStream = session.getObjectFactory().createContentStream(filename, buf.length,
+                mimetype, input);
+        properties = new HashMap<String, Object>();
+        properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
+        properties.put(PropertyIds.NAME, filename);
+        ObjectId id2 = newFolder.createDocument(properties, contentStream, VersioningState.NONE);
+
+        Document doc2 = (Document) session.getObject(id2);
+        System.out.println("renaming " + doc2.getName() + " to test3.txt");
+        properties = new HashMap<String, Object>();
+        properties.put(PropertyIds.NAME, "test3.txt");
+        id2 = doc2.updateProperties(properties);
+        System.out.println("renamed to " + doc2.getName());
+
+        // Update the content stream
+        content = "This is some updated test content for our renamed second document.";
+        buf = null;
+        try {
+            buf = content.getBytes("UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        input = new ByteArrayInputStream(buf);
+        contentStream = session.getObjectFactory().createContentStream("test3.txt", buf.length,
+                mimetype, input);
+        properties = new HashMap<String, Object>();
+        properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
+        properties.put(PropertyIds.NAME, "test3.txt");
+        doc2.setContentStream(contentStream, true);
+
+        // did it work?
+        try {
+            content = getContentAsString(doc2.getContentStream());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        System.out.println("Contents of " + doc2.getName() + " are: " + content);
+
+        // Force and handle a CmisInvalidArgumentException exception
+        System.out.println("\nExceptions...");
+        System.out.println("-------------");
+        System.out.println("Forcing and handling a CmisInvalidArgumentException");
+        try {
+            doc2.setContentStream(null, false);
+        } catch (CmisInvalidArgumentException e1) {
+            System.out.println("caught an " + e1.getClass().getName() + " exception with message "
+                    + e1.getMessage());
+        }
+
+        // delete a document
+        System.out.println("\nMore files and folders...");
+        System.out.println("-------------------------");
+        children = newFolder.getChildren();
+        System.out.println("Now finding the following objects in our folder:-");
+        for (CmisObject o : children) {
+            System.out.println(o.getName());
+        }
+        System.out.println("Deleting document " + doc2.getName());
+        doc2.delete(true);
+        System.out.println("Now finding the following objects in our folder:-");
+        for (CmisObject o : children) {
+            System.out.println(o.getName());
+        }
+
+        // Create a new folder tree, and delete it
+        System.out.println("Creating 'ADGFolder1' in the root folder");
+        newFolderProps = new HashMap<String, String>();
+        newFolderProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
+        newFolderProps.put(PropertyIds.NAME, "ADGFolder1");
+        Folder folder1 = root.createFolder(newFolderProps);
+        newFolderProps.put(PropertyIds.NAME, "ADGFolder11");
+        Folder folder11 = folder1.createFolder(newFolderProps);
+        newFolderProps.put(PropertyIds.NAME, "ADGFolder12");
+        Folder folder12 = folder1.createFolder(newFolderProps);
+        System.out.println("delete the 'ADGFolder1' tree");
+        folder1.deleteTree(true, UnfileObject.DELETE, true);
+
+        // Create a folder tree to navigate through
+        System.out.println("Creating folder tree for navigation");
+        newFolderProps = new HashMap<String, String>();
+        HashMap<String, String> newFileProps = new HashMap<String, String>();
+
+        newFolderProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
+        newFolderProps.put(PropertyIds.NAME, "ADGFolder1");
+        folder1 = root.createFolder(newFolderProps);
+
+        newFileProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
+        newFileProps.put(PropertyIds.NAME, "ADGFile1f1");
+        folder1.createDocument(newFileProps, contentStream, VersioningState.NONE);
+
+        newFolderProps.put(PropertyIds.NAME, "ADGFolder11");
+        folder11 = folder1.createFolder(newFolderProps);
+
+        newFileProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
+        newFileProps.put(PropertyIds.NAME, "ADGFile11f1");
+        folder11.createDocument(newFileProps, contentStream, VersioningState.NONE);
+
+        newFileProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
+        newFileProps.put(PropertyIds.NAME, "ADGFile11f2");
+        folder11.createDocument(newFileProps, contentStream, VersioningState.NONE);
+
+        newFolderProps.put(PropertyIds.NAME, "ADGFolder111");
+        folder11.createFolder(newFolderProps);
+
+        newFolderProps.put(PropertyIds.NAME, "ADGFolder112");
+        folder11.createFolder(newFolderProps);
+
+        newFolderProps.put(PropertyIds.NAME, "ADGFolder12");
+        folder12 = folder1.createFolder(newFolderProps);
+
+        newFolderProps.put(PropertyIds.NAME, "ADGFolder121");
+        Folder folder121 = folder12.createFolder(newFolderProps);
+
+        newFileProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
+        newFileProps.put(PropertyIds.NAME, "ADGFile121f1");
+        folder121.createDocument(newFileProps, contentStream, VersioningState.NONE);
+
+        newFolderProps.put(PropertyIds.NAME, "ADGFolder122");
+        folder12.createFolder(newFolderProps);
+
+        // Navigating the object tree
+        System.out.println("\nNavigating the object tree...");
+        System.out.println("-----------------------------");
+
+        // Get the children of folder1
+        children = folder1.getChildren();
+        System.out.println("Children of " + folder1.getName() + ":-");
+        for (CmisObject o : children) {
+            System.out.println(o.getName());
+        }
+
+        // Get the descendants of folder1
+        if (!session.getRepositoryInfo().getCapabilities().isGetDescendantsSupported()) {
+            System.out.println("getDescendants not supported in this repository");
+        } else {
+            System.out.println("Descendants of " + folder1.getName() + ":-");
+            for (Tree<FileableCmisObject> t : folder1.getDescendants(-1)) {
+                printTree(t);
+            }
+        }
+
+        // Get the foldertree of folder1
+        if (!session.getRepositoryInfo().getCapabilities().isGetFolderTreeSupported()) {
+            System.out.println("getFolderTree not supported in this repository");
+        } else {
+            System.out.println("Foldertree for " + folder1.getName() + ":-");
+            for (Tree<FileableCmisObject> t : folder1.getFolderTree(-1)) {
+                printFolderTree(t);
+            }
+        }
+
+        // Paging
+        System.out.println("\nPaging...");
+        System.out.println("--------");
+        System.out.println("Creating folders for paging example");
+        newFolderProps = new HashMap<String, String>();
+        newFolderProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
+        newFolderProps.put(PropertyIds.NAME, "ADGFolderPaging");
+        Folder folderPaging = root.createFolder(newFolderProps);
+        createFolders(folderPaging, 10);
+
+        System.out.println("Getting page of length 3 from item 5");
+        OperationContext operationContext = new OperationContextImpl();
+        operationContext.setMaxItemsPerPage(3);
+        ItemIterable<CmisObject> children1 = folderPaging.getChildren(operationContext);
+        int count = 0;
+        for (CmisObject child : children1.skipTo(5).getPage()) {
+            System.out.println("object " + count + " in page of " + children1.getPageNumItems()
+                    + " is " + child.getName());
+            count++;
+        }
+
+//        operationContext = new OperationContextImpl();
+//        operationContext.setMaxItemsPerPage(3);
+//        children1 = folderPaging.getChildren(operationContext);
+//        int pageNumber = 0;
+//        count = 1;
+//        while (count > 0) {
+//            count = 0;
+//            for (CmisObject child : children1.skipTo(
+//                    pageNumber * operationContext.getMaxItemsPerPage()).getPage()) {
+//                System.out.println("object " + count + " in page" + pageNumber + " is "
+//                        + child.getName());
+//                count++;
+//            }
+//            pageNumber++;
+//        }
+
+        System.out.println("Getting complete result set in pages of 3");
+        operationContext = new OperationContextImpl();
+        operationContext.setMaxItemsPerPage(3);
+        children1 = folderPaging.getChildren(operationContext);
+        int pageNumber = 0;
+        boolean finished = false;
+        while (!finished) {
+            count = 0;
+            ItemIterable<CmisObject> currentPage = children1.skipTo(
+                    pageNumber * operationContext.getMaxItemsPerPage()).getPage();
+            for (CmisObject item : currentPage) {
+                System.out.println("object " + count + " in page" + pageNumber + " is "
+                        + item.getName());
+                count++;
+            }
+            pageNumber++;
+            if (!currentPage.getHasMoreItems())
+                finished = true;
+        }
+
+        // Types
+        System.out.println("\nTypes...");
+        System.out.println("--------");
+        // Look at the type definition
+        System.out.println("Getting type definition for doc type");
+        ObjectType objectType = session.getTypeDefinition(doc.getType().getId());
+        System.out.println("isBaseType() returns " + (objectType.isBaseType() ? "true" : "false"));
+        ObjectType baseType = objectType.getBaseType();
+        if (baseType == null) {
+            System.out.println("getBaseType() returns null");
+        } else {
+            System.out.println("getBaseType() returns " + baseType.getDisplayName());
+        }
+        ObjectType parentType = objectType.getParentType();
+        if (parentType == null) {
+            System.out.println("getParentType() returns null");
+        } else {
+            System.out.println("getParentType() returns " + parentType.getDisplayName());
+        }
+        System.out.println("Listing child types of " + objectType.getDisplayName());
+        for (ObjectType o : objectType.getChildren()) {
+            System.out.println("\t" + o.getDisplayName());
+        }
+        System.out.println("Getting immediate descendant types of " + objectType.getDisplayName());
+        for (Tree<ObjectType> o : objectType.getDescendants(1)) {
+            System.out.println("\t" + o.getItem().getDisplayName());
+        }
+
+        System.out.println("\nProperties...");
+        System.out.println("-------------");
+        // Look at all the properties of the document
+        System.out.println(doc.getName() + " properties start");
+        List<Property<?>> props = doc.getProperties();
+        for (Property<?> p : props) {
+            System.out.println(p.getDefinition().getDisplayName() + "=" + p.getValuesAsString());
+        }
+        System.out.println(doc.getName() + " properties end");
+
+        // Get some document properties explicitly
+        System.out.println("VersionLabel property on " + doc.getName() + " is "
+                + doc.getVersionLabel());
+        // System.out.println("Is this the latest version of " + doc.getName() +
+        // " ?:  "
+        // + (doc.isLatestVersion() ? "yes" : "no"));
+
+        // get property by name
+        Property<?> someProperty = props.get(0);
+        System.out
+                .println(someProperty.getDisplayName() + " property on " + doc.getName()
+                        + " (by getPropertValue()) is "
+                        + doc.getPropertyValue(someProperty.getQueryName()));
+
+        GregorianCalendar calendar = doc.getCreationDate();
+        String DATE_FORMAT = "yyyyMMdd";
+        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
+        System.out.println("Creation date of " + doc.getName() + " is  "
+                + sdf.format(calendar.getTime()));
+
+        System.out.println("\nQuery...");
+        System.out.println("--------");
+        // Query 1 - need full query capability for this
+        if (session.getRepositoryInfo().getCapabilities().getQueryCapability()
+                .equals(CapabilityQuery.METADATAONLY)) {
+            System.out.println("Full search not supported");
+        } else {
+            String query = "SELECT * FROM cmis:document WHERE cmis:name LIKE 'test%'";
+            ItemIterable<QueryResult> q = session.query(query, false);
+
+            // Did it work?
+            System.out.println("***results from query " + query);
+
+            int i = 1;
+            for (QueryResult qr : q) {
+                System.out.println("--------------------------------------------\n" + i + " , "
+                        + qr.getPropertyByQueryName("cmis:objectTypeId").getFirstValue() + " , "
+                        + qr.getPropertyByQueryName("cmis:name").getFirstValue() + " , "
+                        + qr.getPropertyByQueryName("cmis:createdBy").getFirstValue() + " , "
+                        + qr.getPropertyByQueryName("cmis:objectId").getFirstValue() + " , "
+                        + qr.getPropertyByQueryName("cmis:contentStreamFileName").getFirstValue()
+                        + " , "
+                        + qr.getPropertyByQueryName("cmis:contentStreamMimeType").getFirstValue()
+                        + " , "
+                        + qr.getPropertyByQueryName("cmis:contentStreamLength").getFirstValue());
+                i++;
+            }
+
+            // Query 2
+            query = "SELECT * FROM cmis:document WHERE cmis:name LIKE 'test%.txt' AND CONTAINS('test')";
+            q = session.query(query, false);
+
+            System.out.println("***results from query " + query);
+
+            i = 1;
+            for (QueryResult qr : q) {
+                System.out.println("--------------------------------------------\n" + i + " , "
+                        + qr.getPropertyByQueryName("cmis:objectTypeId").getFirstValue() + " , "
+                        + qr.getPropertyByQueryName("cmis:name").getFirstValue() + " , "
+                        + qr.getPropertyByQueryName("cmis:createdBy").getFirstValue() + " , "
+                        + qr.getPropertyByQueryName("cmis:objectId").getFirstValue() + " , "
+                        + qr.getPropertyByQueryName("cmis:contentStreamFileName").getFirstValue()
+                        + " , "
+                        + qr.getPropertyByQueryName("cmis:contentStreamMimeType").getFirstValue()
+                        + " , "
+                        + qr.getPropertyByQueryName("cmis:contentStreamLength").getFirstValue());
+                i++;
+            }
+        }
+
+        System.out.println("\nCapabilities...");
+        System.out.println("---------------");
+        // Check what capabilities our repository supports
+        System.out.println("Printing repository capabilities...");
+        final RepositoryInfo repInfo = session.getRepositoryInfo();
+        RepositoryCapabilities cap = repInfo.getCapabilities();
+        System.out.println("\nNavigation Capabilities");
+        System.out.println("-----------------------");
+        System.out.println("Get descendants supported: "
+                + (cap.isGetDescendantsSupported() ? "true" : "false"));
+        System.out.println("Get folder tree supported: "
+                + (cap.isGetFolderTreeSupported() ? "true" : "false"));
+        System.out.println("\nObject Capabilities");
+        System.out.println("-----------------------");
+        System.out.println("Content Stream: " + cap.getContentStreamUpdatesCapability().value());
+        System.out.println("Changes: " + cap.getChangesCapability().value());
+        System.out.println("Renditions: " + cap.getRenditionsCapability().value());
+        System.out.println("\nFiling Capabilities");
+        System.out.println("-----------------------");
+        System.out.println("Multifiling supported: "
+                + (cap.isMultifilingSupported() ? "true" : "false"));
+        System.out.println("Unfiling supported: " + (cap.isUnfilingSupported() ? "true" : "false"));
+        System.out.println("Version specific filing supported: "
+                + (cap.isVersionSpecificFilingSupported() ? "true" : "false"));
+        System.out.println("\nVersioning Capabilities");
+        System.out.println("-----------------------");
+        System.out
+                .println("PWC searchable: " + (cap.isPwcSearchableSupported() ? "true" : "false"));
+        System.out.println("PWC Updatable: " + (cap.isPwcUpdatableSupported() ? "true" : "false"));
+        System.out.println("All versions searchable: "
+                + (cap.isAllVersionsSearchableSupported() ? "true" : "false"));
+        System.out.println("\nQuery Capabilities");
+        System.out.println("-----------------------");
+        System.out.println("Query: " + cap.getQueryCapability().value());
+        System.out.println("Join: " + cap.getJoinCapability().value());
+        System.out.println("\nACL Capabilities");
+        System.out.println("-----------------------");
+        System.out.println("ACL: " + cap.getAclCapability().value());
+        System.out.println("End of  repository capabilities");
+
+        System.out.println("\nAllowable actions...");
+        System.out.println("--------------------");
+        // find the current allowable actions for the test.txt document
+        System.out.println("Getting the current allowable actions for the " + doc.getName()
+                + " document object...");
+        for (Action a : doc.getAllowableActions().getAllowableActions()) {
+            System.out.println("\t" + a.value());
+        }
+
+        // find out if we can currently check out test.txt
+        if (doc.getAllowableActions().getAllowableActions().contains(Action.CAN_CHECK_OUT)) {
+            System.out.println("can check out " + doc.getName());
+        } else {
+            System.out.println("can not check out " + doc.getName());
+        }
+
+        System.out.println("\nMultifiling and Unfiling...");
+        System.out.println("---------------------------");
+        // Try out multifiling if it is supported
+        System.out.println("Trying out multifiling");
+        Folder newFolder2 = null;
+        if (!(cap.isMultifilingSupported())) {
+            System.out.println("Multifiling not supported by this repository");
+        } else {
+            // Add a new folder to the root folder
+            System.out.println("Creating 'ADGNewFolder 2' in the root folder");
+            newFolderProps = new HashMap<String, String>();
+            newFolderProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
+            newFolderProps.put(PropertyIds.NAME, "ADGNewFolder 2");
+            newFolder2 = root.createFolder(newFolderProps, null, null, null,
+                    session.getDefaultContext());
+            System.out.println("Adding " + textFileName + "to 'ADGNewFolder 2' in the root folder");
+            doc.addToFolder(newFolder2, true);
+
+            // Did it work?
+            children = newFolder.getChildren();
+            System.out.println("Now finding the following objects in the 'ADGNewFolder' folder:-");
+            for (CmisObject o : children) {
+                System.out.println(o.getName());
+            }
+            children = newFolder2.getChildren();
+            System.out
+                    .println("Now finding the following objects in the 'ADGNewFolder 2' folder:-");
+            for (CmisObject o : children) {
+                System.out.println(o.getName());
+            }
+        }
+
+        // Try out unfiling if it is supported
+        System.out.println("Trying out unfiling");
+        if (!(cap.isUnfilingSupported())) {
+            System.out.println("Unfiling not supported by this repository");
+        } else {
+            // remove our document from both folders
+            System.out.println("removing :" + doc.getName() + "from 'ADGNewFolder':-");
+            doc.removeFromFolder(newFolder);
+            System.out.println("removing :" + doc.getName() + "from 'ADGNewFolder 2':-");
+            doc.removeFromFolder(newFolder2);
+            // Did it work?
+            Document docTest = (Document) session.getObject(id);
+            if (docTest != null) {
+                System.out.println(docTest.getName() + " still exists");
+            }
+
+        }
+
+        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");
+        }
+
+        // check out the latest version of test.txt, make some changes to the
+        // PWC, and
+        // check in the new version
+        if (versionable) {
+            Document pwc = (Document) session.getObject(doc.checkOut());
+            try {
+                content = getContentAsString(pwc.getContentStream());
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            String updatedContents = content + "\nLine added in new version";
+
+            try {
+                buf = updatedContents.getBytes("UTF-8");
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+            contentStream = session.getObjectFactory().createContentStream(
+                    doc.getContentStream().getFileName(), buf.length,
+                    doc.getContentStream().getMimeType(), new ByteArrayInputStream(buf));
+
+            // Check in the pwc
+            try {
+                pwc.checkIn(false, null, contentStream, "minor version");
+            } catch (Exception e) {
+                e.printStackTrace();
+                System.out.println("checkin failed, trying to cancel the checkout");
+                pwc.cancelCheckOut();
+            }
+
+            System.out.println("Document version history");
+            {
+                List<Document> versions = doc.getAllVersions();
+                for (Document version : versions) {
+                    System.out.println("\tname: " + version.getName());
+                    System.out.println("\tversion label: " + version.getVersionLabel());
+                    System.out.println("\tversion series id: " + version.getVersionSeriesId());
+                    System.out.println("\tchecked out by: "
+                            + version.getVersionSeriesCheckedOutBy());
+                    System.out.println("\tchecked out id: "
+                            + version.getVersionSeriesCheckedOutId());
+                    System.out.println("\tmajor version: " + version.isMajorVersion());
+                    System.out.println("\tlatest version: " + version.isLatestVersion());
+                    System.out.println("\tlatest major version: " + version.isLatestMajorVersion());
+                    System.out.println("\tcheckin comment: " + version.getCheckinComment());
+                    System.out.println("\tcontent length: " + version.getContentStreamLength()
+                            + "\n");
+                }
+            }
+        }
+
+        System.out.println("\nRenditions...");
+        System.out.println("-------------");
+
+        // Renditions - find all objects and check for renditions
+        if (session.getRepositoryInfo().getCapabilities().getRenditionsCapability()
+                .equals(CapabilityRenditions.NONE)) {
+            System.out.println("Repository does not support renditions");
+        } else {
+            System.out
+                    .println("Finding first object in repository with thumbnail renditions - start");
+            Folder node = root;
+            Stack<Folder> stack = new Stack<Folder>();
+            while (node != null) {
+                children = node.getChildren();
+                for (CmisObject o : children) {
+                    if ((o.getType().isBaseType() && o.getType().getId().equals("cmis:folder"))
+                            || o.getBaseType().getId().equals("cmis:folder")) {
+                        stack.push((Folder) o);
+                    } else {
+                        OperationContext context = session.createOperationContext();
+                        context.setRenditionFilterString("cmis:thumbnail");
+                        CmisObject oo = session.getObject(o.getId(), context);
+                        List<Rendition> rl = oo.getRenditions();
+                        if (!rl.isEmpty()) {
+                            System.out.println("found  " + o.getName() + " of type "
+                                    + o.getType().getDisplayName() + "that has renditions...");
+                            for (Rendition rendition : rl) {
+                                System.out.print("kind: " + rendition.getKind());
+                                System.out.print("\tmimetype: " + rendition.getMimeType());
+                                System.out.print("\twidth: " + rendition.getWidth());
+                                System.out.print("\theight: " + rendition.getHeight());
+                                System.out.println("\tstream id: " + rendition.getStreamId());
+                            }
+                            break; // Just show the first object with
+                                   // renditions. Remove this
+                                   // Break to show them all
+
+                        }
+                    }
+                }
+                if (stack.isEmpty()) {
+                    node = null;
+                } else {
+                    node = (Folder) stack.pop();
+                }
+            }
+            System.out
+                    .println("Finding first object in repository with thumbnail renditions - end");
+        }
+
+        System.out.println("Getting Started...end of");
+    }
+
+    /**
+     * 
+     * @param folder
+     */
+    private static void printTree(Tree<FileableCmisObject> tree) {
+        System.out.println("Descendant " + tree.getItem().getName());
+        for (Tree<FileableCmisObject> t : tree.getChildren()) {
+            printTree(t);
+        }
+    }
+
+    /**
+     * 
+     * @param folder
+     */
+    private static void printFolderTree(Tree<FileableCmisObject> tree) {
+        System.out.println("Folder " + tree.getItem().getName());
+        for (Tree<FileableCmisObject> t : tree.getChildren()) {
+            printFolderTree(t);
+        }
+    }
+
+    /**
+     * Cleans up any objects we created in a previous run of this program on the
+     * supplied session
+     * 
+     * @param s
+     *            an active cmis session
+     */
+    private static void cleanup(Session s) {
+        System.out.println("Starting cleaning up repository");
+        String[] folders = { "ADGNewFolder", "ADGNewFolder 2", "ADGFolder1", "ADGFolderPaging" };
+        for (int i = 0; i < folders.length; i++) {
+            String path = "/" + folders[i];
+
+            System.out.println("finding and deleting folder tree " + path);
+            CmisObject o = null;
+            try {
+                o = s.getObjectByPath(path);
+            } catch (CmisObjectNotFoundException e) {
+                // ignore
+            }
+            if (o != null) {
+                ((Folder) o).deleteTree(true, UnfileObject.DELETE, true);
+            }
+        }
+
+        System.out.println("Finished cleaning up repository");
+
+    }
+
+    /**
+     * Helper method to get the contents of a stream
+     * 
+     * @param stream
+     * @return
+     * @throws IOException
+     */
+    private static String getContentAsString(ContentStream stream) throws IOException {
+        InputStream in2 = stream.getStream();
+        StringBuffer sbuf = null;
+        sbuf = new StringBuffer(in2.available());
+        int count;
+        byte[] buf2 = new byte[100];
+        while ((count = in2.read(buf2)) != -1) {
+            for (int i = 0; i < count; i++) {
+                sbuf.append((char) buf2[i]);
+            }
+        }
+        in2.close();
+        return sbuf.toString();
+    }
+
+    /**
+     * Creates size folders under root with names ADGFolder0, ADGFolder1,...,
+     * 
+     * @param root
+     *            - parent folder
+     * @param size
+     *            - number of folders to create
+     */
+    private static void createFolders(Folder root, int size) {
+        HashMap<String, String> newFolderProps = new HashMap<String, String>();
+
+        newFolderProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
+
+        for (int i = 0; i < size; i++) {
+            newFolderProps.put(PropertyIds.NAME, "ADGFolder" + i);
+            root.createFolder(newFolderProps);
+        }
+    }
+
+}

Propchange: chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-getting-started/src/main/java/org/apache/chemistry/opencmis/doc/GettingStarted.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/pom.xml
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/pom.xml?rev=1138346&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/pom.xml (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/pom.xml Wed Jun 22 09:00:00 2011
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Licensed under the Apache License, Version 2.0 (the "License"); you 
+ may not use this file except in compliance with the License. You may obtain 
+ a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless 
+ required by applicable law or agreed to in writing, software distributed 
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 
+ OR CONDITIONS OF ANY KIND, either express or implied. See the License for 
+ the specific language governing permissions and limitations under the License. -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+  <groupId>org.apache</groupId>
+  <artifactId>apache</artifactId>
+  <version>9</version>
+ </parent>
+
+ <!-- Project Information -->
+
+ <groupId>org.apache.chemistry.opencmis</groupId>
+ <artifactId>chemistry-opencmis-hello</artifactId>
+ <name>Apache Chemistry OpenCMIS Hello World Example</name>
+ <version>0.1-SNAPSHOT</version>
+ <packaging>jar</packaging>
+
+ <organization>
+  <name>The Apache Software Foundation</name>
+  <url>http://www.apache.org/</url>
+ </organization>
+
+ <licenses>
+  <license>
+   <name>Apache 2</name>
+   <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+   <distribution>repo</distribution>
+  </license>
+ </licenses>
+
+ <properties>
+  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  <maven.compile.source>1.5</maven.compile.source>
+  <maven.compile.target>1.5</maven.compile.target>
+ </properties>
+
+ <build>
+  <plugins>
+   <plugin>
+    <inherited>true</inherited>
+    <artifactId>maven-compiler-plugin</artifactId>
+    <configuration>
+     <target>${maven.compile.target}</target>
+     <source>${maven.compile.source}</source>
+     <encoding>UTF-8</encoding>
+    </configuration>
+   </plugin>
+   <plugin>
+    <artifactId>maven-resources-plugin</artifactId>
+    <version>2.3</version>
+    <configuration>
+     <encoding>UTF-8</encoding>
+    </configuration>
+   </plugin>
+   <plugin>
+    <artifactId>maven-eclipse-plugin</artifactId>
+    <version>2.8</version>
+    <configuration>
+     <downloadSources>true</downloadSources>
+     <downloadJavadocs>true</downloadJavadocs>
+     <workspace>..</workspace>
+    </configuration>
+   </plugin>
+   <plugin>
+    <groupId>org.codehaus.mojo</groupId>
+    <artifactId>exec-maven-plugin</artifactId>
+    <version>1.1.1</version>
+    <executions>
+     <execution>
+      <phase>test</phase>
+      <goals>
+       <goal>java</goal>
+      </goals>
+     </execution>
+    </executions>
+    <configuration>
+     <mainClass>org.apache.chemistry.opencmis.doc.Hello</mainClass>
+    </configuration>
+   </plugin>
+  </plugins>
+ </build>
+
+ <dependencies>
+  <dependency>
+   <groupId>org.apache.chemistry.opencmis</groupId>
+   <artifactId>chemistry-opencmis-client-impl</artifactId>
+   <version>0.3.0</version>
+  </dependency>
+ </dependencies>
+
+</project>

Propchange: chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/main/java/org/apache/chemistry/opencmis/doc/Hello.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/main/java/org/apache/chemistry/opencmis/doc/Hello.java?rev=1138346&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/main/java/org/apache/chemistry/opencmis/doc/Hello.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/main/java/org/apache/chemistry/opencmis/doc/Hello.java Wed Jun 22 09:00:00 2011
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.doc;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.client.api.CmisObject;
+import org.apache.chemistry.opencmis.client.api.Folder;
+import org.apache.chemistry.opencmis.client.api.ItemIterable;
+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.SessionParameter;
+import org.apache.chemistry.opencmis.commons.enums.BindingType;
+
+public class Hello {
+    public static void main(String args[]) {
+        
+        System.out.println(Hello.class.getName() + " started");
+
+        // Create a SessionFactory and set up the SessionParameter map
+        SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
+        Map<String, String> parameter = new HashMap<String, String>();
+
+        // connection settings - we're connecting to a public cmis repo,
+        // using the AtomPUB binding
+        parameter.put(SessionParameter.ATOMPUB_URL, " http://opencmis.cloudapp.net/inmemory/atom/");
+        parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
+
+        // find all the repositories at this URL - there should only be one.
+        List<Repository> repositories = new ArrayList<Repository>();
+        repositories = sessionFactory.getRepositories(parameter);
+        for (Repository r : repositories) {
+            System.out.println("Found repository: " + r.getName());
+        }
+
+        // create session with the first (and only) repository
+        Repository repository = repositories.get(0);
+        parameter.put(SessionParameter.REPOSITORY_ID, repository.getId());
+        Session session = sessionFactory.createSession(parameter);
+
+        System.out.println("Got a connection to repository: " + repository.getName() + ", with id: "
+                + repository.getId());
+
+        // Get everything in the root folder and print the names of the objects
+        Folder root = session.getRootFolder();
+        ItemIterable<CmisObject> children = root.getChildren();
+        System.out.println("Found the following objects in the root folder:-");
+        for (CmisObject o : children) {
+            System.out.println(o.getName());
+        }
+        
+        System.out.println(Hello.class.getName() + " ended");
+    }
+}

Propchange: chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-hello/src/main/java/org/apache/chemistry/opencmis/doc/Hello.java
------------------------------------------------------------------------------
    svn:eol-style = native