CMIS-983: AtomPub: added support for OpenCMIS latestChangeLogToken

git-svn-id: https://svn.apache.org/repos/asf/chemistry/dotcmis/trunk@1752248 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/DotCMIS/binding/atompub/atompub-parser.cs b/DotCMIS/binding/atompub/atompub-parser.cs
index f2d7d72..fbf5a48 100644
--- a/DotCMIS/binding/atompub/atompub-parser.cs
+++ b/DotCMIS/binding/atompub/atompub-parser.cs
@@ -82,7 +82,8 @@
             settings.ProhibitDtd = false;

             settings.MaxCharactersFromEntities = 1024;

 

-            try {

+            try

+            {

                 using (XmlReader reader = XmlReader.Create(stream, settings))

                 {

                     while (true)

@@ -393,6 +394,10 @@
                             Skip(reader);

                         }

                     }

+                    else if (AtomPubConstants.NamespaceApacheChemistry == reader.NamespaceURI)

+                    {

+                        feed.AddElement(ParseText(reader));

+                    }

                     else

                     {

                         Skip(reader);

diff --git a/DotCMIS/binding/atompub/atompub.cs b/DotCMIS/binding/atompub/atompub.cs
index a3414c4..8278671 100644
--- a/DotCMIS/binding/atompub/atompub.cs
+++ b/DotCMIS/binding/atompub/atompub.cs
@@ -2697,6 +2697,7 @@
             // read and parse

             HttpUtils.Response resp = Read(url);

             AtomFeed feed = Parse<AtomFeed>(resp.Stream);

+            string lastChangeLogToken = null;

 

             // handle top level

             foreach (AtomElement element in feed.GetElements())

@@ -2712,6 +2713,10 @@
                 {

                     result.NumItems = (long)element.Object;

                 }

+                else if (IsStr("changeLogToken", element))

+                {

+                    lastChangeLogToken = (string)element.Object;

+                }

             }

 

             // get the changes

@@ -2738,6 +2743,13 @@
                 }

             }

 

+            if (changeLogToken != null)

+            {

+                // the AtomPub binding cannot return a new change log token,

+                // but an OpenCMIS server uses a proprietary tag

+                changeLogToken = lastChangeLogToken;

+            }

+

             return result;

         }

     }