2008-07-01 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / class / System.Web.Services / System.Web.Services.Protocols / SoapExtension.cs
index bbd0b4c07b81ea7797367c96fb5ac3d19d3718a4..43af540d90331caa365d1d354a53c09916745842 100644 (file)
@@ -1,11 +1,11 @@
-// \r
-// System.Web.Services.Protocols.SoapExtension.cs\r
-//\r
-// Author:\r
-//   Tim Coleman (tim@timcoleman.com)\r
-//\r
-// Copyright (C) Tim Coleman, 2002\r
-//\r
+// 
+// System.Web.Services.Protocols.SoapExtension.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-\r
-using System.IO;\r
-using System.Collections;\r
-using System.Web.Services.Configuration;\r
-\r
-namespace System.Web.Services.Protocols {\r
-       public abstract class SoapExtension {\r
-\r
-               #region Fields\r
-\r
-               Stream stream;\r
-\r
-               #endregion\r
-\r
-               #region Constructors\r
-\r
-               protected SoapExtension ()\r
-               {\r
-               }\r
-\r
-               #endregion // Constructors\r
-\r
-               #region Methods\r
-\r
-               public virtual Stream ChainStream (Stream stream)\r
-               {\r
-                       return stream;\r
-               }\r
-\r
-               public abstract object GetInitializer (Type serviceType);\r
-               public abstract object GetInitializer (LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute);\r
-               public abstract void Initialize (object initializer);\r
-               public abstract void ProcessMessage (SoapMessage message);\r
-\r
-\r
+
+using System.IO;
+using System.Collections;
+using System.Web.Services.Configuration;
+
+namespace System.Web.Services.Protocols {
+       public abstract class SoapExtension {
+
+               #region Fields
+
+               Stream stream;
+
+               #endregion
+
+               #region Constructors
+
+               protected SoapExtension ()
+               {
+               }
+
+               #endregion // Constructors
+
+               #region Methods
+
+               public virtual Stream ChainStream (Stream stream)
+               {
+                       return stream;
+               }
+
+               public abstract object GetInitializer (Type serviceType);
+               public abstract object GetInitializer (LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute);
+               public abstract void Initialize (object initializer);
+               public abstract void ProcessMessage (SoapMessage message);
+
+
 #if !TARGET_JVM
-               static ArrayList[] globalExtensions;\r
+               static ArrayList[] globalExtensions;
 #else
                static ArrayList[] globalExtensions {
                        get {
@@ -74,159 +74,159 @@ namespace System.Web.Services.Protocols {
                        }
                }
 #endif
-\r
-               internal static SoapExtension[] CreateExtensionChain (SoapExtensionRuntimeConfig[] extensionConfigs)\r
-               {\r
-                       if (extensionConfigs == null) return null;\r
-                       SoapExtension[] res = new SoapExtension [extensionConfigs.Length];\r
-                       CreateExtensionChain (extensionConfigs, res, 0);\r
-                       return res;\r
-               }\r
-\r
-               internal static SoapExtension[] CreateExtensionChain (SoapExtensionRuntimeConfig[] hiPrioExts, SoapExtensionRuntimeConfig[] medPrioExts, SoapExtensionRuntimeConfig[] lowPrioExts)\r
-               {\r
-                       int len = 0;\r
-                       if (hiPrioExts != null) len += hiPrioExts.Length;\r
-                       if (medPrioExts != null) len += medPrioExts.Length;\r
-                       if (lowPrioExts != null) len += lowPrioExts.Length;\r
-                       if (len == 0) return null;\r
-\r
-                       SoapExtension[] res = new SoapExtension [len];\r
-                       int pos = 0;\r
-                       if (hiPrioExts != null) pos = CreateExtensionChain (hiPrioExts, res, pos);\r
-                       if (medPrioExts != null) pos = CreateExtensionChain (medPrioExts, res, pos);\r
-                       if (lowPrioExts != null) pos = CreateExtensionChain (lowPrioExts, res, pos);\r
-                       return res;\r
-               }\r
-\r
-               static int CreateExtensionChain (SoapExtensionRuntimeConfig[] extensionConfigs, SoapExtension[] destArray, int pos)\r
-               {\r
-                       for (int n=0; n<extensionConfigs.Length; n++)\r
-                       {\r
-                               SoapExtensionRuntimeConfig econf = extensionConfigs [n];\r
-                               SoapExtension ext = (SoapExtension) Activator.CreateInstance (econf.Type);\r
-                               ext.Initialize (econf.InitializationInfo);\r
-                               destArray [pos++] = ext;\r
-                       }\r
-                       return pos;\r
-               }\r
-\r
-               static void InitializeGlobalExtensions ()\r
-               {\r
-                       globalExtensions = new ArrayList[2];\r
-                       \r
+
+               internal static SoapExtension[] CreateExtensionChain (SoapExtensionRuntimeConfig[] extensionConfigs)
+               {
+                       if (extensionConfigs == null) return null;
+                       SoapExtension[] res = new SoapExtension [extensionConfigs.Length];
+                       CreateExtensionChain (extensionConfigs, res, 0);
+                       return res;
+               }
+
+               internal static SoapExtension[] CreateExtensionChain (SoapExtensionRuntimeConfig[] hiPrioExts, SoapExtensionRuntimeConfig[] medPrioExts, SoapExtensionRuntimeConfig[] lowPrioExts)
+               {
+                       int len = 0;
+                       if (hiPrioExts != null) len += hiPrioExts.Length;
+                       if (medPrioExts != null) len += medPrioExts.Length;
+                       if (lowPrioExts != null) len += lowPrioExts.Length;
+                       if (len == 0) return null;
+
+                       SoapExtension[] res = new SoapExtension [len];
+                       int pos = 0;
+                       if (hiPrioExts != null) pos = CreateExtensionChain (hiPrioExts, res, pos);
+                       if (medPrioExts != null) pos = CreateExtensionChain (medPrioExts, res, pos);
+                       if (lowPrioExts != null) pos = CreateExtensionChain (lowPrioExts, res, pos);
+                       return res;
+               }
+
+               static int CreateExtensionChain (SoapExtensionRuntimeConfig[] extensionConfigs, SoapExtension[] destArray, int pos)
+               {
+                       for (int n=0; n<extensionConfigs.Length; n++)
+                       {
+                               SoapExtensionRuntimeConfig econf = extensionConfigs [n];
+                               SoapExtension ext = (SoapExtension) Activator.CreateInstance (econf.Type);
+                               ext.Initialize (econf.InitializationInfo);
+                               destArray [pos++] = ext;
+                       }
+                       return pos;
+               }
+
+               static void InitializeGlobalExtensions ()
+               {
+                       globalExtensions = new ArrayList[2];
+                       
 #if NET_2_0
-                       SoapExtensionTypeElementCollection exts = WebServicesSection.Instance.SoapExtensionTypes;\r
+                       SoapExtensionTypeElementCollection exts = WebServicesSection.Current.SoapExtensionTypes;
 #else
-                       ArrayList exts = WSConfig.Instance.ExtensionTypes;\r
-                       if (exts == null) return;\r
+                       ArrayList exts = WSConfig.Instance.ExtensionTypes;
+                       if (exts == null) return;
 #endif
-\r
+
 #if NET_2_0
-                       foreach (SoapExtensionTypeElement econf in exts)\r
+                       foreach (SoapExtensionTypeElement econf in exts)
 #else
-                       foreach (WSExtensionConfig econf in exts)\r
+                       foreach (WSExtensionConfig econf in exts)
 #endif
-                       {\r
-                               if (globalExtensions [(int)econf.Group] == null) globalExtensions [(int)econf.Group] = new ArrayList ();\r
-                               ArrayList destList = globalExtensions [(int) econf.Group];\r
-                               bool added = false;\r
-                               for (int n=0; n<destList.Count && !added; n++)\r
+                       {
+                               if (globalExtensions [(int)econf.Group] == null) globalExtensions [(int)econf.Group] = new ArrayList ();
+                               ArrayList destList = globalExtensions [(int) econf.Group];
+                               bool added = false;
+                               for (int n=0; n<destList.Count && !added; n++)
 #if NET_2_0
-                                       if (((SoapExtensionTypeElement)destList [n]).Priority > econf.Priority) {\r
+                                       if (((SoapExtensionTypeElement)destList [n]).Priority > econf.Priority) {
 #else
-                                       if (((WSExtensionConfig)destList [n]).Priority > econf.Priority) {\r
+                                       if (((WSExtensionConfig)destList [n]).Priority > econf.Priority) {
 #endif
-                                               destList.Insert (n, econf);\r
-                                               added = true;\r
-                                       }\r
-                               if (!added) destList.Add (econf);\r
-                       }\r
-               }\r
-\r
-               internal static SoapExtensionRuntimeConfig[][] GetTypeExtensions (Type serviceType)\r
-               {\r
-                       if (globalExtensions == null) InitializeGlobalExtensions();\r
-                       \r
-                       SoapExtensionRuntimeConfig[][] exts = new SoapExtensionRuntimeConfig[2][];\r
-\r
-                       for (int group = 0; group < 2; group++)\r
-                       {\r
-                               ArrayList globList = globalExtensions[group];\r
-                               if (globList == null) continue;\r
-                               exts [group] = new SoapExtensionRuntimeConfig [globList.Count];\r
-                               for (int n=0; n<globList.Count; n++)\r
-                               {\r
+                                               destList.Insert (n, econf);
+                                               added = true;
+                                       }
+                               if (!added) destList.Add (econf);
+                       }
+               }
+
+               internal static SoapExtensionRuntimeConfig[][] GetTypeExtensions (Type serviceType)
+               {
+                       if (globalExtensions == null) InitializeGlobalExtensions();
+                       
+                       SoapExtensionRuntimeConfig[][] exts = new SoapExtensionRuntimeConfig[2][];
+
+                       for (int group = 0; group < 2; group++)
+                       {
+                               ArrayList globList = globalExtensions[group];
+                               if (globList == null) continue;
+                               exts [group] = new SoapExtensionRuntimeConfig [globList.Count];
+                               for (int n=0; n<globList.Count; n++)
+                               {
 #if NET_2_0
-                                       SoapExtensionTypeElement econf = (SoapExtensionTypeElement) globList [n];\r
+                                       SoapExtensionTypeElement econf = (SoapExtensionTypeElement) globList [n];
 #else
-                                       WSExtensionConfig econf = (WSExtensionConfig) globList [n];\r
+                                       WSExtensionConfig econf = (WSExtensionConfig) globList [n];
 #endif
-                                       SoapExtensionRuntimeConfig typeconf = new SoapExtensionRuntimeConfig ();\r
-                                       typeconf.Type = econf.Type;\r
-                                       SoapExtension ext = (SoapExtension) Activator.CreateInstance (econf.Type);\r
-                                       typeconf.InitializationInfo = ext.GetInitializer (serviceType);\r
-                                       exts [group][n] = typeconf;\r
-                               }\r
-                       }\r
-                       return exts;\r
-               }\r
-\r
-               internal static SoapExtensionRuntimeConfig[] GetMethodExtensions (LogicalMethodInfo method)\r
-               {\r
-                       object[] ats = method.GetCustomAttributes (typeof (SoapExtensionAttribute));\r
-                       SoapExtensionRuntimeConfig[] exts = new SoapExtensionRuntimeConfig [ats.Length];\r
-                       int[] priorities = new int[ats.Length];\r
-\r
-                       for (int n=0; n<ats.Length; n++)\r
-                       {\r
-                               SoapExtensionAttribute at = (SoapExtensionAttribute) ats[n];\r
-                               SoapExtensionRuntimeConfig econf = new SoapExtensionRuntimeConfig ();\r
-                               econf.Type = at.ExtensionType;\r
-                               priorities [n] = at.Priority;\r
-                               SoapExtension ext = (SoapExtension) Activator.CreateInstance (econf.Type);\r
-                               econf.InitializationInfo = ext.GetInitializer (method, at);\r
-                               exts [n] = econf;\r
-                       }\r
-                       Array.Sort (priorities, exts);\r
-                       return exts;\r
-               }\r
-\r
-               internal static Stream ExecuteChainStream (SoapExtension[] extensions, Stream stream)\r
-               {\r
-                       if (extensions == null) return stream;\r
-\r
-                       Stream newStream = stream;\r
-                       foreach (SoapExtension ext in extensions)\r
-                               newStream = ext.ChainStream (newStream);\r
-                       return newStream;\r
-               }\r
-\r
-               internal static void ExecuteProcessMessage(SoapExtension[] extensions, SoapMessage message, Stream stream, bool inverseOrder) \r
-               {\r
-                       if (extensions == null) return;\r
-\r
-                       message.InternalStream = stream;\r
-\r
-                       if (inverseOrder)\r
-                       {\r
-                               for (int n = extensions.Length-1; n >= 0; n--)\r
-                                       extensions[n].ProcessMessage (message);\r
-                       }\r
-                       else\r
-                       {\r
-                               for (int n = 0; n < extensions.Length; n++)\r
-                                       extensions[n].ProcessMessage (message);\r
-                       }\r
+                                       SoapExtensionRuntimeConfig typeconf = new SoapExtensionRuntimeConfig ();
+                                       typeconf.Type = econf.Type;
+                                       SoapExtension ext = (SoapExtension) Activator.CreateInstance (econf.Type);
+                                       typeconf.InitializationInfo = ext.GetInitializer (serviceType);
+                                       exts [group][n] = typeconf;
+                               }
+                       }
+                       return exts;
+               }
+
+               internal static SoapExtensionRuntimeConfig[] GetMethodExtensions (LogicalMethodInfo method)
+               {
+                       object[] ats = method.GetCustomAttributes (typeof (SoapExtensionAttribute));
+                       SoapExtensionRuntimeConfig[] exts = new SoapExtensionRuntimeConfig [ats.Length];
+                       int[] priorities = new int[ats.Length];
+
+                       for (int n=0; n<ats.Length; n++)
+                       {
+                               SoapExtensionAttribute at = (SoapExtensionAttribute) ats[n];
+                               SoapExtensionRuntimeConfig econf = new SoapExtensionRuntimeConfig ();
+                               econf.Type = at.ExtensionType;
+                               priorities [n] = at.Priority;
+                               SoapExtension ext = (SoapExtension) Activator.CreateInstance (econf.Type);
+                               econf.InitializationInfo = ext.GetInitializer (method, at);
+                               exts [n] = econf;
+                       }
+                       Array.Sort (priorities, exts);
+                       return exts;
+               }
+
+               internal static Stream ExecuteChainStream (SoapExtension[] extensions, Stream stream)
+               {
+                       if (extensions == null) return stream;
+
+                       Stream newStream = stream;
+                       foreach (SoapExtension ext in extensions)
+                               newStream = ext.ChainStream (newStream);
+                       return newStream;
+               }
+
+               internal static void ExecuteProcessMessage(SoapExtension[] extensions, SoapMessage message, Stream stream, bool inverseOrder) 
+               {
+                       if (extensions == null) return;
+
+                       message.InternalStream = stream;
+
+                       if (inverseOrder)
+                       {
+                               for (int n = extensions.Length-1; n >= 0; n--)
+                                       extensions[n].ProcessMessage (message);
+                       }
+                       else
+                       {
+                               for (int n = 0; n < extensions.Length; n++)
+                                       extensions[n].ProcessMessage (message);
+                       }
                }
-\r
-               #endregion // Methods\r
-       }\r
-\r
-       internal class SoapExtensionRuntimeConfig\r
-       {\r
-               public Type Type;\r
-               public int Priority;\r
-               public object InitializationInfo;\r
-       }\r
+
+               #endregion // Methods
+       }
+
+       internal class SoapExtensionRuntimeConfig
+       {
+               public Type Type;
+               public int Priority;
+               public object InitializationInfo;
+       }
 }