2006-11-13 Michael Meeks <michael.meeks@novell.com>
authorAtsushi Eno <atsushieno@gmail.com>
Tue, 14 Nov 2006 01:25:47 +0000 (01:25 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Tue, 14 Nov 2006 01:25:47 +0000 (01:25 -0000)
* XmlReader.cs, XmlTextReader.cs, XmlTextReader2.cs:
pass the XmlResolver through to the GetStream impl.

2006-11-13  Atsushi Enomoto <atsushi@ximian.com>

* XmlReaderSettingsTests.cs : added custom resolver case for primary
  XML stream (custom resolver is indeed used and here it should cause
  error).

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

mcs/class/System.XML/System.Xml/ChangeLog
mcs/class/System.XML/System.Xml/XmlReader.cs
mcs/class/System.XML/System.Xml/XmlTextReader.cs
mcs/class/System.XML/System.Xml/XmlTextReader2.cs
mcs/class/System.XML/Test/System.Xml/ChangeLog
mcs/class/System.XML/Test/System.Xml/XmlReaderSettingsTests.cs

index 9618ab651c62df42aea8fd93690e9e462fc7e7c6..ad2f206e93661675a4b9f9fdd3ff7fc447699a8c 100644 (file)
@@ -1,3 +1,8 @@
+2006-11-13  Michael Meeks  <michael.meeks@novell.com>
+
+       * XmlReader.cs, XmlTextReader.cs, XmlTextReader2.cs:
+       pass the XmlResolver through to the GetStream impl.
+
 2006-10-30  Atsushi Enomoto <atsushi@ximian.com>
 
        * XmlTextReader2.cs : if DTD does not exist, do not try to resolve
index 1fc3dbea6b35509d1a688d689e4ab13120b518b6..90f6cbe22bcf6aa1721a0afa90558e9b024af693 100644 (file)
@@ -310,7 +310,7 @@ namespace System.Xml
                        settings = PopulateSettings (settings);
                        if (context == null)
                                context = PopulateParserContext (settings, url);
-                       XmlTextReader xtr = new XmlTextReader (true, url, GetNodeType (settings), context);
+                       XmlTextReader xtr = new XmlTextReader (false, settings.XmlResolver, url, GetNodeType (settings), context);
                        XmlReader ret = CreateCustomizedTextReader (xtr, settings);
                        xtr.CloseInput = true;
                        return xtr;
index 13fd16ba3c4e4b53c1ed0e74bc6b88e085b10b91..4ed0ded2c96b54e0a2eba132d1cecc4c7c9b44c7 100644 (file)
@@ -127,8 +127,12 @@ namespace System.Xml
 
                // This is used in XmlReader.Create() to indicate that string
                // argument is uri, not an xml fragment.
-               internal XmlTextReader (bool dummy, string url, XmlNodeType fragType, XmlParserContext context)
+               internal XmlTextReader (bool dummy, XmlResolver resolver, string url, XmlNodeType fragType, XmlParserContext context)
                {
+                       if (resolver == null)
+                               resolver = new XmlUrlResolver ();
+
+                       this.XmlResolver = resolver;
                        string uriString;
                        Stream stream = GetStreamFromUrl (url, out uriString);
                        this.InitializeContext (uriString, context, new XmlStreamReader (stream), fragType);
index 803898249eec0b706e9a526137f1531e895c0ff9..3a53d887e095b09c83555a9e0a545782cf1f3622 100644 (file)
@@ -129,9 +129,9 @@ namespace System.Xml
                        source = new XmlTextReaderImpl (baseURI, xmlFragment, fragType, context);
                }
 
-               internal XmlTextReader (bool dummy, string url, XmlNodeType fragType, XmlParserContext context)
+               internal XmlTextReader (bool dummy, XmlResolver resolver, string url, XmlNodeType fragType, XmlParserContext context)
                {
-                       source = new XmlTextReaderImpl (dummy, url, fragType, context);
+                       source = new XmlTextReaderImpl (dummy, resolver, url, fragType, context);
                }
 
                private XmlTextReader (XmlTextReaderImpl entityContainer, bool insideAttribute)
index 2e73d30a6dd3e710cbc797cc600cf0bfa3198d8c..d1b136642496a840720031003dfe4361c72d43c8 100644 (file)
@@ -1,3 +1,9 @@
+2006-11-13  Atsushi Enomoto <atsushi@ximian.com>
+
+       * XmlReaderSettingsTests.cs : added custom resolver case for primary
+         XML stream (custom resolver is indeed used and here it should cause
+         error).
+
 2006-11-13  Atsushi Enomoto <atsushi@ximian.com>
 
        * XmlReaderSettingsTests.cs : added NullResolver() case.
index 4e190fae6ad67f8422e253ea625d08cd1e25bb52..95bd44fcfa3b1a17c93ee093e234ca8a9fa0f9b0 100644 (file)
@@ -10,6 +10,7 @@
 #if NET_2_0
 using System;
 using System.IO;
+using System.Net;
 using System.Text;
 using System.Xml;
 using System.Xml.Schema;
@@ -317,6 +318,30 @@ namespace MonoTests.System.Xml
                                        xr.Read ();
                        }
                }
+
+               class ThrowExceptionResolver : XmlResolver
+               {
+                       public override ICredentials Credentials {
+                               set { }
+                       }
+
+                       public override object GetEntity (Uri uri, string type, Type expected)
+                       {
+                               throw new ApplicationException ("error");
+                       }
+               }
+
+               [Test]
+               [ExpectedException (typeof (ApplicationException))]
+               public void CustomResolverUsedForXmlStream ()
+               {
+                       XmlReaderSettings settings = new XmlReaderSettings ();
+                       settings.XmlResolver = new ThrowExceptionResolver ();
+                       using (XmlReader xr = XmlReader.Create ("Test/XmlFiles/simple.xml", settings)) {
+                               while (!xr.EOF)
+                                       xr.Read ();
+                       }
+               }
        }
 }
 #endif