Author: atsushi
Date: 2006-11-30 08:47:48 -0500 (Thu, 30 Nov 2006)
New Revision: 68741
Modified:
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Description/ChangeLog
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Description/SoapProtocolReflector.cs
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapHeaderMapping.cs
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapMessage.cs
Log:
2006-11-30 Atsushi Enomoto <[EMAIL PROTECTED]>
* 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.
Modified:
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Description/ChangeLog
===================================================================
---
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Description/ChangeLog
2006-11-30 11:37:50 UTC (rev 68740)
+++
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Description/ChangeLog
2006-11-30 13:47:48 UTC (rev 68741)
@@ -1,5 +1,10 @@
2006-11-30 Atsushi Enomoto <[EMAIL PROTECTED]>
+ * SoapProtocolReflector.cs : Added alias HeaderInfo to
+ SoapHeaderMapping. Renamed some properties.
+
+2006-11-30 Atsushi Enomoto <[EMAIL PROTECTED]>
+
* HttpSimpleProtocolReflector.cs : LogicalTypeInfo -> ServerType.
2006-11-30 Atsushi Enomoto <[EMAIL PROTECTED]>
Modified:
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Description/SoapProtocolReflector.cs
===================================================================
---
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Description/SoapProtocolReflector.cs
2006-11-30 11:37:50 UTC (rev 68740)
+++
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Description/SoapProtocolReflector.cs
2006-11-30 13:47:48 UTC (rev 68741)
@@ -95,9 +95,9 @@
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;
Modified:
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog
===================================================================
---
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog
2006-11-30 11:37:50 UTC (rev 68740)
+++
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog
2006-11-30 13:47:48 UTC (rev 68741)
@@ -1,5 +1,13 @@
2006-11-30 Atsushi Enomoto <[EMAIL PROTECTED]>
+ * 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 <[EMAIL PROTECTED]>
+
* ServerType.cs : Now LogicalTypeInfo became this type to implement
this class (and SoapTypeStubInfo to SoapServerType later).
* TypeStubManager.cs : so, split LogicalTypeInfo from here.
Modified:
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs
===================================================================
---
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs
2006-11-30 11:37:50 UTC (rev 68740)
+++
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs
2006-11-30 13:47:48 UTC (rev 68741)
@@ -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 @@
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 @@
}
}
- 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
Modified:
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapHeaderMapping.cs
===================================================================
---
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapHeaderMapping.cs
2006-11-30 11:37:50 UTC (rev 68740)
+++
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapHeaderMapping.cs
2006-11-30 13:47:48 UTC (rev 68741)
@@ -28,36 +28,87 @@
// 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 @@
get { throw new NotImplementedException (); }
}
}
+
}
-
-#endif
Modified:
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapMessage.cs
===================================================================
---
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapMessage.cs
2006-11-30 11:37:50 UTC (rev 68740)
+++
branches/atsushi/mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapMessage.cs
2006-11-30 13:47:48 UTC (rev 68741)
@@ -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 @@
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 @@
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 @@
foreach (HeaderInfo headerInfo in headersInfo) {
if (headerInfo.HeaderType == headerType)
return headerInfo;
- else if (headerInfo.IsUnknownHeader)
+ else if (headerInfo.Custom)
unknownHeaderInfo = headerInfo;
}
return unknownHeaderInfo;
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches