You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by dc...@apache.org on 2010/04/22 18:04:22 UTC

svn commit: r936922 [17/18] - in /incubator/chemistry/opencmis/trunk/chemistry-opencmis-client: chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/ chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/...

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/cache/CacheImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/cache/CacheImpl.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/cache/CacheImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/cache/CacheImpl.java Thu Apr 22 16:04:19 2010
@@ -33,256 +33,256 @@ import org.apache.chemistry.opencmis.com
  */
 public class CacheImpl implements Cache, Serializable {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-	private static final float HASHTABLE_LOAD_FACTOR = 0.75f;
+    private static final float HASHTABLE_LOAD_FACTOR = 0.75f;
 
-	private int cacheSize;
+    private int cacheSize;
 
-	private LinkedHashMap<String, Map<String, CmisObject>> objectMap;
-	private Map<String, String> pathToIdMap;
+    private LinkedHashMap<String, Map<String, CmisObject>> objectMap;
+    private Map<String, String> pathToIdMap;
 
-	private final ReentrantReadWriteLock fLock = new ReentrantReadWriteLock();
-
-	/**
-	 * Creates a new cache instance with a default size.
-	 */
-	public static Cache newInstance() {
-		return new CacheImpl();
-	}
-
-	/**
-	 * Creates a new cache instance with the given size.
-	 */
-	public static Cache newInstance(int cacheSize) {
-		return new CacheImpl(cacheSize);
-	}
-
-	/**
-	 * Default constructor.
-	 */
-	protected CacheImpl() {
-		this(1000); // default cache size
-	}
-
-	/**
-	 * Constructor taking a cache size.
-	 */
-	protected CacheImpl(int cacheSize) {
-		this.cacheSize = cacheSize;
-		initialize();
-	}
-
-	/**
-	 * Sets up the internal objects.
-	 */
-	protected void initialize() {
-		fLock.writeLock().lock();
-		try {
-			int hashTableCapacity = (int) Math.ceil(cacheSize / HASHTABLE_LOAD_FACTOR) + 1;
-
-			final int cs = cacheSize;
-
-			objectMap = new LinkedHashMap<String, Map<String, CmisObject>>(hashTableCapacity, HASHTABLE_LOAD_FACTOR) {
-
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				protected boolean removeEldestEntry(Map.Entry<String, Map<String, CmisObject>> eldest) {
-					return size() > cs;
-				}
-			};
-
-			resetPathCache();
-		} finally {
-			fLock.writeLock().unlock();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.opencmis.client.runtime.cache.Cache#clear()
-	 */
-	public void clear() {
-		initialize();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.opencmis.client.runtime.cache.Cache#resetPathCache()
-	 */
-	public void resetPathCache() {
-		fLock.writeLock().lock();
-		try {
-			pathToIdMap = new HashMap<String, String>();
-		} finally {
-			fLock.writeLock().unlock();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.runtime.cache.Cache#containsId(java.lang.String
-	 * , java.lang.String)
-	 */
-	public boolean containsId(String objectId, String cacheKey) {
-		fLock.readLock().lock();
-		try {
-			if (!objectMap.containsKey(objectId)) {
-				return false;
-			}
-
-			return objectMap.get(objectId).containsKey(cacheKey);
-		} finally {
-			fLock.readLock().unlock();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.runtime.cache.Cache#containsPath(java.lang
-	 * .String, java.lang.String)
-	 */
-	public boolean containsPath(String path, String cacheKey) {
-		fLock.readLock().lock();
-		try {
-			if (!pathToIdMap.containsKey(path)) {
-				return false;
-			}
-
-			return containsId(pathToIdMap.get(path), cacheKey);
-		} finally {
-			fLock.readLock().unlock();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.runtime.cache.Cache#getById(java.lang.String,
-	 * java.lang.String)
-	 */
-	public CmisObject getById(String objectId, String cacheKey) {
-		fLock.readLock().lock();
-		try {
-			Map<String, CmisObject> cacheKeyMap = objectMap.get(objectId);
-			if (cacheKeyMap == null) {
-				return null; // not found
-			}
-
-			return cacheKeyMap.get(cacheKey);
-		} finally {
-			fLock.readLock().unlock();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.runtime.cache.Cache#getByPath(java.lang.String
-	 * , java.lang.String)
-	 */
-	public CmisObject getByPath(String path, String cacheKey) {
-		fLock.readLock().lock();
-		try {
-			String id = pathToIdMap.get(path);
-			if (id == null) {
-				return null; // not found
-			}
-
-			CmisObject object = getById(id, cacheKey);
-			if ((object == null) && (!objectMap.containsKey(id))) {
-				// clean up
-				fLock.readLock().unlock();
-				fLock.writeLock().lock();
-				try {
-					pathToIdMap.remove(path);
-				} finally {
-					fLock.writeLock().unlock();
-					fLock.readLock().lock();
-				}
-			}
-
-			return object;
-		} finally {
-			fLock.readLock().unlock();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.runtime.cache.Cache#put(org.apache.opencmis
-	 * .client.api.CmisObject, java.lang.String)
-	 */
-	public void put(CmisObject object, String cacheKey) {
-		// no object, no cache key - no cache
-		if ((object == null) || (cacheKey == null)) {
-			return;
-		}
-
-		// no id - no cache
-		if (object.getId() == null) {
-			return;
-		}
-
-		fLock.writeLock().lock();
-		try {
-			// get cache key map
-			Map<String, CmisObject> cacheKeyMap = objectMap.get(object.getId());
-			if (cacheKeyMap == null) {
-				cacheKeyMap = new HashMap<String, CmisObject>();
-				objectMap.put(object.getId(), cacheKeyMap);
-			}
-
-			// put into id cache
-			cacheKeyMap.put(cacheKey, object);
-
-			// folders may have a path, use it!
-			String path = object.getPropertyValue(PropertyIds.PATH);
-			if (path != null) {
-				pathToIdMap.put(path, object.getId());
-			}
-		} finally {
-			fLock.writeLock().unlock();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.runtime.cache.Cache#putPath(java.lang.String,
-	 * org.apache.opencmis.client.api.CmisObject, java.lang.String)
-	 */
-	public void putPath(String path, CmisObject object, String cacheKey) {
-		fLock.writeLock().lock();
-		try {
-			put(object, cacheKey);
-
-			if ((object != null) && (object.getId() != null) && (cacheKey != null)) {
-				pathToIdMap.put(path, object.getId());
-			}
-		} finally {
-			fLock.writeLock().unlock();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.opencmis.client.runtime.cache.Cache#getCacheSize()
-	 */
-	public int getCacheSize() {
-		return this.cacheSize;
-	}
+    private final ReentrantReadWriteLock fLock = new ReentrantReadWriteLock();
+
+    /**
+     * Creates a new cache instance with a default size.
+     */
+    public static Cache newInstance() {
+        return new CacheImpl();
+    }
+
+    /**
+     * Creates a new cache instance with the given size.
+     */
+    public static Cache newInstance(int cacheSize) {
+        return new CacheImpl(cacheSize);
+    }
+
+    /**
+     * Default constructor.
+     */
+    protected CacheImpl() {
+        this(1000); // default cache size
+    }
+
+    /**
+     * Constructor taking a cache size.
+     */
+    protected CacheImpl(int cacheSize) {
+        this.cacheSize = cacheSize;
+        initialize();
+    }
+
+    /**
+     * Sets up the internal objects.
+     */
+    protected void initialize() {
+        fLock.writeLock().lock();
+        try {
+            int hashTableCapacity = (int) Math.ceil(cacheSize / HASHTABLE_LOAD_FACTOR) + 1;
+
+            final int cs = cacheSize;
+
+            objectMap = new LinkedHashMap<String, Map<String, CmisObject>>(hashTableCapacity, HASHTABLE_LOAD_FACTOR) {
+
+                private static final long serialVersionUID = 1L;
+
+                @Override
+                protected boolean removeEldestEntry(Map.Entry<String, Map<String, CmisObject>> eldest) {
+                    return size() > cs;
+                }
+            };
+
+            resetPathCache();
+        } finally {
+            fLock.writeLock().unlock();
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.opencmis.client.runtime.cache.Cache#clear()
+     */
+    public void clear() {
+        initialize();
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.opencmis.client.runtime.cache.Cache#resetPathCache()
+     */
+    public void resetPathCache() {
+        fLock.writeLock().lock();
+        try {
+            pathToIdMap = new HashMap<String, String>();
+        } finally {
+            fLock.writeLock().unlock();
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.runtime.cache.Cache#containsId(java.lang.String
+     * , java.lang.String)
+     */
+    public boolean containsId(String objectId, String cacheKey) {
+        fLock.readLock().lock();
+        try {
+            if (!objectMap.containsKey(objectId)) {
+                return false;
+            }
+
+            return objectMap.get(objectId).containsKey(cacheKey);
+        } finally {
+            fLock.readLock().unlock();
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.runtime.cache.Cache#containsPath(java.lang
+     * .String, java.lang.String)
+     */
+    public boolean containsPath(String path, String cacheKey) {
+        fLock.readLock().lock();
+        try {
+            if (!pathToIdMap.containsKey(path)) {
+                return false;
+            }
+
+            return containsId(pathToIdMap.get(path), cacheKey);
+        } finally {
+            fLock.readLock().unlock();
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.runtime.cache.Cache#getById(java.lang.String,
+     * java.lang.String)
+     */
+    public CmisObject getById(String objectId, String cacheKey) {
+        fLock.readLock().lock();
+        try {
+            Map<String, CmisObject> cacheKeyMap = objectMap.get(objectId);
+            if (cacheKeyMap == null) {
+                return null; // not found
+            }
+
+            return cacheKeyMap.get(cacheKey);
+        } finally {
+            fLock.readLock().unlock();
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.runtime.cache.Cache#getByPath(java.lang.String
+     * , java.lang.String)
+     */
+    public CmisObject getByPath(String path, String cacheKey) {
+        fLock.readLock().lock();
+        try {
+            String id = pathToIdMap.get(path);
+            if (id == null) {
+                return null; // not found
+            }
+
+            CmisObject object = getById(id, cacheKey);
+            if ((object == null) && (!objectMap.containsKey(id))) {
+                // clean up
+                fLock.readLock().unlock();
+                fLock.writeLock().lock();
+                try {
+                    pathToIdMap.remove(path);
+                } finally {
+                    fLock.writeLock().unlock();
+                    fLock.readLock().lock();
+                }
+            }
+
+            return object;
+        } finally {
+            fLock.readLock().unlock();
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.runtime.cache.Cache#put(org.apache.opencmis
+     * .client.api.CmisObject, java.lang.String)
+     */
+    public void put(CmisObject object, String cacheKey) {
+        // no object, no cache key - no cache
+        if ((object == null) || (cacheKey == null)) {
+            return;
+        }
+
+        // no id - no cache
+        if (object.getId() == null) {
+            return;
+        }
+
+        fLock.writeLock().lock();
+        try {
+            // get cache key map
+            Map<String, CmisObject> cacheKeyMap = objectMap.get(object.getId());
+            if (cacheKeyMap == null) {
+                cacheKeyMap = new HashMap<String, CmisObject>();
+                objectMap.put(object.getId(), cacheKeyMap);
+            }
+
+            // put into id cache
+            cacheKeyMap.put(cacheKey, object);
+
+            // folders may have a path, use it!
+            String path = object.getPropertyValue(PropertyIds.PATH);
+            if (path != null) {
+                pathToIdMap.put(path, object.getId());
+            }
+        } finally {
+            fLock.writeLock().unlock();
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.runtime.cache.Cache#putPath(java.lang.String,
+     * org.apache.opencmis.client.api.CmisObject, java.lang.String)
+     */
+    public void putPath(String path, CmisObject object, String cacheKey) {
+        fLock.writeLock().lock();
+        try {
+            put(object, cacheKey);
+
+            if ((object != null) && (object.getId() != null) && (cacheKey != null)) {
+                pathToIdMap.put(path, object.getId());
+            }
+        } finally {
+            fLock.writeLock().unlock();
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.opencmis.client.runtime.cache.Cache#getCacheSize()
+     */
+    public int getCacheSize() {
+        return this.cacheSize;
+    }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/DocumentTypeImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/DocumentTypeImpl.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/DocumentTypeImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/DocumentTypeImpl.java Thu Apr 22 16:04:19 2010
@@ -33,33 +33,33 @@ import org.apache.chemistry.opencmis.com
  */
 public class DocumentTypeImpl extends DocumentTypeDefinitionImpl implements DocumentType {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-	private ObjectTypeHelper helper;
+    private ObjectTypeHelper helper;
 
-	public DocumentTypeImpl(Session session, DocumentTypeDefinition typeDefinition) {
-		initialize(typeDefinition);
-		helper = new ObjectTypeHelper(session, this);
-	}
-
-	public ObjectType getBaseType() {
-		return helper.getBaseType();
-	}
-
-	public PagingIterable<ObjectType> getChildren(int itemsPerPage) {
-		return helper.getChildren(itemsPerPage);
-	}
-
-	public List<Tree<ObjectType>> getDescendants(int depth) {
-		return helper.getDescendants(depth);
-	}
-
-	public ObjectType getParentType() {
-		return helper.getParentType();
-	}
-
-	public boolean isBaseType() {
-		return helper.isBaseType();
-	}
+    public DocumentTypeImpl(Session session, DocumentTypeDefinition typeDefinition) {
+        initialize(typeDefinition);
+        helper = new ObjectTypeHelper(session, this);
+    }
+
+    public ObjectType getBaseType() {
+        return helper.getBaseType();
+    }
+
+    public PagingIterable<ObjectType> getChildren(int itemsPerPage) {
+        return helper.getChildren(itemsPerPage);
+    }
+
+    public List<Tree<ObjectType>> getDescendants(int depth) {
+        return helper.getDescendants(depth);
+    }
+
+    public ObjectType getParentType() {
+        return helper.getParentType();
+    }
+
+    public boolean isBaseType() {
+        return helper.isBaseType();
+    }
 
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/FolderTypeImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/FolderTypeImpl.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/FolderTypeImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/FolderTypeImpl.java Thu Apr 22 16:04:19 2010
@@ -33,33 +33,33 @@ import org.apache.chemistry.opencmis.com
  */
 public class FolderTypeImpl extends FolderTypeDefinitionImpl implements FolderType {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-	private ObjectTypeHelper helper;
+    private ObjectTypeHelper helper;
 
-	public FolderTypeImpl(Session session, FolderTypeDefinition typeDefinition) {
-		initialize(typeDefinition);
-		helper = new ObjectTypeHelper(session, this);
-	}
-
-	public ObjectType getBaseType() {
-		return helper.getBaseType();
-	}
-
-	public PagingIterable<ObjectType> getChildren(int itemsPerPage) {
-		return helper.getChildren(itemsPerPage);
-	}
-
-	public List<Tree<ObjectType>> getDescendants(int depth) {
-		return helper.getDescendants(depth);
-	}
-
-	public ObjectType getParentType() {
-		return helper.getParentType();
-	}
-
-	public boolean isBaseType() {
-		return helper.isBaseType();
-	}
+    public FolderTypeImpl(Session session, FolderTypeDefinition typeDefinition) {
+        initialize(typeDefinition);
+        helper = new ObjectTypeHelper(session, this);
+    }
+
+    public ObjectType getBaseType() {
+        return helper.getBaseType();
+    }
+
+    public PagingIterable<ObjectType> getChildren(int itemsPerPage) {
+        return helper.getChildren(itemsPerPage);
+    }
+
+    public List<Tree<ObjectType>> getDescendants(int depth) {
+        return helper.getDescendants(depth);
+    }
+
+    public ObjectType getParentType() {
+        return helper.getParentType();
+    }
+
+    public boolean isBaseType() {
+        return helper.isBaseType();
+    }
 
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/ObjectTypeHelper.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/ObjectTypeHelper.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/ObjectTypeHelper.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/ObjectTypeHelper.java Thu Apr 22 16:04:19 2010
@@ -32,54 +32,54 @@ import org.apache.chemistry.opencmis.cli
  */
 public class ObjectTypeHelper {
 
-	private Session session;
-	private ObjectType objectType;
-	private ObjectType baseType;
-	private ObjectType parentType;
-
-	public ObjectTypeHelper(Session session, ObjectType objectType) {
-		this.session = session;
-		this.objectType = objectType;
-	}
-
-	public Session getSession() {
-		return session;
-	}
-
-	public boolean isBaseType() {
-		return objectType.getParentTypeId() == null;
-	}
-
-	public ObjectType getBaseType() {
-		if (isBaseType()) {
-			return null;
-		}
-		if (baseType != null) {
-			return baseType;
-		}
-		if (objectType.getBaseTypeId() == null) {
-			return null;
-		}
-		baseType = session.getTypeDefinition(objectType.getBaseTypeId().value());
-		return baseType;
-	}
-
-	public ObjectType getParentType() {
-		if (parentType != null) {
-			return parentType;
-		}
-		if (objectType.getParentTypeId() == null) {
-			return null;
-		}
-		parentType = session.getTypeDefinition(objectType.getParentTypeId());
-		return parentType;
-	}
-
-	public PagingIterable<ObjectType> getChildren(int itemsPerPage) {
-		return session.getTypeChildren(objectType.getId(), true, itemsPerPage);
-	}
-
-	public List<Tree<ObjectType>> getDescendants(int depth) {
-		return session.getTypeDescendants(objectType.getId(), depth, true);
-	}
+    private Session session;
+    private ObjectType objectType;
+    private ObjectType baseType;
+    private ObjectType parentType;
+
+    public ObjectTypeHelper(Session session, ObjectType objectType) {
+        this.session = session;
+        this.objectType = objectType;
+    }
+
+    public Session getSession() {
+        return session;
+    }
+
+    public boolean isBaseType() {
+        return objectType.getParentTypeId() == null;
+    }
+
+    public ObjectType getBaseType() {
+        if (isBaseType()) {
+            return null;
+        }
+        if (baseType != null) {
+            return baseType;
+        }
+        if (objectType.getBaseTypeId() == null) {
+            return null;
+        }
+        baseType = session.getTypeDefinition(objectType.getBaseTypeId().value());
+        return baseType;
+    }
+
+    public ObjectType getParentType() {
+        if (parentType != null) {
+            return parentType;
+        }
+        if (objectType.getParentTypeId() == null) {
+            return null;
+        }
+        parentType = session.getTypeDefinition(objectType.getParentTypeId());
+        return parentType;
+    }
+
+    public PagingIterable<ObjectType> getChildren(int itemsPerPage) {
+        return session.getTypeChildren(objectType.getId(), true, itemsPerPage);
+    }
+
+    public List<Tree<ObjectType>> getDescendants(int depth) {
+        return session.getTypeDescendants(objectType.getId(), depth, true);
+    }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/PolicyTypeImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/PolicyTypeImpl.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/PolicyTypeImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/PolicyTypeImpl.java Thu Apr 22 16:04:19 2010
@@ -33,33 +33,33 @@ import org.apache.chemistry.opencmis.com
  */
 public class PolicyTypeImpl extends PolicyTypeDefinitionImpl implements PolicyType {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-	private ObjectTypeHelper helper;
+    private ObjectTypeHelper helper;
 
-	public PolicyTypeImpl(Session session, PolicyTypeDefinition typeDefinition) {
-		initialize(typeDefinition);
-		helper = new ObjectTypeHelper(session, this);
-	}
-
-	public ObjectType getBaseType() {
-		return helper.getBaseType();
-	}
-
-	public PagingIterable<ObjectType> getChildren(int itemsPerPage) {
-		return helper.getChildren(itemsPerPage);
-	}
-
-	public List<Tree<ObjectType>> getDescendants(int depth) {
-		return helper.getDescendants(depth);
-	}
-
-	public ObjectType getParentType() {
-		return helper.getParentType();
-	}
-
-	public boolean isBaseType() {
-		return helper.isBaseType();
-	}
+    public PolicyTypeImpl(Session session, PolicyTypeDefinition typeDefinition) {
+        initialize(typeDefinition);
+        helper = new ObjectTypeHelper(session, this);
+    }
+
+    public ObjectType getBaseType() {
+        return helper.getBaseType();
+    }
+
+    public PagingIterable<ObjectType> getChildren(int itemsPerPage) {
+        return helper.getChildren(itemsPerPage);
+    }
+
+    public List<Tree<ObjectType>> getDescendants(int depth) {
+        return helper.getDescendants(depth);
+    }
+
+    public ObjectType getParentType() {
+        return helper.getParentType();
+    }
+
+    public boolean isBaseType() {
+        return helper.isBaseType();
+    }
 
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/RelationshipTypeImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/RelationshipTypeImpl.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/RelationshipTypeImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/objecttype/RelationshipTypeImpl.java Thu Apr 22 16:04:19 2010
@@ -34,63 +34,63 @@ import org.apache.chemistry.opencmis.com
  */
 public class RelationshipTypeImpl extends RelationshipTypeDefinitionImpl implements RelationshipType {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-	private ObjectTypeHelper helper;
-	private List<ObjectType> allowedSourceTypes;
-	private List<ObjectType> allowedTargetTypes;
-
-	public RelationshipTypeImpl(Session session, RelationshipTypeDefinition typeDefinition) {
-		initialize(typeDefinition);
-		helper = new ObjectTypeHelper(session, this);
-	}
-
-	public ObjectType getBaseType() {
-		return helper.getBaseType();
-	}
-
-	public PagingIterable<ObjectType> getChildren(int itemsPerPage) {
-		return helper.getChildren(itemsPerPage);
-	}
-
-	public List<Tree<ObjectType>> getDescendants(int depth) {
-		return helper.getDescendants(depth);
-	}
-
-	public ObjectType getParentType() {
-		return helper.getParentType();
-	}
-
-	public boolean isBaseType() {
-		return helper.isBaseType();
-	}
-
-	public List<ObjectType> getAllowedSourceTypes() {
-		if (allowedSourceTypes == null) {
-			List<String> ids = getAllowedSourceTypeIds();
-			List<ObjectType> types = new ArrayList<ObjectType>(ids == null ? 0 : ids.size());
-			if (ids != null) {
-				for (String id : ids) {
-					types.add(helper.getSession().getTypeDefinition(id));
-				}
-			}
-			allowedSourceTypes = types;
-		}
-		return allowedSourceTypes;
-	}
-
-	public List<ObjectType> getAllowedTargetTypes() {
-		if (allowedTargetTypes == null) {
-			List<String> ids = getAllowedTargetTypeIds();
-			List<ObjectType> types = new ArrayList<ObjectType>(ids == null ? 0 : ids.size());
-			if (ids != null) {
-				for (String id : ids) {
-					types.add(helper.getSession().getTypeDefinition(id));
-				}
-			}
-			allowedTargetTypes = types;
-		}
-		return allowedTargetTypes;
-	}
+    private ObjectTypeHelper helper;
+    private List<ObjectType> allowedSourceTypes;
+    private List<ObjectType> allowedTargetTypes;
+
+    public RelationshipTypeImpl(Session session, RelationshipTypeDefinition typeDefinition) {
+        initialize(typeDefinition);
+        helper = new ObjectTypeHelper(session, this);
+    }
+
+    public ObjectType getBaseType() {
+        return helper.getBaseType();
+    }
+
+    public PagingIterable<ObjectType> getChildren(int itemsPerPage) {
+        return helper.getChildren(itemsPerPage);
+    }
+
+    public List<Tree<ObjectType>> getDescendants(int depth) {
+        return helper.getDescendants(depth);
+    }
+
+    public ObjectType getParentType() {
+        return helper.getParentType();
+    }
+
+    public boolean isBaseType() {
+        return helper.isBaseType();
+    }
+
+    public List<ObjectType> getAllowedSourceTypes() {
+        if (allowedSourceTypes == null) {
+            List<String> ids = getAllowedSourceTypeIds();
+            List<ObjectType> types = new ArrayList<ObjectType>(ids == null ? 0 : ids.size());
+            if (ids != null) {
+                for (String id : ids) {
+                    types.add(helper.getSession().getTypeDefinition(id));
+                }
+            }
+            allowedSourceTypes = types;
+        }
+        return allowedSourceTypes;
+    }
+
+    public List<ObjectType> getAllowedTargetTypes() {
+        if (allowedTargetTypes == null) {
+            List<String> ids = getAllowedTargetTypeIds();
+            List<ObjectType> types = new ArrayList<ObjectType>(ids == null ? 0 : ids.size());
+            if (ids != null) {
+                for (String id : ids) {
+                    types.add(helper.getSession().getTypeDefinition(id));
+                }
+            }
+            allowedTargetTypes = types;
+        }
+        return allowedTargetTypes;
+    }
 
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java Thu Apr 22 16:04:19 2010
@@ -84,513 +84,513 @@ import org.apache.chemistry.opencmis.com
  */
 public class PersistentObjectFactoryImpl implements ObjectFactory, Serializable {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-	private PersistentSessionImpl session = null;
+    private PersistentSessionImpl session = null;
 
-	/**
-	 * Constructor.
-	 */
-	protected PersistentObjectFactoryImpl(PersistentSessionImpl session) {
-		if (session == null) {
-			throw new IllegalArgumentException("Session must be set!");
-		}
-
-		this.session = session;
-	}
-
-	/**
-	 * Creates a new factory instance.
-	 */
-	public static ObjectFactory newInstance(PersistentSessionImpl session) {
-		return new PersistentObjectFactoryImpl(session);
-	}
-
-	/**
-	 * Returns the bindings object factory.
-	 */
-	protected BindingsObjectFactory getProviderObjectFactory() {
-		return session.getBinding().getObjectFactory();
-	}
-
-	// ACL and ACE
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.api.repository.ObjectFactory#convertAces(java
-	 * .util.List)
-	 */
-	public Acl convertAces(List<Ace> aces) {
-		if (aces == null) {
-			return null;
-		}
-
-		BindingsObjectFactory pof = getProviderObjectFactory();
-
-		List<Ace> providerAces = new ArrayList<Ace>();
-		for (Ace ace : aces) {
-			providerAces.add(pof.createAccessControlEntry(ace.getPrincipalId(), ace.getPermissions()));
-		}
-
-		return pof.createAccessControlList(providerAces);
-	}
-
-	// policies
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.api.repository.ObjectFactory#convertPolicies
-	 * (java.util.List)
-	 */
-	public 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;
-	}
-
-	// renditions
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.api.repository.ObjectFactory#convertRendition
-	 * (java.lang.String, org.apache.opencmis.commons.provider.RenditionData)
-	 */
-	public Rendition convertRendition(String objectId, RenditionData rendition) {
-		if (rendition == null) {
-			throw new IllegalArgumentException("Rendition must be set!");
-		}
-
-		// TODO: what should happen if the length is not set?
-		long length = (rendition.getBigLength() == null ? -1 : rendition.getBigLength().longValue());
-		int height = (rendition.getBigHeight() == null ? -1 : rendition.getBigHeight().intValue());
-		int width = (rendition.getBigWidth() == null ? -1 : rendition.getBigWidth().intValue());
-
-		return new RenditionImpl(this.session, objectId, rendition.getStreamId(), rendition.getRenditionDocumentId(),
-				rendition.getKind(), length, rendition.getMimeType(), rendition.getTitle(), height, width);
-	}
-
-	// content stream
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.api.repository.ObjectFactory#createContentStream
-	 * (java.lang.String, long, java.lang.String, java.io.InputStream)
-	 */
-	public ContentStream createContentStream(String filename, long length, String mimetype, InputStream stream) {
-		return new ContentStreamImpl(filename, BigInteger.valueOf(length), mimetype, stream);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.api.repository.ObjectFactory#convertContentStream
-	 * (org.apache.opencmis .client.api.ContentStream)
-	 */
-	public ContentStream convertContentStream(ContentStream contentStream) {
-		if (contentStream == null) {
-			return null;
-		}
-
-		BigInteger length = (contentStream.getLength() < 0 ? null : BigInteger.valueOf(contentStream.getLength()));
-
-		return getProviderObjectFactory().createContentStream(contentStream.getFileName(), length,
-				contentStream.getMimeType(), contentStream.getStream());
-	}
-
-	// types
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.api.repository.ObjectFactory#convertTypeDefinition
-	 * (org.apache.opencmis .commons.api.TypeDefinition)
-	 */
-	public ObjectType convertTypeDefinition(TypeDefinition typeDefinition) {
-		if (typeDefinition instanceof DocumentTypeDefinition) {
-			return new DocumentTypeImpl(this.session, (DocumentTypeDefinition) typeDefinition);
-		} else if (typeDefinition instanceof FolderTypeDefinition) {
-			return new FolderTypeImpl(this.session, (FolderTypeDefinition) typeDefinition);
-		} else if (typeDefinition instanceof RelationshipTypeDefinition) {
-			return new RelationshipTypeImpl(this.session, (RelationshipTypeDefinition) typeDefinition);
-		} else if (typeDefinition instanceof PolicyTypeDefinition) {
-			return new PolicyTypeImpl(this.session, (PolicyTypeDefinition) typeDefinition);
-		} else {
-			throw new CmisRuntimeException("Unknown base type!");
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.api.repository.ObjectFactory#getTypeFromObjectData
-	 * (org.apache.opencmis .commons.provider.ObjectData)
-	 */
-	public ObjectType getTypeFromObjectData(ObjectData objectData) {
-		if ((objectData == null) || (objectData.getProperties() == null)
-				|| (objectData.getProperties().getProperties() == null)) {
-			return null;
-		}
-
-		PropertyData<?> typeProperty = objectData.getProperties().getProperties().get(PropertyIds.OBJECT_TYPE_ID);
-		if (!(typeProperty instanceof PropertyId)) {
-			return null;
-		}
-
-		return this.session.getTypeDefinition((String) typeProperty.getFirstValue());
-	}
-
-	// properties
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.api.repository.ObjectFactory#createProperty
-	 * (org.apache.opencmis. commons.api.PropertyDefinition, java.lang.Object)
-	 */
-	public <T> Property<T> createProperty(PropertyDefinition<?> type, T value) {
-		return new PersistentPropertyImpl<T>(type, value);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @seeorg.apache.opencmis.client.api.repository.ObjectFactory#
-	 * createPropertyMultivalue(org.apache
-	 * .opencmis.commons.api.PropertyDefinition, java.util.List)
-	 */
-	public <T> Property<T> createPropertyMultivalue(PropertyDefinition<?> type, List<T> values) {
-		return new PersistentPropertyImpl<T>(type, values);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.api.repository.ObjectFactory#convertProperties
-	 * (org.apache.opencmis .client.api.objecttype.ObjectType,
-	 * org.apache.opencmis.commons.provider.PropertiesData)
-	 */
-	@SuppressWarnings("unchecked")
-	public Map<String, Property<?>> convertProperties(ObjectType objectType, Properties properties) {
-		// check input
-		if (objectType == null) {
-			throw new IllegalArgumentException("Object type must set!");
-		}
-
-		if (objectType.getPropertyDefinitions() == null) {
-			throw new IllegalArgumentException("Object type has no property defintions!");
-		}
-
-		if ((properties == null) || (properties.getProperties() == null)) {
-			throw new IllegalArgumentException("Properties must be set!");
-		}
-
-		// iterate through properties and convert them
-		Map<String, Property<?>> result = new LinkedHashMap<String, Property<?>>();
-		for (Map.Entry<String, PropertyData<?>> property : properties.getProperties().entrySet()) {
-			// find property definition
-			PropertyDefinition<?> definition = objectType.getPropertyDefinitions().get(property.getKey());
-			if (definition == null) {
-				// property without definition
-				throw new CmisRuntimeException("Property '" + property.getKey() + "' doesn't exist!");
-			}
-
-			Property<?> apiProperty = null;
-
-			if (definition instanceof PropertyStringDefinition) {
-				apiProperty = createPropertyMultivalue((PropertyStringDefinition) definition, (List<String>) property
-						.getValue().getValues());
-			} else if (definition instanceof PropertyIdDefinition) {
-				apiProperty = createPropertyMultivalue((PropertyIdDefinition) definition, (List<String>) property
-						.getValue().getValues());
-			} else if (definition instanceof PropertyHtmlDefinition) {
-				apiProperty = createPropertyMultivalue((PropertyHtmlDefinition) definition, (List<String>) property
-						.getValue().getValues());
-			} else if (definition instanceof PropertyUriDefinition) {
-				apiProperty = createPropertyMultivalue((PropertyUriDefinition) definition, (List<String>) property
-						.getValue().getValues());
-			} else if (definition instanceof PropertyIntegerDefinition) {
-				apiProperty = createPropertyMultivalue((PropertyIntegerDefinition) definition,
-						(List<BigInteger>) property.getValue().getValues());
-			} else if (definition instanceof PropertyBooleanDefinition) {
-				apiProperty = createPropertyMultivalue((PropertyBooleanDefinition) definition, (List<Boolean>) property
-						.getValue().getValues());
-			} else if (definition instanceof PropertyDecimalDefinition) {
-				apiProperty = createPropertyMultivalue((PropertyDecimalDefinition) definition,
-						(List<BigDecimal>) property.getValue().getValues());
-			} else if (definition instanceof PropertyDateTimeDefinition) {
-				apiProperty = createPropertyMultivalue((PropertyDateTimeDefinition) definition,
-						(List<GregorianCalendar>) property.getValue().getValues());
-			}
-
-			result.put(property.getKey(), apiProperty);
-		}
-
-		return result;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @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 Properties convertProperties(Map<String, ?> properties, ObjectType type, Set<Updatability> updatabilityFilter) {
-		// check input
-		if (properties == null) {
-			throw new IllegalArgumentException("Properties must be set!");
-		}
-
-		// get the type
-		if (type == null) {
-			Object typeId = properties.get(PropertyIds.OBJECT_TYPE_ID);
-			if (!(typeId instanceof String)) {
-				throw new IllegalArgumentException("Type or type property must be set!");
-			}
-
-			type = session.getTypeDefinition(typeId.toString());
-		}
-
-		// some preparation
-		BindingsObjectFactory pof = getProviderObjectFactory();
-		List<PropertyData<?>> propertyList = new ArrayList<PropertyData<?>>();
-
-		// the big loop
-		for (Map.Entry<String, ?> property : properties.entrySet()) {
-			if ((property == null) || (property.getKey() == null)) {
-				continue;
-			}
-
-			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.getFirstValue() : p.getValues());
-			}
-
-			// get the property definition
-			PropertyDefinition<?> definition = type.getPropertyDefinitions().get(id);
-			if (definition == null) {
-				throw new IllegalArgumentException("Property +'" + id + "' is not valid for this type!");
-			}
-
-			// check updatability
-			if (updatabilityFilter != null) {
-				if (!updatabilityFilter.contains(definition.getUpdatability())) {
-					continue;
-				}
-			}
-
-			// 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) {
-				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) {
-				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) {
-				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) {
-				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) {
-				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) {
-				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) {
-				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) {
-				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);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @seeorg.apache.opencmis.client.api.repository.ObjectFactory#
-	 * convertQueryProperties(org.apache.opencmis
-	 * .commons.provider.PropertiesData)
-	 */
-	public List<PropertyData<?>> convertQueryProperties(Properties properties) {
-		// check input
-		if ((properties == null) || (properties.getProperties() == null)) {
-			throw new IllegalArgumentException("Properties must be set!");
-		}
-		return new ArrayList<PropertyData<?>>(properties.getProperties().values());
-	}
-
-	// objects
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.api.repository.ObjectFactory#convertObject
-	 * (org.apache.opencmis.commons .provider.ObjectData,
-	 * org.apache.opencmis.client.api.OperationContext)
-	 */
-	public CmisObject convertObject(ObjectData objectData, OperationContext context) {
-		if (objectData == null) {
-			throw new IllegalArgumentException("Object data is null!");
-		}
-
-		ObjectType type = getTypeFromObjectData(objectData);
-
-		/* determine type */
-		switch (objectData.getBaseTypeId()) {
-		case CMIS_DOCUMENT:
-			return new PersistentDocumentImpl(this.session, type, objectData, context);
-		case CMIS_FOLDER:
-			return new PersistentFolderImpl(this.session, type, objectData, context);
-		case CMIS_POLICY:
-			return new PersistentPolicyImpl(this.session, type, objectData, context);
-		case CMIS_RELATIONSHIP:
-			return new PersistentRelationshipImpl(this.session, type, objectData, context);
-		default:
-			throw new CmisRuntimeException("unsupported type: " + objectData.getBaseTypeId());
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.opencmis.client.api.repository.ObjectFactory#convertQueryResult
-	 * (org.apache.opencmis .commons.provider.ObjectData)
-	 */
-	public QueryResult convertQueryResult(ObjectData objectData) {
-		if (objectData == null) {
-			throw new IllegalArgumentException("Object data is null!");
-		}
+    /**
+     * Constructor.
+     */
+    protected PersistentObjectFactoryImpl(PersistentSessionImpl session) {
+        if (session == null) {
+            throw new IllegalArgumentException("Session must be set!");
+        }
+
+        this.session = session;
+    }
+
+    /**
+     * Creates a new factory instance.
+     */
+    public static ObjectFactory newInstance(PersistentSessionImpl session) {
+        return new PersistentObjectFactoryImpl(session);
+    }
+
+    /**
+     * Returns the bindings object factory.
+     */
+    protected BindingsObjectFactory getProviderObjectFactory() {
+        return session.getBinding().getObjectFactory();
+    }
+
+    // ACL and ACE
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.api.repository.ObjectFactory#convertAces(java
+     * .util.List)
+     */
+    public Acl convertAces(List<Ace> aces) {
+        if (aces == null) {
+            return null;
+        }
+
+        BindingsObjectFactory pof = getProviderObjectFactory();
+
+        List<Ace> providerAces = new ArrayList<Ace>();
+        for (Ace ace : aces) {
+            providerAces.add(pof.createAccessControlEntry(ace.getPrincipalId(), ace.getPermissions()));
+        }
+
+        return pof.createAccessControlList(providerAces);
+    }
+
+    // policies
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.api.repository.ObjectFactory#convertPolicies
+     * (java.util.List)
+     */
+    public 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;
+    }
+
+    // renditions
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.api.repository.ObjectFactory#convertRendition
+     * (java.lang.String, org.apache.opencmis.commons.provider.RenditionData)
+     */
+    public Rendition convertRendition(String objectId, RenditionData rendition) {
+        if (rendition == null) {
+            throw new IllegalArgumentException("Rendition must be set!");
+        }
+
+        // TODO: what should happen if the length is not set?
+        long length = (rendition.getBigLength() == null ? -1 : rendition.getBigLength().longValue());
+        int height = (rendition.getBigHeight() == null ? -1 : rendition.getBigHeight().intValue());
+        int width = (rendition.getBigWidth() == null ? -1 : rendition.getBigWidth().intValue());
+
+        return new RenditionImpl(this.session, objectId, rendition.getStreamId(), rendition.getRenditionDocumentId(),
+                rendition.getKind(), length, rendition.getMimeType(), rendition.getTitle(), height, width);
+    }
+
+    // content stream
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.api.repository.ObjectFactory#createContentStream
+     * (java.lang.String, long, java.lang.String, java.io.InputStream)
+     */
+    public ContentStream createContentStream(String filename, long length, String mimetype, InputStream stream) {
+        return new ContentStreamImpl(filename, BigInteger.valueOf(length), mimetype, stream);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.api.repository.ObjectFactory#convertContentStream
+     * (org.apache.opencmis .client.api.ContentStream)
+     */
+    public ContentStream convertContentStream(ContentStream contentStream) {
+        if (contentStream == null) {
+            return null;
+        }
+
+        BigInteger length = (contentStream.getLength() < 0 ? null : BigInteger.valueOf(contentStream.getLength()));
+
+        return getProviderObjectFactory().createContentStream(contentStream.getFileName(), length,
+                contentStream.getMimeType(), contentStream.getStream());
+    }
+
+    // types
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.api.repository.ObjectFactory#convertTypeDefinition
+     * (org.apache.opencmis .commons.api.TypeDefinition)
+     */
+    public ObjectType convertTypeDefinition(TypeDefinition typeDefinition) {
+        if (typeDefinition instanceof DocumentTypeDefinition) {
+            return new DocumentTypeImpl(this.session, (DocumentTypeDefinition) typeDefinition);
+        } else if (typeDefinition instanceof FolderTypeDefinition) {
+            return new FolderTypeImpl(this.session, (FolderTypeDefinition) typeDefinition);
+        } else if (typeDefinition instanceof RelationshipTypeDefinition) {
+            return new RelationshipTypeImpl(this.session, (RelationshipTypeDefinition) typeDefinition);
+        } else if (typeDefinition instanceof PolicyTypeDefinition) {
+            return new PolicyTypeImpl(this.session, (PolicyTypeDefinition) typeDefinition);
+        } else {
+            throw new CmisRuntimeException("Unknown base type!");
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.api.repository.ObjectFactory#getTypeFromObjectData
+     * (org.apache.opencmis .commons.provider.ObjectData)
+     */
+    public ObjectType getTypeFromObjectData(ObjectData objectData) {
+        if ((objectData == null) || (objectData.getProperties() == null)
+                || (objectData.getProperties().getProperties() == null)) {
+            return null;
+        }
+
+        PropertyData<?> typeProperty = objectData.getProperties().getProperties().get(PropertyIds.OBJECT_TYPE_ID);
+        if (!(typeProperty instanceof PropertyId)) {
+            return null;
+        }
+
+        return this.session.getTypeDefinition((String) typeProperty.getFirstValue());
+    }
+
+    // properties
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.api.repository.ObjectFactory#createProperty
+     * (org.apache.opencmis. commons.api.PropertyDefinition, java.lang.Object)
+     */
+    public <T> Property<T> createProperty(PropertyDefinition<?> type, T value) {
+        return new PersistentPropertyImpl<T>(type, value);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @seeorg.apache.opencmis.client.api.repository.ObjectFactory#
+     * createPropertyMultivalue(org.apache
+     * .opencmis.commons.api.PropertyDefinition, java.util.List)
+     */
+    public <T> Property<T> createPropertyMultivalue(PropertyDefinition<?> type, List<T> values) {
+        return new PersistentPropertyImpl<T>(type, values);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.api.repository.ObjectFactory#convertProperties
+     * (org.apache.opencmis .client.api.objecttype.ObjectType,
+     * org.apache.opencmis.commons.provider.PropertiesData)
+     */
+    @SuppressWarnings("unchecked")
+    public Map<String, Property<?>> convertProperties(ObjectType objectType, Properties properties) {
+        // check input
+        if (objectType == null) {
+            throw new IllegalArgumentException("Object type must set!");
+        }
+
+        if (objectType.getPropertyDefinitions() == null) {
+            throw new IllegalArgumentException("Object type has no property defintions!");
+        }
+
+        if ((properties == null) || (properties.getProperties() == null)) {
+            throw new IllegalArgumentException("Properties must be set!");
+        }
+
+        // iterate through properties and convert them
+        Map<String, Property<?>> result = new LinkedHashMap<String, Property<?>>();
+        for (Map.Entry<String, PropertyData<?>> property : properties.getProperties().entrySet()) {
+            // find property definition
+            PropertyDefinition<?> definition = objectType.getPropertyDefinitions().get(property.getKey());
+            if (definition == null) {
+                // property without definition
+                throw new CmisRuntimeException("Property '" + property.getKey() + "' doesn't exist!");
+            }
+
+            Property<?> apiProperty = null;
+
+            if (definition instanceof PropertyStringDefinition) {
+                apiProperty = createPropertyMultivalue((PropertyStringDefinition) definition, (List<String>) property
+                        .getValue().getValues());
+            } else if (definition instanceof PropertyIdDefinition) {
+                apiProperty = createPropertyMultivalue((PropertyIdDefinition) definition, (List<String>) property
+                        .getValue().getValues());
+            } else if (definition instanceof PropertyHtmlDefinition) {
+                apiProperty = createPropertyMultivalue((PropertyHtmlDefinition) definition, (List<String>) property
+                        .getValue().getValues());
+            } else if (definition instanceof PropertyUriDefinition) {
+                apiProperty = createPropertyMultivalue((PropertyUriDefinition) definition, (List<String>) property
+                        .getValue().getValues());
+            } else if (definition instanceof PropertyIntegerDefinition) {
+                apiProperty = createPropertyMultivalue((PropertyIntegerDefinition) definition,
+                        (List<BigInteger>) property.getValue().getValues());
+            } else if (definition instanceof PropertyBooleanDefinition) {
+                apiProperty = createPropertyMultivalue((PropertyBooleanDefinition) definition, (List<Boolean>) property
+                        .getValue().getValues());
+            } else if (definition instanceof PropertyDecimalDefinition) {
+                apiProperty = createPropertyMultivalue((PropertyDecimalDefinition) definition,
+                        (List<BigDecimal>) property.getValue().getValues());
+            } else if (definition instanceof PropertyDateTimeDefinition) {
+                apiProperty = createPropertyMultivalue((PropertyDateTimeDefinition) definition,
+                        (List<GregorianCalendar>) property.getValue().getValues());
+            }
+
+            result.put(property.getKey(), apiProperty);
+        }
+
+        return result;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @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 Properties convertProperties(Map<String, ?> properties, ObjectType type, Set<Updatability> updatabilityFilter) {
+        // check input
+        if (properties == null) {
+            throw new IllegalArgumentException("Properties must be set!");
+        }
+
+        // get the type
+        if (type == null) {
+            Object typeId = properties.get(PropertyIds.OBJECT_TYPE_ID);
+            if (!(typeId instanceof String)) {
+                throw new IllegalArgumentException("Type or type property must be set!");
+            }
+
+            type = session.getTypeDefinition(typeId.toString());
+        }
+
+        // some preparation
+        BindingsObjectFactory pof = getProviderObjectFactory();
+        List<PropertyData<?>> propertyList = new ArrayList<PropertyData<?>>();
+
+        // the big loop
+        for (Map.Entry<String, ?> property : properties.entrySet()) {
+            if ((property == null) || (property.getKey() == null)) {
+                continue;
+            }
+
+            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.getFirstValue() : p.getValues());
+            }
+
+            // get the property definition
+            PropertyDefinition<?> definition = type.getPropertyDefinitions().get(id);
+            if (definition == null) {
+                throw new IllegalArgumentException("Property +'" + id + "' is not valid for this type!");
+            }
+
+            // check updatability
+            if (updatabilityFilter != null) {
+                if (!updatabilityFilter.contains(definition.getUpdatability())) {
+                    continue;
+                }
+            }
+
+            // 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) {
+                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) {
+                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) {
+                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) {
+                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) {
+                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) {
+                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) {
+                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) {
+                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);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @seeorg.apache.opencmis.client.api.repository.ObjectFactory#
+     * convertQueryProperties(org.apache.opencmis
+     * .commons.provider.PropertiesData)
+     */
+    public List<PropertyData<?>> convertQueryProperties(Properties properties) {
+        // check input
+        if ((properties == null) || (properties.getProperties() == null)) {
+            throw new IllegalArgumentException("Properties must be set!");
+        }
+        return new ArrayList<PropertyData<?>>(properties.getProperties().values());
+    }
+
+    // objects
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.api.repository.ObjectFactory#convertObject
+     * (org.apache.opencmis.commons .provider.ObjectData,
+     * org.apache.opencmis.client.api.OperationContext)
+     */
+    public CmisObject convertObject(ObjectData objectData, OperationContext context) {
+        if (objectData == null) {
+            throw new IllegalArgumentException("Object data is null!");
+        }
+
+        ObjectType type = getTypeFromObjectData(objectData);
+
+        /* determine type */
+        switch (objectData.getBaseTypeId()) {
+        case CMIS_DOCUMENT:
+            return new PersistentDocumentImpl(this.session, type, objectData, context);
+        case CMIS_FOLDER:
+            return new PersistentFolderImpl(this.session, type, objectData, context);
+        case CMIS_POLICY:
+            return new PersistentPolicyImpl(this.session, type, objectData, context);
+        case CMIS_RELATIONSHIP:
+            return new PersistentRelationshipImpl(this.session, type, objectData, context);
+        default:
+            throw new CmisRuntimeException("unsupported type: " + objectData.getBaseTypeId());
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.opencmis.client.api.repository.ObjectFactory#convertQueryResult
+     * (org.apache.opencmis .commons.provider.ObjectData)
+     */
+    public QueryResult convertQueryResult(ObjectData objectData) {
+        if (objectData == null) {
+            throw new IllegalArgumentException("Object data is null!");
+        }
 
-		return new QueryResultImpl(session, objectData);
-	}
+        return new QueryResultImpl(session, objectData);
+    }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/RepositoryImpl.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/RepositoryImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/RepositoryImpl.java Thu Apr 22 16:04:19 2010
@@ -30,30 +30,30 @@ import org.apache.chemistry.opencmis.com
 
 public class RepositoryImpl extends RepositoryInfoImpl implements Repository {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-	private final Map<String, String> parameters;
-	private final SessionFactory sessionFactory;
+    private final Map<String, String> parameters;
+    private final SessionFactory sessionFactory;
 
-	/**
-	 * Constructor.
-	 */
-	public RepositoryImpl(RepositoryInfo data, Map<String, String> parameters, SessionFactory sessionFactory) {
-		super(data);
-
-		this.parameters = new HashMap<String, String>(parameters);
-		this.parameters.put(SessionParameter.REPOSITORY_ID, getId());
-
-		this.sessionFactory = sessionFactory;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.opencmis.client.api.repository.Repository#createSession()
-	 */
-	@SuppressWarnings("unchecked")
-	public <T extends Session> T createSession() {
-		return (T) sessionFactory.createSession(parameters);
-	}
+    /**
+     * Constructor.
+     */
+    public RepositoryImpl(RepositoryInfo data, Map<String, String> parameters, SessionFactory sessionFactory) {
+        super(data);
+
+        this.parameters = new HashMap<String, String>(parameters);
+        this.parameters.put(SessionParameter.REPOSITORY_ID, getId());
+
+        this.sessionFactory = sessionFactory;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.opencmis.client.api.repository.Repository#createSession()
+     */
+    @SuppressWarnings("unchecked")
+    public <T extends Session> T createSession() {
+        return (T) sessionFactory.createSession(parameters);
+    }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/AbstractPageFetch.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/AbstractPageFetch.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/AbstractPageFetch.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/AbstractPageFetch.java Thu Apr 22 16:04:19 2010
@@ -28,39 +28,38 @@ import java.util.List;
  */
 public abstract class AbstractPageFetch<T> {
 
-	/**
-	 * Fetches the given page from the server.
-	 * 
-	 * @param pageNumber
-	 *            number of the page (>= 0).
-	 */
-	protected abstract PageFetchResult<T> fetchPage(long skipCount);
-
-	// --- fetch result class ---
-
-	protected static class PageFetchResult<T> {
-		private List<T> page;
-		private BigInteger totalItems;
-		private Boolean hasMoreItems;
-
-		public PageFetchResult(List<T> page, BigInteger totalItems,
-				Boolean hasMoreItems) {
-			this.page = page;
-			this.totalItems = totalItems;
-			this.hasMoreItems = hasMoreItems;
-		}
-
-		public List<T> getPage() {
-			return page;
-		}
-
-		public BigInteger getTotalItems() {
-			return totalItems;
-		}
-
-		public Boolean getHasMoreItems() {
-			return hasMoreItems;
-		}
-	}
+    /**
+     * Fetches the given page from the server.
+     * 
+     * @param pageNumber
+     *            number of the page (>= 0).
+     */
+    protected abstract PageFetchResult<T> fetchPage(long skipCount);
+
+    // --- fetch result class ---
+
+    protected static class PageFetchResult<T> {
+        private List<T> page;
+        private BigInteger totalItems;
+        private Boolean hasMoreItems;
+
+        public PageFetchResult(List<T> page, BigInteger totalItems, Boolean hasMoreItems) {
+            this.page = page;
+            this.totalItems = totalItems;
+            this.hasMoreItems = hasMoreItems;
+        }
+
+        public List<T> getPage() {
+            return page;
+        }
+
+        public BigInteger getTotalItems() {
+            return totalItems;
+        }
+
+        public Boolean getHasMoreItems() {
+            return hasMoreItems;
+        }
+    }
 
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/ContainerImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/ContainerImpl.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/ContainerImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/ContainerImpl.java Thu Apr 22 16:04:19 2010
@@ -24,33 +24,33 @@ import org.apache.chemistry.opencmis.cli
 
 public class ContainerImpl<T> implements Tree<T> {
 
-	private T item;
-	private List<Tree<T>> children;
+    private T item;
+    private List<Tree<T>> children;
 
-	public ContainerImpl(T item, List<Tree<T>> children) {
-		if (item == null) {
-			throw new IllegalArgumentException("Item must be set!");
-		}
-
-		this.item = item;
-		this.children = children;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.opencmis.client.api.util.Container#getItem()
-	 */
-	public T getItem() {
-		return item;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.opencmis.client.api.util.Container#getChildren()
-	 */
-	public List<Tree<T>> getChildren() {
-		return this.children;
-	}
+    public ContainerImpl(T item, List<Tree<T>> children) {
+        if (item == null) {
+            throw new IllegalArgumentException("Item must be set!");
+        }
+
+        this.item = item;
+        this.children = children;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.opencmis.client.api.util.Container#getItem()
+     */
+    public T getItem() {
+        return item;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.opencmis.client.api.util.Container#getChildren()
+     */
+    public List<Tree<T>> getChildren() {
+        return this.children;
+    }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/DefaultPagingIterable.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/DefaultPagingIterable.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/DefaultPagingIterable.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/DefaultPagingIterable.java Thu Apr 22 16:04:19 2010
@@ -27,46 +27,46 @@ import org.apache.chemistry.opencmis.cli
  */
 public class DefaultPagingIterable<T> implements PagingIterable<T> {
 
-	private AbstractPageFetch<T> pageFetch;
-	private long skipCount;
+    private AbstractPageFetch<T> pageFetch;
+    private long skipCount;
 
-	/**
-	 * Construct
-	 * 
-	 * @param pageFetch
-	 */
-	public DefaultPagingIterable(AbstractPageFetch<T> pageFetch) {
-		this(0, pageFetch);
-	}
-
-	/**
-	 * Construct
-	 * 
-	 * @param position
-	 * @param pageFetch
-	 */
-	private DefaultPagingIterable(long position, AbstractPageFetch<T> pageFetch) {
-		this.pageFetch = pageFetch;
-		this.skipCount = position;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Iterable#iterator()
-	 */
-	public Iterator<T> iterator() {
-		return new DefaultPagingIterator<T>(skipCount, pageFetch);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.chemistry.opencmis.client.api.util.PagingIterable#skipTo(long)
-	 */
-	public PagingIterable<T> skipTo(long position) {
-		return new DefaultPagingIterable<T>(position, pageFetch);
-	}
+    /**
+     * Construct
+     * 
+     * @param pageFetch
+     */
+    public DefaultPagingIterable(AbstractPageFetch<T> pageFetch) {
+        this(0, pageFetch);
+    }
+
+    /**
+     * Construct
+     * 
+     * @param position
+     * @param pageFetch
+     */
+    private DefaultPagingIterable(long position, AbstractPageFetch<T> pageFetch) {
+        this.pageFetch = pageFetch;
+        this.skipCount = position;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Iterable#iterator()
+     */
+    public Iterator<T> iterator() {
+        return new DefaultPagingIterator<T>(skipCount, pageFetch);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.client.api.util.PagingIterable#skipTo(long)
+     */
+    public PagingIterable<T> skipTo(long position) {
+        return new DefaultPagingIterable<T>(position, pageFetch);
+    }
 
 }