2006-11-30 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Thu, 30 Nov 2006 13:47:48 +0000 (13:47 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Thu, 30 Nov 2006 13:47:48 +0000 (13:47 -0000)
* SoapHeaderMapping.cs : Now HeaderInfo became this type to implement
  this class. Remapped some members (e.g. IsUnknownHeader -> Custom).
* Methods.cs : so, split HeaderInfo from here.
* SoapMessage.cs : Added alias HeaderInfo to SoapHeaderMapping.
  Renamed some properties.

* SoapProtocolReflector.cs : Added alias HeaderInfo to
  SoapHeaderMapping. Renamed some properties.

svn path=/branches/atsushi/mcs/; revision=68741

mcs/class/System.Web.Services/System.Web.Services.Description/ChangeLog
mcs/class/System.Web.Services/System.Web.Services.Description/SoapProtocolReflector.cs
mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog
mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs
mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapHeaderMapping.cs
mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapMessage.cs

index 275460c56f19e622fd59ced8e4199202042491a4..375e0b544b612bbe061babfa327f8610e5e1ef33 100644 (file)
@@ -1,3 +1,8 @@
+2006-11-30  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SoapProtocolReflector.cs : Added alias HeaderInfo to
+         SoapHeaderMapping. Renamed some properties.
+
 2006-11-30  Atsushi Enomoto  <atsushi@ximian.com>
 
        * HttpSimpleProtocolReflector.cs : LogicalTypeInfo -> ServerType.
index 216c5a85e3365667ba109cbbb75ee5ddc01abd98..1d3e4766ef2db6da7b986f9b53445b45b9d991a5 100644 (file)
@@ -95,9 +95,9 @@ namespace System.Web.Services.Description {
                        AddOperationMsgBindings (method, OperationBinding.Input);
                        AddOperationMsgBindings (method, OperationBinding.Output);
 
-                       foreach (HeaderInfo hf in method.Headers)
+                       foreach (SoapHeaderMapping hf in method.Headers)
                        {
-                               if (hf.IsUnknownHeader) continue;
+                               if (hf.Custom) continue;
                                
                                Message msg = new Message ();
                                msg.Name = Operation.Name + hf.HeaderType.Name;
index 0b9c35e6b31667f043e14d0281e8c01755940318..ad091970e7be44f22a313cd639b8699c8221df5d 100644 (file)
@@ -1,3 +1,11 @@
+2006-11-30  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SoapHeaderMapping.cs : Now HeaderInfo became this type to implement
+         this class. Remapped some members (e.g. IsUnknownHeader -> Custom).
+       * Methods.cs : so, split HeaderInfo from here.
+       * SoapMessage.cs : Added alias HeaderInfo to SoapHeaderMapping.
+         Renamed some properties.
+
 2006-11-30  Atsushi Enomoto  <atsushi@ximian.com>
 
        * ServerType.cs : Now LogicalTypeInfo became this type to implement
index 905e8f81cb609191f4f85e6105d5830e3f8ce5cd..2e0639d3f097226e12b7c0a39fee62fdfdab8697 100644 (file)
@@ -29,6 +29,8 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using HeaderInfo = System.Web.Services.Protocols.SoapHeaderMapping;
+
 using System.Reflection;
 using System.Collections;
 using System.Xml;
@@ -223,7 +225,7 @@ namespace System.Web.Services.Protocols {
                                
                                HeaderInfo header = new HeaderInfo (mems[0], att);
                                allHeaderList.Add (header);
-                               if (!header.IsUnknownHeader) {
+                               if (!header.Custom) {
                                        if ((header.Direction & SoapHeaderDirection.In) != 0)
                                                inHeaderList.Add (header);
                                        if ((header.Direction & SoapHeaderDirection.Out) != 0)
@@ -427,64 +429,6 @@ namespace System.Web.Services.Protocols {
                }
        }
 
-       internal class HeaderInfo
-       {
-               internal MemberInfo Member;
-               internal SoapHeaderAttribute AttributeInfo;
-               internal Type HeaderType;
-               internal bool IsUnknownHeader;
-
-               public HeaderInfo (MemberInfo member, SoapHeaderAttribute attributeInfo)
-               {
-                       Member = member;
-                       AttributeInfo = attributeInfo;
-                       if (Member is PropertyInfo) HeaderType = ((PropertyInfo)Member).PropertyType;
-                       else HeaderType = ((FieldInfo)Member).FieldType;
-                       
-                       if (HeaderType == typeof(SoapHeader) || HeaderType == typeof(SoapUnknownHeader) ||
-                               HeaderType == typeof(SoapHeader[]) || HeaderType == typeof(SoapUnknownHeader[]))
-                       {
-                               IsUnknownHeader = true;
-                       }
-                       else if (!typeof(SoapHeader).IsAssignableFrom (HeaderType))
-                               throw new InvalidOperationException (string.Format ("Header members type must be a SoapHeader subclass"));
-               }
-               
-               public object GetHeaderValue (object ob)
-               {
-                       if (Member is PropertyInfo) return ((PropertyInfo)Member).GetValue (ob, null);
-                       else return ((FieldInfo)Member).GetValue (ob);
-               }
-
-               public void SetHeaderValue (object ob, SoapHeader header)
-               {
-                       object value = header;
-                       if (IsUnknownHeader && HeaderType.IsArray)
-                       {
-                               SoapUnknownHeader uheader = header as SoapUnknownHeader;
-                               SoapUnknownHeader[] array = (SoapUnknownHeader[]) GetHeaderValue (ob);
-                               if (array == null || array.Length == 0) {
-                                       value = new SoapUnknownHeader[] { uheader };
-                               }
-                               else {
-                                       SoapUnknownHeader[] newArray = new SoapUnknownHeader [array.Length+1];
-                                       Array.Copy (array, newArray, array.Length);
-                                       newArray [array.Length] = uheader;
-                                       value = newArray;
-                               }
-                       }
-                       
-                       if (Member is PropertyInfo) ((PropertyInfo)Member).SetValue (ob, value, null);
-                       else ((FieldInfo)Member).SetValue (ob, value);
-               }
-               
-               public SoapHeaderDirection Direction
-               {
-                       get { return AttributeInfo.Direction; }
-               }
-       }
-
-
        //
        // Holds the metadata loaded from the type stub, as well as
        // the metadata for all the methods in the type
index c169eec357063b86fe23d67b06c8a12036646234..2b1fe14bbce9998a6bd431167b4a83c68c8c3081 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System.Reflection;
 
 namespace System.Web.Services.Protocols
 {
-       public sealed class SoapHeaderMapping
+#if NET_2_0
+       public
+#else
+       internal
+#endif
+       sealed class SoapHeaderMapping
        {
-               internal SoapHeaderMapping ()
+               MemberInfo member;
+               Type header_type;
+               bool is_unknown_header;
+               SoapHeaderDirection direction;
+
+               internal SoapHeaderMapping (MemberInfo member, SoapHeaderAttribute attributeInfo)
+               {
+                       this.member = member;
+                       direction = attributeInfo.Direction;
+                       if (member is PropertyInfo)
+                               header_type = ((PropertyInfo) member).PropertyType;
+                       else
+                               header_type = ((FieldInfo) member).FieldType;
+                       
+                       if (HeaderType == typeof(SoapHeader) || HeaderType == typeof(SoapUnknownHeader) ||
+                               HeaderType == typeof(SoapHeader[]) || HeaderType == typeof(SoapUnknownHeader[]))
+                       {
+                               is_unknown_header = true;
+                       }
+                       else if (!typeof(SoapHeader).IsAssignableFrom (HeaderType))
+                               throw new InvalidOperationException (string.Format ("Header members type must be a SoapHeader subclass"));
+               }
+               
+               internal object GetHeaderValue (object ob)
                {
+                       if (member is PropertyInfo)
+                               return ((PropertyInfo) member).GetValue (ob, null);
+                       else
+                               return ((FieldInfo) member).GetValue (ob);
                }
 
-               [MonoTODO]
-               public bool Custom {
-                       get { throw new NotImplementedException (); }
+               internal void SetHeaderValue (object ob, SoapHeader header)
+               {
+                       object value = header;
+                       if (Custom && HeaderType.IsArray)
+                       {
+                               SoapUnknownHeader uheader = header as SoapUnknownHeader;
+                               SoapUnknownHeader[] array = (SoapUnknownHeader[]) GetHeaderValue (ob);
+                               if (array == null || array.Length == 0) {
+                                       value = new SoapUnknownHeader[] { uheader };
+                               }
+                               else {
+                                       SoapUnknownHeader[] newArray = new SoapUnknownHeader [array.Length+1];
+                                       Array.Copy (array, newArray, array.Length);
+                                       newArray [array.Length] = uheader;
+                                       value = newArray;
+                               }
+                       }
+                       
+                       if (member is PropertyInfo)
+                               ((PropertyInfo) member).SetValue (ob, value, null);
+                       else
+                               ((FieldInfo) member).SetValue (ob, value);
+               }
+               
+               public SoapHeaderDirection Direction
+               {
+                       get { return direction; }
                }
 
-               [MonoTODO]
-               public SoapHeaderDirection Direction {
-                       get { throw new NotImplementedException (); }
+               public MemberInfo MemberInfo {
+                       get { return member; }
                }
 
-               [MonoTODO]
                public Type HeaderType {
-                       get { throw new NotImplementedException (); }
+                       get { return header_type; }
                }
 
-               [MonoTODO]
-               public MemberInfo MemberInfo {
-                       get { throw new NotImplementedException (); }
+               public bool Custom {
+                       get { return is_unknown_header; }
                }
 
                [MonoTODO]
@@ -65,6 +116,5 @@ namespace System.Web.Services.Protocols
                        get { throw new NotImplementedException (); }
                }
        }
-}
 
-#endif
+}
index eb03e61fd47948bfcb438b77b4fe81bfc7f6470a..c8959e436307abc3eb4d765cd017ee3ad7373750 100644 (file)
@@ -29,6 +29,8 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using HeaderInfo = System.Web.Services.Protocols.SoapHeaderMapping;
+
 using System.ComponentModel;
 using System.IO;
 using System.Web.Services;
@@ -206,7 +208,7 @@ namespace System.Web.Services.Protocols {
                        Headers.Clear ();
                        foreach (HeaderInfo hi in headers) 
                        {
-                               if ((hi.Direction & direction) != 0 && !hi.IsUnknownHeader
+                               if ((hi.Direction & direction) != 0 && !hi.Custom
                                {
                                        SoapHeader headerVal = hi.GetHeaderValue (target) as SoapHeader;
                                        if (headerVal != null)
@@ -222,7 +224,7 @@ namespace System.Web.Services.Protocols {
                                HeaderInfo hinfo = FindHeader (headersInfo, header.GetType ());
                                if (hinfo != null) {
                                        hinfo.SetHeaderValue (target, header);
-                                       header.DidUnderstand = !hinfo.IsUnknownHeader;
+                                       header.DidUnderstand = !hinfo.Custom;
                                }
                        }
                }
@@ -234,7 +236,7 @@ namespace System.Web.Services.Protocols {
                        foreach (HeaderInfo headerInfo in headersInfo) {
                                if (headerInfo.HeaderType == headerType)
                                        return headerInfo;
-                               else if (headerInfo.IsUnknownHeader
+                               else if (headerInfo.Custom
                                        unknownHeaderInfo = headerInfo;
                        }
                        return unknownHeaderInfo;