chemistry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From f...@apache.org
Subject svn commit: r1070095 - in /incubator/chemistry/dotcmis/trunk: DotCMIS/ DotCMIS/client/ DotCMISUnitTest/
Date Sat, 12 Feb 2011 15:51:40 GMT
Author: fmui
Date: Sat Feb 12 15:51:39 2011
New Revision: 1070095

URL: http://svn.apache.org/viewvc?rev=1070095&view=rev
Log:
- moved unit test configuration from code to config file
- added SHFB build file
- added more code documentation

Added:
    incubator/chemistry/dotcmis/trunk/DotCMIS/DotCMIS.shfbproj
    incubator/chemistry/dotcmis/trunk/DotCMIS/build.bat
    incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/app.config
Modified:
    incubator/chemistry/dotcmis/trunk/DotCMIS/client/client-intf.cs
    incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/DotCMISUnitTest.csproj
    incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/SmokeTest.cs
    incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/TestFramework.cs

Added: incubator/chemistry/dotcmis/trunk/DotCMIS/DotCMIS.shfbproj
URL: http://svn.apache.org/viewvc/incubator/chemistry/dotcmis/trunk/DotCMIS/DotCMIS.shfbproj?rev=1070095&view=auto
==============================================================================
--- incubator/chemistry/dotcmis/trunk/DotCMIS/DotCMIS.shfbproj (added)
+++ incubator/chemistry/dotcmis/trunk/DotCMIS/DotCMIS.shfbproj Sat Feb 12 15:51:39 2011
@@ -0,0 +1,70 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="3.5">
+  <PropertyGroup>
+    <!-- The configuration and platform will be used to determine which
+         assemblies to include from solution and project documentation
+         sources -->
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{9cf9e0ef-9201-4fd3-a89f-bd03e481c4e5}</ProjectGuid>
+    <SHFBSchemaVersion>1.9.0.0</SHFBSchemaVersion>
+    <!-- AssemblyName, Name, and RootNamespace are not used by SHFB but Visual
+         Studio adds them anyway -->
+    <AssemblyName>Documentation</AssemblyName>
+    <RootNamespace>Documentation</RootNamespace>
+    <Name>Documentation</Name>
+    <!-- SHFB properties -->
+    <OutputPath>.\doc\</OutputPath>
+    <HtmlHelpName>DotCMISDoc</HtmlHelpName>
+    <Language>en-US</Language>
+    <DocumentationSources>
+      <DocumentationSource sourceFile="DotCMIS.csproj" xmlns="" />
+    </DocumentationSources>
+    <HelpTitle>Apache Chemistry DotCMIS</HelpTitle>
+    <HelpFileFormat>HtmlHelp1, Website</HelpFileFormat>
+    <NamingMethod>MemberName</NamingMethod>
+    <PresentationStyle>vs2005</PresentationStyle>
+    <MissingTags>Summary, Parameter, Returns, TypeParameter</MissingTags>
+    <ApiFilter>
+      <Filter entryType="Namespace" fullName="DotCMIS.Client.Impl" isExposed="False" />
+      <Filter entryType="Namespace" fullName="DotCMIS.Client.Impl.Cache" isExposed="False"
/>
+      <Filter entryType="Namespace" fullName="DotCMIS.CMISWebServicesReference" isExposed="False"
/>
+      <Filter entryType="Namespace" fullName="DotCMIS.Data.Extensions" isExposed="True">
+        <Filter entryType="Class" fullName="DotCMIS.Data.Extensions.CmisExtensionElement"
filterName="CmisExtensionElement" isExposed="False" />
+        <Filter entryType="Class" fullName="DotCMIS.Data.Extensions.ExtensionsData" filterName="ExtensionsData"
isExposed="False" />
+      </Filter>
+      <Filter entryType="Namespace" fullName="DotCMIS.Data.Impl" isExposed="False" />
+      <Filter entryType="Namespace" fullName="DotCMIS.Enums" isExposed="True">
+        <Filter entryType="Class" fullName="DotCMIS.Enums.CmisValue" filterName="CmisValue"
isExposed="False" />
+        <Filter entryType="Class" fullName="DotCMIS.Enums.CmisValueAttribute" filterName="CmisValueAttribute"
isExposed="False" />
+      </Filter>
+    </ApiFilter>
+    <SelfBranded>True</SelfBranded>
+    <FeedbackEMailLinkText>Apache Chemistry developer mailing list</FeedbackEMailLinkText>
+    <FeedbackEMailAddress>chemistry-dev%40incubator.apache.org</FeedbackEMailAddress>
+    <CopyrightText>Apache Software Foundation</CopyrightText>
+    <CopyrightHref>http://www.apache.org</CopyrightHref>
+    <BinaryTOC>False</BinaryTOC>
+  </PropertyGroup>
+  <!-- There are no properties for these groups.  AnyCPU needs to appear in
+       order for Visual Studio to perform the build.  The others are optional
+       common platform types that may appear. -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|Win32' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|Win32' ">
+  </PropertyGroup>
+  <!-- Import the SHFB build targets -->
+  <Import Project="$(SHFBROOT)\SandcastleHelpFileBuilder.targets" />
+</Project>
\ No newline at end of file

Added: incubator/chemistry/dotcmis/trunk/DotCMIS/build.bat
URL: http://svn.apache.org/viewvc/incubator/chemistry/dotcmis/trunk/DotCMIS/build.bat?rev=1070095&view=auto
==============================================================================
--- incubator/chemistry/dotcmis/trunk/DotCMIS/build.bat (added)
+++ incubator/chemistry/dotcmis/trunk/DotCMIS/build.bat Sat Feb 12 15:51:39 2011
@@ -0,0 +1,3 @@
+msbuild DotCMIS.csproj /p:Configuration=Debug
+msbuild DotCMIS.csproj /p:Configuration=Release
+msbuild DotCMIS.shfbproj /p:Configuration=Release
\ No newline at end of file

Modified: incubator/chemistry/dotcmis/trunk/DotCMIS/client/client-intf.cs
URL: http://svn.apache.org/viewvc/incubator/chemistry/dotcmis/trunk/DotCMIS/client/client-intf.cs?rev=1070095&r1=1070094&r2=1070095&view=diff
==============================================================================
--- incubator/chemistry/dotcmis/trunk/DotCMIS/client/client-intf.cs (original)
+++ incubator/chemistry/dotcmis/trunk/DotCMIS/client/client-intf.cs Sat Feb 12 15:51:39 2011
@@ -100,6 +100,8 @@ namespace DotCMIS.Client
 
     /// <summary>
     /// A session is a connection to a CMIS repository with a specific user.
+    /// </summary>
+    /// <remarks>
     /// <para>
     /// Not all operations might be supported by the connected repository. Either DotCMIS
or the repository will 
     /// throw an exception if an unsupported operation is called. 
@@ -114,7 +116,7 @@ namespace DotCMIS.Client
     /// for details about the domain model, terms, concepts, base types, properties, ids
and query names, 
     /// query language, etc.)
     /// </para>
-    /// </summary>
+    /// </remarks>
     public interface ISession
     {
         /// <summary>
@@ -178,8 +180,23 @@ namespace DotCMIS.Client
 
         // discovery
 
+        /// <summary>
+        /// Performs a query.
+        /// </summary>
+        /// <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>
         IItemEnumerable<IQueryResult> Query(string statement, bool searchAllVersions);
+
+        /// <summary>
+        /// Performs a query using the given <see cref="DotCMIS.Client.IOperationContext"/>.
+        /// </summary>
+        /// <param name="statement">the CMIS QL statement</param>
+        /// <param name="searchAllVersions">indicates if all versions or only latest
version should be searched</param>
+        /// <param name="context">the <see cref="DotCMIS.Client.IOperationContext"/></param>
+        /// <returns>query results</returns>
         IItemEnumerable<IQueryResult> Query(string statement, bool searchAllVersions,
IOperationContext context);
+
         IChangeEvents GetContentChanges(string changeLogToken, bool includeProperties, long
maxNumItems);
         IChangeEvents GetContentChanges(string changeLogToken, bool includeProperties, long
maxNumItems,
                 IOperationContext context);
@@ -255,18 +272,85 @@ namespace DotCMIS.Client
     /// </summary>
     public interface IOperationContext
     {
+        /// <summary>
+        /// Gets and sets the property filter.
+        /// </summary>
+        /// <remarks>
+        /// This is a set of query names.
+        /// </remarks>
         HashSet<string> Filter { get; set; }
+
+        /// <summary>
+        /// Gets and sets the property filter.
+        /// </summary>
+        /// <remarks>
+        /// This is a comma-separated list of query names.
+        /// </remarks>
         string FilterString { get; set; }
+
+        /// <summary>
+        /// Gets and sets if allowable actions should be retrieved.
+        /// </summary>
         bool IncludeAllowableActions { get; set; }
+
+        /// <summary>
+        /// Gets and sets if ACLs should be retrieved.
+        /// </summary>
         bool IncludeAcls { get; set; }
+
+        /// <summary>
+        /// Gets and sets if relationships should be retrieved.
+        /// </summary>
         IncludeRelationshipsFlag? IncludeRelationships { get; set; }
+
+        /// <summary>
+        /// Gets and sets if policies should be retrieved.
+        /// </summary>
         bool IncludePolicies { get; set; }
+
+        /// <summary>
+        /// Gets and sets the rendition filter.
+        /// </summary>
+        /// <remarks>
+        /// This is a set of rendition kinds or MIME types.
+        /// </remarks>
         HashSet<string> RenditionFilter { get; set; }
+
+        /// <summary>
+        /// Gets and sets the rendition filter.
+        /// </summary>
+        /// <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>
         bool IncludePathSegments { get; set; }
+
+        /// <summary>
+        /// Gets and sets order by list. 
+        /// </summary>
+        /// <remarks>
+        /// This is a comma-separated list of query names.
+        /// </remarks>
         string OrderBy { get; set; }
+
+        /// <summary>
+        /// Gets and sets if object fetched with this <see cref="DotCMIS.Client.IOperationContext"/>
+        /// should be cached or not.
+        /// </summary>
         bool CacheEnabled { get; set; }
+
+        /// <summary>
+        /// Gets the cache key. (For internal use.)
+        /// </summary>
         string CacheKey { get; }
+
+        /// <summary>
+        /// Gets and sets how many items should be fetched per page.
+        /// </summary>
         int MaxItemsPerPage { get; set; }
     }
 
@@ -539,17 +623,42 @@ namespace DotCMIS.Client
         /// </summary>
         IList<IRendition> Renditions { get; }
 
-        // policy service
+        /// <summary>
+        /// Applies the given policies to the object.
+        /// </summary>
         void ApplyPolicy(params IObjectId[] policyId);
+
+        /// <summary>
+        /// Removes the given policies from the object.
+        /// </summary>
         void RemovePolicy(params IObjectId[] policyId);
+
+        /// <summary>
+        /// Gets a list of policies applied to this object.
+        /// </summary>
         IList<IPolicy> Policies { get; }
 
-        // ACL service
-        IAcl ApplyAcl(IList<IAce> AddAces, IList<IAce> removeAces, AclPropagation?
aclPropagation);
-        IAcl AddAcl(IList<IAce> AddAces, AclPropagation? aclPropagation);
-        IAcl RemoveAcl(IList<IAce> RemoveAces, AclPropagation? aclPropagation);
+        /// <summary>
+        /// Adds and removes ACEs to this object.
+        /// </summary>
+        /// <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>
+        IAcl AddAcl(IList<IAce> addAces, AclPropagation? aclPropagation);
 
-        // extensions
+        /// <summary>
+        /// Removes ACEs from this object.
+        /// </summary>
+        /// <returns>the new ACL of this object</returns>
+        IAcl RemoveAcl(IList<IAce> removeAces, AclPropagation? aclPropagation);
+
+        /// <summary>
+        /// Gets the extensions of the given level.
+        /// </summary>
         IList<ICmisExtensionElement> GetExtensions(ExtensionLevel level);
 
         /// <summary>
@@ -573,15 +682,41 @@ namespace DotCMIS.Client
     /// </summary>
     public interface IFileableCmisObject : ICmisObject
     {
-        // object service
+        /// <summary>
+        /// Moves this object from a source folder to a target folder.
+        /// </summary>
+        /// <param name="sourceFolderId">the source folder id</param>
+        /// <param name="targetFolderId">the target folder id</param>
+        /// <returns>the object in the new location</returns>
         IFileableCmisObject Move(IObjectId sourceFolderId, IObjectId targetFolderId);
 
-        // navigation service
+        /// <summary>
+        /// Gets a list of all parent folders. 
+        /// </summary>
+        /// <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>
+        /// <remarks>
+        /// Returns an empty list for unfiled objects.
+        /// </remarks>
         IList<string> Paths { get; }
 
-        // multifiling service
+        /// <summary>
+        /// Adds this object to the given folder.
+        /// </summary>
+        /// <param name="folderId">the id of the target folder</param>
+        /// <param name="allVersions">indicates if only this object or all versions
of the object should be added</param>
         void AddToFolder(IObjectId folderId, bool allVersions);
+
+        /// <summary>
+        /// Removes this object from the given folder.
+        /// </summary>
+        /// <param name="folderId">the id of the folder</param>
         void RemoveFromFolder(IObjectId folderId);
     }
 
@@ -590,19 +725,74 @@ namespace DotCMIS.Client
     /// </summary>
     public interface IDocumentProperties
     {
+        /// <summary>
+        /// Gets if this CMIS object is immutable (CMIS property <c>cmis:isImmutable</c>).
+        /// </summary>
         bool? IsImmutable { get; }
+
+        /// <summary>
+        /// Gets if this CMIS object is the latest version (CMIS property <c>cmis:isLatestVersion</c>)
+        /// </summary>
         bool? IsLatestVersion { get; }
+
+        /// <summary>
+        /// Gets if this CMIS object is the latest version (CMIS property <c>cmis:isMajorVersion</c>).
+        /// </summary>
         bool? IsMajorVersion { get; }
+
+        /// <summary>
+        /// Gets if this CMIS object is the latest major version (CMIS property <c>cmis:isLatestMajorVersion</c>).
+        /// </summary>
         bool? IsLatestMajorVersion { get; }
+
+        /// <summary>
+        /// Gets the version label (CMIS property <c>cmis:versionLabel</c>).
+        /// </summary>
         string VersionLabel { get; }
+
+        /// <summary>
+        /// Gets the version series id (CMIS property <c>cmis:versionSeriesId</c>).
+        /// </summary>
         string VersionSeriesId { get; }
+
+        /// <summary>
+        /// Gets if this version series is checked out (CMIS property <c>cmis:isVersionSeriesCheckedOut</c>).
+        /// </summary>
         bool? IsVersionSeriesCheckedOut { get; }
+
+        /// <summary>
+        /// Gets the user who checked out this version series (CMIS property <c>cmis:versionSeriesCheckedOutBy</c>).
+        /// </summary>
         string VersionSeriesCheckedOutBy { get; }
+
+        /// <summary>
+        /// Gets the PWC id of this version series (CMIS property <c>cmis:versionSeriesCheckedOutId</c>).
+        /// </summary>
         string VersionSeriesCheckedOutId { get; }
+
+        /// <summary>
+        /// Gets the checkin comment (CMIS property <c>cmis:checkinComment</c>).
+        /// </summary>
         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>
         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>
         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>
         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>
         string ContentStreamId { get; }
     }
 
@@ -611,22 +801,102 @@ namespace DotCMIS.Client
     /// </summary>
     public interface IDocument : IFileableCmisObject, IDocumentProperties
     {
+        /// <summary>
+        /// Deletes all versions of this document.
+        /// </summary>
         void DeleteAllVersions();
+
+        /// <summary>
+        /// Gets the content stream of this document.
+        /// </summary>
+        /// <returns>the content stream or <c>null</c> if the document
has no content</returns>
         IContentStream GetContentStream();
+
+        /// <summary>
+        /// Gets the content stream identified by the given stream id.
+        /// </summary>
+        /// <returns>the content stream or <c>null</c> if the stream id
is not associated with content</returns>
         IContentStream GetContentStream(string streamId);
+
+        /// <summary>
+        /// Sets a new content stream for this document.
+        /// </summary>
+        /// <param name="contentStream">the content stream</param>
+        /// <param name="overwrite">indicates if the current stream should be overwritten</param>
+        /// <returns>the new document object</returns>
+        /// <remarks>
+        /// Repositories might create a new version if the content is updated.
+        /// </remarks>
         IDocument SetContentStream(IContentStream contentStream, bool overwrite);
+
+        /// <summary>
+        /// Sets a new content stream for this document.
+        /// </summary>
+        /// <param name="contentStream">the content stream</param>
+        /// <param name="overwrite">indicates if the current stream should be overwritten</param>
+        /// <param name="refresh">indicates if this object should be refreshed after
the new content is set</param>
+        /// <returns>the new document object id</returns>
+        /// <remarks>
+        /// Repositories might create a new version if the content is updated.
+        /// </remarks>
         IObjectId SetContentStream(IContentStream contentStream, bool overwrite, bool refresh);
+
+        /// <summary>
+        /// Deletes the current content stream for this document.
+        /// </summary>
+        /// <returns>the new document object</returns>
+        /// <remarks>
+        /// Repositories might create a new version if the content is deleted.
+        /// </remarks>
         IDocument DeleteContentStream();
+
+        /// <summary>
+        /// Deletes the current content stream for this document.
+        /// </summary>
+        /// <param name="refresh">indicates if this object should be refreshed after
the content is deleted</param>
+        /// <returns>the new document object id</returns>
+        /// <remarks>
+        /// Repositories might create a new version if the content is deleted.
+        /// </remarks>
         IObjectId DeleteContentStream(bool refresh);
+
+        /// <summary>
+        /// Checks out this document.
+        /// </summary>
+        /// <returns>the object id of the newly created private working copy (PWC).</returns>
         IObjectId CheckOut();
+
+        /// <summary>
+        /// Cancels the check out.
+        /// </summary>
         void CancelCheckOut();
+
+        /// <summary>
+        /// Checks in this private working copy (PWC).
+        /// </summary>
+        /// <returns>the object id of the new created document</returns>
         IObjectId CheckIn(bool major, IDictionary<string, object> properties, IContentStream
contentStream, string checkinComment,
                 IList<IPolicy> policies, IList<IAce> addAces, IList<IAce>
removeAces);
+
+        /// <summary>
+        /// Checks in this private working copy (PWC).
+        /// </summary>
+        /// <returns>the object id of the new created document</returns>
         IObjectId CheckIn(bool major, IDictionary<string, object> properties, IContentStream
contentStream, string checkinComment);
+
         IDocument GetObjectOfLatestVersion(bool major);
         IDocument GetObjectOfLatestVersion(bool major, IOperationContext context);
+
+        /// <summary>
+        /// Gets a list of all versions in this version series.
+        /// </summary>
         IList<IDocument> GetAllVersions();
+
+        /// <summary>
+        /// Gets a list of all versions in this version series using the given <see cref="DotCMIS.Client.IOperationContext"/>.
+        /// </summary>
         IList<IDocument> GetAllVersions(IOperationContext context);
+
         IDocument Copy(IObjectId targetFolderId);
         IDocument Copy(IObjectId targetFolderId, IDictionary<string, object> properties,
VersioningState? versioningState,
                 IList<IPolicy> policies, IList<IAce> addACEs, IList<IAce>
removeACEs, IOperationContext context);
@@ -658,15 +928,82 @@ namespace DotCMIS.Client
                 IOperationContext context);
         IPolicy CreatePolicy(IDictionary<string, object> properties);
         IList<string> DeleteTree(bool allversions, UnfileObject? unfile, bool continueOnFailure);
+
+        /// <summary>
+        /// Gets the folder tress of this folder (only folder).
+        /// </summary>
+        /// <param name="depth">the depth</param>
+        /// <returns>a list of folder trees</returns>
+        /// <remarks>
+        /// If depth == 1 only objects that are children of this folder are returned.
+        /// If depth &gt; 1 only objects that are children of this folder and descendants
up to "depth" levels deep are returned.
+        /// If depth == -1 all descendant objects at all depth levels in the CMIS hierarchy
are returned.
+        /// </remarks>
         IList<ITree<IFileableCmisObject>> GetFolderTree(int depth);
+
+        /// <summary>
+        /// Gets the folder tress of this folder (only folder) using the given <see cref="DotCMIS.Client.IOperationContext"/>.
+        /// </summary>
+        /// <param name="depth">the depth</param>
+        /// <param name="context">the <see cref="DotCMIS.Client.IOperationContext"/></param>
+        /// <returns>a list of folder trees</returns>
+        /// <remarks>
+        /// If depth == 1 only objects that are children of this folder are returned.
+        /// If depth &gt; 1 only objects that are children of this folder and descendants
up to "depth" levels deep are returned.
+        /// If depth == -1 all descendant objects at all depth levels in the CMIS hierarchy
are returned.
+        /// </remarks>
         IList<ITree<IFileableCmisObject>> GetFolderTree(int depth, IOperationContext
context);
+
+        /// <summary>
+        /// Gets the descendants of this folder (all filable objects).
+        /// </summary>
+        /// <param name="depth">the depth</param>
+        /// <returns>a list of descendant trees</returns>
+        /// <remarks>
+        /// If depth == 1 only objects that are children of this folder are returned.
+        /// If depth &gt; 1 only objects that are children of this folder and descendants
up to "depth" levels deep are returned.
+        /// If depth == -1 all descendant objects at all depth levels in the CMIS hierarchy
are returned.
+        /// </remarks>
         IList<ITree<IFileableCmisObject>> GetDescendants(int depth);
+
+        /// <summary>
+        /// Gets the descendants of this folder (all filable objects) using the given <see
cref="DotCMIS.Client.IOperationContext"/>.
+        /// </summary>
+        /// <param name="depth">the depth</param>
+        /// <param name="context">the <see cref="DotCMIS.Client.IOperationContext"/></param>
+        /// <returns>a list of descendant trees</returns>
+        /// <remarks>
+        /// If depth == 1 only objects that are children of this folder are returned.
+        /// If depth &gt; 1 only objects that are children of this folder and descendants
up to "depth" levels deep are returned.
+        /// If depth == -1 all descendant objects at all depth levels in the CMIS hierarchy
are returned.
+        /// </remarks>
         IList<ITree<IFileableCmisObject>> GetDescendants(int depth, IOperationContext
context);
+
+        /// <summary>
+        /// Gets the children of this folder.
+        /// </summary>
         IItemEnumerable<ICmisObject> GetChildren();
+
+        /// <summary>
+        /// Gets the children of this folder ussing the given <see cref="DotCMIS.Client.IOperationContext"/>.
+        /// </summary>
         IItemEnumerable<ICmisObject> GetChildren(IOperationContext context);
+
+        /// <summary>
+        /// Gets if this folder is the root folder.
+        /// </summary>
         bool IsRootFolder { get; }
+
+        /// <summary>
+        /// Gets the parent of this folder or <c>null</c> if this folder is the
root folder.
+        /// </summary>
         IFolder FolderParent { get; }
+
+        /// <summary>
+        /// Gets the path of this folder.
+        /// </summary>
         string Path { get; }
+
         IItemEnumerable<IDocument> GetCheckedOutDocs();
         IItemEnumerable<IDocument> GetCheckedOutDocs(IOperationContext context);
     }
@@ -676,6 +1013,9 @@ namespace DotCMIS.Client
     /// </summary>
     public interface IPolicyProperties
     {
+        /// <summary>
+        /// Gets the policy text of this CMIS policy (CMIS property <c>cmis:policyText</c>).
+        /// </summary>
         string PolicyText { get; }
     }
 
@@ -691,7 +1031,14 @@ namespace DotCMIS.Client
     /// </summary>
     public interface IRelationshipProperties
     {
+        /// <summary>
+        /// Gets the id of the relationship source object.
+        /// </summary>
         IObjectId SourceId { get; }
+
+        /// <summary>
+        /// Gets the id of the relationships target object.
+        /// </summary>
         IObjectId TargetId { get; }
     }
 
@@ -700,9 +1047,36 @@ namespace DotCMIS.Client
     /// </summary>
     public interface IRelationship : ICmisObject, IRelationshipProperties
     {
+        /// <summary>
+        /// Gets the relationship source object.
+        /// </summary>
+        /// <remarks>
+        /// If the source object id is invalid, <c>null</c> will be returned.
+        /// </remarks>
         ICmisObject GetSource();
+
+        /// <summary>
+        /// Gets the relationship source object using the given <see cref="DotCMIS.Client.IOperationContext"/>.
+        /// </summary>
+        /// <remarks>
+        /// If the source object id is invalid, <c>null</c> will be returned.
+        /// </remarks>
         ICmisObject GetSource(IOperationContext context);
+
+        /// <summary>
+        /// Gets the relationship target object.
+        /// </summary>
+        /// <remarks>
+        /// If the target object id is invalid, <c>null</c> will be returned.
+        /// </remarks>
         ICmisObject GetTarget();
+
+        /// <summary>
+        /// Gets the relationship target object using the given <see cref="DotCMIS.Client.IOperationContext"/>.
+        /// </summary>
+        /// <remarks>
+        /// If the target object id is invalid, <c>null</c> will be returned.
+        /// </remarks>
         ICmisObject GetTarget(IOperationContext context);
     }
 
@@ -711,15 +1085,61 @@ namespace DotCMIS.Client
     /// </summary>
     public interface IQueryResult
     {
+        /// <summary>
+        /// Gets the property.
+        /// </summary>
+        /// <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>
         IList<IPropertyData> Properties { get; }
+
+        /// <summary>
+        /// Returns a property by id.
+        /// </summary>
+        /// <param name="propertyId">the property id</param>
+        /// <remarks>
+        /// Since repositories are not obligated to add property ids to their
+        /// query result properties, this method might not always work as expected with
+        /// some repositories. Use <see cref="this[string]"/> instead.
+        /// </remarks>
         IPropertyData GetPropertyById(string propertyId);
+
+        /// <summary>
+        /// Gets the property (single) value by query name or alias.
+        /// </summary>
         object GetPropertyValueByQueryName(string queryName);
+
+        /// <summary>
+        /// Gets the property (single) value by property id.
+        /// </summary>
         object GetPropertyValueById(string propertyId);
+
+        /// <summary>
+        /// Gets the property value by query name or alias.
+        /// </summary>
         IList<object> GetPropertyMultivalueByQueryName(string queryName);
+
+        /// <summary>
+        /// Gets the property value by property id.
+        /// </summary>
         IList<object> GetPropertyMultivalueById(string propertyId);
+
+        /// <summary>
+        /// Gets the allowable actions if they were requested.
+        /// </summary>
         IAllowableActions AllowableActions { get; }
+
+        /// <summary>
+        /// Gets the relationships if they were requested.
+        /// </summary>
         IList<IRelationship> Relationships { get; }
+
+        /// <summary>
+        /// Gets the renditions if they were requested.
+        /// </summary>
         IList<IRendition> Renditions { get; }
     }
 

Modified: incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/DotCMISUnitTest.csproj
URL: http://svn.apache.org/viewvc/incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/DotCMISUnitTest.csproj?rev=1070095&r1=1070094&r2=1070095&view=diff
==============================================================================
--- incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/DotCMISUnitTest.csproj (original)
+++ incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/DotCMISUnitTest.csproj Sat Feb 12 15:51:39
2011
@@ -36,6 +36,7 @@
       <HintPath>..\..\..\..\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\framework\nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="System" />
+    <Reference Include="System.configuration" />
     <Reference Include="System.Core" />
     <Reference Include="System.Xml.Linq" />
     <Reference Include="System.Data.DataSetExtensions" />
@@ -57,6 +58,11 @@
       <Name>DotCMIS</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and
uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.

Modified: incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/SmokeTest.cs
URL: http://svn.apache.org/viewvc/incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/SmokeTest.cs?rev=1070095&r1=1070094&r2=1070095&view=diff
==============================================================================
--- incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/SmokeTest.cs (original)
+++ incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/SmokeTest.cs Sat Feb 12 15:51:39 2011
@@ -196,7 +196,9 @@ namespace DotCMISUnitTest
             // check doc
             Assert.NotNull(doc);
             Assert.NotNull(doc.Id);
-
+            Assert.AreEqual(properties[PropertyIds.Name], doc.Name);
+            Assert.AreEqual(BaseTypeId.CmisDocument, doc.BaseTypeId);
+   
             // check versions
             IList<IDocument> versions = doc.GetAllVersions();
             Assert.NotNull(versions);
@@ -232,6 +234,8 @@ namespace DotCMISUnitTest
             // check folder
             Assert.NotNull(folder);
             Assert.NotNull(folder.Id);
+            Assert.AreEqual(properties[PropertyIds.Name], folder.Name);
+            Assert.AreEqual(BaseTypeId.CmisFolder, folder.BaseTypeId);
 
             // check children
             foreach (ICmisObject cmisObject in folder.GetChildren())

Modified: incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/TestFramework.cs
URL: http://svn.apache.org/viewvc/incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/TestFramework.cs?rev=1070095&r1=1070094&r2=1070095&view=diff
==============================================================================
--- incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/TestFramework.cs (original)
+++ incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/TestFramework.cs Sat Feb 12 15:51:39
2011
@@ -17,6 +17,7 @@
  * under the License.
  */
 using System.Collections.Generic;
+using System.Configuration;
 using System.IO;
 using System.Net;
 using System.Text;
@@ -63,14 +64,43 @@ namespace DotCMISUnitTest
             DefaultDocumentType = "cmis:document";
             DefaultFolderType = "cmis:folder";
 
-            Session = ConnectAtomPub();
+            Session = ConnectFromConfig();
+        }
+        
+        public ISession ConnectFromConfig()
+        {
+            Dictionary<string, string> parameters = new Dictionary<string, string>();
+
+            foreach (string key in ConfigurationManager.AppSettings.AllKeys)
+            {
+                parameters[key] = ConfigurationManager.AppSettings.Get(key);
+            }
+
+            SessionFactory factory = SessionFactory.NewInstance();
+
+            ISession session = null;
+            if (parameters.ContainsKey(SessionParameter.RepositoryId))
+            {
+                session = factory.CreateSession(parameters);
+            }
+            else
+            {
+                session = factory.GetRepositories(parameters)[0].CreateSession();
+            }
+
+            Assert.NotNull(session);
+            Assert.NotNull(session.Binding);
+            Assert.NotNull(session.RepositoryInfo);
+            Assert.NotNull(session.RepositoryInfo.Id);
+
+            return session;
         }
 
         public ISession ConnectAtomPub()
         {
             Dictionary<string, string> parameters = new Dictionary<string, string>();
 
-            string baseUrlAtom = "http://localhost:8080/alfresco/service/cmis";
+            string baseUrlAtom = "http://localhost:8080/alfresco/cmisatom";
 
             parameters[SessionParameter.BindingType] = BindingType.AtomPub;
             parameters[SessionParameter.AtomPubUrl] = baseUrlAtom;
@@ -92,7 +122,7 @@ namespace DotCMISUnitTest
         {
             Dictionary<string, string> parameters = new Dictionary<string, string>();
 
-            string baseUrlWS = "http://localhost:8080/alfresco/cmis";
+            string baseUrlWS = "https://localhost:8443/alfresco/cmisws";
 
             parameters[SessionParameter.BindingType] = BindingType.WebServices;
             parameters[SessionParameter.WebServicesRepositoryService] = baseUrlWS + "/RepositoryService?wsdl";
@@ -132,7 +162,7 @@ namespace DotCMISUnitTest
 
         public IObjectData CreateDocument(string folderId, string name, string content)
         {
-            Properties properties = new Properties();
+            DotCMIS.Data.Impl.Properties properties = new DotCMIS.Data.Impl.Properties();
 
             PropertyData objectTypeIdProperty = new PropertyData(PropertyType.Id);
             objectTypeIdProperty.Id = PropertyIds.ObjectTypeId;
@@ -185,7 +215,7 @@ namespace DotCMISUnitTest
 
         public IObjectData CreateFolder(string folderId, string name)
         {
-            Properties properties = new Properties();
+            DotCMIS.Data.Impl.Properties properties = new DotCMIS.Data.Impl.Properties();
 
             PropertyData objectTypeIdProperty = new PropertyData(PropertyType.Id);
             objectTypeIdProperty.Id = PropertyIds.ObjectTypeId;

Added: incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/app.config
URL: http://svn.apache.org/viewvc/incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/app.config?rev=1070095&view=auto
==============================================================================
--- incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/app.config (added)
+++ incubator/chemistry/dotcmis/trunk/DotCMISUnitTest/app.config Sat Feb 12 15:51:39 2011
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+  <appSettings>
+    <add key="org.apache.chemistry.dotcmis.binding.spi.type" value="atompub" />
+    <add key="org.apache.chemistry.dotcmis.binding.atompub.url" value="http://localhost:8080/alfresco/cmisatom"
/>
+
+    <!--
+    <add key="org.apache.chemistry.dotcmis.binding.spi.type" value="webservices" />
+    <add key="org.apache.chemistry.dotcmis.binding.webservices.RepositoryService" value="https://localhost:8443/alfresco/cmisws/RepositoryService?wsdl"
/>
+    <add key="org.apache.chemistry.dotcmis.binding.webservices.NavigationService" value="https://localhost:8443/alfresco/cmisws/NavigationService?wsdl"
/>
+    <add key="org.apache.chemistry.dotcmis.binding.webservices.ObjectService" value="https://localhost:8443/alfresco/cmisws/ObjectService?wsdl"
/>
+    <add key="org.apache.chemistry.dotcmis.binding.webservices.VersioningService" value="https://localhost:8443/alfresco/cmisws/VersioningService?wsdl"
/>
+    <add key="org.apache.chemistry.dotcmis.binding.webservices.DiscoveryService" value="https://localhost:8443/alfresco/cmisws/DiscoveryService?wsdl"
/>
+    <add key="org.apache.chemistry.dotcmis.binding.webservices.RelationshipService" value="https://localhost:8443/alfresco/cmisws/RelationshipService?wsdl"
/>
+    <add key="org.apache.chemistry.dotcmis.binding.webservices.MultiFilingService" value="https://localhost:8443/alfresco/cmisws/MultiFilingService?wsdl"
/>
+    <add key="org.apache.chemistry.dotcmis.binding.webservices.PolicyService" value="https://localhost:8443/alfresco/cmisws/PolicyService?wsdl"
/>
+    <add key="org.apache.chemistry.dotcmis.binding.webservices.ACLService" value="https://localhost:8443/alfresco/cmisws/ACLService?wsdl"
/>
+    -->
+    
+    <add key="org.apache.chemistry.dotcmis.user" value="admin" />
+    <add key="org.apache.chemistry.dotcmis.password" value="admin" />
+  </appSettings>
+</configuration>
\ No newline at end of file



Mime
View raw message