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/28 16:33:04 UTC

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

Author: fmui
Date: Sun Mar 28 14:33:03 2010
New Revision: 928409

URL: http://svn.apache.org/viewvc?rev=928409&view=rev
Log:
CMIS-184: replaced List<Property<?>> with Map<String, ?>

Removed:
    incubator/chemistry/trunk/opencmis/opencmis-test/opencmis-test-fit/log4j.log.1
Modified:
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java
    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/AbstractPersistentCmisObject.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/repository/PersistentObjectFactoryImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-commons/opencmis-commons-impl/src/main/java/org/apache/opencmis/commons/impl/dataobjects/AbstractPropertyData.java
    incubator/chemistry/trunk/opencmis/opencmis-test/opencmis-test-fit/src/test/java/org/apache/opencmis/fit/runtime/WriteObjectIT.java

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java?rev=928409&r1=928408&r2=928409&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java Sun Mar 28 14:33:03 2010
@@ -117,7 +117,7 @@ public interface CmisObject extends Obje
 
   ObjectId updateProperties();
 
-  ObjectId updateProperties(Map<String, Object> properties);
+  ObjectId updateProperties(Map<String, ?> properties);
 
   // relationship service
 

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=928409&r1=928408&r2=928409&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 Sun Mar 28 14:33:03 2010
@@ -19,6 +19,7 @@
 package org.apache.opencmis.client.api;
 
 import java.util.List;
+import java.util.Map;
 
 import org.apache.opencmis.commons.enums.VersioningState;
 
@@ -43,7 +44,7 @@ public interface Document extends Fileab
 
   void cancelCheckOut();
 
-  ObjectId checkIn(boolean major, List<Property<?>> properties, ContentStream contentStream,
+  ObjectId checkIn(boolean major, Map<String, ?> properties, ContentStream contentStream,
       String checkinComment, List<Policy> policies, List<Ace> addAces, List<Ace> removeAces);
 
   Document getObjectOfLatestVersion(boolean major);

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=928409&r1=928408&r2=928409&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 Sun Mar 28 14:33:03 2010
@@ -19,6 +19,7 @@
 package org.apache.opencmis.client.api;
 
 import java.util.List;
+import java.util.Map;
 
 import org.apache.opencmis.client.api.objecttype.ObjectType;
 import org.apache.opencmis.client.api.util.Container;
@@ -32,18 +33,18 @@ import org.apache.opencmis.commons.enums
 public interface Folder extends FileableCmisObject {
 
   // object service
-  Document createDocument(List<Property<?>> properties, ContentStream contentStream,
+  Document createDocument(Map<String, ?> properties, ContentStream contentStream,
       VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
       List<Ace> removeAces, OperationContext context);
 
-  Document createDocumentFromSource(ObjectId source, List<Property<?>> properties,
+  Document createDocumentFromSource(ObjectId source, Map<String, ?> properties,
       VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
       List<Ace> removeAces, OperationContext context);
 
-  Folder createFolder(List<Property<?>> properties, List<Policy> policies, List<Ace> addAces,
+  Folder createFolder(Map<String, ?> properties, List<Policy> policies, List<Ace> addAces,
       List<Ace> removeAces, OperationContext context);
 
-  Policy createPolicy(List<Property<?>> properties, List<Policy> policies, List<Ace> addAces,
+  Policy createPolicy(Map<String, ?> properties, List<Policy> policies, List<Ace> addAces,
       List<Ace> removeAces, OperationContext context);
 
   /**

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=928409&r1=928408&r2=928409&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 Sun Mar 28 14:33:03 2010
@@ -20,6 +20,7 @@ package org.apache.opencmis.client.api;
 
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.opencmis.client.api.objecttype.ObjectType;
@@ -165,20 +166,20 @@ public interface Session {
 
   // create
 
-  ObjectId createDocument(List<Property<?>> properties, ObjectId folderId,
+  ObjectId createDocument(Map<String, ?> properties, ObjectId folderId,
       ContentStream contentStream, VersioningState versioningState, List<Policy> policies,
       List<Ace> addAces, List<Ace> removeAces);
 
-  ObjectId createDocumentFromSource(ObjectId source, List<Property<?>> properties,
-      ObjectId folderId, VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
+  ObjectId createDocumentFromSource(ObjectId source, Map<String, ?> properties, ObjectId folderId,
+      VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
       List<Ace> removeAces);
 
-  ObjectId createFolder(List<Property<?>> properties, ObjectId folderId, List<Policy> policies,
+  ObjectId createFolder(Map<String, ?> properties, ObjectId folderId, List<Policy> policies,
       List<Ace> addAces, List<Ace> removeAces);
 
-  ObjectId createPolicy(List<Property<?>> properties, ObjectId folderId, List<Policy> policies,
+  ObjectId createPolicy(Map<String, ?> properties, ObjectId folderId, List<Policy> policies,
       List<Ace> addAces, List<Ace> removeAces);
 
-  ObjectId createRelationship(List<Property<?>> properties, List<Policy> policies,
-      List<Ace> addAces, List<Ace> removeAces);
+  ObjectId createRelationship(Map<String, ?> 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=928409&r1=928408&r2=928409&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 Sun Mar 28 14:33:03 2010
@@ -19,7 +19,6 @@
 package org.apache.opencmis.client.api.repository;
 
 import java.io.InputStream;
-import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -98,7 +97,7 @@ public interface ObjectFactory {
 
   Map<String, Property<?>> convertProperties(ObjectType objectType, PropertiesData properties);
 
-  PropertiesData convertProperties(Collection<Property<?>> properties,
+  PropertiesData convertProperties(Map<String, ?> properties, ObjectType type,
       Set<Updatability> updatabilityFilter);
 
   List<QueryProperty<?>> convertQueryProperties(PropertiesData properties);

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java?rev=928409&r1=928408&r2=928409&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java Sun Mar 28 14:33:03 2010
@@ -97,6 +97,7 @@ public abstract class AbstractPersistent
     this.session = session;
     this.objectType = objectType;
     this.creationContext = new OperationContextImpl(context);
+    this.refreshTimestamp = System.currentTimeMillis();
 
     ObjectFactory of = getObjectFactory();
 
@@ -269,7 +270,8 @@ public abstract class AbstractPersistent
       // it's time to update
       getProvider().getObjectService().updateProperties(getRepositoryId(), objectIdHolder,
           changeTokenHolder,
-          getObjectFactory().convertProperties(this.properties.values(), updatebility), null);
+          getObjectFactory().convertProperties(this.properties, this.objectType, updatebility),
+          null);
 
       if (objectIdHolder.getValue() == null) {
         return null;
@@ -287,8 +289,8 @@ public abstract class AbstractPersistent
    * 
    * @see org.apache.opencmis.client.api.CmisObject#updateProperties(java.util.Map)
    */
-  public ObjectId updateProperties(Map<String, Object> updateProperties) {
-    if ((updateProperties == null) || (updateProperties.isEmpty())) {
+  public ObjectId updateProperties(Map<String, ?> properties) {
+    if ((properties == null) || (properties.isEmpty())) {
       throw new IllegalArgumentException("Properties must not be empty!");
     }
 
@@ -309,20 +311,10 @@ public abstract class AbstractPersistent
         updatebility.add(Updatability.WHENCHECKEDOUT);
       }
 
-      // build property list
-      ObjectFactory of = getObjectFactory();
-      List<Property<?>> propertyList = new ArrayList<Property<?>>();
-      for (Map.Entry<String, Object> property : updateProperties.entrySet()) {
-        PropertyDefinition<?> propertyDefinition = checkProperty(property.getKey(), property
-            .getValue());
-
-        // create property
-        propertyList.add(of.createProperty(propertyDefinition, property.getValue()));
-      }
-
       // it's time to update
       getProvider().getObjectService().updateProperties(getRepositoryId(), objectIdHolder,
-          changeTokenHolder, of.convertProperties(propertyList, updatebility), null);
+          changeTokenHolder,
+          getObjectFactory().convertProperties(properties, this.objectType, updatebility), null);
 
       if (objectIdHolder.getValue() == null) {
         return null;

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=928409&r1=928408&r2=928409&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 Sun Mar 28 14:33:03 2010
@@ -22,6 +22,7 @@ import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.opencmis.client.api.Ace;
@@ -161,31 +162,37 @@ public class PersistentDocumentImpl exte
   /*
    * (non-Javadoc)
    * 
-   * @see org.apache.opencmis.client.api.Document#checkIn(boolean, java.util.List,
+   * @see org.apache.opencmis.client.api.Document#checkIn(boolean, java.util.Map,
    * org.apache.opencmis.client.api.ContentStream, java.lang.String, java.util.List, java.util.List,
    * java.util.List)
    */
-  public ObjectId checkIn(boolean major, List<Property<?>> properties, ContentStream contentStream,
+  public ObjectId checkIn(boolean major, Map<String, ?> properties, ContentStream contentStream,
       String checkinComment, List<Policy> policies, List<Ace> addAces, List<Ace> removeAces) {
-    String objectId = getObjectId();
-    Holder<String> objectIdHolder = new Holder<String>(objectId);
+    readLock();
+    try {
+      String objectId = getObjectId();
+      Holder<String> objectIdHolder = new Holder<String>(objectId);
 
-    ObjectFactory of = getObjectFactory();
+      ObjectFactory of = getObjectFactory();
 
-    Set<Updatability> updatebility = new HashSet<Updatability>();
-    updatebility.add(Updatability.READWRITE);
-    updatebility.add(Updatability.WHENCHECKEDOUT);
-
-    getProvider().getVersioningService().checkIn(getRepositoryId(), objectIdHolder, major,
-        of.convertProperties(properties, updatebility), of.convertContentStream(contentStream),
-        checkinComment, of.convertPolicies(policies), of.convertAces(addAces),
-        of.convertAces(removeAces), null);
+      Set<Updatability> updatebility = new HashSet<Updatability>();
+      updatebility.add(Updatability.READWRITE);
+      updatebility.add(Updatability.WHENCHECKEDOUT);
+
+      getProvider().getVersioningService().checkIn(getRepositoryId(), objectIdHolder, major,
+          of.convertProperties(properties, getType(), updatebility),
+          of.convertContentStream(contentStream), checkinComment, of.convertPolicies(policies),
+          of.convertAces(addAces), of.convertAces(removeAces), null);
 
-    if (objectIdHolder.getValue() == null) {
-      return null;
-    }
+      if (objectIdHolder.getValue() == null) {
+        return null;
+      }
 
-    return getSession().createObjectId(objectIdHolder.getValue());
+      return getSession().createObjectId(objectIdHolder.getValue());
+    }
+    finally {
+      readUnlock();
+    }
   }
 
   /*

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=928409&r1=928408&r2=928409&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 Sun Mar 28 14:33:03 2010
@@ -23,6 +23,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.opencmis.client.api.Ace;
@@ -34,7 +35,6 @@ import org.apache.opencmis.client.api.Fo
 import org.apache.opencmis.client.api.ObjectId;
 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.objecttype.ObjectType;
 import org.apache.opencmis.client.api.repository.ObjectFactory;
 import org.apache.opencmis.client.api.util.Container;
@@ -42,6 +42,7 @@ import org.apache.opencmis.client.api.ut
 import org.apache.opencmis.client.runtime.util.AbstractPagingList;
 import org.apache.opencmis.client.runtime.util.ContainerImpl;
 import org.apache.opencmis.commons.PropertyIds;
+import org.apache.opencmis.commons.enums.BaseObjectTypeIds;
 import org.apache.opencmis.commons.enums.IncludeRelationships;
 import org.apache.opencmis.commons.enums.UnfileObjects;
 import org.apache.opencmis.commons.enums.Updatability;
@@ -76,12 +77,12 @@ public class PersistentFolderImpl extend
   /*
    * (non-Javadoc)
    * 
-   * @see org.apache.opencmis.client.api.Folder#createDocument(java.util.List,
+   * @see org.apache.opencmis.client.api.Folder#createDocument(java.util.Map,
    * 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,
+  public Document createDocument(Map<String, ?> properties, ContentStream contentStream,
       VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
       List<Ace> removeAces, OperationContext context) {
     String objectId = getObjectId();
@@ -89,7 +90,7 @@ public class PersistentFolderImpl extend
     ObjectFactory of = getObjectFactory();
 
     String newId = getProvider().getObjectService().createDocument(getRepositoryId(),
-        of.convertProperties(properties, CREATE_UPDATABILITY), objectId,
+        of.convertProperties(properties, null, CREATE_UPDATABILITY), objectId,
         of.convertContentStream(contentStream), versioningState, of.convertPolicies(policies),
         of.convertAces(addAces), of.convertAces(removeAces), null);
 
@@ -112,26 +113,41 @@ public class PersistentFolderImpl extend
    * 
    * @see
    * org.apache.opencmis.client.api.Folder#createDocumentFromSource(org.apache.opencmis.client.api
-   * .ObjectId, java.util.List, org.apache.opencmis.commons.enums.VersioningState, java.util.List,
+   * .ObjectId, java.util.Map, org.apache.opencmis.commons.enums.VersioningState, java.util.List,
    * java.util.List, java.util.List, org.apache.opencmis.client.api.OperationContext)
    */
-  public Document createDocumentFromSource(ObjectId source, List<Property<?>> properties,
+  public Document createDocumentFromSource(ObjectId source, Map<String, ?> properties,
       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 must be set!");
     }
 
+    String objectId = getObjectId();
+
+    // get the type of the source document
+    ObjectType type = null;
+    if (source instanceof CmisObject) {
+      type = ((CmisObject) source).getBaseType();
+    }
+    else {
+      CmisObject sourceObj = getSession().getObject(source);
+      type = sourceObj.getType();
+    }
+
+    if (type.getBaseTypeId() != BaseObjectTypeIds.CMIS_DOCUMENT) {
+      throw new IllegalArgumentException("Source object must be a document!");
+    }
+
     ObjectFactory of = getObjectFactory();
 
     Set<Updatability> updatebility = new HashSet<Updatability>();
     updatebility.add(Updatability.READWRITE);
 
     String newId = getProvider().getObjectService().createDocumentFromSource(getRepositoryId(),
-        source.getId(), of.convertProperties(properties, updatebility), objectId, versioningState,
-        of.convertPolicies(policies), of.convertAces(addAces), of.convertAces(removeAces), null);
+        source.getId(), of.convertProperties(properties, type, updatebility), objectId,
+        versioningState, of.convertPolicies(policies), of.convertAces(addAces),
+        of.convertAces(removeAces), null);
 
     // if no context is provided the object will not be fetched
     if ((context == null) || (newId == null)) {
@@ -150,17 +166,17 @@ public class PersistentFolderImpl extend
   /*
    * (non-Javadoc)
    * 
-   * @see org.apache.opencmis.client.api.Folder#createFolder(java.util.List, java.util.List,
+   * @see org.apache.opencmis.client.api.Folder#createFolder(java.util.Map, 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, OperationContext context) {
+  public Folder createFolder(Map<String, ?> properties, List<Policy> policies, List<Ace> addAces,
+      List<Ace> removeAces, OperationContext context) {
     String objectId = getObjectId();
 
     ObjectFactory of = getObjectFactory();
 
     String newId = getProvider().getObjectService().createFolder(getRepositoryId(),
-        of.convertProperties(properties, CREATE_UPDATABILITY), objectId,
+        of.convertProperties(properties, null, CREATE_UPDATABILITY), objectId,
         of.convertPolicies(policies), of.convertAces(addAces), of.convertAces(removeAces), null);
 
     // if no context is provided the object will not be fetched
@@ -180,17 +196,17 @@ public class PersistentFolderImpl extend
   /*
    * (non-Javadoc)
    * 
-   * @see org.apache.opencmis.client.api.Folder#createPolicy(java.util.List, java.util.List,
+   * @see org.apache.opencmis.client.api.Folder#createPolicy(java.util.Map, 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, OperationContext context) {
+  public Policy createPolicy(Map<String, ?> properties, List<Policy> policies, List<Ace> addAces,
+      List<Ace> removeAces, OperationContext context) {
     String objectId = getObjectId();
 
     ObjectFactory of = getObjectFactory();
 
     String newId = getProvider().getObjectService().createPolicy(getRepositoryId(),
-        of.convertProperties(properties, CREATE_UPDATABILITY), objectId,
+        of.convertProperties(properties, null, CREATE_UPDATABILITY), objectId,
         of.convertPolicies(policies), of.convertAces(addAces), of.convertAces(removeAces), null);
 
     // if no context is provided the object will not be fetched

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=928409&r1=928408&r2=928409&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 Sun Mar 28 14:33:03 2010
@@ -41,7 +41,6 @@ import org.apache.opencmis.client.api.Ob
 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.objecttype.ObjectType;
 import org.apache.opencmis.client.api.repository.ObjectFactory;
@@ -58,6 +57,7 @@ import org.apache.opencmis.commons.Sessi
 import org.apache.opencmis.commons.api.TypeDefinition;
 import org.apache.opencmis.commons.api.TypeDefinitionContainer;
 import org.apache.opencmis.commons.api.TypeDefinitionList;
+import org.apache.opencmis.commons.enums.BaseObjectTypeIds;
 import org.apache.opencmis.commons.enums.IncludeRelationships;
 import org.apache.opencmis.commons.enums.Updatability;
 import org.apache.opencmis.commons.enums.VersioningState;
@@ -73,6 +73,14 @@ import org.apache.opencmis.commons.provi
 /**
  * Persistent model session.
  */
+/**
+ * @author florianm
+ *
+ */
+/**
+ * @author florianm
+ * 
+ */
 public class PersistentSessionImpl implements PersistentSession, Serializable {
 
   private static final OperationContext DEFAULT_CONTEXT = new OperationContextImpl(null, false,
@@ -724,12 +732,12 @@ public class PersistentSessionImpl imple
   /*
    * (non-Javadoc)
    * 
-   * @see org.apache.opencmis.client.api.Session#createDocument(java.util.List,
+   * @see org.apache.opencmis.client.api.Session#createDocument(java.util.Map,
    * org.apache.opencmis.client.api.ObjectId, org.apache.opencmis.client.api.ContentStream,
    * org.apache.opencmis.commons.enums.VersioningState, java.util.List, java.util.List,
    * java.util.List)
    */
-  public ObjectId createDocument(List<Property<?>> properties, ObjectId folderId,
+  public ObjectId createDocument(Map<String, ?> properties, ObjectId folderId,
       ContentStream contentStream, VersioningState versioningState, List<Policy> policies,
       List<Ace> addAces, List<Ace> removeAces) {
     if ((folderId != null) && (folderId.getId() == null)) {
@@ -737,7 +745,7 @@ public class PersistentSessionImpl imple
     }
 
     String newId = getProvider().getObjectService().createDocument(getRepositoryId(),
-        objectFactory.convertProperties(properties, CREATE_UPDATABILITY),
+        objectFactory.convertProperties(properties, null, CREATE_UPDATABILITY),
         (folderId == null ? null : folderId.getId()),
         objectFactory.convertContentStream(contentStream), versioningState,
         objectFactory.convertPolicies(policies), objectFactory.convertAces(addAces),
@@ -755,19 +763,33 @@ public class PersistentSessionImpl imple
    * 
    * @see
    * org.apache.opencmis.client.api.Session#createDocumentFromSource(org.apache.opencmis.client.
-   * api.Document, java.util.List, java.lang.String,
+   * api.ObjectId, java.util.Map, org.apache.opencmis.client.api.ObjectId,
    * org.apache.opencmis.commons.enums.VersioningState, java.util.List, java.util.List,
    * java.util.List)
    */
-  public ObjectId createDocumentFromSource(ObjectId source, List<Property<?>> properties,
+  public ObjectId createDocumentFromSource(ObjectId source, Map<String, ?> properties,
       ObjectId folderId, VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
       List<Ace> removeAces) {
     if ((folderId != null) && (folderId.getId() == null)) {
       throw new IllegalArgumentException("Folder Id must be set!");
     }
 
+    // get the type of the source document
+    ObjectType type = null;
+    if (source instanceof CmisObject) {
+      type = ((CmisObject) source).getBaseType();
+    }
+    else {
+      CmisObject sourceObj = getObject(source);
+      type = sourceObj.getType();
+    }
+
+    if (type.getBaseTypeId() != BaseObjectTypeIds.CMIS_DOCUMENT) {
+      throw new IllegalArgumentException("Source object must be a document!");
+    }
+
     String newId = getProvider().getObjectService().createDocumentFromSource(getRepositoryId(),
-        source.getId(), objectFactory.convertProperties(properties, CREATE_UPDATABILITY),
+        source.getId(), objectFactory.convertProperties(properties, type, CREATE_UPDATABILITY),
         (folderId == null ? null : folderId.getId()), versioningState,
         objectFactory.convertPolicies(policies), objectFactory.convertAces(addAces),
         objectFactory.convertAces(removeAces), null);
@@ -782,17 +804,17 @@ public class PersistentSessionImpl imple
   /*
    * (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)
+   * @see org.apache.opencmis.client.api.Session#createFolder(java.util.Map,
+   * org.apache.opencmis.client.api.ObjectId, java.util.List, java.util.List, java.util.List)
    */
-  public ObjectId createFolder(List<Property<?>> properties, ObjectId folderId,
-      List<Policy> policies, List<Ace> addAces, List<Ace> removeAces) {
+  public ObjectId createFolder(Map<String, ?> properties, ObjectId folderId, List<Policy> policies,
+      List<Ace> addAces, List<Ace> removeAces) {
     if ((folderId != null) && (folderId.getId() == null)) {
       throw new IllegalArgumentException("Folder Id must be set!");
     }
 
     String newId = getProvider().getObjectService().createFolder(getRepositoryId(),
-        objectFactory.convertProperties(properties, CREATE_UPDATABILITY),
+        objectFactory.convertProperties(properties, null, CREATE_UPDATABILITY),
         (folderId == null ? null : folderId.getId()), objectFactory.convertPolicies(policies),
         objectFactory.convertAces(addAces), objectFactory.convertAces(removeAces), null);
 
@@ -806,17 +828,17 @@ public class PersistentSessionImpl imple
   /*
    * (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)
+   * @see org.apache.opencmis.client.api.Session#createPolicy(java.util.Map,
+   * org.apache.opencmis.client.api.ObjectId, java.util.List, java.util.List, java.util.List)
    */
-  public ObjectId createPolicy(List<Property<?>> properties, ObjectId folderId,
-      List<Policy> policies, List<Ace> addAces, List<Ace> removeAces) {
+  public ObjectId createPolicy(Map<String, ?> properties, ObjectId folderId, List<Policy> policies,
+      List<Ace> addAces, List<Ace> removeAces) {
     if ((folderId != null) && (folderId.getId() == null)) {
       throw new IllegalArgumentException("Folder Id must be set!");
     }
 
     String newId = getProvider().getObjectService().createPolicy(getRepositoryId(),
-        objectFactory.convertProperties(properties, CREATE_UPDATABILITY),
+        objectFactory.convertProperties(properties, null, CREATE_UPDATABILITY),
         (folderId == null ? null : folderId.getId()), objectFactory.convertPolicies(policies),
         objectFactory.convertAces(addAces), objectFactory.convertAces(removeAces), null);
 
@@ -830,13 +852,13 @@ public class PersistentSessionImpl imple
   /*
    * (non-Javadoc)
    * 
-   * @see org.apache.opencmis.client.api.Session#createRelationship(java.util.List, java.util.List,
+   * @see org.apache.opencmis.client.api.Session#createRelationship(java.util.Map, java.util.List,
    * java.util.List, java.util.List)
    */
-  public ObjectId createRelationship(List<Property<?>> properties, List<Policy> policies,
+  public ObjectId createRelationship(Map<String, ?> properties, List<Policy> policies,
       List<Ace> addAces, List<Ace> removeAces) {
     String newId = getProvider().getObjectService().createRelationship(getRepositoryId(),
-        objectFactory.convertProperties(properties, CREATE_UPDATABILITY),
+        objectFactory.convertProperties(properties, null, CREATE_UPDATABILITY),
         objectFactory.convertPolicies(policies), objectFactory.convertAces(addAces),
         objectFactory.convertAces(removeAces), null);
 

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=928409&r1=928408&r2=928409&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 Sun Mar 28 14:33:03 2010
@@ -23,7 +23,7 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.ArrayList;
-import java.util.Collection;
+import java.util.Collections;
 import java.util.GregorianCalendar;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -75,6 +75,7 @@ import org.apache.opencmis.commons.api.P
 import org.apache.opencmis.commons.api.PropertyUriDefinition;
 import org.apache.opencmis.commons.api.RelationshipTypeDefinition;
 import org.apache.opencmis.commons.api.TypeDefinition;
+import org.apache.opencmis.commons.enums.Cardinality;
 import org.apache.opencmis.commons.enums.Updatability;
 import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
 import org.apache.opencmis.commons.provider.AccessControlEntry;
@@ -445,31 +446,54 @@ public class PersistentObjectFactoryImpl
   /*
    * (non-Javadoc)
    * 
-   * @see
-   * org.apache.opencmis.client.api.repository.ObjectFactory#convertProperties(java.util.Collection,
-   * java.util.Set)
+   * @see org.apache.opencmis.client.api.repository.ObjectFactory#convertProperties(java.util.Map,
+   * org.apache.opencmis.client.api.objecttype.ObjectType, java.util.Set)
    */
   @SuppressWarnings("unchecked")
-  public PropertiesData convertProperties(Collection<Property<?>> properties,
+  public PropertiesData convertProperties(Map<String, ?> properties, ObjectType type,
       Set<Updatability> updatabilityFilter) {
     // check input
     if (properties == null) {
       throw new IllegalArgumentException("Properties must be set!");
     }
 
-    ProviderObjectFactory pof = getProviderObjectFactory();
+    // get the type
+    if (type == null) {
+      Object typeId = properties.get(PropertyIds.CMIS_OBJECT_TYPE_ID);
+      if (!(typeId instanceof String)) {
+        throw new IllegalArgumentException("Type or type property must be set!");
+      }
 
-    // iterate through properties and convert them
+      type = session.getTypeDefinition(typeId.toString());
+    }
+
+    // some preparation
+    ProviderObjectFactory pof = getProviderObjectFactory();
     List<PropertyData<?>> propertyList = new ArrayList<PropertyData<?>>();
-    for (Property<?> property : properties) {
-      if (property == null) {
+
+    // the big loop
+    for (Map.Entry<String, ?> property : properties.entrySet()) {
+      if ((property == null) || (property.getKey() == null)) {
         continue;
       }
 
-      PropertyDefinition<?> definition = property.getDefinition();
+      String id = property.getKey();
+      Object value = property.getValue();
+
+      if (value instanceof Property<?>) {
+        Property<?> p = (Property<?>) value;
+        if (!id.equals(p.getId())) {
+          throw new IllegalArgumentException("Property id mismatch: '" + id + "' != '" + p.getId()
+              + "'!");
+        }
+        value = (p.getDefinition().getCardinality() == Cardinality.SINGLE ? p.getValue() : p
+            .getValues());
+      }
+
+      // get the property definition
+      PropertyDefinition<?> definition = type.getPropertyDefintions().get(id);
       if (definition == null) {
-        throw new IllegalArgumentException("Property +'" + property.getId()
-            + "' has no property defintion!");
+        throw new IllegalArgumentException("Property +'" + id + "' is not valid for this type!");
       }
 
       // check updatability
@@ -479,38 +503,151 @@ public class PersistentObjectFactoryImpl
         }
       }
 
+      // single and multi value check
+      List<?> values;
+      if (value == null) {
+        values = null;
+      }
+      else if (value instanceof List<?>) {
+        if (definition.getCardinality() != Cardinality.MULTI) {
+          throw new IllegalArgumentException("Property '" + id + "' is not a multi value property!");
+        }
+        values = (List<?>) value;
+
+        // check if the list is homogeneous and does not contain null values
+        Class<?> valueClazz = null;
+        for (Object o : values) {
+          if (o == null) {
+            throw new IllegalArgumentException("Property '" + id + "' contains null values!");
+          }
+          if (valueClazz == null) {
+            valueClazz = o.getClass();
+          }
+          else {
+            if (!valueClazz.isInstance(o)) {
+              throw new IllegalArgumentException("Property '" + id + "' is inhomogeneous!");
+            }
+          }
+        }
+      }
+      else {
+        if (definition.getCardinality() != Cardinality.SINGLE) {
+          throw new IllegalArgumentException("Property '" + id
+              + "' is not a single value property!");
+        }
+        values = Collections.singletonList(value);
+      }
+
+      // assemble property
+      PropertyData<?> propertyData = null;
+      Object firstValue = (values == null ? null : values.get(0));
+
       if (definition instanceof PropertyStringDefinition) {
-        propertyList.add(pof.createPropertyStringData(property.getId(), (List<String>) property
-            .getValues()));
+        if (firstValue == null) {
+          propertyData = pof.createPropertyStringData(id, (List<String>) null);
+        }
+        else if (firstValue instanceof String) {
+          propertyData = pof.createPropertyStringData(id, (List<String>) values);
+        }
+        else {
+          throw new IllegalArgumentException("Property '" + id + "' is a String property!");
+        }
       }
       else if (definition instanceof PropertyIdDefinition) {
-        propertyList.add(pof.createPropertyIdData(property.getId(), (List<String>) property
-            .getValues()));
+        if (firstValue == null) {
+          propertyData = pof.createPropertyIdData(id, (List<String>) null);
+        }
+        else if (firstValue instanceof String) {
+          propertyData = pof.createPropertyIdData(id, (List<String>) values);
+        }
+        else {
+          throw new IllegalArgumentException("Property '" + id + "' is an Id property!");
+        }
       }
       else if (definition instanceof PropertyHtmlDefinition) {
-        propertyList.add(pof.createPropertyHtmlData(property.getId(), (List<String>) property
-            .getValues()));
+        if (firstValue == null) {
+          propertyData = pof.createPropertyHtmlData(id, (List<String>) values);
+        }
+        else if (firstValue instanceof String) {
+          propertyData = pof.createPropertyHtmlData(id, (List<String>) values);
+        }
+        else {
+          throw new IllegalArgumentException("Property '" + id + "' is a HTML property!");
+        }
       }
       else if (definition instanceof PropertyUriDefinition) {
-        propertyList.add(pof.createPropertyUriData(property.getId(), (List<String>) property
-            .getValues()));
+        if (firstValue == null) {
+          propertyData = pof.createPropertyUriData(id, (List<String>) null);
+        }
+        else if (firstValue instanceof String) {
+          propertyData = pof.createPropertyUriData(id, (List<String>) values);
+        }
+        else {
+          throw new IllegalArgumentException("Property '" + id + "' is an URI property!");
+        }
       }
       else if (definition instanceof PropertyIntegerDefinition) {
-        propertyList.add(pof.createPropertyIntegerData(property.getId(),
-            (List<BigInteger>) property.getValues()));
+        if (firstValue == null) {
+          propertyData = pof.createPropertyIntegerData(id, (List<BigInteger>) null);
+        }
+        else if (firstValue instanceof BigInteger) {
+          propertyData = pof.createPropertyIntegerData(id, (List<BigInteger>) values);
+        }
+        else if ((firstValue instanceof Byte) || (firstValue instanceof Short)
+            || (firstValue instanceof Integer) || (firstValue instanceof Long)) {
+          // we accept all kinds of integers
+          List<BigInteger> list = new ArrayList<BigInteger>(values.size());
+          for (Object v : values) {
+            list.add(BigInteger.valueOf(((Number) v).longValue()));
+          }
+
+          propertyData = pof.createPropertyIntegerData(id, list);
+        }
+        else {
+          throw new IllegalArgumentException("Property '" + id + "' is an Integer property!");
+        }
       }
       else if (definition instanceof PropertyBooleanDefinition) {
-        propertyList.add(pof.createPropertyBooleanData(property.getId(), (List<Boolean>) property
-            .getValues()));
+        if (firstValue == null) {
+          propertyData = pof.createPropertyBooleanData(id, (List<Boolean>) null);
+        }
+        else if (firstValue instanceof Boolean) {
+          propertyData = pof.createPropertyBooleanData(id, (List<Boolean>) values);
+        }
+        else {
+          throw new IllegalArgumentException("Property '" + id + "' is a Boolean property!");
+        }
       }
       else if (definition instanceof PropertyDecimalDefinition) {
-        propertyList.add(pof.createPropertyDecimalData(property.getId(),
-            (List<BigDecimal>) property.getValues()));
+        if (firstValue == null) {
+          propertyData = pof.createPropertyDecimalData(id, (List<BigDecimal>) null);
+        }
+        else if (firstValue instanceof BigDecimal) {
+          propertyData = pof.createPropertyDecimalData(id, (List<BigDecimal>) values);
+        }
+        else {
+          throw new IllegalArgumentException("Property '" + id + "' is a Decimal property!");
+        }
       }
       else if (definition instanceof PropertyDateTimeDefinition) {
-        propertyList.add(pof.createPropertyDateTimeData(property.getId(),
-            (List<GregorianCalendar>) property.getValues()));
+        if (firstValue == null) {
+          propertyData = pof.createPropertyDateTimeData(id, (List<GregorianCalendar>) null);
+        }
+        else if (firstValue instanceof GregorianCalendar) {
+          propertyData = pof.createPropertyDateTimeData(id, (List<GregorianCalendar>) values);
+        }
+        else {
+          throw new IllegalArgumentException("Property '" + id + "' is a Decimal property!");
+        }
       }
+
+      // do we have something?
+      if (propertyData == null) {
+        throw new IllegalArgumentException("Property '" + id
+            + "' doesn't match the property defintion!");
+      }
+
+      propertyList.add(propertyData);
     }
 
     return pof.createPropertiesData(propertyList);

Modified: incubator/chemistry/trunk/opencmis/opencmis-commons/opencmis-commons-impl/src/main/java/org/apache/opencmis/commons/impl/dataobjects/AbstractPropertyData.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-commons/opencmis-commons-impl/src/main/java/org/apache/opencmis/commons/impl/dataobjects/AbstractPropertyData.java?rev=928409&r1=928408&r2=928409&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-commons/opencmis-commons-impl/src/main/java/org/apache/opencmis/commons/impl/dataobjects/AbstractPropertyData.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-commons/opencmis-commons-impl/src/main/java/org/apache/opencmis/commons/impl/dataobjects/AbstractPropertyData.java Sun Mar 28 14:33:03 2010
@@ -19,6 +19,7 @@
 package org.apache.opencmis.commons.impl.dataobjects;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.opencmis.commons.provider.PropertyData;
@@ -101,12 +102,22 @@ public abstract class AbstractPropertyDa
   }
 
   public void setValues(List<T> values) {
-    fValues = values;
+    if (values == null) {
+      fValues = Collections.emptyList();
+    }
+    else {
+      fValues = values;
+    }
   }
 
   public void setValue(T value) {
-    fValues = new ArrayList<T>(1);
-    fValues.add(value);
+    if (value == null) {
+      fValues = Collections.emptyList();
+    }
+    else {
+      fValues = new ArrayList<T>(1);
+      fValues.add(value);
+    }
   }
 
   /*

Modified: incubator/chemistry/trunk/opencmis/opencmis-test/opencmis-test-fit/src/test/java/org/apache/opencmis/fit/runtime/WriteObjectIT.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-test/opencmis-test-fit/src/test/java/org/apache/opencmis/fit/runtime/WriteObjectIT.java?rev=928409&r1=928408&r2=928409&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-test/opencmis-test-fit/src/test/java/org/apache/opencmis/fit/runtime/WriteObjectIT.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-test/opencmis-test-fit/src/test/java/org/apache/opencmis/fit/runtime/WriteObjectIT.java Sun Mar 28 14:33:03 2010
@@ -27,7 +27,9 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.UUID;
 
 import org.apache.opencmis.client.api.ContentStream;
@@ -35,6 +37,7 @@ import org.apache.opencmis.client.api.Do
 import org.apache.opencmis.client.api.ObjectId;
 import org.apache.opencmis.client.api.Property;
 import org.apache.opencmis.client.api.objecttype.ObjectType;
+import org.apache.opencmis.commons.PropertyIds;
 import org.apache.opencmis.commons.api.PropertyDefinition;
 import org.apache.opencmis.commons.enums.CmisProperties;
 import org.apache.opencmis.commons.enums.VersioningState;
@@ -50,6 +53,8 @@ public class WriteObjectIT extends Abstr
 		String folderName = UUID.randomUUID().toString();
 		String typeId = FixtureData.FOLDER_TYPE_ID.value();
 
+		
+		/*
 		ObjectType ot = this.session.getTypeDefinition(typeId);
 		Collection<PropertyDefinition<?>> pdefs = ot.getPropertyDefintions()
 				.values();
@@ -78,7 +83,12 @@ public class WriteObjectIT extends Abstr
 			}
 
 		}
+		*/
 
+		Map<String, Object> properties = new HashMap<String, Object>();
+		properties.put(PropertyIds.CMIS_NAME, folderName);
+		properties.put(PropertyIds.CMIS_OBJECT_TYPE_ID, typeId);
+		
 		ObjectId id = this.session.createFolder(properties, parentId, null,
 				null, null);
 		assertNotNull(id);
@@ -91,6 +101,7 @@ public class WriteObjectIT extends Abstr
 		String folderName = UUID.randomUUID().toString();
 		String typeId = FixtureData.DOCUMENT_TYPE_ID.value();
 
+		/*
 		ObjectType ot = this.session.getTypeDefinition(typeId);
 		Collection<PropertyDefinition<?>> pdefs = ot.getPropertyDefintions()
 				.values();
@@ -119,13 +130,18 @@ public class WriteObjectIT extends Abstr
 				 * custom property definition (note: document type should not
 				 * have further mandatory properties)
 				 */
-				this.log
+/*				this.log
 						.info(
 								"Custom property found but not supported in test case!",
 								e);
 			}
 		}
-
+*/
+		
+		Map<String, Object> properties = new HashMap<String, Object>();
+		properties.put(PropertyIds.CMIS_NAME, folderName);
+		properties.put(PropertyIds.CMIS_OBJECT_TYPE_ID, typeId);
+		
 		String filename = UUID.randomUUID().toString();
 		String mimetype = "text/html; charset=UTF-8";
 		String content1 = "Im Walde rauscht ein Wasserfall. Wenn's nicht mehr rauscht ist's Wasser all.";
@@ -164,6 +180,7 @@ public class WriteObjectIT extends Abstr
 
 			ObjectId parentFolder = session.createObjectId(Fixture
 					.getTestRootId());
+			/*
 			List<Property<?>> srcProperties = srcDocument.getProperties();
 			assertNotNull(srcProperties);
 			List<Property<?>> dstProperties = new ArrayList<Property<?>>();
@@ -179,9 +196,14 @@ public class WriteObjectIT extends Abstr
 					dstProperties.add(p);
 				}
 			}
-
+*/
+			String name = UUID.randomUUID().toString();
+			
+			Map<String, Object> properties = new HashMap<String, Object>();
+			properties.put(PropertyIds.CMIS_NAME, name);
+			
 			ObjectId dstDocumentId = this.session.createDocumentFromSource(
-					srcDocument, dstProperties, parentFolder,
+					srcDocument, properties, parentFolder,
 					VersioningState.NONE, null, null, null);
 			assertNotNull(dstDocumentId);
 			Document dstDocument = (Document) this.session