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