merge r67228-r67235, r67237, r67251 and r67256-67259 to trunk (they are
[mono.git] / mcs / class / System.XML / System.Xml.Serialization / XmlSchemaImporter.cs
index c78dafd59c6f4d3ad3562f6594cd0b59788857f9..6ebbd05e450f4c0056b6daf1a41539f945c910ab 100644 (file)
@@ -35,6 +35,10 @@ using System.CodeDom.Compiler;
 #endif\r
 using System.Xml.Schema;\r
 using System.Collections;\r
+#if NET_2_0 && CONFIGURATION_DEP\r
+using System.Configuration;\r
+using System.Xml.Serialization.Configuration;\r
+#endif\r
 \r
 namespace System.Xml.Serialization \r
 {\r
@@ -84,6 +88,8 @@ namespace System.Xml.Serialization
                {\r
                        this.schemas = schemas;\r
                        typeIdentifiers = new CodeIdentifiers ();\r
+\r
+                       InitializeExtensions ();\r
                }\r
 \r
                public XmlSchemaImporter (XmlSchemas schemas, CodeIdentifiers typeIdentifiers)\r
@@ -105,6 +111,8 @@ namespace System.Xml.Serialization
                        }\r
                        else\r
                                typeIdentifiers = new CodeIdentifiers ();\r
+\r
+                       InitializeExtensions ();\r
                }\r
 #endif\r
 \r
@@ -118,6 +126,8 @@ namespace System.Xml.Serialization
                        }\r
                        else\r
                                typeIdentifiers = new CodeIdentifiers ();\r
+\r
+                       InitializeExtensions ();\r
                }\r
                \r
 \r
@@ -126,6 +136,8 @@ namespace System.Xml.Serialization
                        this.typeIdentifiers = typeIdentifiers;\r
                        this.schemas = schemas;\r
                        this.options = options;\r
+\r
+                       InitializeExtensions ();\r
                }\r
 \r
                void InitSharedData (ImportContext context)\r
@@ -148,6 +160,19 @@ namespace System.Xml.Serialization
 \r
                #region Methods\r
 \r
+               void InitializeExtensions ()\r
+               {\r
+#if NET_2_0 && CONFIGURATION_DEP\r
+                       SerializationSectionGroup root = ConfigurationManager.GetSection ("system.xml.serialization") as SerializationSectionGroup;\r
+                       if (root == null)\r
+                               return;\r
+\r
+                       foreach (SchemaImporterExtensionElement element in\r
+                                root.SchemaImporterExtensions.SchemaImporterExtensions)\r
+                               Extensions.Add (element.Name, element.Type);\r
+#endif\r
+               }\r
+\r
                public XmlMembersMapping ImportAnyType (XmlQualifiedName typeName, string elementName)\r
                {\r
                        if (typeName == XmlQualifiedName.Empty)\r