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);
+ }
}