added filename to AtomPub content request

git-svn-id: https://svn.apache.org/repos/asf/chemistry/dotcmis/trunk@1363791 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/DotCMIS/binding/atompub/atompub-writer.cs b/DotCMIS/binding/atompub/atompub-writer.cs
index e55add2..a3e828d 100644
--- a/DotCMIS/binding/atompub/atompub-writer.cs
+++ b/DotCMIS/binding/atompub/atompub-writer.cs
@@ -47,6 +47,7 @@
         public const string PrefixAtom = "atom";

         public const string PrefixCMIS = "cmis";

         public const string PrefixRestAtom = "cmisra";

+        public const string PrefixApacheChemistry = "chemistry";

     }

 

     internal class AtomEntryWriter

@@ -56,13 +57,14 @@
         private cmisObjectType cmisObject;

         private Stream stream;

         private string mediaType;

+        private string filename;

 

         public AtomEntryWriter(cmisObjectType cmisObject)

-            : this(cmisObject, null, null)

+            : this(cmisObject, null, null, null)

         {

         }

 

-        public AtomEntryWriter(cmisObjectType cmisObject, string mediaType, Stream stream)

+        public AtomEntryWriter(cmisObjectType cmisObject, string mediaType, string filename, Stream stream)

         {

             if (cmisObject == null || cmisObject.properties == null)

             {

@@ -76,6 +78,7 @@
 

             this.cmisObject = cmisObject;

             this.mediaType = mediaType;

+            this.filename = filename;

             this.stream = stream;

         }

 

@@ -94,6 +97,10 @@
                 writer.WriteAttributeString("xmlns", AtomWriter.PrefixAtom, null, AtomPubConstants.NamespaceAtom);

                 writer.WriteAttributeString("xmlns", AtomWriter.PrefixCMIS, null, AtomPubConstants.NamespaceCMIS);

                 writer.WriteAttributeString("xmlns", AtomWriter.PrefixRestAtom, null, AtomPubConstants.NamespaceRestAtom);

+                if (filename != null)

+                {

+                    writer.WriteAttributeString("xmlns", AtomWriter.PrefixApacheChemistry, null, AtomPubConstants.NamespaceApacheChemistry);

+                }

 

                 // atom:id

                 writer.WriteStartElement(AtomWriter.PrefixAtom, AtomPubConstants.TagAtomId, AtomPubConstants.NamespaceAtom);

@@ -119,6 +126,13 @@
                     writer.WriteString(mediaType);

                     writer.WriteEndElement();

 

+                    if (filename != null)

+                    {

+                        writer.WriteStartElement(AtomWriter.PrefixApacheChemistry, AtomPubConstants.TagContentFilename, AtomPubConstants.NamespaceApacheChemistry);

+                        writer.WriteString(filename);

+                        writer.WriteEndElement();

+                    }

+

                     writer.WriteStartElement(AtomWriter.PrefixRestAtom, AtomPubConstants.TagContentBase64, AtomPubConstants.NamespaceRestAtom);

                     WriteContent(writer);

                     writer.WriteEndElement();

diff --git a/DotCMIS/binding/atompub/atompub.cs b/DotCMIS/binding/atompub/atompub.cs
index a80adce..35ff66f 100644
--- a/DotCMIS/binding/atompub/atompub.cs
+++ b/DotCMIS/binding/atompub/atompub.cs
@@ -1517,16 +1517,18 @@
             cmisObject.properties = Converter.Convert(properties);

             cmisObject.policyIds = Converter.ConvertPolicies(policies);

 

-            String mediaType = null;

+            string mediaType = null;

             Stream stream = null;

+            string filename = null;

 

             if (contentStream != null)

             {

                 mediaType = contentStream.MimeType;

                 stream = contentStream.Stream;

+                filename = contentStream.FileName;

             }

 

-            AtomEntryWriter entryWriter = new AtomEntryWriter(cmisObject, mediaType, stream);

+            AtomEntryWriter entryWriter = new AtomEntryWriter(cmisObject, mediaType, filename, stream);

 

             // post the new folder object

             HttpUtils.Response resp = Post(url, AtomPubConstants.MediatypeEntry, new HttpUtils.Output(entryWriter.Write));

@@ -2231,14 +2233,16 @@
 

             string mediaType = null;

             Stream stream = null;

+            string filename = null;

 

             if (contentStream != null)

             {

                 mediaType = contentStream.MimeType;

                 stream = contentStream.Stream;

+                filename = contentStream.FileName;

             }

 

-            AtomEntryWriter entryWriter = new AtomEntryWriter(cmisObject, mediaType, stream);

+            AtomEntryWriter entryWriter = new AtomEntryWriter(cmisObject, mediaType, filename, stream);

 

             // update

             HttpUtils.Response resp = Put(url, AtomPubConstants.MediatypeEntry, new HttpUtils.Output(entryWriter.Write));

diff --git a/DotCMIS/const.cs b/DotCMIS/const.cs
index 1ee822d..e79d196 100644
--- a/DotCMIS/const.cs
+++ b/DotCMIS/const.cs
@@ -219,6 +219,7 @@
         public const string NamespaceAPP = "http://www.w3.org/2007/app";

         public const string NamespaceRestAtom = "http://docs.oasis-open.org/ns/cmis/restatom/200908/";

         public const string NamespaceXSI = "http://www.w3.org/2001/XMLSchema-instance";

+        public const string NamespaceApacheChemistry = "http://chemistry.apache.org/";

 

         // media types

         public const string MediatypeService = "application/atomsvc+xml";

@@ -353,6 +354,7 @@
         public const string TagContent = "content";

         public const string TagContentMediatype = "mediatype";

         public const string TagContentBase64 = "base64";

+        public const string TagContentFilename = "filename";

 

         // allowable actions

         public const string TagAllowableActions = "allowableActions";