2007-01-25 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Thu, 25 Jan 2007 18:46:31 +0000 (18:46 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Thu, 25 Jan 2007 18:46:31 +0000 (18:46 -0000)
* System.Web.Services_test.dll.sources: added TypeTypeConverter.cs.

* TypeTypeConverter.cs :
  New internal stuff, TypeConverter for a type name.
* SoapExtensionTypeElement.cs :
  For Type property, use above. Part of #80619 fix.

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

mcs/class/System.Web.Services/ChangeLog
mcs/class/System.Web.Services/System.Web.Services.Configuration/ChangeLog
mcs/class/System.Web.Services/System.Web.Services.Configuration/SoapExtensionTypeElement.cs
mcs/class/System.Web.Services/System.Web.Services.Configuration/TypeTypeConverter.cs [new file with mode: 0644]
mcs/class/System.Web.Services/System.Web.Services.dll.sources

index 99de25980a1de918d6afff8f1c445abf8a8ec2b2..29916c10f560992fbd6ee02366155724df248062 100644 (file)
@@ -1,3 +1,7 @@
+2007-01-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * System.Web.Services_test.dll.sources: added TypeTypeConverter.cs.
+
 2007-01-19  Atsushi Enomoto  <atsushi@ximian.com>
 
        * System.Web.Services_test.dll.sources:
index 1598dc32e6a7deb328182ae1f88ed354b99cc166..120558af9e495c9142bd0e036100a542d8dd7630 100644 (file)
@@ -1,3 +1,10 @@
+2007-01-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * TypeTypeConverter.cs :
+         New internal stuff, TypeConverter for a type name.
+       * SoapExtensionTypeElement.cs :
+         For Type property, use above. Part of #80619 fix.
+
 2006-12-14  Atsushi Enomoto  <atsushi@ximian.com>
 
        * SoapExtensionTypeElement.cs : another config property fix.
index f91ab261cfa8b2110dfc751412deffdcfe9b205d..a8dec3771f5161139aaec2c5721b9932a3a6dabd 100644 (file)
@@ -3,8 +3,9 @@
 //
 // Authors:
 //     Chris Toshok (toshok@ximian.com)
+//     Atsushi Enomoto (atsushi@ximian.com)
 //
-// (C) 2006 Novell, Inc (http://www.novell.com)
+// (C) 2006-2007 Novell, Inc (http://www.novell.com)
 //
 
 //
@@ -31,6 +32,8 @@
 using System;
 using System.Configuration;
 using System.ComponentModel;
+using System.Globalization;
+using System.Security.Permissions;
 
 #if NET_2_0
 
@@ -49,8 +52,9 @@ namespace System.Web.Services.Configuration {
                        priorityProp = new ConfigurationProperty ("priority", typeof (int), 0,
                                                                  new Int32Converter(), new IntegerValidator (0, Int32.MaxValue),
                                                                  ConfigurationPropertyOptions.IsKey);
-                       typeProp = new ConfigurationProperty ("type", typeof (Type), null,
-                                                             null, null, ConfigurationPropertyOptions.IsKey);
+                       typeProp = new ConfigurationProperty ("type", typeof (Type), String.Empty,
+                                                             new TypeTypeConverter (),
+                                                             null, ConfigurationPropertyOptions.IsKey);
                        properties = new ConfigurationPropertyCollection ();
 
                        properties.Add (groupProp);
@@ -89,7 +93,7 @@ namespace System.Web.Services.Configuration {
                        set { base[priorityProp] = value; }
                }
 
-               [TypeConverter]
+               [TypeConverter (typeof (TypeTypeConverter))]
                [ConfigurationProperty ("type", Options = ConfigurationPropertyOptions.IsKey)]
                public Type Type {
                        get { return (Type) base [typeProp];}
@@ -106,7 +110,6 @@ namespace System.Web.Services.Configuration {
                }
 
        }
-
 }
 
 #endif
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Configuration/TypeTypeConverter.cs b/mcs/class/System.Web.Services/System.Web.Services.Configuration/TypeTypeConverter.cs
new file mode 100644 (file)
index 0000000..ef32367
--- /dev/null
@@ -0,0 +1,82 @@
+//
+// TypeTypeConverter.cs
+//
+// Author:
+//     Atsushi Enomoto (atsushi@ximian.com)
+//
+// (C) 2007 Novell, Inc (http://www.novell.com)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Configuration;
+using System.ComponentModel;
+using System.Globalization;
+using System.Security.Permissions;
+
+#if NET_2_0
+
+namespace System.Web.Services.Configuration
+{
+       internal class TypeTypeConverter : TypeConverter
+       {
+               public override bool CanConvertFrom (ITypeDescriptorContext context, Type type)
+               {
+                       return type == typeof (Type) || type == typeof (string);
+               }
+
+               public override bool CanConvertTo (ITypeDescriptorContext context, Type type)
+               {
+                       return type == typeof (Type) || type == typeof (string);
+               }
+
+               public override object ConvertFrom (ITypeDescriptorContext context, CultureInfo culture, object value)
+               {
+                       if (value == null)
+                               throw new ArgumentNullException ("value");
+                       if (value is Type)
+                               return (Type) value;
+                       else if (value is string)
+                               return Type.GetType ((string) value);
+                       else
+                               throw new ArgumentException (String.Format ("Incompatible input value type: {0}", value.GetType ()));
+               }
+
+               public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
+               {
+                       if (value == null)
+                               throw new ArgumentNullException ("value");
+                       if (destinationType == null)
+                               throw new ArgumentNullException ("destinationType");
+                       if (destinationType == typeof (Type))
+                               return (Type) value;
+                       if (destinationType == typeof (string))
+                               return ((Type) value).AssemblyQualifiedName;
+                       else
+                               throw new ArgumentException (String.Format ("Incompatible input destination type: {0}", destinationType));
+               }
+       }
+}
+
+#endif
+
index cb746947e694da80074dbcef185400b084094fd9..960c3b994a48683baeff64e9e971eda94c3435ac 100644 (file)
@@ -17,6 +17,7 @@ System.Web.Services.Configuration/SoapExtensionTypeElement.cs
 System.Web.Services.Configuration/SoapExtensionTypeElementCollection.cs
 System.Web.Services.Configuration/TypeElement.cs
 System.Web.Services.Configuration/TypeElementCollection.cs
+System.Web.Services.Configuration/TypeTypeConverter.cs
 System.Web.Services.Configuration/WebServicesConfigurationSectionHandler.cs
 System.Web.Services.Configuration/WebServiceProtocols.cs
 System.Web.Services.Configuration/WebServicesSection.cs