2005-05-09 Lluis Sanchez Gual <lluis@novell.com>
authorLluis Sanchez <lluis@novell.com>
Mon, 9 May 2005 10:24:48 +0000 (10:24 -0000)
committerLluis Sanchez <lluis@novell.com>
Mon, 9 May 2005 10:24:48 +0000 (10:24 -0000)
* SoapReader.cs:
* SoapWriter.cs: Use InternalRemotingServices.GetCachedSoapAttribute to
get the name of the fields being serialized. Fixed some warnings.

svn path=/trunk/mcs/; revision=44260

mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/ChangeLog
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapReader.cs
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapWriter.cs

index eecabaa59c63533c8324ed6ff1aef7497d4960f9..8e2a2bd84165ca87d7eeb0dba8f6afeaf753d741 100644 (file)
@@ -1,3 +1,9 @@
+2005-05-09  Lluis Sanchez Gual <lluis@novell.com>
+
+       * SoapReader.cs:
+       * SoapWriter.cs: Use InternalRemotingServices.GetCachedSoapAttribute to
+       get the name of the fields being serialized. Fixed some warnings.
+
 2005-05-05  Lluis Sanchez Gual <lluis@novell.com>
 
        * SoapTypeMapper.cs: Added missing maps for primitive types and
index 13c623d06f9d128c491a5268ebcbd29a8fc03677..394d668310f56fc81144be143317c1576ab8dbae 100755 (executable)
@@ -36,6 +36,7 @@ using System.Collections;
 using System.Runtime.Remoting;\r
 using System.Runtime.Serialization;\r
 using System.Runtime.Remoting.Messaging;\r
+using System.Runtime.Remoting.Metadata;\r
 \r
 namespace System.Runtime.Serialization.Formatters.Soap {\r
        internal sealed class SoapReader {\r
@@ -739,8 +740,10 @@ namespace System.Runtime.Serialization.Formatters.Soap {
                        tm.MemberInfos = FormatterServices.GetSerializableMembers (type, _context);\r
                        \r
                        tm.Indices      = new Hashtable();\r
-                       for(int i = 0; i < tm.MemberInfos.Length; i++) \r
-                               tm.Indices.Add (tm.MemberInfos[i].Name, i);\r
+                       for(int i = 0; i < tm.MemberInfos.Length; i++) {\r
+                               SoapFieldAttribute at = (SoapFieldAttribute) InternalRemotingServices.GetCachedSoapAttribute (tm.MemberInfos[i]);\r
+                               tm.Indices [XmlConvert.EncodeLocalName (at.XmlElementName)] = i;\r
+                       }\r
                        \r
                        _fieldIndices[type] = tm;\r
                        return tm;\r
index 9cab0416153df3a6cab128700539cffe64a67933..41642771baa79240993202342a5e34ab7a97a6b6 100755 (executable)
@@ -32,6 +32,7 @@ using System.IO;
 using System.Reflection;\r
 using System.Collections;\r
 using System.Runtime.Remoting;\r
+using System.Runtime.Remoting.Metadata;\r
 using System.Runtime.Remoting.Messaging;\r
 using System.Runtime.Serialization;\r
 using System.Runtime.Serialization.Formatters;\r
@@ -74,12 +75,10 @@ namespace System.Runtime.Serialization.Formatters.Soap {
 \r
                private XmlTextWriter _xmlWriter;\r
                private Queue _objectQueue = new Queue();\r
-               private Hashtable _prefixTable = new Hashtable();\r
                private Hashtable _objectToIdTable = new Hashtable();\r
                private ISurrogateSelector _surrogateSelector;\r
                private SoapTypeMapper _mapper;\r
                private StreamingContext _context;\r
-               private ISoapMessage _soapMessage = null;\r
                private ObjectIDGenerator idGen = new ObjectIDGenerator();\r
                private FormatterAssemblyStyle _assemblyFormat = FormatterAssemblyStyle.Full;\r
                private FormatterTypeStyle _typeFormat = FormatterTypeStyle.TypesWhenNeeded;\r
@@ -103,7 +102,6 @@ namespace System.Runtime.Serialization.Formatters.Soap {
                        _xmlWriter.Formatting = Formatting.Indented;\r
                        _surrogateSelector = selector;\r
                        _context = context;\r
-                       _soapMessage = soapMessage;\r
 \r
                }\r
 \r
@@ -298,7 +296,6 @@ namespace System.Runtime.Serialization.Formatters.Soap {
                        Id(idGen.GetId(message, out firstTime));\r
 \r
                        string[] paramNames = message.ParamNames;\r
-                       Type[] paramTypes = message.ParamTypes;\r
                        object[] paramValues = message.ParamValues;\r
                        int length = (paramNames != null)?paramNames.Length:0;\r
                        for(int i = 0; i < length; i++) \r
@@ -380,18 +377,14 @@ namespace System.Runtime.Serialization.Formatters.Soap {
                        }\r
                        else\r
                        {\r
-                               MemberInfo[] memberInfos = \r
-                                       FormatterServices.GetSerializableMembers(currentType, _context);\r
-                               object[] objectData =\r
-                                       FormatterServices.GetObjectData(currentObject, memberInfos);\r
-//                             Array.Sort(memberInfos, objectData, this);\r
+                               MemberInfo[] memberInfos = FormatterServices.GetSerializableMembers(currentType, _context);\r
+                               object[] objectData = FormatterServices.GetObjectData(currentObject, memberInfos);\r
+                               \r
                                for(int i = 0; i < memberInfos.Length; i++) \r
                                {\r
-                                       FieldInfo fieldInfo = memberInfos[i] as FieldInfo;\r
-//                                     bool specifyEncoding = false;\r
-//                                     if(objectData[i] != null)\r
-//                                              specifyEncoding = (objectData[i].GetType() != fieldInfo.FieldType);\r
-                                       _xmlWriter.WriteStartElement(fieldInfo.Name);\r
+                                       FieldInfo fieldInfo = (FieldInfo) memberInfos[i];\r
+                                       SoapFieldAttribute at = (SoapFieldAttribute) InternalRemotingServices.GetCachedSoapAttribute (fieldInfo);\r
+                                       _xmlWriter.WriteStartElement (XmlConvert.EncodeLocalName (at.XmlElementName));\r
                                        SerializeComponent(\r
                                                objectData[i], \r
                                                IsEncodingNeeded(objectData[i], fieldInfo.FieldType));\r