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 2010/03/09 16:28:56 UTC

svn commit: r920921 - in /incubator/chemistry/trunk/opencmis/opencmis-client: opencmis-client-api/src/main/java/org/apache/opencmis/client/api/ opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ opencmis-client-impl/src/main/j...

Author: fmui
Date: Tue Mar  9 15:28:56 2010
New Revision: 920921

URL: http://svn.apache.org/viewvc?rev=920921&view=rev
Log:
implemented create* - not tested yet

Modified:
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Document.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Folder.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentSessionImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/SessionUtil.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Document.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Document.java?rev=920921&r1=920920&r2=920921&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Document.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Document.java Tue Mar  9 15:28:56 2010
@@ -18,7 +18,6 @@
  */
 package org.apache.opencmis.client.api;
 
-import java.math.BigInteger;
 import java.util.List;
 
 import org.apache.opencmis.commons.enums.VersioningState;
@@ -32,9 +31,9 @@ public interface Document extends Fileab
 
   ContentStream getContentStream();
 
-  void setContentStream(boolean overwrite, ContentStream contentStream);
+  String setContentStream(boolean overwrite, ContentStream contentStream);
 
-  void deleteContentStream();
+  String deleteContentStream();
 
   // versioning service
 
@@ -78,14 +77,13 @@ public interface Document extends Fileab
   String getCheckinComment(); // cmis:checkinComment
 
   long getContentStreamLength(); // cmis:contentStreamLength
-  
+
   String getContentStreamMimeType(); // cmis:contentStreamMimeType
-  
+
   String getContentStreamFileName(); // cmis:contentStreamFileName
-  
+
   String getContentStreamId(); // cmis:contentStreamId
-  
-  
+
   /**
    * Shortcut for ObjectFactory.createDocumentFromSource(this, ...).
    * 

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Folder.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Folder.java?rev=920921&r1=920920&r2=920921&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Folder.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Folder.java Tue Mar  9 15:28:56 2010
@@ -32,21 +32,19 @@ import org.apache.opencmis.commons.enums
 public interface Folder extends FileableCmisObject {
 
   // object service
-  Document createDocument(String name, String typeId);
-
-  Document createDocument(List<Property<?>> properties, ContentStream contentstream,
-      VersioningState versioningState, List<Policy> policies, List<Ace> addACEs,
-      List<Ace> removeACEs);
+  Document createDocument(List<Property<?>> properties, ContentStream contentStream,
+      VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
+      List<Ace> removeAces, OperationContext context);
 
   Document createDocumentFromSource(Document source, List<Property<?>> properties,
-      VersioningState versioningState, List<Policy> policies, List<Ace> addACEs,
-      List<Ace> removeACEs);
+      VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
+      List<Ace> removeAces, OperationContext context);
 
-  Folder createFolder(List<Property<?>> properties, List<Policy> policies, List<Ace> addACEs,
-      List<Ace> removeACEs);
+  Folder createFolder(List<Property<?>> properties, List<Policy> policies, List<Ace> addAces,
+      List<Ace> removeAces, OperationContext context);
 
-  Policy createPolicy(List<Property<?>> properties, List<Policy> policies, List<Ace> addACEs,
-      List<Ace> removeACEs);
+  Policy createPolicy(List<Property<?>> properties, List<Policy> policies, List<Ace> addAces,
+      List<Ace> removeAces, OperationContext context);
 
   /**
    * @return list of object ids which failed to be deleted
@@ -68,7 +66,7 @@ public interface Folder extends Fileable
   PagingList<CmisObject> getChildren(OperationContext context, int itemsPerPage);
 
   boolean isRootFolder();
-  
+
   Folder getFolderParent();
 
   String getPath();

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java?rev=920921&r1=920920&r2=920921&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java Tue Mar  9 15:28:56 2010
@@ -29,6 +29,7 @@ import org.apache.opencmis.client.api.re
 import org.apache.opencmis.client.api.util.Container;
 import org.apache.opencmis.client.api.util.PagingList;
 import org.apache.opencmis.commons.enums.IncludeRelationships;
+import org.apache.opencmis.commons.enums.VersioningState;
 import org.apache.opencmis.commons.provider.CmisProvider;
 
 /**
@@ -163,4 +164,22 @@ public interface Session {
    */
   PagingList<ChangeEvent> getContentChanges(String changeLogToken, int itemsPerPage);
 
+  // create
+
+  String createDocument(List<Property<?>> properties, String folderId, ContentStream contentStream,
+      VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
+      List<Ace> removeAces);
+
+  String createDocumentFromSource(Document source, List<Property<?>> properties, String folderId,
+      VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
+      List<Ace> removeAces);
+
+  String createFolder(List<Property<?>> properties, String folderId, List<Policy> policies,
+      List<Ace> addAces, List<Ace> removeAces);
+
+  String createPolicy(List<Property<?>> properties, String folderId, List<Policy> policies,
+      List<Ace> addAces, List<Ace> removeAces);
+
+  String createRelationship(List<Property<?>> properties, List<Policy> policies, List<Ace> addAces,
+      List<Ace> removeAces);
 }

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java?rev=920921&r1=920920&r2=920921&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java Tue Mar  9 15:28:56 2010
@@ -57,26 +57,6 @@ public interface ObjectFactory {
 
   // object service
 
-  // shortcut
-  Document createDocument(Folder parentfolder, String name);
-
-  Document createDocument(List<Property<?>> properties, Folder parentfolder,
-      ContentStream contentstream, VersioningState versioningState, List<Policy> policies,
-      List<Ace> addACEs, List<Ace> removeACEs);
-
-  Document createDocumentFromSource(Document source, List<Property<?>> properties,
-      Folder parentfolder, VersioningState versioningState, List<Policy> policies,
-      List<Ace> addACEs, List<Ace> removeACEs);
-
-  Relationship createRelationship(List<Property<?>> properties, List<Policy> policies,
-      List<Ace> addACEs, List<Ace> removeACEs);
-
-  Policy createPolicy(List<Property<?>> properties, Folder parentfolder, List<Policy> policies,
-      List<Ace> addACEs, List<Ace> removeACEs);
-
-  Folder createFolder(Folder parent, List<Property<?>> properties, List<Policy> policies,
-      List<Ace> addACEs, List<Ace> removeACEs);
-
   CmisObject convertObject(ObjectData objectData, OperationContext context);
 
   QueryResult convertQueryResult(ObjectData objectData);

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java?rev=920921&r1=920920&r2=920921&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java Tue Mar  9 15:28:56 2010
@@ -35,6 +35,7 @@ import org.apache.opencmis.commons.Prope
 import org.apache.opencmis.commons.enums.VersioningState;
 import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
 import org.apache.opencmis.commons.provider.ContentStreamData;
+import org.apache.opencmis.commons.provider.Holder;
 import org.apache.opencmis.commons.provider.ObjectData;
 
 public class PersistentDocumentImpl extends AbstractPersistentFilableCmisObject implements Document {
@@ -91,17 +92,17 @@ public class PersistentDocumentImpl exte
 
   public long getContentStreamLength() {
     BigInteger bigInt = getPropertyValue(PropertyIds.CMIS_CONTENT_STREAM_LENGTH);
-    return (bigInt == null) ? (long)-1 : bigInt.longValue();
+    return (bigInt == null) ? (long) -1 : bigInt.longValue();
   }
-  
+
   public String getContentStreamMimeType() {
     return getPropertyValue(PropertyIds.CMIS_CONTENT_STREAM_MIME_TYPE);
   }
-  
+
   public String getContentStreamFileName() {
     return getPropertyValue(PropertyIds.CMIS_CONTENT_STREAM_FILE_NAME);
   }
-  
+
   public String getContentStreamId() {
     return getPropertyValue(PropertyIds.CMIS_CONTENT_STREAM_ID);
   }
@@ -156,8 +157,8 @@ public class PersistentDocumentImpl exte
     String objectId = getObjectId();
 
     List<ObjectData> versions = getProvider().getVersioningService().getAllVersions(
-        getRepositoryId(), objectId, context.getFilterString(), context.isIncludeAllowableActions(),
-        null);
+        getRepositoryId(), objectId, context.getFilterString(),
+        context.isIncludeAllowableActions(), null);
 
     ObjectFactory objectFactory = getSession().getObjectFactory();
 
@@ -213,11 +214,40 @@ public class PersistentDocumentImpl exte
         contentStream.getMimeType(), contentStream.getStream());
   }
 
-  public void setContentStream(boolean overwrite, ContentStream contentStream) {
-    throw new CmisRuntimeException("not implemented");
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.Document#setContentStream(boolean,
+   * org.apache.opencmis.client.api.ContentStream)
+   */
+  public String setContentStream(boolean overwrite, ContentStream contentStream) {
+    String objectId = getObjectId();
+    Holder<String> objectIdHolder = new Holder<String>(objectId);
+
+    String changeToken = getPropertyValue(PropertyIds.CMIS_CHANGE_TOKEN);
+    Holder<String> changeTokenHolder = new Holder<String>(changeToken);
+
+    getProvider().getObjectService().setContentStream(getRepositoryId(), objectIdHolder, overwrite,
+        changeTokenHolder, SessionUtil.convertContentStream(getSession(), contentStream), null);
+
+    return objectIdHolder.getValue();
   }
 
-  public void deleteContentStream() {
-    throw new CmisRuntimeException("not implemented");
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.Document#deleteContentStream()
+   */
+  public String deleteContentStream() {
+    String objectId = getObjectId();
+    Holder<String> objectIdHolder = new Holder<String>(objectId);
+
+    String changeToken = getPropertyValue(PropertyIds.CMIS_CHANGE_TOKEN);
+    Holder<String> changeTokenHolder = new Holder<String>(changeToken);
+
+    getProvider().getObjectService().deleteContentStream(getRepositoryId(), objectIdHolder,
+        changeTokenHolder, null);
+
+    return objectIdHolder.getValue();
   }
 }

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java?rev=920921&r1=920920&r2=920921&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java Tue Mar  9 15:28:56 2010
@@ -68,37 +68,132 @@ public class PersistentFolderImpl extend
     initialize(session, objectType, objectData, context);
   }
 
-  public PersistentFolderImpl(PersistentSessionImpl session) {
-    initialize(session, null, null, null);
-  }
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.Folder#createDocument(java.util.List,
+   * org.apache.opencmis.client.api.ContentStream,
+   * org.apache.opencmis.commons.enums.VersioningState, java.util.List, java.util.List,
+   * java.util.List, org.apache.opencmis.client.api.OperationContext)
+   */
+  public Document createDocument(List<Property<?>> properties, ContentStream contentStream,
+      VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
+      List<Ace> removeAces, OperationContext context) {
+    String objectId = getObjectId();
 
-  public Document createDocument(String name, String typeId) {
-    throw new CmisRuntimeException("not implemented");
-  }
+    String newId = getProvider().getObjectService().createDocument(getRepositoryId(),
+        SessionUtil.convertProperties(getSession(), properties), objectId,
+        SessionUtil.convertContentStream(getSession(), contentStream), versioningState,
+        SessionUtil.convertPolicies(policies), SessionUtil.convertAces(getSession(), addAces),
+        SessionUtil.convertAces(getSession(), removeAces), null);
 
-  public Document createDocument(List<Property<?>> properties, ContentStream contentstream,
-      VersioningState versioningState, List<Policy> policies, List<Ace> addACEs,
-      List<Ace> removeACEs) {
-    throw new CmisRuntimeException("not implemented");
+    // if no context is provided the object will not be fetched
+    if (context == null) {
+      return null;
+    }
+
+    // get the new object
+    CmisObject object = getSession().getObject(newId, context);
+    if (!(object instanceof Document)) {
+      throw new CmisRuntimeException("Newly created object is not a document! New id: " + newId);
+    }
+
+    return (Document) object;
   }
 
+  /*
+   * (non-Javadoc)
+   * 
+   * @see
+   * org.apache.opencmis.client.api.Folder#createDocumentFromSource(org.apache.opencmis.client.api
+   * .Document, java.util.List, org.apache.opencmis.commons.enums.VersioningState, java.util.List,
+   * java.util.List, java.util.List, org.apache.opencmis.client.api.OperationContext)
+   */
   public Document createDocumentFromSource(Document source, List<Property<?>> properties,
-      VersioningState versioningState, List<Policy> policies, List<Ace> addACEs,
-      List<Ace> removeACEs) {
-    throw new CmisRuntimeException("not implemented");
+      VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
+      List<Ace> removeAces, OperationContext context) {
+    String objectId = getObjectId();
+
+    if ((source == null) || (source.getId() == null)) {
+      throw new IllegalArgumentException("Source document has no id!");
+    }
+
+    String newId = getProvider().getObjectService().createDocumentFromSource(getRepositoryId(),
+        source.getId(), SessionUtil.convertProperties(getSession(), properties), objectId,
+        versioningState, SessionUtil.convertPolicies(policies),
+        SessionUtil.convertAces(getSession(), addAces),
+        SessionUtil.convertAces(getSession(), removeAces), null);
+
+    // if no context is provided the object will not be fetched
+    if (context == null) {
+      return null;
+    }
+
+    // get the new object
+    CmisObject object = getSession().getObject(newId, context);
+    if (!(object instanceof Document)) {
+      throw new CmisRuntimeException("Newly created object is not a document! New id: " + newId);
+    }
+
+    return (Document) object;
   }
 
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.Folder#createFolder(java.util.List, java.util.List,
+   * java.util.List, java.util.List, org.apache.opencmis.client.api.OperationContext)
+   */
   public Folder createFolder(List<Property<?>> properties, List<Policy> policies,
-      List<Ace> addACEs, List<Ace> removeACEs) {
+      List<Ace> addAces, List<Ace> removeAces, OperationContext context) {
+    String objectId = getObjectId();
+
+    String newId = getProvider().getObjectService().createFolder(getRepositoryId(),
+        SessionUtil.convertProperties(getSession(), properties), objectId,
+        SessionUtil.convertPolicies(policies), SessionUtil.convertAces(getSession(), addAces),
+        SessionUtil.convertAces(getSession(), removeAces), null);
+
+    // if no context is provided the object will not be fetched
+    if (context == null) {
+      return null;
+    }
+
+    // get the new object
+    CmisObject object = getSession().getObject(newId, context);
+    if (!(object instanceof Folder)) {
+      throw new CmisRuntimeException("Newly created object is not a folder! New id: " + newId);
+    }
 
-    Folder f = getSession().getObjectFactory().createFolder(this, properties, policies, addACEs,
-        removeACEs);
-    return f;
+    return (Folder) object;
   }
 
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.Folder#createPolicy(java.util.List, java.util.List,
+   * java.util.List, java.util.List, org.apache.opencmis.client.api.OperationContext)
+   */
   public Policy createPolicy(List<Property<?>> properties, List<Policy> policies,
-      List<Ace> addACEs, List<Ace> removeACEs) {
-    throw new CmisRuntimeException("not implemented");
+      List<Ace> addAces, List<Ace> removeAces, OperationContext context) {
+    String objectId = getObjectId();
+
+    String newId = getProvider().getObjectService().createPolicy(getRepositoryId(),
+        SessionUtil.convertProperties(getSession(), properties), objectId,
+        SessionUtil.convertPolicies(policies), SessionUtil.convertAces(getSession(), addAces),
+        SessionUtil.convertAces(getSession(), removeAces), null);
+
+    // if no context is provided the object will not be fetched
+    if (context == null) {
+      return null;
+    }
+
+    // get the new object
+    CmisObject object = getSession().getObject(newId, context);
+    if (!(object instanceof Policy)) {
+      throw new CmisRuntimeException("Newly created object is not a policy! New id: " + newId);
+    }
+
+    return (Policy) object;
   }
 
   /*

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentSessionImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentSessionImpl.java?rev=920921&r1=920920&r2=920921&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentSessionImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentSessionImpl.java Tue Mar  9 15:28:56 2010
@@ -29,13 +29,16 @@ import java.util.UUID;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.opencmis.client.api.Ace;
 import org.apache.opencmis.client.api.ChangeEvent;
 import org.apache.opencmis.client.api.CmisObject;
+import org.apache.opencmis.client.api.ContentStream;
 import org.apache.opencmis.client.api.Document;
 import org.apache.opencmis.client.api.ExtensionHandler;
 import org.apache.opencmis.client.api.Folder;
 import org.apache.opencmis.client.api.OperationContext;
 import org.apache.opencmis.client.api.PersistentSession;
+import org.apache.opencmis.client.api.Policy;
 import org.apache.opencmis.client.api.Property;
 import org.apache.opencmis.client.api.QueryResult;
 import org.apache.opencmis.client.api.Session;
@@ -62,6 +65,7 @@ import org.apache.opencmis.commons.enums
 import org.apache.opencmis.commons.enums.CmisProperties;
 import org.apache.opencmis.commons.enums.IncludeRelationships;
 import org.apache.opencmis.commons.enums.UnfileObjects;
+import org.apache.opencmis.commons.enums.VersioningState;
 import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
 import org.apache.opencmis.commons.impl.dataobjects.PropertyIdDefinitionImpl;
 import org.apache.opencmis.commons.impl.dataobjects.PropertyStringDefinitionImpl;
@@ -674,7 +678,7 @@ public class PersistentSessionImpl imple
         objectTypeIdPropertyType, folderTypeId);
     properties.add(typeProperty);
 
-    this.testRootFolder = rootFolder.createFolder(properties, null, null, null);
+    this.testRootFolder = rootFolder.createFolder(properties, null, null, null, getDefaultContext());
 
     og.setContentSizeInKB(10);
     og.setDocumentTypeId(documentTypeId);
@@ -769,4 +773,84 @@ public class PersistentSessionImpl imple
   public String getRepositoryId() {
     return this.getRepositoryInfo().getId();
   }
+
+  // creates
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.Session#createDocument(java.util.List, java.lang.String,
+   * org.apache.opencmis.client.api.ContentStream,
+   * org.apache.opencmis.commons.enums.VersioningState, java.util.List, java.util.List,
+   * java.util.List)
+   */
+  public String createDocument(List<Property<?>> properties, String folderId,
+      ContentStream contentStream, VersioningState versioningState, List<Policy> policies,
+      List<Ace> addAces, List<Ace> removeAces) {
+    return getProvider().getObjectService().createDocument(getRepositoryId(),
+        SessionUtil.convertProperties(this, properties), folderId,
+        SessionUtil.convertContentStream(this, contentStream), versioningState,
+        SessionUtil.convertPolicies(policies), SessionUtil.convertAces(this, addAces),
+        SessionUtil.convertAces(this, removeAces), null);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see
+   * org.apache.opencmis.client.api.Session#createDocumentFromSource(org.apache.opencmis.client.
+   * api.Document, java.util.List, java.lang.String,
+   * org.apache.opencmis.commons.enums.VersioningState, java.util.List, java.util.List,
+   * java.util.List)
+   */
+  public String createDocumentFromSource(Document source, List<Property<?>> properties,
+      String folderId, VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
+      List<Ace> removeAces) {
+    return getProvider().getObjectService().createDocumentFromSource(getRepositoryId(),
+        source.getId(), SessionUtil.convertProperties(this, properties), folderId, versioningState,
+        SessionUtil.convertPolicies(policies), SessionUtil.convertAces(this, addAces),
+        SessionUtil.convertAces(this, removeAces), null);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.Session#createFolder(java.util.List, java.lang.String,
+   * java.util.List, java.util.List, java.util.List)
+   */
+  public String createFolder(List<Property<?>> properties, String folderId, List<Policy> policies,
+      List<Ace> addAces, List<Ace> removeAces) {
+    return getProvider().getObjectService().createFolder(getRepositoryId(),
+        SessionUtil.convertProperties(this, properties), folderId,
+        SessionUtil.convertPolicies(policies), SessionUtil.convertAces(this, addAces),
+        SessionUtil.convertAces(this, removeAces), null);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.Session#createPolicy(java.util.List, java.lang.String,
+   * java.util.List, java.util.List, java.util.List)
+   */
+  public String createPolicy(List<Property<?>> properties, String folderId, List<Policy> policies,
+      List<Ace> addAces, List<Ace> removeAces) {
+    return getProvider().getObjectService().createPolicy(getRepositoryId(),
+        SessionUtil.convertProperties(this, properties), folderId,
+        SessionUtil.convertPolicies(policies), SessionUtil.convertAces(this, addAces),
+        SessionUtil.convertAces(this, removeAces), null);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.Session#createRelationship(java.util.List, java.util.List,
+   * java.util.List, java.util.List)
+   */
+  public String createRelationship(List<Property<?>> properties, List<Policy> policies,
+      List<Ace> addAces, List<Ace> removeAces) {
+
+    return getProvider().getObjectService().createRelationship(getRepositoryId(),
+        SessionUtil.convertProperties(this, properties), SessionUtil.convertPolicies(policies),
+        SessionUtil.convertAces(this, addAces), SessionUtil.convertAces(this, removeAces), null);
+  }
 }

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/SessionUtil.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/SessionUtil.java?rev=920921&r1=920920&r2=920921&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/SessionUtil.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/SessionUtil.java Tue Mar  9 15:28:56 2010
@@ -30,6 +30,8 @@ import java.util.Map;
 import org.apache.opencmis.client.api.Ace;
 import org.apache.opencmis.client.api.Acl;
 import org.apache.opencmis.client.api.AllowableActions;
+import org.apache.opencmis.client.api.ContentStream;
+import org.apache.opencmis.client.api.Policy;
 import org.apache.opencmis.client.api.Property;
 import org.apache.opencmis.client.api.QueryProperty;
 import org.apache.opencmis.client.api.Rendition;
@@ -59,6 +61,7 @@ import org.apache.opencmis.commons.excep
 import org.apache.opencmis.commons.provider.AccessControlEntry;
 import org.apache.opencmis.commons.provider.AccessControlList;
 import org.apache.opencmis.commons.provider.AllowableActionsData;
+import org.apache.opencmis.commons.provider.ContentStreamData;
 import org.apache.opencmis.commons.provider.ObjectData;
 import org.apache.opencmis.commons.provider.PropertiesData;
 import org.apache.opencmis.commons.provider.PropertyData;
@@ -298,6 +301,25 @@ public final class SessionUtil {
   }
 
   /**
+   * Converts policies.
+   */
+  public static List<String> convertPolicies(List<Policy> policies) {
+    if (policies == null) {
+      return null;
+    }
+
+    List<String> result = new ArrayList<String>();
+
+    for (Policy policy : policies) {
+      if ((policy != null) && (policy.getId() != null)) {
+        result.add(policy.getId());
+      }
+    }
+
+    return result;
+  }
+
+  /**
    * Converts rendition.
    */
   public static Rendition convertRendition(Session session, String objectId, RenditionData rendition) {
@@ -316,6 +338,23 @@ public final class SessionUtil {
   }
 
   /**
+   * Converts a content stream.
+   */
+  public static ContentStreamData convertContentStream(Session session, ContentStream contentStream) {
+    if (contentStream == null) {
+      return null;
+    }
+
+    ProviderObjectFactory pof = session.getProvider().getObjectFactory();
+
+    BigInteger length = (contentStream.getLength() < 0 ? null : BigInteger.valueOf(contentStream
+        .getLength()));
+
+    return pof.createContentStream(length, contentStream.getMimeType(),
+        contentStream.getFileName(), contentStream.getStream());
+  }
+
+  /**
    * Extracts the type information from the given object data and returns the object type or
    * <code>null</code> if there is no type information.
    */

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java?rev=920921&r1=920920&r2=920921&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java Tue Mar  9 15:28:56 2010
@@ -27,13 +27,8 @@ import org.apache.opencmis.client.api.Ac
 import org.apache.opencmis.client.api.AllowableActions;
 import org.apache.opencmis.client.api.CmisObject;
 import org.apache.opencmis.client.api.ContentStream;
-import org.apache.opencmis.client.api.Document;
-import org.apache.opencmis.client.api.Folder;
 import org.apache.opencmis.client.api.OperationContext;
-import org.apache.opencmis.client.api.Policy;
-import org.apache.opencmis.client.api.Property;
 import org.apache.opencmis.client.api.QueryResult;
-import org.apache.opencmis.client.api.Relationship;
 import org.apache.opencmis.client.api.objecttype.ObjectType;
 import org.apache.opencmis.client.api.repository.ObjectFactory;
 import org.apache.opencmis.client.runtime.AceImpl;
@@ -47,7 +42,6 @@ import org.apache.opencmis.client.runtim
 import org.apache.opencmis.client.runtime.PersistentSessionImpl;
 import org.apache.opencmis.client.runtime.QueryResultImpl;
 import org.apache.opencmis.client.runtime.SessionUtil;
-import org.apache.opencmis.commons.enums.VersioningState;
 import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
 import org.apache.opencmis.commons.provider.ObjectData;
 
@@ -80,44 +74,7 @@ public class PersistentObjectFactoryImpl
       InputStream stream) {
     return new ContentStreamImpl(filename, length, mimetype, stream);
   }
-
-  public Document createDocument(Folder parentfolder, String name) {
-    throw new CmisRuntimeException("not implemented");
-  }
-
-  public Document createDocument(List<Property<?>> properties, Folder parentfolder,
-      ContentStream contentstream, VersioningState versioningState, List<Policy> policies,
-      List<Ace> addACEs, List<Ace> removeACEs) {
-    throw new CmisRuntimeException("not implemented");
-  }
-
-  public Document createDocumentFromSource(Document source, List<Property<?>> properties,
-      Folder parentfolder, VersioningState versioningState, List<Policy> policies,
-      List<Ace> addACEs, List<Ace> removeACEs) {
-    throw new CmisRuntimeException("not implemented");
-  }
-
-  public Folder createFolder(Folder parent, List<Property<?>> properties, List<Policy> policies,
-      List<Ace> addACEs, List<Ace> removeACEs) {
-
-    PersistentFolderImpl f = new PersistentFolderImpl(this.session);
-
-    /* create folder in backend */
-    f.create(parent, properties, policies, addACEs, removeACEs);
-
-    return f;
-  }
-
-  public Policy createPolicy(List<Property<?>> properties, Folder parentfolder,
-      List<Policy> policies, List<Ace> addACEs, List<Ace> removeACEs) {
-    throw new CmisRuntimeException("not implemented");
-  }
-
-  public Relationship createRelationship(List<Property<?>> properties, List<Policy> policies,
-      List<Ace> addACEs, List<Ace> removeACEs) {
-    throw new CmisRuntimeException("not implemented");
-  }
-
+  
   /**
    * Converts object data into an API object.
    */