chemistry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From f...@apache.org
Subject svn commit: r917425 [1/3] - in /incubator/chemistry/trunk/opencmis/opencmis-client: opencmis-client-api/src/main/java/org/apache/opencmis/client/api/ opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/ opencmis-client-api/src/m...
Date Mon, 01 Mar 2010 09:06:07 GMT
Author: fmui
Date: Mon Mar  1 09:06:06 2010
New Revision: 917425

URL: http://svn.apache.org/viewvc?rev=917425&view=rev
Log:
- another intermediate step toward client API implementation

Added:
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/AllowableActions.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/FileableCmisObject.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/Container.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentFilableCmisObject.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AceImpl.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AclImpl.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AllowableActionsImpl.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/SessionUtil.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/objecttype/AbstractObjectType.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/objecttype/DocumentTypeImpl.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/objecttype/FolderTypeImpl.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/objecttype/PolicyTypeImpl.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/objecttype/RelationshipTypeImpl.java   (with props)
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PersistentPropertyFactoryImpl.java   (with props)
Removed:
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/AllowableActions.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PropertyFactoryImpl.java
Modified:
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Ace.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Document.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Folder.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Policy.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/DocumentType.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/ObjectType.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/PropertyFactory.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/PagingList.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentPolicyImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentPropertyImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentRelationshipImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentSessionImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/client/runtime/AbstractSessionTest.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/client/runtime/ReadOnlyNavigationTest.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/client/runtime/ReadOnlyObjectTest.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/client/runtime/ReadOnlyTypeTest.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/client/runtime/mock/MockSessionFactory.java

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Ace.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Ace.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Ace.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Ace.java Mon Mar  1 09:06:06 2010
@@ -38,18 +38,11 @@
   String getPrincipalId();
 
   /**
-   * Get the list of permissions, this ACE grants to its principal.
-   * 
-   * @return the list of {@code AclPermission} objects
-   */
-  List<AclPermission> getPermissions();
-
-  /**
    * Get the list of ids for the permissions, this ACE grants to its principal.
    * 
    * @return the list of {@code String}s with the ids of the permissions
    */
-  List<String> getPermissionsNames();
+  List<String> getPermissions();
 
   /**
    * Gets the {@code direct} flag for this ACE.

Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/AllowableActions.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/AllowableActions.java?rev=917425&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/AllowableActions.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/AllowableActions.java Mon Mar  1 09:06:06 2010
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.opencmis.client.api;
+
+/**
+ * Information about the actions for a CMIS object.
+ * 
+ * @see org.apache.opencmis.client.api.CmisObject#getAllowableActions()
+ * 
+ *      See CMIS Domain Model - section 2.2.4.6.
+ */
+public interface AllowableActions {
+
+  Boolean canDeleteObject();
+
+  Boolean canUpdateProperties();
+
+  Boolean canGetProperties();
+
+  Boolean canGetObjectRelationships();
+
+  Boolean canGetObjectParents();
+
+  Boolean canGetFolderParent();
+
+  Boolean canGetDescendants();
+
+  Boolean canMoveObject();
+
+  Boolean canDeleteContentStream();
+
+  Boolean canCheckOut();
+
+  Boolean canCancelCheckOut();
+
+  Boolean canCheckIn();
+
+  Boolean canSetContentStream();
+
+  Boolean canGetAllVersions();
+
+  Boolean canAddObjectToFolder();
+
+  Boolean canRemoveObjectFromFolder();
+
+  Boolean canGetContentStream();
+
+  Boolean canApplyPolicy();
+
+  Boolean canGetAppliedPolicies();
+
+  Boolean canRemovePolicy();
+
+  Boolean canGetChildren();
+
+  Boolean canCreateDocument();
+
+  Boolean canCreateFolder();
+
+  Boolean canCreateRelationship();
+
+  Boolean canCreatePolicy();
+
+  Boolean canDeleteTree();
+
+  Boolean canGetRenditions();
+
+  Boolean canGetAcl();
+
+  Boolean canApplyAcl();
+}

Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/AllowableActions.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java Mon Mar  1 09:06:06 2010
@@ -22,12 +22,9 @@
 import java.util.List;
 
 import org.apache.opencmis.client.api.objecttype.ObjectType;
-import org.apache.opencmis.client.api.repository.AllowableActions;
-import org.apache.opencmis.client.api.util.AceList;
 import org.apache.opencmis.commons.enums.AclPropagation;
 import org.apache.opencmis.commons.enums.BaseObjectTypeIds;
 import org.apache.opencmis.commons.enums.RelationshipDirection;
-import org.apache.opencmis.commons.enums.UnfileObjects;
 
 /**
  * Base CMIS object.
@@ -90,9 +87,9 @@
   ObjectType getType();
 
   /**
-   * Get the type's base type id. 
+   * Get the type's base type id.
    * 
-   * @return 
+   * @return
    */
   BaseObjectTypeIds getBaseTypeId();
 
@@ -116,8 +113,6 @@
 
   List<Property<?>> getProperties();
 
-  List<Property<?>> getProperties(String filter);
-
   <T> Property<T> getProperty(String id);
 
   <T> T getPropertyValue(String id);
@@ -128,27 +123,13 @@
 
   List<Relationship> getRelationships();
 
-  List<Ace> getAcl();
-
-  boolean isExactAcl();
+  Acl getAcl();
 
   // object service
 
-  CmisObject move(Folder targetfolder);
-
   void delete(boolean allVersions);
 
-  void updateProperties(List<Property<?>> properties);
-
-  // navigation service
-
-  List<Folder> getParents();
-
-  // multifiling service
-
-  void addToFolder(Folder folder, boolean allVersions);
-
-  void removeFromFolder(Folder folder); 
+  void updateProperties();
 
   // relationship service
 
@@ -169,10 +150,14 @@
 
   // ACL service
 
-  AceList getAcl(boolean onlyBasicPermissions);
+  Acl getAcl(boolean onlyBasicPermissions);
 
-  AceList applyAcl(List<Ace> addAces, List<Ace> removeAces, AclPropagation aclPropagation);
+  Acl applyAcl(List<Ace> addAces, List<Ace> removeAces, AclPropagation aclPropagation);
+
+  void addAcl(List<Ace> addAces, AclPropagation aclPropagation);
 
+  void removeAcl(List<Ace> removeAces, AclPropagation aclPropagation);
+  
   // buffered stuff
 
   <T> void setProperty(String id, T value);
@@ -181,10 +166,6 @@
 
   // void saveProperties(); // flush buffered ...Propert...-calls
 
-  void addAcl(List<Ace> addAces, AclPropagation aclPropagation);
-
-  void removeAcl(List<Ace> addAces, AclPropagation aclPropagation);
-
   // void saveAcl(); // flush buffered ...Acl...-calls
 
   // session handling

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Document.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Document.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Document.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Document.java Mon Mar  1 09:06:06 2010
@@ -25,9 +25,7 @@
 /**
  * Domain Model 2.4
  */
-public interface Document extends CmisObject {
-
-	List<String> getPaths();
+public interface Document extends FileableCmisObject {
 	
 	List<Rendition> getRenditions();
 

Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/FileableCmisObject.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/FileableCmisObject.java?rev=917425&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/FileableCmisObject.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/FileableCmisObject.java Mon Mar  1 09:06:06 2010
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.opencmis.client.api;
+
+import java.util.List;
+
+/**
+ * Fileable CMIS object.
+ */
+public interface FileableCmisObject extends CmisObject {
+
+  // object service
+
+  /**
+   * Moves the object.
+   */
+  FileableCmisObject move(Folder sourceFolder, Folder targetFolder);
+
+  /**
+   * Moves the object.
+   */
+  FileableCmisObject move(String sourceFolderId, String targetFolderId);
+
+  // navigation service
+
+  /**
+   * Returns the parents of this object.
+   */
+  List<Folder> getParents();
+
+  /**
+   * Returns the paths of this object.
+   */
+  List<String> getPaths();
+
+  // multifiling service
+
+  /**
+   * Adds this object to a folder.
+   */
+  void addToFolder(Folder folder, boolean allVersions);
+
+  /**
+   * Removes this object from a folder.
+   */
+  void removeFromFolder(Folder folder);
+}

Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/FileableCmisObject.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Folder.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Folder.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Folder.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Folder.java Mon Mar  1 09:06:06 2010
@@ -19,21 +19,19 @@
 package org.apache.opencmis.client.api;
 
 import java.util.List;
-import java.util.TreeMap;
 
 import org.apache.opencmis.client.api.objecttype.ObjectType;
-import org.apache.opencmis.client.api.util.*;
+import org.apache.opencmis.client.api.util.Container;
+import org.apache.opencmis.client.api.util.PagingList;
 import org.apache.opencmis.commons.enums.UnfileObjects;
 import org.apache.opencmis.commons.enums.VersioningState;
 
 /**
  * Domain Model 2.5
  */
-public interface Folder extends CmisObject {
+public interface Folder extends FileableCmisObject {
 
-	String getPath();
-
-	// object service
+  // object service
 
   Document createDocument(String name);
 
@@ -60,14 +58,16 @@
 
   // navigation service
 
-  TreeMap<String, CmisObject> getFolderTree(int depth);
+  List<Container<FileableCmisObject>> getFolderTree(int depth);
 
-  TreeMap<String, CmisObject> getDescendants(int depth);
+  List<Container<FileableCmisObject>> getDescendants(int depth);
 
   PagingList<CmisObject> getChildren(String orderby, int itemsPerPage);
 
   Folder getFolderParent();
 
+  String getPath();
+
   PagingList<Document> getCheckedOutDocs(String orderby, int itemsPerPage);
 
   // folder specific properties

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Policy.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Policy.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Policy.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Policy.java Mon Mar  1 09:06:06 2010
@@ -18,15 +18,11 @@
  */
 package org.apache.opencmis.client.api;
 
-import java.util.List;
-
 /**
  * Domain Model 2.7
  */
-public interface Policy extends CmisObject {
-
-	List<String> getPaths();
+public interface Policy extends FileableCmisObject {
 
-	public String getPolicyText(); // cmis:policyText
+  public String getPolicyText(); // cmis:policyText
 
 }

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java Mon Mar  1 09:06:06 2010
@@ -18,124 +18,126 @@
  */
 package org.apache.opencmis.client.api;
 
+import java.util.List;
 import java.util.Locale;
 
 import org.apache.opencmis.client.api.objecttype.ObjectType;
 import org.apache.opencmis.client.api.repository.ObjectFactory;
 import org.apache.opencmis.client.api.repository.PropertyFactory;
 import org.apache.opencmis.client.api.repository.RepositoryInfo;
+import org.apache.opencmis.client.api.util.Container;
 import org.apache.opencmis.client.api.util.PagingList;
+import org.apache.opencmis.commons.provider.CmisProvider;
 
 /**
- * A session is associated with a specific connection to a CMIS repository. A
- * session belongs to one authenticated user and
+ * A session is associated with a specific connection to a CMIS repository. A session belongs to one
+ * authenticated user and
  */
 public interface Session {
 
-	/**
-	 * Clear all cached data. This implies that all data will be reloaded from
-	 * the repository (depending on the implementation, reloading might be done
-	 * immediately or be deferred).
-	 */
-	void clear();
-
-	// session context
-
-	/**
-	 * Get the current session parameters for filtering and paging.
-	 */
-	SessionContext getContext();
-
-	/**
-	 * Set the current session parameters for filtering and paging.
-	 * 
-	 * @param context
-	 *            the <code>SessionContext</code> to be used for the session; if
-	 *            <code>null</code>, a default context is used
-	 */
-	void setContext(SessionContext context);
-
-	// localization
-
-	/**
-	 * Get the current locale to be used for this session.
-	 */
-	Locale getLocale();
-
-	// services
-
-	/**
-	 * Repository service <code>getRepositoryInfo()</code>.
-	 */
-	RepositoryInfo getRepositoryInfo();
-
-	/**
-	 * Access to the object services <code>create</code><i>...</i>, plus factory
-	 * methods to create <code>Acl</code>s, <code>Ace</code>s, and
-	 * <code>ContentStream</code>.
-	 */
-	ObjectFactory getObjectFactory();
-
-	/**
-	 * Get the factory for <code>Property</code> objects.
-	 */
-	PropertyFactory getPropertyFactory();
-
-	ObjectType getTypeDefinition(String typeId);
-
-	PagingList<ObjectType> getTypeChildren(ObjectType t,
-			boolean includePropertyDefinitions, int itemsPerPage);
-
-	PagingList<ObjectType> getTypeDescendants(ObjectType t, int depth,
-			boolean includePropertyDefinitions, int itemsPerPage);
-
-	// navigation
-
-	/**
-	 * Get the root folder for the repository.
-	 */
-	Folder getRootFolder();
-
-	/**
-	 * Navigation service <code>getCheckedOutDocs</code>.
-	 * 
-	 * @param folder
-	 * @param orderby
-	 * @return @
-	 */
-	PagingList<Document> getCheckedOutDocs(Folder folder, String orderby,
-			int itemsPerPage);
-
-	/**
-	 * Object service <code>getObject</code>.
-	 * 
-	 * @param objectid
-	 * @return @
-	 */
-	CmisObject getObject(String objectid);
-
-	/**
-	 * Object service <code>getObjectByPath</code>.
-	 * 
-	 * @param path
-	 * @return @
-	 */
-	CmisObject getObjectByPath(String path);
-
-	// discovery
-
-	/**
-	 * Discovery service <code>query</code>.
-	 */
-	PagingList<CmisObject> query(String statement, boolean searchAllVersions,
-			int itemsPerPage);
-
-	/**
-	 * Discovery service <code>getContentChanges</code>.
-	 * 
-	 * @return
-	 */
-	PagingList<ChangeEvent> getContentChanges(String changeLogToken,
-			int itemsPerPage);
+  /**
+   * Clear all cached data. This implies that all data will be reloaded from the repository
+   * (depending on the implementation, reloading might be done immediately or be deferred).
+   */
+  void clear();
+
+  // session context
+
+  /**
+   * Gets the underlying provider object.
+   */
+  CmisProvider getProvider();
+  
+  /**
+   * Get the current session parameters for filtering and paging.
+   */
+  SessionContext getContext();
+
+  /**
+   * Set the current session parameters for filtering and paging.
+   * 
+   * @param context
+   *          the <code>SessionContext</code> to be used for the session; if <code>null</code>, a
+   *          default context is used
+   */
+  void setContext(SessionContext context);
+
+  // localization
+
+  /**
+   * Get the current locale to be used for this session.
+   */
+  Locale getLocale();
+
+  // services
+
+  /**
+   * Repository service <code>getRepositoryInfo()</code>.
+   */
+  RepositoryInfo getRepositoryInfo();
+
+  /**
+   * Access to the object services <code>create</code><i>...</i>, plus factory methods to create
+   * <code>Acl</code>s, <code>Ace</code>s, and <code>ContentStream</code>.
+   */
+  ObjectFactory getObjectFactory();
+
+  /**
+   * Get the factory for <code>Property</code> objects.
+   */
+  PropertyFactory getPropertyFactory();
+
+  ObjectType getTypeDefinition(String typeId);
+
+  PagingList<ObjectType> getTypeChildren(ObjectType t, boolean includePropertyDefinitions,
+      int itemsPerPage);
+
+  List<Container<ObjectType>> getTypeDescendants(ObjectType t, int depth, boolean includePropertyDefinitions);
+
+  // navigation
+
+  /**
+   * Get the root folder for the repository.
+   */
+  Folder getRootFolder();
+
+  /**
+   * Navigation service <code>getCheckedOutDocs</code>.
+   * 
+   * @param folder
+   * @param orderby
+   * @return @
+   */
+  PagingList<Document> getCheckedOutDocs(Folder folder, String orderby, int itemsPerPage);
+
+  /**
+   * Object service <code>getObject</code>.
+   * 
+   * @param objectid
+   * @return @
+   */
+  CmisObject getObject(String objectid);
+
+  /**
+   * Object service <code>getObjectByPath</code>.
+   * 
+   * @param path
+   * @return @
+   */
+  CmisObject getObjectByPath(String path);
+
+  // discovery
+
+  /**
+   * Discovery service <code>query</code>.
+   */
+  PagingList<CmisObject> query(String statement, boolean searchAllVersions, int itemsPerPage);
+
+  /**
+   * Discovery service <code>getContentChanges</code>.
+   * 
+   * @return
+   */
+  PagingList<ChangeEvent> getContentChanges(String changeLogToken, int itemsPerPage);
 
 }

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/DocumentType.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/DocumentType.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/DocumentType.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/DocumentType.java Mon Mar  1 09:06:06 2010
@@ -33,7 +33,7 @@
    * @return {@code true} if this document type is versionable, {@code false} if documents of this
    *         type cannot be versioned.
    */
-  boolean isVersionable();
+  Boolean isVersionable();
 
   /**
    * Get the enum that describes, how content streams have to be handled with this document type.

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/ObjectType.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/ObjectType.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/ObjectType.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/ObjectType.java Mon Mar  1 09:06:06 2010
@@ -21,6 +21,8 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.opencmis.client.api.util.Container;
+import org.apache.opencmis.client.api.util.PagingList;
 import org.apache.opencmis.commons.api.PropertyDefinition;
 import org.apache.opencmis.commons.enums.BaseObjectTypeIds;
 import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
@@ -89,9 +91,9 @@
   ObjectType getBaseType(); // null if isBase == true
 
   /**
-   * Get the type's base type id. 
+   * Get the type's base type id.
    * 
-   * @return 
+   * @return
    */
   BaseObjectTypeIds getBaseTypeId();
 
@@ -116,49 +118,49 @@
    * 
    * @return {@code true} if objects for this type can be created.
    */
-  boolean isCreatable();
+  Boolean isCreatable();
 
   /**
    * Indicates that objects of this type can be filed/unfiled.
    * 
    * @return {@code true} if objects for this type can be used for filing operations.
    */
-  boolean isFileable();
+  Boolean isFileable();
 
   /**
    * Indicates that objects of this type can be queried.
    * 
    * @return {@code true} if objects for this type can be used for query operations.
    */
-  boolean isQueryable();
+  Boolean isQueryable();
 
   /**
    * Indicates that objects of this type can be controlled by policies.
    * 
    * @return {@code true} if objects for this type can be used for policy operations.
    */
-  boolean isControllablePolicy();
+  Boolean isControllablePolicy();
 
   /**
    * Indicates that objects of this type can be controlled by ACLs.
    * 
    * @return {@code true} if objects for this type can be used for ACL operations.
    */
-  boolean isControllableAcl();
+  Boolean isControllableAcl();
 
   /**
    * Indicates that objects of this type are indexed in the full text index.
    * 
    * @return {@code true} if objects for this type can be searched via full text searches.
    */
-  boolean isFulltextIndexed();
+  Boolean isFulltextIndexed();
 
   /**
    * Indicates that objects of this type can be queried via its super type.
    * 
    * @return {@code true} if objects for this type are included in queries for their super type.
    */
-  boolean isIncludedInSupertypeQuery();
+  Boolean isIncludedInSupertypeQuery();
 
   /**
    * Get the {@code Map} of {@code PropertyDefinition}s, indexed by the property definition's ids.
@@ -171,18 +173,20 @@
    * Get the list of types directly derived from this type (which will return this type on {@code
    * getParent()}).
    * 
+   * @param itemsPerPage
+   *          types per page
    * @return a {@code List} of types which are directly derived from this type. @
    */
-  List<ObjectType> getChildren();
+  PagingList<ObjectType> getChildren(int itemsPerPage);
 
   /**
    * Get the list of all types somehow derived from this type.
    * 
    * @param depth
    *          the depth to which the derived types should be resolved.
-   * @return a {@code List} of types which are derived from this type (direct and via their
+   * @return a {@code Tree} of types which are derived from this type (direct and via their
    *         parents). @
    */
-  List<ObjectType> getDescendants(int depth);
+  List<Container<ObjectType>> getDescendants(int depth);
 
 }

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java Mon Mar  1 09:06:06 2010
@@ -20,10 +20,12 @@
 
 import java.io.InputStream;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.opencmis.client.api.Ace;
 import org.apache.opencmis.client.api.Acl;
 import org.apache.opencmis.client.api.AclPermission;
+import org.apache.opencmis.client.api.AllowableActions;
 import org.apache.opencmis.client.api.ContentStream;
 import org.apache.opencmis.client.api.Document;
 import org.apache.opencmis.client.api.Folder;
@@ -41,9 +43,11 @@
 
 	// object factory
 
-	Ace createAce(String principal, List<AclPermission> permissions);
+  AllowableActions createAllowableAction(Map<String, Boolean> actions);
+  
+	Ace createAce(String principal, List<String> permissions, boolean isDirect);
 
-	Acl createAcl(List<Ace> aces);
+	Acl createAcl(List<Ace> aces, Boolean isExact);
 
 	ContentStream createContentStream(int length, String mimetype,
 			String filename, InputStream stream);

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/PropertyFactory.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/PropertyFactory.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/PropertyFactory.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/PropertyFactory.java Mon Mar  1 09:06:06 2010
@@ -21,8 +21,7 @@
 import java.util.List;
 
 import org.apache.opencmis.client.api.Property;
-import org.apache.opencmis.commons.enums.CmisProperties;
-import org.apache.opencmis.commons.enums.PropertyType;
+import org.apache.opencmis.commons.api.PropertyDefinition;
 
 /**
  * A factory to create properties.
@@ -33,10 +32,7 @@
 
   // property factory
 
-  <T> Property<T> createProperty(String id, PropertyType type, T value);
-
-  <T> Property<T> createPropertyMultivalue(String id, PropertyType type, List<T> value);
-
-  <T> Property<T> createCmisProperty(CmisProperties p, T value);
+  <T> Property<T> createProperty(PropertyDefinition<T> type, T value);
 
+  <T> Property<T> createPropertyMultivalue(PropertyDefinition<T> type, List<T> values);
 }

Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/Container.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/Container.java?rev=917425&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/Container.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/Container.java Mon Mar  1 09:06:06 2010
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.opencmis.client.api.util;
+
+import java.util.List;
+
+/**
+ * Basic tree structure.
+ */
+public interface Container<T> {
+
+  /**
+   * Returns the item on this level.
+   */
+  T getItem();
+
+  /**
+   * Returns the children.
+   */
+  List<T> getChildren();
+}

Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/Container.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/PagingList.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/PagingList.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/PagingList.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/PagingList.java Mon Mar  1 09:06:06 2010
@@ -37,7 +37,7 @@
    * 
    * @return total number of items or (-1)
    */
-  int totalItems();
+  int getNumItems();
 
   /**
    * This is the maximum number of items to return in one page. The repository MUST NOT exceed

Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java?rev=917425&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java Mon Mar  1 09:06:06 2010
@@ -0,0 +1,530 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.opencmis.client.runtime;
+
+import java.util.ArrayList;
+import java.util.GregorianCalendar;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.opencmis.client.api.Ace;
+import org.apache.opencmis.client.api.Acl;
+import org.apache.opencmis.client.api.AllowableActions;
+import org.apache.opencmis.client.api.CmisObject;
+import org.apache.opencmis.client.api.Policy;
+import org.apache.opencmis.client.api.Property;
+import org.apache.opencmis.client.api.Relationship;
+import org.apache.opencmis.client.api.objecttype.ObjectType;
+import org.apache.opencmis.commons.PropertyIds;
+import org.apache.opencmis.commons.enums.AclPropagation;
+import org.apache.opencmis.commons.enums.BaseObjectTypeIds;
+import org.apache.opencmis.commons.enums.RelationshipDirection;
+import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
+import org.apache.opencmis.commons.provider.CmisProvider;
+import org.apache.opencmis.commons.provider.Holder;
+import org.apache.opencmis.commons.provider.ObjectData;
+
+/**
+ * Base class for all persistent session object impl classes.
+ */
+public abstract class AbstractPersistentCmisObject implements CmisObject {
+
+  private PersistentSessionImpl session;
+  private ObjectType objectType;
+  private Map<String, Property<?>> properties;
+  private AllowableActions allowableActions;
+  private Acl acl;
+  private List<Policy> policies;
+  private boolean isChanged = false;
+
+  /**
+   * Initializes the object.
+   */
+  protected void initialize(PersistentSessionImpl session, ObjectType objectType,
+      ObjectData objectData) {
+    if (session == null) {
+      throw new IllegalArgumentException("Session must be set!");
+    }
+
+    if (objectType == null) {
+      throw new IllegalArgumentException("Object type must be set!");
+    }
+
+    this.session = session;
+    this.objectType = objectType;
+
+    if (objectData != null) {
+      // handle properties
+      if (objectData.getProperties() != null) {
+        this.properties = SessionUtil.convertProperties(session, objectType, objectData
+            .getProperties());
+      }
+
+      // handle allowable actions
+      if (objectData.getAllowableActions() != null) {
+        this.allowableActions = SessionUtil.convertAllowableActions(getSession(), objectData
+            .getAllowableActions());
+      }
+
+      // handle ACL
+      if (objectData.getAcl() != null) {
+        acl = SessionUtil.convertAcl(getSession(), objectData.getAcl());
+      }
+
+      // handle policies
+      if ((objectData.getPolicyIds() != null) && (objectData.getPolicyIds().getPolicyIds() != null)) {
+        policies = new ArrayList<Policy>();
+        for (String pid : objectData.getPolicyIds().getPolicyIds()) {
+          CmisObject policy = session.getObject(pid);
+          if (policy instanceof Policy) {
+            policies.add((Policy) policy);
+          }
+        }
+      }
+    }
+  }
+
+  /**
+   * Returns the session object.
+   */
+  protected PersistentSessionImpl getSession() {
+    return this.session;
+  }
+
+  /**
+   * Returns the repository id.
+   */
+  protected String getRepositoryId() {
+    return getSession().getRepositoryId();
+  }
+
+  /**
+   * Returns the object type.
+   */
+  protected ObjectType getObjectType() {
+    return this.objectType;
+  }
+
+  /**
+   * Returns the provider object.
+   */
+  protected CmisProvider getProvider() {
+    return getSession().getProvider();
+  }
+
+  /**
+   * Returns the id of this object or throws an exception if the id is unknown.
+   */
+  protected String getObjectId() {
+    String objectId = getId();
+    if (objectId == null) {
+      throw new IllegalStateException("Object Id is unknown");
+    }
+
+    return objectId;
+  }
+
+  // --- operations ---
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#delete(boolean)
+   */
+  public void delete(boolean allVersions) {
+    String objectId = getObjectId();
+    getProvider().getObjectService().deleteObject(getRepositoryId(), objectId, allVersions, null);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#updateProperties()
+   */
+  public void updateProperties() {
+    String objectId = getObjectId();
+    Holder<String> objectIdHolder = new Holder<String>(objectId);
+
+    String changeToken = getChangeToken();
+    Holder<String> changeTokenHolder = new Holder<String>(changeToken);
+
+    getProvider().getObjectService().updateProperties(getRepositoryId(), objectIdHolder,
+        changeTokenHolder, SessionUtil.convertProperties(getSession(), properties.values()), null);
+  }
+
+  // --- properties ---
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getBaseType()
+   */
+  public ObjectType getBaseType() {
+    BaseObjectTypeIds baseTypeId = getBaseTypeId();
+    if (baseTypeId == null) {
+      return null;
+    }
+
+    return getSession().getTypeDefinition(baseTypeId.value());
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getBaseTypeId()
+   */
+  public BaseObjectTypeIds getBaseTypeId() {
+    return getPropertyValue(PropertyIds.CMIS_BASE_TYPE_ID);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getChangeToken()
+   */
+  public String getChangeToken() {
+    return getPropertyValue(PropertyIds.CMIS_CHANGE_TOKEN);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getCreatedBy()
+   */
+  public String getCreatedBy() {
+    return getPropertyValue(PropertyIds.CMIS_CREATED_BY);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getCreationDate()
+   */
+  public GregorianCalendar getCreationDate() {
+    return getPropertyValue(PropertyIds.CMIS_CREATION_DATE);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getId()
+   */
+  public String getId() {
+    return getPropertyValue(PropertyIds.CMIS_OBJECT_ID);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getLastModificationDate()
+   */
+  public GregorianCalendar getLastModificationDate() {
+    return getPropertyValue(PropertyIds.CMIS_LAST_MODIFICATION_DATE);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getLastModifiedBy()
+   */
+  public String getLastModifiedBy() {
+    return getPropertyValue(PropertyIds.CMIS_LAST_MODIFIED_BY);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getName()
+   */
+  public String getName() {
+    return getPropertyValue(PropertyIds.CMIS_NAME);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getProperties()
+   */
+  public List<Property<?>> getProperties() {
+    return new ArrayList<Property<?>>(properties.values());
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getProperty(java.lang.String)
+   */
+  @SuppressWarnings("unchecked")
+  public <T> Property<T> getProperty(String id) {
+    return (Property<T>) properties.get(id);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getPropertyMultivalue(java.lang.String)
+   */
+  public <T> List<T> getPropertyMultivalue(String id) {
+    Property<T> property = getProperty(id);
+    if (property == null) {
+      return null;
+    }
+
+    return property.getValues();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getPropertyValue(java.lang.String)
+   */
+  public <T> T getPropertyValue(String id) {
+    Property<T> property = getProperty(id);
+    if (property == null) {
+      return null;
+    }
+
+    return property.getValue();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#setName(java.lang.String)
+   */
+  public void setName(String name) {
+    setProperty(PropertyIds.CMIS_NAME, name);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#setProperty(java.lang.String, java.lang.Object)
+   */
+  public <T> void setProperty(String id, T value) {
+    // TODO Auto-generated method stub
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#setPropertyMultivalue(java.lang.String,
+   * java.util.List)
+   */
+  public <T> void setPropertyMultivalue(String id, List<T> value) {
+    // TODO Auto-generated method stub
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see
+   * org.apache.opencmis.client.api.CmisObject#setType(org.apache.opencmis.client.api.objecttype
+   * .ObjectType)
+   */
+  public void setType(ObjectType type) {
+    // TODO Auto-generated method stub
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#setTypeId(java.lang.String)
+   */
+  public void setTypeId(String typeId) {
+    // TODO Auto-generated method stub
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getType()
+   */
+  public ObjectType getType() {
+    return this.objectType;
+  }
+
+  // --- allowable actions ---
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getAllowableActions()
+   */
+  public AllowableActions getAllowableActions() {
+    return this.allowableActions;
+  }
+
+  // --- ACL ---
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getAcl(boolean)
+   */
+  public Acl getAcl(boolean onlyBasicPermissions) {
+    String objectId = getObjectId();
+    return SessionUtil.convertAcl(getSession(), getProvider().getAclService().getAcl(
+        getRepositoryId(), objectId, onlyBasicPermissions, null));
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#applyAcl(java.util.List, java.util.List,
+   * org.apache.opencmis.commons.enums.AclPropagation)
+   */
+  public Acl applyAcl(List<Ace> addAces, List<Ace> removeAces, AclPropagation aclPropagation) {
+    String objectId = getObjectId();
+    return SessionUtil.convertAcl(getSession(), getProvider().getAclService().applyAcl(
+        getRepositoryId(), objectId, SessionUtil.convertAces(getSession(), addAces),
+        SessionUtil.convertAces(getSession(), removeAces), aclPropagation, null));
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#addAcl(java.util.List,
+   * org.apache.opencmis.commons.enums.AclPropagation)
+   */
+  public void addAcl(List<Ace> addAces, AclPropagation aclPropagation) {
+    applyAcl(addAces, null, aclPropagation);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#removeAcl(java.util.List,
+   * org.apache.opencmis.commons.enums.AclPropagation)
+   */
+  public void removeAcl(List<Ace> removeAces, AclPropagation aclPropagation) {
+    applyAcl(null, removeAces, aclPropagation);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getAcl()
+   */
+  public Acl getAcl() {
+    return this.acl;
+  }
+
+  // --- policies ---
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see
+   * org.apache.opencmis.client.api.CmisObject#applyPolicy(org.apache.opencmis.client.api.Policy)
+   */
+  public void applyPolicy(Policy policy) {
+    if (policy == null) {
+      throw new IllegalArgumentException("Policy is not set!");
+    }
+
+    applyPolicy(policy.getId());
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#applyPolicy(java.lang.String)
+   */
+  public void applyPolicy(String policyId) {
+    if (policyId == null) {
+      throw new IllegalArgumentException("Policy id is not set!");
+    }
+
+    String objectId = getObjectId();
+    getProvider().getPolicyService().applyPolicy(getRepositoryId(), policyId, objectId, null);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see
+   * org.apache.opencmis.client.api.CmisObject#removePolicy(org.apache.opencmis.client.api.Policy)
+   */
+  public void removePolicy(Policy policy) {
+    if (policy == null) {
+      throw new IllegalArgumentException("Policy is not set!");
+    }
+
+    removePolicy(policy.getId());
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#removePolicy(java.lang.String)
+   */
+  public void removePolicy(String policyId) {
+    if (policyId == null) {
+      throw new IllegalArgumentException("Policy id is not set!");
+    }
+
+    String objectId = getObjectId();
+    getProvider().getPolicyService().removePolicy(getRepositoryId(), policyId, objectId, null);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#getPolicies()
+   */
+  public List<Policy> getPolicies() {
+    return policies;
+  }
+
+  // --- relationships ---
+
+  public List<Relationship> getRelationships() {
+    // TODO Auto-generated method stub
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public List<Relationship> getRelationships(boolean includeSubRelationshipTypes,
+      RelationshipDirection relationshipDirection, ObjectType type) {
+    // TODO Auto-generated method stub
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  // --- other ---
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#isChanged()
+   */
+  public boolean isChanged() {
+    return isChanged;
+  }
+
+  /**
+   * Sets the isChanged flag to <code>true</code>
+   */
+  protected void setChanged() {
+    isChanged = true;
+  }
+}

Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentFilableCmisObject.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentFilableCmisObject.java?rev=917425&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentFilableCmisObject.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentFilableCmisObject.java Mon Mar  1 09:06:06 2010
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.opencmis.client.runtime;
+
+import java.util.List;
+
+import org.apache.opencmis.client.api.CmisObject;
+import org.apache.opencmis.client.api.FileableCmisObject;
+import org.apache.opencmis.client.api.Folder;
+import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
+import org.apache.opencmis.commons.provider.Holder;
+
+public abstract class AbstractPersistentFilableCmisObject extends AbstractPersistentCmisObject
+    implements FileableCmisObject {
+
+  public List<Folder> getParents() {
+    // TODO Auto-generated method stub
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public List<String> getPaths() {
+    // TODO Auto-generated method stub
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see
+   * org.apache.opencmis.client.api.FileableCmisObject#move(org.apache.opencmis.client.api.Folder,
+   * org.apache.opencmis.client.api.Folder)
+   */
+  public FileableCmisObject move(Folder sourceFolder, Folder targetFolder) {
+    if (sourceFolder == null) {
+      throw new IllegalArgumentException("Source folder must be set!");
+    }
+
+    if (targetFolder == null) {
+      throw new IllegalArgumentException("Target folder must be set!");
+    }
+
+    return move(sourceFolder.getId(), targetFolder.getId());
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.FileableCmisObject#move(java.lang.String, java.lang.String)
+   */
+  public FileableCmisObject move(String sourceFolderId, String targetFolderId) {
+    String objectId = getObjectId();
+    Holder<String> objectIdHolder = new Holder<String>(objectId);
+
+    if (sourceFolderId == null) {
+      throw new IllegalArgumentException("Source folder id must be set!");
+    }
+
+    if (targetFolderId == null) {
+      throw new IllegalArgumentException("Target folder id must be set!");
+    }
+
+    getProvider().getObjectService().moveObject(getRepositoryId(), objectIdHolder, targetFolderId,
+        sourceFolderId, null);
+
+    if (objectIdHolder.getValue() == null) {
+      return null;
+    }
+
+    CmisObject movedObject = getSession().getObject(objectIdHolder.getValue());
+    if (movedObject instanceof FileableCmisObject) {
+      return (FileableCmisObject) movedObject;
+    }
+
+    return null;
+  }
+
+  public void addToFolder(Folder folder, boolean allVersions) {
+    // TODO Auto-generated method stub
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public void removeFromFolder(Folder folder) {
+    // TODO Auto-generated method stub
+    throw new CmisRuntimeException("not implemented");
+  }
+}

Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentFilableCmisObject.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AceImpl.java?rev=917425&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AceImpl.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AceImpl.java Mon Mar  1 09:06:06 2010
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.opencmis.client.runtime;
+
+import java.util.List;
+
+import org.apache.opencmis.client.api.Ace;
+
+/**
+ * ACE implementation.
+ */
+public class AceImpl implements Ace {
+
+  private String principalId;
+  private List<String> permissions;
+  private boolean isDirect;
+
+  public AceImpl(String principalId, List<String> permissions, boolean isDirect) {
+    this.principalId = principalId;
+    this.permissions = permissions;
+    this.isDirect = isDirect;
+  }
+
+  public String getPrincipalId() {
+    return this.principalId;
+  }
+
+  public List<String> getPermissions() {
+    return this.permissions;
+  }
+
+  public boolean isDirect() {
+    return this.isDirect;
+  }
+}

Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AceImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AclImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AclImpl.java?rev=917425&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AclImpl.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AclImpl.java Mon Mar  1 09:06:06 2010
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.opencmis.client.runtime;
+
+import java.util.List;
+
+import org.apache.opencmis.client.api.Ace;
+import org.apache.opencmis.client.api.Acl;
+
+/**
+ * ACL implementation
+ */
+public class AclImpl implements Acl {
+
+  private List<Ace> aces;
+  private boolean isExact;
+
+  public AclImpl(List<Ace> aces, boolean isExact) {
+    this.aces = aces;
+    this.isExact = isExact;
+  }
+
+  public List<Ace> getAces() {
+    return this.aces;
+  }
+
+  public boolean isExact() {
+    return this.isExact;
+  }
+
+}

Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AclImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AllowableActionsImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AllowableActionsImpl.java?rev=917425&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AllowableActionsImpl.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AllowableActionsImpl.java Mon Mar  1 09:06:06 2010
@@ -0,0 +1,156 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.opencmis.client.runtime;
+
+import java.util.Map;
+
+import org.apache.opencmis.client.api.AllowableActions;
+import org.apache.opencmis.commons.provider.AllowableActionsData;
+
+/**
+ * Allowable actions implementation.
+ */
+public class AllowableActionsImpl implements AllowableActions {
+
+  private Map<String, Boolean> actions;
+
+  public AllowableActionsImpl(Map<String, Boolean> actions) {
+    if (actions == null) {
+      throw new IllegalArgumentException("Allowable actions map must be set!");
+    }
+
+    this.actions = actions;
+  }
+
+  public Boolean canAddObjectToFolder() {
+    return actions.get(AllowableActionsData.ACTION_CAN_ADD_OBJECT_TO_FOLDER);
+  }
+
+  public Boolean canApplyAcl() {
+    return actions.get(AllowableActionsData.ACTION_CAN_APPLY_ACL);
+  }
+
+  public Boolean canApplyPolicy() {
+    return actions.get(AllowableActionsData.ACTION_CAN_APPLY_POLICY);
+  }
+
+  public Boolean canCancelCheckOut() {
+    return actions.get(AllowableActionsData.ACTION_CAN_CANCEL_CHECK_OUT);
+  }
+
+  public Boolean canCheckIn() {
+    return actions.get(AllowableActionsData.ACTION_CAN_CHECK_IN);
+  }
+
+  public Boolean canCheckOut() {
+    return actions.get(AllowableActionsData.ACTION_CAN_CHECK_OUT);
+  }
+
+  public Boolean canCreateDocument() {
+    return actions.get(AllowableActionsData.ACTION_CAN_CREATE_DOCUMENT);
+  }
+
+  public Boolean canCreateFolder() {
+    return actions.get(AllowableActionsData.ACTION_CAN_CREATE_FOLDER);
+  }
+
+  public Boolean canCreatePolicy() {
+    return actions.get(AllowableActionsData.ACTION_CAN_CREATE_POLICY);
+  }
+
+  public Boolean canCreateRelationship() {
+    return actions.get(AllowableActionsData.ACTION_CAN_CREATE_RELATIONSHIP);
+  }
+
+  public Boolean canDeleteContentStream() {
+    return actions.get(AllowableActionsData.ACTION_CAN_DELETE_CONTENT_STREAM);
+  }
+
+  public Boolean canDeleteObject() {
+    return actions.get(AllowableActionsData.ACTION_CAN_DELETE_OBJECT);
+  }
+
+  public Boolean canDeleteTree() {
+    return actions.get(AllowableActionsData.ACTION_CAN_DELETE_TREE);
+  }
+
+  public Boolean canGetAcl() {
+    return actions.get(AllowableActionsData.ACTION_CAN_GET_ACL);
+  }
+
+  public Boolean canGetAllVersions() {
+    return actions.get(AllowableActionsData.ACTION_CAN_GET_ALL_VERSIONS);
+  }
+
+  public Boolean canGetAppliedPolicies() {
+    return actions.get(AllowableActionsData.ACTION_CAN_GET_APPLIED_POLICIES);
+  }
+
+  public Boolean canGetChildren() {
+    return actions.get(AllowableActionsData.ACTION_CAN_GET_CHILDREN);
+  }
+
+  public Boolean canGetContentStream() {
+    return actions.get(AllowableActionsData.ACTION_CAN_GET_CONTENT_STREAM);
+  }
+
+  public Boolean canGetDescendants() {
+    return actions.get(AllowableActionsData.ACTION_CAN_GET_CONTENT_STREAM);
+  }
+
+  public Boolean canGetFolderParent() {
+    return actions.get(AllowableActionsData.ACTION_CAN_GET_FOLDER_PARENT);
+  }
+
+  public Boolean canGetObjectParents() {
+    return actions.get(AllowableActionsData.ACTION_CAN_GET_OBJECT_PARENTS);
+  }
+
+  public Boolean canGetObjectRelationships() {
+    return actions.get(AllowableActionsData.ACTION_CAN_GET_OBJECT_RELATIONSHIPS);
+  }
+
+  public Boolean canGetProperties() {
+    return actions.get(AllowableActionsData.ACTION_CAN_GET_PROPERTIES);
+  }
+
+  public Boolean canGetRenditions() {
+    return actions.get(AllowableActionsData.ACTION_CAN_GET_RENDITIONS);
+  }
+
+  public Boolean canMoveObject() {
+    return actions.get(AllowableActionsData.ACTION_CAN_MOVE_OBJECT);
+  }
+
+  public Boolean canRemoveObjectFromFolder() {
+    return actions.get(AllowableActionsData.ACTION_CAN_REMOVE_OBJECT_FROM_FOLDER);
+  }
+
+  public Boolean canRemovePolicy() {
+    return actions.get(AllowableActionsData.ACTION_CAN_REMOVE_POLICY);
+  }
+
+  public Boolean canSetContentStream() {
+    return actions.get(AllowableActionsData.ACTION_CAN_SET_CONTENT_STREAM);
+  }
+
+  public Boolean canUpdateProperties() {
+    return actions.get(AllowableActionsData.ACTION_CAN_UPDATE_PROPERTIES);
+  }
+}

Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AllowableActionsImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java Mon Mar  1 09:06:06 2010
@@ -18,358 +18,121 @@
  */
 package org.apache.opencmis.client.runtime;
 
-import java.util.GregorianCalendar;
 import java.util.List;
 
 import org.apache.opencmis.client.api.Ace;
-import org.apache.opencmis.client.api.CmisObject;
 import org.apache.opencmis.client.api.ContentStream;
 import org.apache.opencmis.client.api.Document;
-import org.apache.opencmis.client.api.Folder;
 import org.apache.opencmis.client.api.Policy;
 import org.apache.opencmis.client.api.Property;
-import org.apache.opencmis.client.api.Relationship;
 import org.apache.opencmis.client.api.Rendition;
 import org.apache.opencmis.client.api.objecttype.ObjectType;
-import org.apache.opencmis.client.api.repository.AllowableActions;
-import org.apache.opencmis.client.api.util.AceList;
-import org.apache.opencmis.commons.enums.AclPropagation;
-import org.apache.opencmis.commons.enums.BaseObjectTypeIds;
-import org.apache.opencmis.commons.enums.RelationshipDirection;
 import org.apache.opencmis.commons.enums.VersioningState;
 import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
 import org.apache.opencmis.commons.provider.ObjectData;
 
-public class PersistentDocumentImpl implements Document {
-
-	public PersistentDocumentImpl(PersistentSessionImpl persistentSessionImpl,
-			ObjectData od) {
-		throw new CmisRuntimeException("not implemented");
-	}
-
-	public void cancelCheckOut() {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public void checkIn(boolean major, List<Property<?>> properties,
-			ContentStream contentStream, String checkinComment,
-			List<Policy> policies, List<Ace> addACEs, List<Ace> removeACEs) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public boolean checkOut() {
-		throw new CmisRuntimeException("not implemented");
-	}
-
-	public Document copy(List<Property<?>> properties,
-			VersioningState versioningState, List<Policy> policies,
-			List<Ace> addACEs, List<Ace> removeACEs) {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public void deleteAllVersions() {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public void deleteContentStream() {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public List<Document> getAllVersions() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public String getCheckinComment() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public ContentStream getContentStream() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public Document getObjectOfLatestVersion(boolean major) {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public List<String> getPaths() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public List<Property<?>> getPropertiesOfLatestVersion(boolean major) {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public List<Property<?>> getPropertiesOfLatestVersion(boolean major,
-			String filter) {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public List<Rendition> getRenditions() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public String getVersionLabel() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public String getVersionSeries() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public String getVersionSeriesCheckedOut() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public String getVersionSeriesCheckedOutBy() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public boolean isImmutable() {
-		throw new CmisRuntimeException("not implemented");
-	}
-
-	public boolean isLatestMajorVersion() {
-		throw new CmisRuntimeException("not implemented");
-	}
-
-	public boolean isLatestVersion() {
-		throw new CmisRuntimeException("not implemented");
-	}
-
-	public boolean isMajorVersion() {
-		throw new CmisRuntimeException("not implemented");
-	}
-
-	public boolean isVersionSeriesCheckedOut() {
-		throw new CmisRuntimeException("not implemented");
-	}
-
-	public void setContentStream(boolean overwrite, ContentStream contentStream) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public void addAcl(List<Ace> addAces, AclPropagation aclPropagation) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public void addToFolder(Folder folder, boolean allVersions) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public AceList applyAcl(List<Ace> addAces, List<Ace> removeAces,
-			AclPropagation aclPropagation) {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public void applyPolicy(Policy policy) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public void applyPolicy(String policyId) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public void delete(boolean allVersions) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public List<Ace> getAcl() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public AceList getAcl(boolean onlyBasicPermissions) {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public AllowableActions getAllowableActions() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public ObjectType getBaseType() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public BaseObjectTypeIds getBaseTypeId() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public String getChangeToken() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public String getCreatedBy() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public GregorianCalendar getCreationDate() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public String getId() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public GregorianCalendar getLastModificationDate() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public String getLastModifiedBy() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public String getName() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public List<Folder> getParents() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public List<Policy> getPolicies() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public List<Property<?>> getProperties() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public List<Property<?>> getProperties(String filter) {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public <T> Property<T> getProperty(String id) {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public <T> List<T> getPropertyMultivalue(String id) {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public <T> T getPropertyValue(String id) {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public List<Relationship> getRelationships() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public List<Relationship> getRelationships(
-			boolean includeSubRelationshipTypes,
-			RelationshipDirection relationshipDirection, ObjectType type) {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public ObjectType getType() {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public boolean isChanged() {
-		throw new CmisRuntimeException("not implemented");
-	}
-
-	public boolean isExactAcl() {
-		throw new CmisRuntimeException("not implemented");
-	}
-
-	public CmisObject move(Folder targetfolder) {
-		throw new CmisRuntimeException("not implemented");
-		
-	}
-
-	public void removeAcl(List<Ace> addAces, AclPropagation aclPropagation) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public void removeFromFolder(Folder folder) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public void removePolicy(Policy policy) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public void removePolicy(String policyId) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public void setName(String name) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public <T> void setProperty(String id, T value) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public <T> void setPropertyMultivalue(String id, List<T> value) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public void setType(ObjectType type) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public void setTypeId(String typeId) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
-
-	public void updateProperties(List<Property<?>> properties) {
-		throw new CmisRuntimeException("not implemented");
-
-	}
+public class PersistentDocumentImpl extends AbstractPersistentFilableCmisObject implements Document {
 
+  /**
+   * Constructor.
+   */
+  public PersistentDocumentImpl(PersistentSessionImpl session, ObjectType objectType,
+      ObjectData objectData) {
+    initialize(session, objectType, objectData);
+  }
+
+  public void cancelCheckOut() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public void checkIn(boolean major, List<Property<?>> properties, ContentStream contentStream,
+      String checkinComment, List<Policy> policies, List<Ace> addACEs, List<Ace> removeACEs) {
+    throw new CmisRuntimeException("not implemented");
+
+  }
+
+  public boolean checkOut() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public Document copy(List<Property<?>> properties, VersioningState versioningState,
+      List<Policy> policies, List<Ace> addACEs, List<Ace> removeACEs) {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public void deleteAllVersions() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public void deleteContentStream() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public List<Document> getAllVersions() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public String getCheckinComment() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public ContentStream getContentStream() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public Document getObjectOfLatestVersion(boolean major) {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public List<Property<?>> getPropertiesOfLatestVersion(boolean major) {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public List<Property<?>> getPropertiesOfLatestVersion(boolean major, String filter) {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public List<Rendition> getRenditions() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public String getVersionLabel() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public String getVersionSeries() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public String getVersionSeriesCheckedOut() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public String getVersionSeriesCheckedOutBy() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public boolean isImmutable() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public boolean isLatestMajorVersion() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public boolean isLatestVersion() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public boolean isMajorVersion() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public boolean isVersionSeriesCheckedOut() {
+    throw new CmisRuntimeException("not implemented");
+  }
+
+  public void setContentStream(boolean overwrite, ContentStream contentStream) {
+    throw new CmisRuntimeException("not implemented");
+  }
 }



Mime
View raw message