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