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

svn commit: r1740350 [5/6] - in /chemistry/portcmis/trunk: PortCMIS/ PortCMIS/binding/ PortCMIS/binding/atompub/ PortCMIS/binding/browser/ PortCMIS/binding/browser/json/ PortCMIS/client/ PortCMIS/const/ PortCMIS/data/ PortCMIS/enum/ PortCMIS/exceptions...

Modified: chemistry/portcmis/trunk/PortCMIS/client/ClientIntf.cs
URL: http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/client/ClientIntf.cs?rev=1740350&r1=1740349&r2=1740350&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/client/ClientIntf.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/client/ClientIntf.cs Thu Apr 21 16:29:04 2016
@@ -128,14 +128,14 @@ namespace PortCMIS.Client
         /// </summary>
         void Clear();
 
-        /// <summary>
+        /// <value>
         /// Gets the CMIS binding object.
-        /// </summary>
+        /// </value>
         ICmisBinding Binding { get; }
 
-        /// <summary>
+        /// <value>
         /// Gets the default operation context.
-        /// </summary>
+        /// </value>
         IOperationContext DefaultContext { get; set; }
 
         /// <summary>
@@ -155,53 +155,151 @@ namespace PortCMIS.Client
         /// </summary>
         IObjectId CreateObjectId(string id);
 
-        /// <summary>
-        /// Gets the CMIS repositoy info.
-        /// </summary>
+        /// <value>
+        /// Gets the CMIS repository info.
+        /// </value>
+        /// <cmis>1.0</cmis>
         IRepositoryInfo RepositoryInfo { get; }
 
-        /// <summary>
+        /// <value>
         /// Gets the internal object factory. 
-        /// </summary>
+        /// </value>
         IObjectFactory ObjectFactory { get; }
 
         // types
 
+        /// <summary>
+        /// Gets the definition of a type.
+        /// </summary>
+        /// <param name="typeId">the ID of the type</param>
+        /// <returns>the type definition</returns>
+        /// <cmis>1.0</cmis>
         IObjectType GetTypeDefinition(string typeId);
+
+        /// <summary>
+        /// Gets the type children of a type.
+        /// </summary>
+        /// <param name="typeId">the type ID or <c>null</c> to request the base types</param>
+        /// <param name="includePropertyDefinitions">indicates whether the property definitions should be included or not</param>
+        /// <returns>the type iterator, not <c>null</c></returns>
+        /// <cmis>1.0</cmis>
         IItemEnumerable<IObjectType> GetTypeChildren(string typeId, bool includePropertyDefinitions);
+
+        /// <summary>
+        /// Gets the type descendants of a type.
+        /// </summary>
+        /// <param name="typeId">the type ID or <c>null</c> to request the base types</param>
+        /// <param name="depth">the tree depth, must be greater than 0 or -1 for infinite depth</param>
+        /// <param name="includePropertyDefinitions">indicates whether the property definitions should be included or not</param>
+        /// <returns>the tree of types</returns>
         IList<ITree<IObjectType>> GetTypeDescendants(string typeId, int depth, bool includePropertyDefinitions);
 
         // navigation
 
+        /// <summary>
+        /// Gets the root folder of the repository.
+        /// </summary>
+        /// <returns>the root folder object, not <c>null</c></returns>
+        /// <cmis>1.0</cmis>
         IFolder GetRootFolder();
+
+        /// <summary>
+        /// Gets the root folder of the repository with the given <see cref="PortCMIS.Client.IOperationContext"/>.
+        /// </summary>
+        /// <param name="context">the operation context</param>
+        /// <returns>the root folder object, not <c>null</c></returns>
+        /// <cmis>1.0</cmis>
         IFolder GetRootFolder(IOperationContext context);
+
+        /// <summary>
+        /// Returns all checked out documents.
+        /// </summary>
+        /// <returns></returns>
+        /// <cmis>1.0</cmis>
         IItemEnumerable<IDocument> GetCheckedOutDocs();
+
+        /// <summary>
+        /// Returns all checked out documents with the given operation context.
+        /// </summary>
+        /// <returns></returns>
+        /// <cmis>1.0</cmis>
         IItemEnumerable<IDocument> GetCheckedOutDocs(IOperationContext context);
 
         /// <summary>
         /// Gets a CMIS object from the session cache. If the object is not in the cache or the cache is 
-        /// turned off per default <see cref="PortCMIS.Client.IOperationContext"/>, it will load the object 
-        /// from the repository and puts it into the cache.
+        /// turned off per default operation context, it will load the object from the repository and puts
+        /// it into the cache.
+        /// <para>
+        /// This method might return a stale object if the object has been found in the cache and has
+        /// been changed in or removed from the repository.
+        /// Use <see cref="PortCMIS.Client.ICmisObject.Refresh()"/> and <see cref="PortCMIS.Client.ICmisObject.RefreshIfOld(long)"/>
+        /// to update the object if necessary.
+        /// </para>
         /// </summary>
         /// <param name="objectId">the object ID</param>
+        /// <cmis>1.0</cmis>
         ICmisObject GetObject(IObjectId objectId);
-        ICmisObject GetObject(IObjectId objectId, IOperationContext context);
 
         /// <summary>
         /// Gets a CMIS object from the session cache. If the object is not in the cache or the cache is 
-        /// turned off per default <see cref="PortCMIS.Client.IOperationContext"/>, it will load the object 
+        /// turned off or the given operation context has caching turned off, it will load the object 
         /// from the repository and puts it into the cache.
+        /// <para>
+        /// This method might return a stale object if the object has been found in the cache and has
+        /// been changed in or removed from the repository.
+        /// Use <see cref="PortCMIS.Client.ICmisObject.Refresh()"/> and <see cref="PortCMIS.Client.ICmisObject.RefreshIfOld(long)"/>
+        /// to update the object if necessary.
+        /// </para>
         /// </summary>
         /// <param name="objectId">the object ID</param>
+        /// <param name="context">the operation context</param>
+        /// <cmis>1.0</cmis>
+        ICmisObject GetObject(IObjectId objectId, IOperationContext context);
+
+        /// <summary>
+        /// Gets a CMIS object from the session cache. If the object is not in the cache or the cache is 
+        /// turned off per default operation context, it will load the object from the repository and puts
+        /// it into the cache.
+        /// <para>
+        /// This method might return a stale object if the object has been found in the cache and has
+        /// been changed in or removed from the repository.
+        /// Use <see cref="PortCMIS.Client.ICmisObject.Refresh()"/> and <see cref="PortCMIS.Client.ICmisObject.RefreshIfOld(long)"/>
+        /// to update the object if necessary.
+        /// </para>
+        /// </summary>
+        /// <param name="objectId">the object ID</param>
+        /// <cmis>1.0</cmis>
         ICmisObject GetObject(string objectId);
+
+        /// <summary>
+        /// Gets a CMIS object from the session cache. If the object is not in the cache or the cache is 
+        /// turned off or the given operation context has caching turned off, it will load the object 
+        /// from the repository and puts it into the cache.
+        /// <para>
+        /// This method might return a stale object if the object has been found in the cache and has
+        /// been changed in or removed from the repository.
+        /// Use <see cref="PortCMIS.Client.ICmisObject.Refresh()"/> and <see cref="PortCMIS.Client.ICmisObject.RefreshIfOld(long)"/>
+        /// to update the object if necessary.
+        /// </para>
+        /// </summary>
+        /// <param name="objectId">the object ID</param>
+        /// <param name="context">the operation context</param>
+        /// <cmis>1.0</cmis>
         ICmisObject GetObject(string objectId, IOperationContext context);
 
         /// <summary>
         /// Gets a CMIS object from the session cache. If the object is not in the cache or the cache is 
         /// turned off per default <see cref="PortCMIS.Client.IOperationContext"/>, it will load the object
         /// from the repository and puts it into the cache.
+        /// <para>
+        /// This method might return a stale object if the object has been found in the cache and has
+        /// been changed in or removed from the repository.
+        /// Use <see cref="PortCMIS.Client.ICmisObject.Refresh()"/> and <see cref="PortCMIS.Client.ICmisObject.RefreshIfOld(long)"/>
+        /// to update the object if necessary.
+        /// </para>
         /// </summary>
         /// <param name="path">the path to the object</param>
+        /// <cmis>1.0</cmis>
         ICmisObject GetObjectByPath(string path);
         ICmisObject GetObjectByPath(string path, IOperationContext context);
         ICmisObject GetObjectByPath(string parentPath, string name);
@@ -211,6 +309,7 @@ namespace PortCMIS.Client
         /// Gets the latest version in a version series.
         /// </summary>
         /// <param name="objectId">the document ID of an arbitrary version in the version series</param>
+        /// <cmis>1.0</cmis>
         IDocument GetLatestDocumentVersion(string objectId);
         IDocument GetLatestDocumentVersion(string objectId, IOperationContext context);
         IDocument GetLatestDocumentVersion(IObjectId objectId);
@@ -237,6 +336,7 @@ namespace PortCMIS.Client
         /// <param name="statement">the CMIS QL statement</param>
         /// <param name="searchAllVersions">indicates if all versions or only latest version should be searched</param>
         /// <returns>query results</returns>
+        /// <cmis>1.0</cmis>
         IItemEnumerable<IQueryResult> Query(string statement, bool searchAllVersions);
         IItemEnumerable<ICmisObject> QueryObjects(string typeId, string where, bool searchAllVersions, IOperationContext context);
         IQueryStatement CreateQueryStatement(string statement);
@@ -248,6 +348,7 @@ namespace PortCMIS.Client
         /// <param name="searchAllVersions">indicates if all versions or only latest version should be searched</param>
         /// <param name="context">the <see cref="PortCMIS.Client.IOperationContext"/></param>
         /// <returns>query results</returns>
+        /// <cmis>1.0</cmis>
         IItemEnumerable<IQueryResult> Query(string statement, bool searchAllVersions, IOperationContext context);
 
         string GetLatestChangeLogToken();
@@ -280,12 +381,51 @@ namespace PortCMIS.Client
         IItemEnumerable<IRelationship> GetRelationships(IObjectId objectId, bool includeSubRelationshipTypes,
                 RelationshipDirection? relationshipDirection, IObjectType type, IOperationContext context);
 
-        // delete
+        /// <summary>
+        /// Deletes an object and, if it is a document, all versions in the version series.
+        /// </summary>
+        /// <param name="objectId">the ID of the object</param>
+        /// <cmis>1.0</cmis>
         void Delete(IObjectId objectId);
+
+        /// <summary>
+        /// Deletes an object.
+        /// </summary>
+        /// <param name="objectId">the ID of the object</param>
+        /// <param name="allVersions">if this object is a document this parameter defines if only this version or all versions should be deleted</param>
+        /// <cmis>1.0</cmis>
         void Delete(IObjectId objectId, bool allVersions);
 
-        // content stream
+        /// <summary>
+        /// Deletes a folder and all subfolders.
+        /// </summary>
+        /// <param name="folderId"> the ID of the folder</param>
+        /// <param name="allVersions">if this object is a document this parameter defines
+        /// if only this version or all versions should be deleted</param>
+        /// <param name="unfile">defines how objects should be unfiled</param>
+        /// <param name="continueOnFailure">if <c>true</c> the repository tries to delete as many objects as possible;
+        /// if <c>false</c> the repository stops at the first object that could not be deleted</param>
+        /// <returns>a list of object IDs which failed to be deleted</returns>
+        /// <cmis>1.0</cmis>
+        IList<string> DeleteTree(IObjectId folderId, bool allVersions, UnfileObject? unfile, bool continueOnFailure);
+
+        /// <summary>
+        /// Retrieves the main content stream of a document.
+        /// </summary>
+        /// <param name="docId">the ID of the document</param>
+        /// <returns>the content stream or <c>null</c> if the document has no content stream</returns>
+        /// <cmis>1.0</cmis>
         IContentStream GetContentStream(IObjectId docId);
+
+        /// <summary>
+        /// Retrieves the main content stream of a document.
+        /// </summary>
+        /// <param name="docId">the ID of the document</param>
+        /// <param name="streamId">the stream ID</param>
+        /// <param name="offset">the offset of the stream or <c>null</c> to read the stream from the beginning</param>
+        /// <param name="length">the maximum length of the stream or <c>null</c> to read to the end of the stream</param>
+        /// <returns>the content stream or <c>null</c> if the document has no content stream</returns>
+        /// <cmis>1.0</cmis>
         IContentStream GetContentStream(IObjectId docId, string streamId, long? offset, long? length);
 
         // permissions
@@ -335,91 +475,98 @@ namespace PortCMIS.Client
     /// </summary>
     public interface IOperationContext
     {
-        /// <summary>
+        /// <value>
         /// Gets and sets the property filter.
-        /// </summary>
+        /// </value>
         /// <remarks>
         /// This is a set of query names.
         /// </remarks>
         HashSet<string> Filter { get; set; }
 
-        /// <summary>
+        /// <value>
         /// Gets and sets the property filter.
-        /// </summary>
+        /// </value>
         /// <remarks>
         /// This is a comma-separated list of query names.
         /// </remarks>
         string FilterString { get; set; }
 
-        /// <summary>
+        /// <value>
         /// Gets and sets if allowable actions should be retrieved.
-        /// </summary>
+        /// </value>
         bool IncludeAllowableActions { get; set; }
 
-        /// <summary>
-        /// Gets and sets if Acls should be retrieved.
-        /// </summary>
+        /// <value>
+        /// Gets and sets if ACLs should be retrieved.
+        /// </value>
         bool IncludeAcls { get; set; }
 
-        /// <summary>
+        /// <value>
         /// Gets and sets if relationships should be retrieved.
-        /// </summary>
+        /// </value>
         IncludeRelationships? IncludeRelationships { get; set; }
 
-        /// <summary>
+        /// <value>
         /// Gets and sets if policies should be retrieved.
-        /// </summary>
+        /// </value>
         bool IncludePolicies { get; set; }
 
-        /// <summary>
+        /// <value>
         /// Gets and sets the rendition filter.
-        /// </summary>
+        /// </value>
         /// <remarks>
         /// This is a set of rendition kinds or MIME types.
         /// </remarks>
         HashSet<string> RenditionFilter { get; set; }
 
-        /// <summary>
+        /// <value>
         /// Gets and sets the rendition filter.
-        /// </summary>
+        /// </value>
         /// <remarks>
         /// This is a comma-separated list of rendition kinds or MIME types.
         /// </remarks>
         string RenditionFilterString { get; set; }
 
-        /// <summary>
-        /// Gets and sets if path segements should be retrieved.
-        /// </summary>
+        /// <value>
+        /// Gets and sets if path segments should be retrieved.
+        /// </value>
         bool IncludePathSegments { get; set; }
 
-        /// <summary>
+        /// <value>
         /// Gets and sets order by list. 
-        /// </summary>
+        /// </value>
         /// <remarks>
         /// This is a comma-separated list of query names.
         /// </remarks>
         string OrderBy { get; set; }
 
-        /// <summary>
+        /// <value>
         /// Gets and sets if object fetched with this <see cref="PortCMIS.Client.IOperationContext"/>
         /// should be cached or not.
-        /// </summary>
+        /// </value>
         bool CacheEnabled { get; set; }
 
-        /// <summary>
+        /// <value>
         /// Gets the cache key. (For internal use.)
-        /// </summary>
+        /// </value>
         string CacheKey { get; }
 
-        /// <summary>
+        /// <value>
         /// Gets and sets how many items should be fetched per page.
-        /// </summary>
+        /// </value>
         int MaxItemsPerPage { get; set; }
     }
 
     public interface ITree<T>
     {
+        /// <value>
+        /// The node item.
+        /// </value>
         T Item { get; }
+
+        /// <value>
+        /// The children of this node.
+        /// </value>
         IList<ITree<T>> Children { get; }
     }
 
@@ -457,7 +604,7 @@ namespace PortCMIS.Client
         /// <summary>
         /// Sets the designated parameter to the query name of the given type ID.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='typeId'>the type ID</param>
 
         void SetType(int parameterIndex, string typeId);
@@ -465,42 +612,42 @@ namespace PortCMIS.Client
         /// <summary>
         /// Sets the designated parameter to the query name of the given type.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='type'>the object type</param>
         void SetType(int parameterIndex, IObjectType type);
 
         /// <summary>
         /// Sets the designated parameter to the query name of the given property.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='propertyId'>the property ID</param>
         void SetProperty(int parameterIndex, string typeId, string propertyId);
 
         /// <summary>
         /// Sets the designated parameter to the query name of the given property.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='propertyDefinition'>the property definition</param>
         void SetProperty(int parameterIndex, IPropertyDefinition propertyDefinition);
 
         /// <summary>
         /// Sets the designated parameter to the given decimal.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='num'>the number</param>
         void SetInteger(int parameterIndex, params BigInteger[] num);
 
         /// <summary>
         /// Sets the designated parameter to the given string.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='num'>the number</param>
         void SetDecimal(int parameterIndex, params decimal[] num);
 
         /// <summary>
         /// Sets the designated parameter to the given string.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='str'>the string</param>
         void SetString(int parameterIndex, params string[] str);
 
@@ -508,7 +655,7 @@ namespace PortCMIS.Client
         /// Sets the designated parameter to the given string. It does not escape
         /// backslashes ('\') in front of '%' and '_'.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='str'>the LIKE string</param>
         void SetStringLike(int parameterIndex, string str);
 
@@ -540,36 +687,35 @@ namespace PortCMIS.Client
         /// <summary>
         /// Sets the designated parameter to the given object ID.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
-        /// <param name='id'>
-        ///            the object ID</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='id'>the object ID</param>
         void SetId(int parameterIndex, params IObjectId[] id);
 
         /// <summary>
         /// Sets the designated parameter to the given URI.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='uri'>the URI</param>
         void SetUri(int parameterIndex, params Uri[] uri);
 
         /// <summary>
         /// Sets the designated parameter to the given boolean.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='bool'>the boolean</param>
         void SetBoolean(int parameterIndex, params bool[] boolean);
 
         /// <summary>
         /// Sets the designated parameter to the given DateTime value.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='cal'>the DateTime value as Calendar object</param>
         void SetDateTime(int parameterIndex, params DateTime[] dt);
 
         /// <summary>
         /// Sets the designated parameter to the given DateTime value.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='cal'>the DateTime value in milliseconds from midnight, January 1, 1970 UTC.</param>
         void SetDateTime(int parameterIndex, params long[] ms);
 
@@ -577,7 +723,7 @@ namespace PortCMIS.Client
         /// Sets the designated parameter to the given DateTime value with the prefix
         /// 'TIMESTAMP '.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='cal'>the DateTime value as Calendar object
         void SetDateTimeTimestamp(int parameterIndex, params DateTime[] dt);
 
@@ -585,7 +731,7 @@ namespace PortCMIS.Client
         /// Sets the designated parameter to the given DateTime value with the prefix
         /// 'TIMESTAMP '.
         /// </summary>
-        ///<param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='cal'>the DateTime value in milliseconds from midnight, January 1, 1970 UTC.</param>
         void SetDateTimeTimestamp(int parameterIndex, params long[] ms);
 
@@ -620,6 +766,9 @@ namespace PortCMIS.Client
     /// </summary>
     public interface IObjectType : ITypeDefinition
     {
+        /// <value>
+        /// The base type.
+        /// </value>
         bool IsBaseType { get; }
         IObjectType GetBaseType();
         IObjectType GetParentType();
@@ -632,7 +781,14 @@ namespace PortCMIS.Client
     /// </summary>
     public interface IDocumentType : IObjectType
     {
+        /// <value>
+        /// The versionable flag.
+        /// </value>
         bool? IsVersionable { get; }
+
+        /// <value>
+        /// Content stream allowed.
+        /// </value>
         ContentStreamAllowed? ContentStreamAllowed { get; }
     }
 
@@ -682,9 +838,9 @@ namespace PortCMIS.Client
 
     public interface IObjectId
     {
-        /// <summary>
-        /// Gets the object ID.
-        /// </summary>
+        /// <value>
+        /// The object ID.
+        /// </value>
         string Id { get; }
     }
 
@@ -700,71 +856,71 @@ namespace PortCMIS.Client
     /// </summary>
     public interface IProperty
     {
-        /// <summary>
-        /// Gets the property ID.
-        /// </summary>
+        /// <value>
+        /// The property ID.
+        /// </value>
         string Id { get; }
 
-        /// <summary>
-        /// Gets the property local name.
-        /// </summary>
+        /// <value>
+        /// The property local name.
+        /// </value>
         string LocalName { get; }
 
-        /// <summary>
-        /// Gets the property display name.
-        /// </summary>
+        /// <value>
+        /// Property display name.
+        /// </value>
         string DisplayName { get; }
 
-        /// <summary>
-        /// Gets the property query name.
-        /// </summary>
+        /// <value>
+        /// Property query name.
+        /// </value>
         string QueryName { get; }
 
-        /// <summary>
-        /// Gets if the property is a multi-value proprty.
-        /// </summary>
+        /// <value>
+        /// Gets if the property is a multi-value property.
+        /// </value>
         bool IsMultiValued { get; }
 
-        /// <summary>
-        /// Gets the proprty type.
-        /// </summary>
+        /// <value>
+        /// The property type.
+        /// </value>
         PropertyType? PropertyType { get; }
 
-        /// <summary>
-        /// Gets the property defintion.
-        /// </summary>
+        /// <value>
+        /// The property definition.
+        /// </value>
         IPropertyDefinition PropertyDefinition { get; }
 
-        /// <summary>
-        /// Gets the value of the property.
-        /// </summary>
+        /// <value>
+        /// The property value.
+        /// </value>
         /// <remarks>
         /// If the property is a single-value property the single value is returned.
         /// If the property is a multi-value property a IList&lt;object&gt; is returned.
         /// </remarks>
         object Value { get; }
 
-        /// <summary>
-        /// Gets the value list of the property.
-        /// </summary>
+        /// <value>
+        /// The value list of the property.
+        /// </value>
         /// <remarks>
-        /// If the property is a single-value property a list with one or no items is returend.
+        /// If the property is a single-value property a list with one or no items is returned.
         /// </remarks>
         IList<object> Values { get; }
 
-        /// <summary>
-        /// Gets the first value of the value list or <c>null</c> if the list has no values.
-        /// </summary>
+        /// <value>
+        /// The first value of the value list or <c>null</c> if the list has no values.
+        /// </value>
         object FirstValue { get; }
 
-        /// <summary>
-        /// Gets a string representation of the first value of the value list.
-        /// </summary>
+        /// <value>
+        /// A string representation of the first value of the value list.
+        /// </value>
         string ValueAsString { get; }
 
-        /// <summary>
-        /// Gets a string representation of the value list.
-        /// </summary>
+        /// <value>
+        /// A string representation of the value list.
+        /// </value>
         string ValuesAsString { get; }
     }
 
@@ -773,14 +929,14 @@ namespace PortCMIS.Client
     /// </summary>
     public interface ICmisObjectProperties
     {
-        /// <summary>
-        /// Gets a list of all available CMIS properties.
-        /// </summary>
+        /// <value>
+        /// List of all available CMIS properties.
+        /// </value>
         IList<IProperty> Properties { get; }
 
-        /// <summary>
-        /// available
-        /// </summary>
+        /// <value>
+        /// Gets a property by property ID.
+        /// </value>
         /// <param name="propertyId">the property ID</param>
         /// <returns>the property or <c>null</c> if the property is not available</returns>
         IProperty this[string propertyId] { get; }
@@ -827,54 +983,51 @@ namespace PortCMIS.Client
         /// <exception cref="InvalidCastException">the conversion is not supported</exception>
         DateTime? GetPropertyAsDateTimeValue(string propertyId);
 
-        /// <summary>
-        /// Gets the name of this CMIS object (CMIS property <c>cmis:name</c>).
-        /// </summary>
+        /// <value>
+        /// The name of this CMIS object (CMIS property <c>cmis:name</c>).
+        /// </value>
         string Name { get; }
 
-        /// <summary>
-        /// Gets the user who created this CMIS object (CMIS property <c>cmis:createdBy</c>).
-        /// </summary>
+        /// <value>
+        /// The user who created this CMIS object (CMIS property <c>cmis:createdBy</c>).
+        /// </value>
         string CreatedBy { get; }
 
-        /// <summary>
-        /// Gets the timestamp when this CMIS object has been created (CMIS property <c>cmis:creationDate</c>).
-        /// </summary>
+        /// <value>
+        /// The timestamp when this CMIS object has been created (CMIS property <c>cmis:creationDate</c>).
+        /// </value>
         DateTime? CreationDate { get; }
 
-        /// <summary>
-        /// Gets the user who modified this CMIS object (CMIS property <c>cmis:lastModifiedBy</c>).
-        /// </summary>
+        /// <value>
+        /// The user who modified this CMIS object (CMIS property <c>cmis:lastModifiedBy</c>).
+        /// </value>
         string LastModifiedBy { get; }
 
-        /// <summary>
-        /// Gets the timestamp when this CMIS object has been modified (CMIS property <c>cmis:lastModificationDate</c>).
-        /// </summary>
+        /// <value>
+        /// The timestamp when this CMIS object has been modified (CMIS property <c>cmis:lastModificationDate</c>).
+        /// </value>
         DateTime? LastModificationDate { get; }
 
-        /// <summary>
-        /// Gets the ID of the base type of this CMIS object (CMIS property <c>cmis:baseTypeId</c>).
-        /// </summary>
+        /// <value>
+        /// The ID of the base type of this CMIS object (CMIS property <c>cmis:baseTypeId</c>).
+        /// </value>
         BaseTypeId BaseTypeId { get; }
 
-        /// <summary>
-        /// Gets the base type of this CMIS object (object type identified by <c>cmis:baseTypeId</c>).
-        /// </summary>
+        /// <value>
+        /// The base type of this CMIS object (object type identified by <c>cmis:baseTypeId</c>).
+        /// </value>
         IObjectType BaseType { get; }
 
-        /// <summary>
-        /// Gets the type of this CMIS object (object type identified by <c>cmis:objectTypeId</c>).
-        /// </summary>
+        /// <value>
+        /// The type of this CMIS object (object type identified by <c>cmis:objectTypeId</c>).
+        /// </value>
         IObjectType ObjectType { get; }
 
-        /// <summary>
-        /// Gets the change token (CMIS property <c>cmis:changeToken</c>).
-        /// </summary>
+        /// <value>
+        /// The change token (CMIS property <c>cmis:changeToken</c>).
+        /// </value>
         string ChangeToken { get; }
 
-        /// <summary>
-        /// Gets the secondary object types.
-        /// </summary>
         /// <value>
         /// The secondary types.
         /// </value>
@@ -896,19 +1049,19 @@ namespace PortCMIS.Client
     /// </summary>
     public interface ICmisObject : IObjectId, ICmisObjectProperties
     {
-        /// <summary>
-        /// Gets the allowable actions if they have been fetched for this object.
-        /// </summary>
+        /// <value>
+        /// The allowable actions if they have been fetched for this object.
+        /// </value>
         IAllowableActions AllowableActions { get; }
 
-        /// <summary>
-        /// Gets the relationships if they have been fetched for this object.
-        /// </summary>
+        /// <value>
+        /// The relationships if they have been fetched for this object.
+        /// </value>
         IList<IRelationship> Relationships { get; }
 
-        /// <summary>
-        /// Gets the Acl if it has been fetched for this object.
-        /// </summary>
+        /// <value>
+        /// The ACL if it has been fetched for this object.
+        /// </value>
         IAcl Acl { get; }
 
         /// <summary>
@@ -947,7 +1100,6 @@ namespace PortCMIS.Client
         /// <returns>the object ID of the updated object (a repository might have created a new object)</returns>
         IObjectId Rename(string newName, bool refresh);
 
-
         /// <summary>
         /// Gets the renditions if they have been fetched for this object.
         /// </summary>
@@ -971,19 +1123,19 @@ namespace PortCMIS.Client
         /// <summary>
         /// Adds and removes ACEs to this object.
         /// </summary>
-        /// <returns>the new Acl of this object</returns>
+        /// <returns>the new ACL of this object</returns>
         IAcl ApplyAcl(IList<IAce> addAces, IList<IAce> removeAces, AclPropagation? aclPropagation);
 
         /// <summary>
         /// Adds ACEs to this object.
         /// </summary>
-        /// <returns>the new Acl of this object</returns>
+        /// <returns>the new ACL of this object</returns>
         IAcl AddAcl(IList<IAce> addAces, AclPropagation? aclPropagation);
 
         /// <summary>
         /// Removes ACEs from this object.
         /// </summary>
-        /// <returns>the new Acl of this object</returns>
+        /// <returns>the new ACL of this object</returns>
         IAcl RemoveAcl(IList<IAce> removeAces, AclPropagation? aclPropagation);
 
         /// <summary>
@@ -991,9 +1143,9 @@ namespace PortCMIS.Client
         /// </summary>
         IList<ICmisExtensionElement> GetExtensions(ExtensionLevel level);
 
-        /// <summary>
-        /// Gets the timestamp of the last refresh.
-        /// </summary>
+        /// <value>
+        /// The timestamp of the last refresh.
+        /// </value>
         DateTime RefreshTimestamp { get; }
 
         /// <summary>
@@ -1020,17 +1172,17 @@ namespace PortCMIS.Client
         /// <returns>the object in the new location</returns>
         IFileableCmisObject Move(IObjectId sourceFolderId, IObjectId targetFolderId);
 
-        /// <summary>
+        /// <value>
         /// Gets a list of all parent folders. 
-        /// </summary>
+        /// </value>
         /// <remarks>
         /// Returns an empty list if it is an unfiled object or the root folder.
         /// </remarks>
         IList<IFolder> Parents { get; }
 
-        /// <summary>
-        /// Gets all paths for this object
-        /// </summary>
+        /// <value>
+        /// All paths for this object
+        /// </value>
         /// <remarks>
         /// Returns an empty list for unfiled objects.
         /// </remarks>
@@ -1055,78 +1207,78 @@ namespace PortCMIS.Client
     /// </summary>
     public interface IDocumentProperties
     {
-        /// <summary>
+        /// <value>
         /// Gets if this CMIS object is immutable (CMIS property <c>cmis:isImmutable</c>).
-        /// </summary>
+        /// </value>
         bool? IsImmutable { get; }
 
-        /// <summary>
+        /// <value>
         /// Gets if this CMIS object is the latest version (CMIS property <c>cmis:isLatestVersion</c>)
-        /// </summary>
+        /// </value>
         bool? IsLatestVersion { get; }
 
-        /// <summary>
+        /// <value>
         /// Gets if this CMIS object is the latest version (CMIS property <c>cmis:isMajorVersion</c>).
-        /// </summary>
+        /// </value>
         bool? IsMajorVersion { get; }
 
-        /// <summary>
+        /// <value>
         /// Gets if this CMIS object is the latest major version (CMIS property <c>cmis:isLatestMajorVersion</c>).
-        /// </summary>
+        /// </value>
         bool? IsLatestMajorVersion { get; }
 
-        /// <summary>
+        /// <value>
         /// Gets the version label (CMIS property <c>cmis:versionLabel</c>).
-        /// </summary>
+        /// </value>
         string VersionLabel { get; }
 
-        /// <summary>
+        /// <value>
         /// Gets the version series ID (CMIS property <c>cmis:versionSeriesId</c>).
-        /// </summary>
+        /// </value>
         string VersionSeriesId { get; }
 
-        /// <summary>
+        /// <value>
         /// Gets if this version series is checked out (CMIS property <c>cmis:isVersionSeriesCheckedOut</c>).
-        /// </summary>
+        /// </value>
         bool? IsVersionSeriesCheckedOut { get; }
 
-        /// <summary>
+        /// <value>
         /// Gets the user who checked out this version series (CMIS property <c>cmis:versionSeriesCheckedOutBy</c>).
-        /// </summary>
+        /// </value>
         string VersionSeriesCheckedOutBy { get; }
 
-        /// <summary>
+        /// <value>
         /// Gets the PWC ID of this version series (CMIS property <c>cmis:versionSeriesCheckedOutId</c>).
-        /// </summary>
+        /// </value>
         string VersionSeriesCheckedOutId { get; }
 
-        /// <summary>
+        /// <value>
         /// Gets the checkin comment (CMIS property <c>cmis:checkinComment</c>).
-        /// </summary>
+        /// </value>
         string CheckinComment { get; }
 
-        /// <summary>
-        /// Gets the content stream length or <c>null</c> if the document has no content (CMIS property <c>cmis:contentStreamLength</c>).
-        /// </summary>
+        /// <value>
+        /// The content stream length or <c>null</c> if the document has no content (CMIS property <c>cmis:contentStreamLength</c>).
+        /// </value>
         long? ContentStreamLength { get; }
 
-        /// <summary>
-        /// Gets the content stream MIME type or <c>null</c> if the document has no content (CMIS property <c>cmis:contentStreamMimeType</c>).
-        /// </summary>
+        /// <value>
+        /// The content stream MIME type or <c>null</c> if the document has no content (CMIS property <c>cmis:contentStreamMimeType</c>).
+        /// </value>
         string ContentStreamMimeType { get; }
 
-        /// <summary>
-        /// Gets the content stream filename or <c>null</c> if the document has no content (CMIS property <c>cmis:contentStreamFileName</c>).
-        /// </summary>
+        /// <value>
+        /// The content stream filename or <c>null</c> if the document has no content (CMIS property <c>cmis:contentStreamFileName</c>).
+        /// </value>
         string ContentStreamFileName { get; }
 
-        /// <summary>
-        /// Gets the content stream ID or <c>null</c> if the document has no content (CMIS property <c>cmis:contentStreamId</c>).
-        /// </summary>
+        /// <value>
+        /// The content stream ID or <c>null</c> if the document has no content (CMIS property <c>cmis:contentStreamId</c>).
+        /// </value>
         string ContentStreamId { get; }
 
-        /// <summary>
-        /// Gets the content stream hashes or <c>null</c> if the document has no content or the reposiporty hasn't provided content hashes (CMIS property <c>cmis:contentStreamHash</c>).
+        /// <value>
+        /// The content stream hashes or <c>null</c> if the document has no content or the repository hasn't provided content hashes (CMIS property <c>cmis:contentStreamHash</c>).
         /// </summary>
         IList<IContentStreamHash> ContentStreamHashes { get; }
     }
@@ -1271,7 +1423,14 @@ namespace PortCMIS.Client
     /// </summary>
     public interface IFolderProperties
     {
+        /// <value>
+        /// The parent ID.
+        /// </value>
         string ParentId { get; }
+
+        /// <value>
+        /// The list of allowable child object types.
+        /// </value>
         IList<IObjectType> AllowedChildObjectTypes { get; }
     }
 
@@ -1353,23 +1512,23 @@ namespace PortCMIS.Client
         IItemEnumerable<ICmisObject> GetChildren();
 
         /// <summary>
-        /// Gets the children of this folder ussing the given <see cref="PortCMIS.Client.IOperationContext"/>.
+        /// Gets the children of this folder using the given <see cref="PortCMIS.Client.IOperationContext"/>.
         /// </summary>
         IItemEnumerable<ICmisObject> GetChildren(IOperationContext context);
 
-        /// <summary>
+        /// <value>
         /// Gets if this folder is the root folder.
-        /// </summary>
+        /// </value>
         bool IsRootFolder { get; }
 
-        /// <summary>
-        /// Gets the parent of this folder or <c>null</c> if this folder is the root folder.
-        /// </summary>
+        /// <value>
+        /// The parent of this folder or <c>null</c> if this folder is the root folder.
+        /// </value>
         IFolder FolderParent { get; }
 
-        /// <summary>
-        /// Gets the path of this folder.
-        /// </summary>
+        /// <value>
+        /// The path of this folder.
+        /// </value>
         string Path { get; }
 
         IItemEnumerable<IDocument> GetCheckedOutDocs();
@@ -1381,9 +1540,9 @@ namespace PortCMIS.Client
     /// </summary>
     public interface IPolicyProperties
     {
-        /// <summary>
-        /// Gets the policy text of this CMIS policy (CMIS property <c>cmis:policyText</c>).
-        /// </summary>
+        /// <value>
+        /// The policy text of this CMIS policy (CMIS property <c>cmis:policyText</c>).
+        /// </value>
         string PolicyText { get; }
     }
 
@@ -1399,14 +1558,14 @@ namespace PortCMIS.Client
     /// </summary>
     public interface IRelationshipProperties
     {
-        /// <summary>
-        /// Gets the ID of the relationship source object.
-        /// </summary>
+        /// <value>
+        /// The ID of the relationship source object.
+        /// </value>
         IObjectId SourceId { get; }
 
-        /// <summary>
-        /// Gets the ID of the relationships target object.
-        /// </summary>
+        /// <value>
+        /// The ID of the relationships target object.
+        /// </value>
         IObjectId TargetId { get; }
     }
 
@@ -1467,19 +1626,19 @@ namespace PortCMIS.Client
     /// </summary>
     public interface IContentStreamHash
     {
-        /// <summary>
-        /// Returns the content stream hash property value.
-        /// </summary>
+        /// <value>
+        /// The content stream hash property value.
+        /// </value>
         string PropertyValue { get; }
 
-        /// <summary>
-        /// Returns the hash algorithm.
-        /// </summary>
+        /// <value>
+        /// The hash algorithm.
+        /// </value>
         string Algorithm { get; }
 
-        /// <summary>
-        /// Returns the hash value.
-        /// </summary>
+        /// <value>
+        /// The hash value.
+        /// </value>
         string Hash { get; }
     }
 
@@ -1488,15 +1647,15 @@ namespace PortCMIS.Client
     /// </summary>
     public interface IQueryResult
     {
-        /// <summary>
+        /// <value>
         /// Gets the property.
-        /// </summary>
+        /// </value>
         /// <param name="queryName">the propertys query name or alias</param>
         IPropertyData this[string queryName] { get; }
 
-        /// <summary>
-        /// Gets a list of all properties in this query result.
-        /// </summary>
+        /// <value>
+        /// List of all properties in this query result.
+        /// </value>
         IList<IPropertyData> Properties { get; }
 
         /// <summary>
@@ -1530,35 +1689,71 @@ namespace PortCMIS.Client
         /// </summary>
         IList<object> GetPropertyMultivalueById(string propertyId);
 
-        /// <summary>
-        /// Gets the allowable actions if they were requested.
-        /// </summary>
+        /// <value>
+        /// The allowable actions if they were requested.
+        /// </value>
         IAllowableActions AllowableActions { get; }
 
-        /// <summary>
-        /// Gets the relationships if they were requested.
-        /// </summary>
+        /// <value>
+        /// The relationships if they were requested.
+        /// </value>
         IList<IRelationship> Relationships { get; }
 
-        /// <summary>
-        /// Gets the renditions if they were requested.
-        /// </summary>
+        /// <value>
+        /// The renditions if they were requested.
+        /// </value>
         IList<IRendition> Renditions { get; }
     }
 
+    /// <summary>
+    /// A change event.
+    /// </summary>
     public interface IChangeEvent : IChangeEventInfo
     {
+        /// <value>
+        /// The object ID.
+        /// </value>
         string ObjectId { get; }
+
+        /// <value>
+        /// The object properties, if provided.
+        /// </value>
         IDictionary<string, IList<object>> Properties { get; }
+
+        /// <value>
+        /// The policy IDs, if provided.
+        /// </value>
         IList<string> PolicyIds { get; }
+
+        /// <value>
+        /// The ACL, if provided.
+        /// </value>
         IAcl Acl { get; }
     }
 
+    /// <summary>
+    /// A collection of change events.
+    /// </summary>
     public interface IChangeEvents
     {
+        /// <value>
+        /// The latest change log token.
+        /// </value>
         string LatestChangeLogToken { get; }
+
+        /// <value>
+        /// The list of change events.
+        /// </value>
         IList<IChangeEvent> ChangeEventList { get; }
+
+        /// <value>
+        /// The hasMoreItems flag, if provided.
+        /// </value>
         bool? HasMoreItems { get; }
+
+        /// <value>
+        /// The total number of change events, if provided.
+        /// </value>
         BigInteger? TotalNumItems { get; }
     }
 }

Modified: chemistry/portcmis/trunk/PortCMIS/client/ClientObjectFactory.cs
URL: http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/client/ClientObjectFactory.cs?rev=1740350&r1=1740349&r2=1740350&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/client/ClientObjectFactory.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/client/ClientObjectFactory.cs Thu Apr 21 16:29:04 2016
@@ -203,7 +203,7 @@ namespace PortCMIS.Client.Impl
 
             if (objectType.PropertyDefinitions == null)
             {
-                throw new ArgumentException("Object type has no property defintions!");
+                throw new ArgumentException("Object type has no property definitions!");
             }
 
             if (properties == null || properties.PropertyList == null)
@@ -396,6 +396,16 @@ namespace PortCMIS.Client.Impl
                 throw new ArgumentNullException("objectData");
             }
 
+            if (objectData.Id == null)
+            {
+                throw new ArgumentException("Object ID property not set!");
+            }
+
+            if (objectData.BaseTypeId == null)
+            {
+                throw new ArgumentException("Base type ID property not set!");
+            }
+
             IObjectType type = GetTypeFromObjectData(objectData);
 
             switch (objectData.BaseTypeId)

Modified: chemistry/portcmis/trunk/PortCMIS/client/ClientObjects.cs
URL: http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/client/ClientObjects.cs?rev=1740350&r1=1740349&r2=1740350&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/client/ClientObjects.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/client/ClientObjects.cs Thu Apr 21 16:29:04 2016
@@ -257,6 +257,7 @@ namespace PortCMIS.Client.Impl
 
         // --- object ---
 
+        /// <inheritdoc/>
         public virtual void Delete(bool allVersions)
         {
             lock (objectLock)
@@ -265,6 +266,7 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public virtual ICmisObject UpdateProperties(IDictionary<string, object> properties)
         {
             IObjectId objectId = UpdateProperties(properties, true);
@@ -281,6 +283,7 @@ namespace PortCMIS.Client.Impl
             return this;
         }
 
+        /// <inheritdoc/>
         public virtual IObjectId UpdateProperties(IDictionary<String, object> properties, bool refresh)
         {
             if (properties == null || properties.Count == 0)
@@ -325,6 +328,7 @@ namespace PortCMIS.Client.Impl
             return Session.CreateObjectId(newObjectId);
         }
 
+        /// <inheritdoc/>
         public virtual ICmisObject Rename(string newName)
         {
             if (newName == null || newName.Length == 0)
@@ -338,6 +342,7 @@ namespace PortCMIS.Client.Impl
             return UpdateProperties(prop);
         }
 
+        /// <inheritdoc/>
         public virtual IObjectId Rename(string newName, bool refresh)
         {
             IDictionary<string, object> prop = new Dictionary<string, object>();
@@ -348,8 +353,10 @@ namespace PortCMIS.Client.Impl
 
         // --- properties ---
 
+        /// <inheritdoc/>
         public virtual IObjectType BaseType { get { return Session.GetTypeDefinition(GetPropertyAsStringValue(PropertyIds.BaseTypeId)); } }
 
+        /// <inheritdoc/>
         public virtual BaseTypeId BaseTypeId
         {
             get
@@ -361,20 +368,28 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public virtual string Id { get { return GetPropertyAsStringValue(PropertyIds.ObjectId); } }
 
+        /// <inheritdoc/>
         public virtual string Name { get { return GetPropertyAsStringValue(PropertyIds.Name); } }
 
+        /// <inheritdoc/>
         public virtual string CreatedBy { get { return GetPropertyAsStringValue(PropertyIds.CreatedBy); } }
 
+        /// <inheritdoc/>
         public virtual DateTime? CreationDate { get { return GetPropertyAsDateTimeValue(PropertyIds.CreationDate); } }
 
+        /// <inheritdoc/>
         public virtual string LastModifiedBy { get { return GetPropertyAsStringValue(PropertyIds.LastModifiedBy); } }
 
+        /// <inheritdoc/>
         public virtual DateTime? LastModificationDate { get { return GetPropertyAsDateTimeValue(PropertyIds.LastModificationDate); } }
 
+        /// <inheritdoc/>
         public virtual string ChangeToken { get { return GetPropertyAsStringValue(PropertyIds.ChangeToken); } }
 
+        /// <inheritdoc/>
         public virtual IList<IProperty> Properties
         {
             get
@@ -386,6 +401,7 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public virtual IProperty this[string propertyId]
         {
             get
@@ -407,6 +423,7 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public virtual object GetPropertyValue(string propertyId)
         {
             IProperty property = this[propertyId];
@@ -415,6 +432,7 @@ namespace PortCMIS.Client.Impl
             return property.Value;
         }
 
+        /// <inheritdoc/>
         public virtual string GetPropertyAsStringValue(string propertyId)
         {
             object value = GetPropertyValue(propertyId);
@@ -426,6 +444,7 @@ namespace PortCMIS.Client.Impl
             return Convert.ToString(value);
         }
 
+        /// <inheritdoc/>
         public virtual long? GetPropertyAsLongValue(string propertyId)
         {
             object value = GetPropertyValue(propertyId);
@@ -442,6 +461,7 @@ namespace PortCMIS.Client.Impl
             return Convert.ToInt64(value);
         }
 
+        /// <inheritdoc/>
         public virtual bool? GetPropertyAsBoolValue(string propertyId)
         {
             object value = GetPropertyValue(propertyId);
@@ -458,6 +478,7 @@ namespace PortCMIS.Client.Impl
             return Convert.ToBoolean(value);
         }
 
+        /// <inheritdoc/>
         public virtual DateTime? GetPropertyAsDateTimeValue(string propertyId)
         {
             object value = GetPropertyValue(propertyId);
@@ -471,6 +492,7 @@ namespace PortCMIS.Client.Impl
 
         // --- allowable actions ---
 
+        /// <inheritdoc/>
         public virtual IAllowableActions AllowableActions
         {
             get
@@ -484,6 +506,7 @@ namespace PortCMIS.Client.Impl
 
         // --- renditions ---
 
+        /// <inheritdoc/>
         public virtual IList<IRendition> Renditions
         {
             get
@@ -497,11 +520,13 @@ namespace PortCMIS.Client.Impl
 
         // --- Acl ---
 
+        /// <inheritdoc/>
         public virtual IAcl GetAcl(bool onlyBasicPermissions)
         {
             return Binding.GetAclService().GetAcl(RepositoryId, ObjectId, onlyBasicPermissions, null);
         }
 
+        /// <inheritdoc/>
         public virtual IAcl ApplyAcl(IList<IAce> addAces, IList<IAce> removeAces, AclPropagation? aclPropagation)
         {
             IAcl result = Session.ApplyAcl(this, addAces, removeAces, aclPropagation);
@@ -511,16 +536,19 @@ namespace PortCMIS.Client.Impl
             return result;
         }
 
+        /// <inheritdoc/>
         public virtual IAcl AddAcl(IList<IAce> addAces, AclPropagation? aclPropagation)
         {
             return ApplyAcl(addAces, null, aclPropagation);
         }
 
+        /// <inheritdoc/>
         public virtual IAcl RemoveAcl(IList<IAce> removeAces, AclPropagation? aclPropagation)
         {
             return ApplyAcl(null, removeAces, aclPropagation);
         }
 
+        /// <inheritdoc/>
         public virtual IAcl Acl
         {
             get
@@ -534,6 +562,7 @@ namespace PortCMIS.Client.Impl
 
         // --- policies ---
 
+        /// <inheritdoc/>
         public virtual void ApplyPolicy(params IObjectId[] policyId)
         {
             lock (objectLock)
@@ -544,6 +573,7 @@ namespace PortCMIS.Client.Impl
             Refresh();
         }
 
+        /// <inheritdoc/>
         public virtual void RemovePolicy(params IObjectId[] policyId)
         {
             lock (objectLock)
@@ -554,6 +584,7 @@ namespace PortCMIS.Client.Impl
             Refresh();
         }
 
+        /// <inheritdoc/>
         public virtual IList<IPolicy> Policies
         {
             get
@@ -567,6 +598,7 @@ namespace PortCMIS.Client.Impl
 
         // --- relationships ---
 
+        /// <inheritdoc/>
         public virtual IList<IRelationship> Relationships
         {
             get
@@ -580,6 +612,7 @@ namespace PortCMIS.Client.Impl
 
         // --- extensions ---
 
+        /// <inheritdoc/>
         public virtual IList<ICmisExtensionElement> GetExtensions(ExtensionLevel level)
         {
             IList<ICmisExtensionElement> ext;
@@ -593,8 +626,10 @@ namespace PortCMIS.Client.Impl
 
         // --- other ---
 
+        /// <inheritdoc/>
         public virtual DateTime RefreshTimestamp { get; private set; }
 
+        /// <inheritdoc/>
         public virtual void Refresh()
         {
             lock (objectLock)
@@ -610,6 +645,7 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public virtual void RefreshIfOld(long durationInMillis)
         {
             lock (objectLock)
@@ -627,6 +663,7 @@ namespace PortCMIS.Client.Impl
     /// </summary>
     public abstract class AbstractFileableCmisObject : AbstractCmisObject, IFileableCmisObject
     {
+        /// <inheritdoc/>
         public virtual IFileableCmisObject Move(IObjectId sourceFolderId, IObjectId targetFolderId)
         {
             string objectId = ObjectId;
@@ -657,6 +694,7 @@ namespace PortCMIS.Client.Impl
             return movedObject;
         }
 
+        /// <inheritdoc/>
         public virtual IList<IFolder> Parents
         {
             get
@@ -699,6 +737,7 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public virtual IList<string> Paths
         {
             get
@@ -729,7 +768,7 @@ namespace PortCMIS.Client.Impl
                     if (p.RelativePathSegment == null)
                     {
                         // the repository didn't send a relative path segment
-                        throw new CmisInvalidServerData("Repository sent invalid data! No relative path segement!");
+                        throw new CmisInvalidServerData("Repository sent invalid data! No relative path segment!");
                     }
 
                     string folderPath = pathProperty.FirstValue as string;
@@ -745,6 +784,7 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public virtual void AddToFolder(IObjectId folderId, bool allVersions)
         {
             if (folderId == null || folderId.Id == null)
@@ -755,6 +795,7 @@ namespace PortCMIS.Client.Impl
             Binding.GetMultiFilingService().AddObjectToFolder(RepositoryId, ObjectId, folderId.Id, allVersions, null);
         }
 
+        /// <inheritdoc/>
         public virtual void RemoveFromFolder(IObjectId folderId)
         {
             Binding.GetMultiFilingService().RemoveObjectFromFolder(RepositoryId, ObjectId, folderId == null ? null : folderId.Id, null);
@@ -762,7 +803,7 @@ namespace PortCMIS.Client.Impl
     }
 
     /// <summary>
-    /// Document implemetation.
+    /// Document implementation.
     /// </summary>
     public class Document : AbstractFileableCmisObject, IDocument
     {
@@ -773,34 +814,49 @@ namespace PortCMIS.Client.Impl
 
         // properties
 
+        /// <inheritdoc/>
         public virtual bool? IsImmutable { get { return GetPropertyAsBoolValue(PropertyIds.IsImmutable); } }
 
+        /// <inheritdoc/>
         public virtual bool? IsLatestVersion { get { return GetPropertyAsBoolValue(PropertyIds.IsLatestVersion); } }
 
+        /// <inheritdoc/>
         public virtual bool? IsMajorVersion { get { return GetPropertyAsBoolValue(PropertyIds.IsMajorVersion); } }
 
+        /// <inheritdoc/>
         public virtual bool? IsLatestMajorVersion { get { return GetPropertyAsBoolValue(PropertyIds.IsLatestMajorVersion); } }
 
+        /// <inheritdoc/>
         public virtual string VersionLabel { get { return GetPropertyAsStringValue(PropertyIds.VersionLabel); } }
 
+        /// <inheritdoc/>
         public virtual string VersionSeriesId { get { return GetPropertyAsStringValue(PropertyIds.VersionSeriesId); } }
 
+        /// <inheritdoc/>
         public virtual bool? IsVersionSeriesCheckedOut { get { return GetPropertyAsBoolValue(PropertyIds.IsVersionSeriesCheckedOut); } }
 
+        /// <inheritdoc/>
         public virtual string VersionSeriesCheckedOutBy { get { return GetPropertyAsStringValue(PropertyIds.VersionSeriesCheckedOutBy); } }
 
+        /// <inheritdoc/>
         public virtual string VersionSeriesCheckedOutId { get { return GetPropertyAsStringValue(PropertyIds.VersionSeriesCheckedOutId); } }
 
+        /// <inheritdoc/>
         public virtual string CheckinComment { get { return GetPropertyAsStringValue(PropertyIds.CheckinComment); } }
 
+        /// <inheritdoc/>
         public virtual long? ContentStreamLength { get { return GetPropertyAsLongValue(PropertyIds.ContentStreamLength); } }
 
+        /// <inheritdoc/>
         public virtual string ContentStreamMimeType { get { return GetPropertyAsStringValue(PropertyIds.ContentStreamMimeType); } }
 
+        /// <inheritdoc/>
         public virtual string ContentStreamFileName { get { return GetPropertyAsStringValue(PropertyIds.ContentStreamFileName); } }
 
+        /// <inheritdoc/>
         public virtual string ContentStreamId { get { return GetPropertyAsStringValue(PropertyIds.ContentStreamId); } }
 
+        /// <inheritdoc/>
         public virtual IList<IContentStreamHash> ContentStreamHashes
         {
             get
@@ -823,6 +879,7 @@ namespace PortCMIS.Client.Impl
 
         // operations
 
+        /// <inheritdoc/>
         public virtual IDocument Copy(IObjectId targetFolderId, IDictionary<string, object> properties, VersioningState? versioningState,
             IList<IPolicy> policies, IList<IAce> addAces, IList<IAce> removeAces, IOperationContext context)
         {
@@ -844,11 +901,13 @@ namespace PortCMIS.Client.Impl
             return newDoc;
         }
 
+        /// <inheritdoc/>
         public virtual IDocument Copy(IObjectId targetFolderId)
         {
             return Copy(targetFolderId, null, null, null, null, null, Session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual void DeleteAllVersions()
         {
             Delete(true);
@@ -856,6 +915,7 @@ namespace PortCMIS.Client.Impl
 
         // versioning
 
+        /// <inheritdoc/>
         public virtual IObjectId CheckOut()
         {
             string newObjectId = null;
@@ -877,11 +937,13 @@ namespace PortCMIS.Client.Impl
             return Session.CreateObjectId(newObjectId);
         }
 
+        /// <inheritdoc/>
         public virtual void CancelCheckOut()
         {
             Binding.GetVersioningService().CancelCheckOut(RepositoryId, ObjectId, null);
         }
 
+        /// <inheritdoc/>
         public virtual IObjectId CheckIn(bool major, IDictionary<string, object> properties, IContentStream contentStream,
             string checkinComment, IList<IPolicy> policies, IList<IAce> addAces, IList<IAce> removeAces)
         {
@@ -911,11 +973,13 @@ namespace PortCMIS.Client.Impl
             return Session.CreateObjectId(newObjectId);
         }
 
+        /// <inheritdoc/>
         public virtual IList<IDocument> GetAllVersions()
         {
             return GetAllVersions(Session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual IList<IDocument> GetAllVersions(IOperationContext context)
         {
             string objectId;
@@ -951,11 +1015,13 @@ namespace PortCMIS.Client.Impl
             return result;
         }
 
+        /// <inheritdoc/>
         public virtual IDocument GetObjectOfLatestVersion(bool major)
         {
             return GetObjectOfLatestVersion(major, Session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual IDocument GetObjectOfLatestVersion(bool major, IOperationContext context)
         {
             return Session.GetLatestDocumentVersion(this, major, context);
@@ -963,16 +1029,19 @@ namespace PortCMIS.Client.Impl
 
         // content operations
 
+        /// <inheritdoc/>
         public virtual IContentStream GetContentStream()
         {
             return GetContentStream(null);
         }
 
+        /// <inheritdoc/>
         public virtual IContentStream GetContentStream(string streamId)
         {
             return GetContentStream(streamId, null, null);
         }
 
+        /// <inheritdoc/>
         public virtual IContentStream GetContentStream(string streamId, long? offset, long? length)
         {
             IContentStream contentStream = Session.GetContentStream(this, streamId, offset, length);
@@ -999,6 +1068,7 @@ namespace PortCMIS.Client.Impl
             return contentStream;
         }
 
+        /// <inheritdoc/>
         public virtual IDocument SetContentStream(IContentStream contentStream, bool overwrite)
         {
             IObjectId objectId = SetContentStream(contentStream, overwrite, true);
@@ -1015,6 +1085,7 @@ namespace PortCMIS.Client.Impl
             return this;
         }
 
+        /// <inheritdoc/>
         public virtual IObjectId SetContentStream(IContentStream contentStream, bool overwrite, bool refresh)
         {
             string newObjectId = null;
@@ -1042,6 +1113,7 @@ namespace PortCMIS.Client.Impl
             return Session.CreateObjectId(newObjectId);
         }
 
+        /// <inheritdoc/>
         public virtual IDocument AppendContentStream(IContentStream contentStream, bool isLastChunk)
         {
             IObjectId objectId = AppendContentStream(contentStream, isLastChunk, true);
@@ -1058,6 +1130,7 @@ namespace PortCMIS.Client.Impl
             return this;
         }
 
+        /// <inheritdoc/>
         public virtual IObjectId AppendContentStream(IContentStream contentStream, bool isLastChunk, bool refresh)
         {
             string newObjectId = null;
@@ -1085,6 +1158,7 @@ namespace PortCMIS.Client.Impl
             return Session.CreateObjectId(newObjectId);
         }
 
+        /// <inheritdoc/>
         public virtual IDocument DeleteContentStream()
         {
             IObjectId objectId = DeleteContentStream(true);
@@ -1101,6 +1175,7 @@ namespace PortCMIS.Client.Impl
             return this;
         }
 
+        /// <inheritdoc/>
         public virtual IObjectId DeleteContentStream(bool refresh)
         {
             string newObjectId = null;
@@ -1128,6 +1203,7 @@ namespace PortCMIS.Client.Impl
             return Session.CreateObjectId(newObjectId);
         }
 
+        /// <inheritdoc/>
         public virtual IObjectId CheckIn(bool major, IDictionary<String, object> properties, IContentStream contentStream, string checkinComment)
         {
             return this.CheckIn(major, properties, contentStream, checkinComment, null, null, null);
@@ -1135,7 +1211,7 @@ namespace PortCMIS.Client.Impl
     }
 
     /// <summary>
-    /// Folder implemetation.
+    /// Folder implementation.
     /// </summary>
     public class Folder : AbstractFileableCmisObject, IFolder
     {
@@ -1144,6 +1220,7 @@ namespace PortCMIS.Client.Impl
             Initialize(session, objectType, objectData, context);
         }
 
+        /// <inheritdoc/>
         public virtual IDocument CreateDocument(IDictionary<string, object> properties, IContentStream contentStream, VersioningState? versioningState,
             IList<IPolicy> policies, IList<IAce> addAces, IList<IAce> removeAces, IOperationContext context)
         {
@@ -1165,6 +1242,7 @@ namespace PortCMIS.Client.Impl
             return newDoc;
         }
 
+        /// <inheritdoc/>
         public virtual IDocument CreateDocumentFromSource(IObjectId source, IDictionary<string, object> properties, VersioningState? versioningState,
             IList<IPolicy> policies, IList<IAce> addAces, IList<IAce> removeAces, IOperationContext context)
         {
@@ -1186,6 +1264,7 @@ namespace PortCMIS.Client.Impl
             return newDoc;
         }
 
+        /// <inheritdoc/>
         public virtual IFolder CreateFolder(IDictionary<string, object> properties, IList<IPolicy> policies, IList<IAce> addAces, IList<IAce> removeAces, IOperationContext context)
         {
             IObjectId newId = Session.CreateFolder(properties, this, policies, addAces, removeAces);
@@ -1206,6 +1285,7 @@ namespace PortCMIS.Client.Impl
             return newFolder;
         }
 
+        /// <inheritdoc/>
         public virtual IPolicy CreatePolicy(IDictionary<string, object> properties, IList<IPolicy> policies, IList<IAce> addAces, IList<IAce> removeAces, IOperationContext context)
         {
             IObjectId newId = Session.CreatePolicy(properties, this, policies, addAces, removeAces);
@@ -1226,6 +1306,7 @@ namespace PortCMIS.Client.Impl
             return newPolicy;
         }
 
+        /// <inheritdoc/>
         public virtual IItem CreateItem(IDictionary<string, object> properties, IList<IPolicy> policies, IList<IAce> addAces, IList<IAce> removeAces, IOperationContext context)
         {
             IObjectId newId = Session.CreateItem(properties, this, policies, addAces, removeAces);
@@ -1246,14 +1327,16 @@ namespace PortCMIS.Client.Impl
             return newItem;
         }
 
+        /// <inheritdoc/>
         public virtual IList<string> DeleteTree(bool allVersions, UnfileObject? unfile, bool continueOnFailure)
         {
-            IFailedToDeleteData failed = Binding.GetObjectService().DeleteTree(RepositoryId, ObjectId, allVersions, unfile, continueOnFailure, null);
-            return failed.Ids;
+            return Session.DeleteTree(this, allVersions, unfile, continueOnFailure);
         }
 
+        /// <inheritdoc/>
         public virtual string ParentId { get { return GetPropertyAsStringValue(PropertyIds.ParentId); } }
 
+        /// <inheritdoc/>
         public virtual IList<IObjectType> AllowedChildObjectTypes
         {
             get
@@ -1278,11 +1361,13 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public virtual IItemEnumerable<IDocument> GetCheckedOutDocs()
         {
             return GetCheckedOutDocs(Session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual IItemEnumerable<IDocument> GetCheckedOutDocs(IOperationContext context)
         {
             string objectId = ObjectId;
@@ -1319,11 +1404,13 @@ namespace PortCMIS.Client.Impl
             return new CollectionEnumerable<IDocument>(new PageFetcher<IDocument>(ctxt.MaxItemsPerPage, fetchPageDelegate));
         }
 
+        /// <inheritdoc/>
         public virtual IItemEnumerable<ICmisObject> GetChildren()
         {
             return GetChildren(Session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual IItemEnumerable<ICmisObject> GetChildren(IOperationContext context)
         {
             string objectId = ObjectId;
@@ -1356,11 +1443,13 @@ namespace PortCMIS.Client.Impl
             return new CollectionEnumerable<ICmisObject>(new PageFetcher<ICmisObject>(ctxt.MaxItemsPerPage, fetchPageDelegate));
         }
 
+        /// <inheritdoc/>
         public virtual IList<ITree<IFileableCmisObject>> GetDescendants(int depth)
         {
             return GetDescendants(depth, Session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual IList<ITree<IFileableCmisObject>> GetDescendants(int depth, IOperationContext context)
         {
             IList<IObjectInFolderContainer> bindingContainerList = Binding.GetNavigationService().GetDescendants(RepositoryId, ObjectId, depth,
@@ -1370,11 +1459,13 @@ namespace PortCMIS.Client.Impl
             return ConvertProviderContainer(bindingContainerList, context);
         }
 
+        /// <inheritdoc/>
         public virtual IList<ITree<IFileableCmisObject>> GetFolderTree(int depth)
         {
             return GetFolderTree(depth, Session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual IList<ITree<IFileableCmisObject>> GetFolderTree(int depth, IOperationContext context)
         {
             IList<IObjectInFolderContainer> bindingContainerList = Binding.GetNavigationService().GetFolderTree(RepositoryId, ObjectId, depth,
@@ -1422,8 +1513,10 @@ namespace PortCMIS.Client.Impl
             return result;
         }
 
+        /// <inheritdoc/>
         public virtual bool IsRootFolder { get { return ObjectId == Session.RepositoryInfo.RootFolderId; } }
 
+        /// <inheritdoc/>
         public virtual IFolder FolderParent
         {
             get
@@ -1443,6 +1536,7 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public virtual string Path
         {
             get
@@ -1482,6 +1576,7 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public override IList<string> Paths
         {
             get
@@ -1493,26 +1588,31 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public virtual IDocument CreateDocument(IDictionary<string, object> properties, IContentStream contentStream, VersioningState? versioningState)
         {
             return CreateDocument(properties, contentStream, versioningState, null, null, null, Session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual IDocument CreateDocumentFromSource(IObjectId source, IDictionary<string, object> properties, VersioningState? versioningState)
         {
             return CreateDocumentFromSource(source, properties, versioningState, null, null, null, Session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual IFolder CreateFolder(IDictionary<string, object> properties)
         {
             return CreateFolder(properties, null, null, null, Session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual IPolicy CreatePolicy(IDictionary<string, object> properties)
         {
             return CreatePolicy(properties, null, null, null, Session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual IItem CreateItem(IDictionary<string, object> properties)
         {
             return CreateItem(properties, null, null, null, Session.DefaultContext);
@@ -1520,7 +1620,7 @@ namespace PortCMIS.Client.Impl
     }
 
     /// <summary>
-    /// Policy implemetation.
+    /// Policy implementation.
     /// </summary>
     public class Policy : AbstractFileableCmisObject, IPolicy
     {
@@ -1529,11 +1629,12 @@ namespace PortCMIS.Client.Impl
             Initialize(session, objectType, objectData, context);
         }
 
+        /// <inheritdoc/>
         public virtual string PolicyText { get { return GetPropertyAsStringValue(PropertyIds.PolicyText); } }
     }
 
     /// <summary>
-    /// Relationship implemetation.
+    /// Relationship implementation.
     /// </summary>
     public class Relationship : AbstractCmisObject, IRelationship
     {
@@ -1543,11 +1644,13 @@ namespace PortCMIS.Client.Impl
             Initialize(session, objectType, objectData, context);
         }
 
+        /// <inheritdoc/>
         public virtual ICmisObject GetSource()
         {
             return GetSource(Session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual ICmisObject GetSource(IOperationContext context)
         {
             lock (objectLock)
@@ -1562,6 +1665,7 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public virtual IObjectId SourceId
         {
             get
@@ -1576,11 +1680,13 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public virtual ICmisObject GetTarget()
         {
             return GetTarget(Session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual ICmisObject GetTarget(IOperationContext context)
         {
             lock (objectLock)
@@ -1595,6 +1701,7 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public virtual IObjectId TargetId
         {
             get
@@ -1611,7 +1718,7 @@ namespace PortCMIS.Client.Impl
     }
 
     /// <summary>
-    /// Item implemetation.
+    /// Item implementation.
     /// </summary>
     public class Item : AbstractFileableCmisObject, IItem
     {
@@ -1629,20 +1736,28 @@ namespace PortCMIS.Client.Impl
             Values = values;
         }
 
+        /// <inheritdoc/>
         public string Id { get { return PropertyDefinition.Id; } }
 
+        /// <inheritdoc/>
         public string LocalName { get { return PropertyDefinition.LocalName; } }
 
+        /// <inheritdoc/>
         public string DisplayName { get { return PropertyDefinition.DisplayName; } }
 
+        /// <inheritdoc/>
         public string QueryName { get { return PropertyDefinition.QueryName; } }
 
+        /// <inheritdoc/>
         public bool IsMultiValued { get { return PropertyDefinition.Cardinality == Cardinality.Multi; } }
 
+        /// <inheritdoc/>
         public PropertyType? PropertyType { get { return PropertyDefinition.PropertyType; } }
 
+        /// <inheritdoc/>
         public IPropertyDefinition PropertyDefinition { get; protected set; }
 
+        /// <inheritdoc/>
         public object Value
         {
             get
@@ -1658,12 +1773,16 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public IList<object> Values { get; protected set; }
 
+        /// <inheritdoc/>
         public object FirstValue { get { return Values == null || Values.Count == 0 ? null : Values[0]; } }
 
+        /// <inheritdoc/>
         public string ValueAsString { get { return FormatValue(FirstValue); } }
 
+        /// <inheritdoc/>
         public string ValuesAsString
         {
             get
@@ -1724,11 +1843,13 @@ namespace PortCMIS.Client.Impl
             RenditionDocumentId = renditionDocumentId;
         }
 
+        /// <inheritdoc/>
         public virtual IDocument GetRenditionDocument()
         {
             return GetRenditionDocument(session.DefaultContext);
         }
 
+        /// <inheritdoc/>
         public virtual IDocument GetRenditionDocument(IOperationContext context)
         {
             if (RenditionDocumentId == null)
@@ -1739,6 +1860,7 @@ namespace PortCMIS.Client.Impl
             return session.GetObject(session.CreateObjectId(RenditionDocumentId), context) as IDocument;
         }
 
+        /// <inheritdoc/>
         public virtual IContentStream GetContentStream()
         {
             if (objectId == null || StreamId == null)
@@ -1752,10 +1874,13 @@ namespace PortCMIS.Client.Impl
 
     public class ContentStreamHash : IContentStreamHash
     {
+        /// <inheritdoc/>
         public string PropertyValue { get; protected set; }
 
+        /// <inheritdoc/>
         public string Algorithm { get; protected set; }
 
+        /// <inheritdoc/>
         public string Hash { get; protected set; }
 
         public ContentStreamHash(string propertyValue)
@@ -1864,6 +1989,7 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public IPropertyData this[string queryName]
         {
             get
@@ -1883,8 +2009,10 @@ namespace PortCMIS.Client.Impl
             }
         }
 
+        /// <inheritdoc/>
         public IList<IPropertyData> Properties { get; protected set; }
 
+        /// <inheritdoc/>
         public IPropertyData GetPropertyById(string propertyId)
         {
             if (propertyId == null)
@@ -1901,6 +2029,7 @@ namespace PortCMIS.Client.Impl
             return null;
         }
 
+        /// <inheritdoc/>
         public object GetPropertyValueByQueryName(string queryName)
         {
             IPropertyData property = this[queryName];
@@ -1912,6 +2041,7 @@ namespace PortCMIS.Client.Impl
             return property.FirstValue;
         }
 
+        /// <inheritdoc/>
         public object GetPropertyValueById(string propertyId)
         {
             IPropertyData property = GetPropertyById(propertyId);
@@ -1923,6 +2053,7 @@ namespace PortCMIS.Client.Impl
             return property.FirstValue;
         }
 
+        /// <inheritdoc/>
         public IList<object> GetPropertyMultivalueByQueryName(string queryName)
         {
             IPropertyData property = this[queryName];
@@ -1934,6 +2065,7 @@ namespace PortCMIS.Client.Impl
             return property.Values;
         }
 
+        /// <inheritdoc/>
         public IList<object> GetPropertyMultivalueById(string propertyId)
         {
             IPropertyData property = GetPropertyById(propertyId);
@@ -1945,32 +2077,43 @@ namespace PortCMIS.Client.Impl
             return property.Values;
         }
 
+        /// <inheritdoc/>
         public IAllowableActions AllowableActions { get; protected set; }
 
+        /// <inheritdoc/>
         public IList<IRelationship> Relationships { get; protected set; }
 
+        /// <inheritdoc/>
         public IList<IRendition> Renditions { get; protected set; }
     }
 
     public class ChangeEvent : ChangeEventInfo, IChangeEvent
     {
+        /// <inheritdoc/>
         public virtual string ObjectId { get; set; }
 
+        /// <inheritdoc/>
         public virtual IDictionary<string, IList<object>> Properties { get; set; }
 
+        /// <inheritdoc/>
         public virtual IList<string> PolicyIds { get; set; }
 
+        /// <inheritdoc/>
         public virtual IAcl Acl { get; set; }
     }
 
     public class ChangeEvents : IChangeEvents
     {
+        /// <inheritdoc/>
         public virtual string LatestChangeLogToken { get; set; }
 
+        /// <inheritdoc/>
         public virtual IList<IChangeEvent> ChangeEventList { get; set; }
 
+        /// <inheritdoc/>
         public virtual bool? HasMoreItems { get; set; }
 
+        /// <inheritdoc/>
         public virtual BigInteger? TotalNumItems { get; set; }
     }
 }

Modified: chemistry/portcmis/trunk/PortCMIS/client/SessionParameter.cs
URL: http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/client/SessionParameter.cs?rev=1740350&r1=1740349&r2=1740350&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/client/SessionParameter.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/client/SessionParameter.cs Thu Apr 21 16:29:04 2016
@@ -27,6 +27,7 @@ namespace PortCMIS.Client
         // ---- provider parameter ----
         // Predefined binding types
         public const string BindingType = "org.apache.chemistry.portcmis.binding.spi.type";
+        public const string ForceCmisVersion = "org.apache.chemistry.portcmis.cmisversion";
         // Class name of the binding class.
         public const string BindingSpiClass = "org.apache.chemistry.portcmis.binding.spi.classname";
         // URL of the AtomPub service document.

Modified: chemistry/portcmis/trunk/PortCMIS/client/SessionParameterDefaults.cs
URL: http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/client/SessionParameterDefaults.cs?rev=1740350&r1=1740349&r2=1740350&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/client/SessionParameterDefaults.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/client/SessionParameterDefaults.cs Thu Apr 21 16:29:04 2016
@@ -27,12 +27,25 @@ namespace PortCMIS.Client
 {
     public static class SessionParameterDefaults
     {
+        /// <summary>Default repository cache size</summary>
         public const int CacheSizeRepositories = 10;
+
+        /// <summary>Default type cache size</summary>
         public const int CacheSizeTypes = 100;
+
+        /// <summary>Default link cache size</summary>
         public const int CacheSizeLinks = 400;
+
+        /// <summary>Default object cache size</summary>
         public const int CacheSizeObjects = 100;
+
+        /// <summary>Default time-to-live for objects in the object cache</summary>
         public const int CacheTTLObjects = 2 * 60 * 60 * 1000;
+
+        /// <summary>Default path cache size</summary>
         public const int CacheSizePathToId = 100;
+
+        /// <summary>Default time-to-live for paths in the object cache</summary>
         public const int CacheTTLPathToId = 30 * 60 * 1000;
     }
 }

Modified: chemistry/portcmis/trunk/PortCMIS/const/BasicPermissions.cs
URL: http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/const/BasicPermissions.cs?rev=1740350&r1=1740349&r2=1740350&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/const/BasicPermissions.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/const/BasicPermissions.cs Thu Apr 21 16:29:04 2016
@@ -24,8 +24,13 @@ namespace PortCMIS
     /// </summary>
     public static class BasicPermissions
     {
+        /// <summary>CMIS read permission</summary>
         public const string Read = "cmis:read";
+
+        /// <summary>CMIS write permission</summary>
         public const string Write = "cmis:write";
+
+        /// <summary>CMIS all permission</summary>
         public const string All = "cmis:all";
     }
 }

Modified: chemistry/portcmis/trunk/PortCMIS/const/BindingType.cs
URL: http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/const/BindingType.cs?rev=1740350&r1=1740349&r2=1740350&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/const/BindingType.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/const/BindingType.cs Thu Apr 21 16:29:04 2016
@@ -21,9 +21,16 @@ namespace PortCMIS
 {
     public static class BindingType
     {
+        /// <summary>Binding type AtomPub</summary>
         public const string AtomPub = "atompub";
+
+        /// <summary>Binding type Web Services</summary>
         public const string WebServices = "webservices";
+
+        /// <summary>Binding type Browser</summary>
         public const string Browser = "browser";
+
+        /// <summary>Custom binding type</summary>
         public const string Custom = "custom";
     }
 }