Revert previous XmlSerializerMessageContractImporter implementation.
authorAtsushi Eno <atsushi@ximian.com>
Wed, 11 May 2011 09:40:15 +0000 (18:40 +0900)
committerAtsushi Eno <atsushi@ximian.com>
Wed, 11 May 2011 09:40:15 +0000 (18:40 +0900)
XsdDataContractImporter is not XmlSerializer-based, while this class is.

mcs/class/System.ServiceModel/System.ServiceModel.Description/DataContractSerializerMessageContractImporter.cs
mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceContractGenerator.cs
mcs/class/System.ServiceModel/System.ServiceModel.Description/XmlSerializerMessageContractImporter.cs

index 69a42abe47feaae7d4746bcc9c5d291d3f774d0f..fac5ba1ef391f6d9fbca0e11b6dcf087903e5c5b 100644 (file)
@@ -45,68 +45,30 @@ namespace System.ServiceModel.Description
        public class DataContractSerializerMessageContractImporter
                : IWsdlImportExtension
        {
-               IWsdlImportExtension impl = new WsdlDataImportExtensionInternal ();
+               bool enabled = true;
 
-               public bool Enabled { get; set; }
+               public bool Enabled {
+                       get { return enabled; }
+                       set { enabled = value; }
+               }
 
                void IWsdlImportExtension.BeforeImport (
                        ServiceDescriptionCollection wsdlDocuments,
                        XmlSchemaSet xmlSchemas,
                        ICollection<XmlElement> policy)
                {
-                       if (wsdlDocuments == null)
-                               throw new ArgumentNullException ("wsdlDocuments");
-                       if (xmlSchemas == null)
-                               throw new ArgumentNullException ("xmlSchemas");
-
-                       if (!Enabled)
-                               return;
-
-                       impl.BeforeImport (wsdlDocuments, xmlSchemas, policy);
                }
 
                void IWsdlImportExtension.ImportContract (WsdlImporter importer,
                        WsdlContractConversionContext context)
                {
+                       if (!enabled)
+                               return;
+
                        if (importer == null)
                                throw new ArgumentNullException ("importer");
                        if (context == null)
                                throw new ArgumentNullException ("context");
-
-                       if (!Enabled)
-                               return;
-
-                       impl.ImportContract (importer, context);
-               }
-
-               void IWsdlImportExtension.ImportEndpoint (WsdlImporter importer,
-                       WsdlEndpointConversionContext context)
-               {
-               }
-       }
-
-       class WsdlDataImportExtensionInternal : IWsdlImportExtension
-       {
-               WsdlImporter importer;
-               WsdlContractConversionContext context;
-
-               XsdDataContractImporter dc_importer;
-
-               XmlSchemaSet schema_set_in_use;
-
-               public bool ImportXmlType { get; set; }
-
-               public void ImportEndpoint (WsdlImporter importer, WsdlEndpointConversionContext context)
-               {
-                       // not implemented? nothing to do?
-               }
-
-               public void BeforeImport (ServiceDescriptionCollection wsdlDocuments, XmlSchemaSet xmlSchemas, ICollection<XmlElement> policy)
-               {
-               }
-
-               public void ImportContract (WsdlImporter importer, WsdlContractConversionContext context)
-               {
                        if (this.importer != null || this.context != null)
                                throw new SystemException ("INTERNAL ERROR: unexpected recursion of ImportContract method call");
 
@@ -131,6 +93,13 @@ namespace System.ServiceModel.Description
                        }
                }
 
+               WsdlImporter importer;
+               WsdlContractConversionContext context;
+
+               XsdDataContractImporter dc_importer;
+
+               XmlSchemaSet schema_set_in_use;
+
                void DoImportContract ()
                {
                        PortType port_type = context.WsdlPortType;
@@ -205,15 +174,11 @@ namespace System.ServiceModel.Description
                                throw new Exception ("Could not resolve : " + qname.ToString ());
 
                        var ct = element.ElementSchemaType as XmlSchemaComplexType;
-                       MessagePartDescription part;
-                       if (ct == null) { // simple type
-                               if ((part = CreateMessagePart (element)) != null)
-                                       parts.Add (part);
-                       } else { // complex type
+                       if (ct == null) // simple type
+                               parts.Add (CreateMessagePart (element));
+                       else // complex type
                                foreach (var elem in GetElementsInParticle (ct.ContentTypeParticle))
-                                       if ((part = CreateMessagePart (elem)) != null)
-                                               parts.Add (part);
-                       }
+                                       parts.Add (CreateMessagePart (elem));
                }
 
                IEnumerable<XmlSchemaElement> GetElementsInParticle (XmlSchemaParticle p)
@@ -232,10 +197,6 @@ namespace System.ServiceModel.Description
                MessagePartDescription CreateMessagePart (XmlSchemaElement elem)
                {
                        var part = new MessagePartDescription (elem.QualifiedName.Name, elem.QualifiedName.Namespace);
-                       if (part.Importer != null) // already generated.
-                               return null;
-                       if (!dc_importer.CanImport (schema_set_in_use, elem))
-                               return null;
                        part.Importer = dc_importer;
                        var typeQName = dc_importer.Import (schema_set_in_use, elem);
                        part.CodeTypeReference = dc_importer.GetCodeTypeReference (typeQName);
@@ -314,5 +275,10 @@ namespace System.ServiceModel.Description
 
                        return null;
                }
+
+               void IWsdlImportExtension.ImportEndpoint (WsdlImporter importer,
+                       WsdlEndpointConversionContext context)
+               {
+               }
        }
 }
index ad287c8e0aa2ee18f4f9de07e3aa1d5008ba0735..6dae291cffbdef667fa8b9d388967b5716e952c1 100644 (file)
@@ -724,7 +724,7 @@ namespace System.ServiceModel.Description
                string GetCodeTypeName (QName mappedTypeName)
                {
                        if (mappedTypeName.Namespace == ms_arrays_ns)
-                               return WsdlDataImportExtensionInternal.GetCLRTypeName (mappedTypeName.Name.Substring ("ArrayOf".Length)) + "[]";
+                               return DataContractSerializerMessageContractImporter.GetCLRTypeName (mappedTypeName.Name.Substring ("ArrayOf".Length)) + "[]";
                        return mappedTypeName.Name;
                }
 
index ff903e7c531be75b7aadbec9f26e007db6e0e063..fe489d98f7e3c9476fda6ba4b1c0716232e6e440 100644 (file)
@@ -39,38 +39,16 @@ namespace System.ServiceModel.Description
        public class XmlSerializerMessageContractImporter
                : IWsdlImportExtension
        {
-               IWsdlImportExtension impl = new WsdlDataImportExtensionInternal () { ImportXmlType = true };
-
-               public bool Enabled { get; set; }
-
                void IWsdlImportExtension.BeforeImport (
                        ServiceDescriptionCollection wsdlDocuments,
                        XmlSchemaSet xmlSchemas,
                        ICollection<XmlElement> policy)
                {
-                       if (wsdlDocuments == null)
-                               throw new ArgumentNullException ("wsdlDocuments");
-                       if (xmlSchemas == null)
-                               throw new ArgumentNullException ("xmlSchemas");
-
-                       if (!Enabled)
-                               return;
-
-                       impl.BeforeImport (wsdlDocuments, xmlSchemas, policy);
                }
 
                void IWsdlImportExtension.ImportContract (WsdlImporter importer,
                        WsdlContractConversionContext context)
                {
-                       if (importer == null)
-                               throw new ArgumentNullException ("importer");
-                       if (context == null)
-                               throw new ArgumentNullException ("context");
-
-                       if (!Enabled)
-                               return;
-
-                       impl.ImportContract (importer, context);
                }
 
                void IWsdlImportExtension.ImportEndpoint (WsdlImporter importer,