[Mono-bugs] [Bug 56510][Blo] Changed - XmlDataDocument loading stream bug

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Tue, 6 Apr 2004 20:26:38 -0400 (EDT)


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by yom@iaelu.net.

http://bugzilla.ximian.com/show_bug.cgi?id=56510

--- shadow/56510	2004-04-05 17:42:59.000000000 -0400
+++ shadow/56510.tmp.21138	2004-04-06 20:26:38.000000000 -0400
@@ -1,15 +1,15 @@
 Bug#: 56510
 Product: Mono: Class Libraries
 Version: unspecified
-OS: 
+OS: GNU/Linux [Other]
 OS Details: 
 Status: NEW   
 Resolution: 
-Severity: 
-Priority: Wishlist
+Severity: Unknown
+Priority: Blocker
 Component: Sys.XML
 AssignedTo: mono-bugs@ximian.com                            
 ReportedBy: yom@iaelu.net               
 QAContact: mono-bugs@ximian.com
 TargetMilestone: ---
 URL: 
@@ -120,6 +120,156 @@
       <status>1</status>
     </site>
   </sites>
 </server>
 
 ###### XML FILE ENDS HERE ######
+
+------- Additional Comments From yom@iaelu.net  2004-04-06 20:26 -------
+Description of Problem:
+Some problems occure when i try to load a xml file from a stream. For now,
+the main test on which i could get this error was when i was trying to
+load
+a stream to a XmlDataDocument, using a HttpResponse stream.
+But after a simple bug test with just a StreamReader and a XmlDataDocument
+i could get the same error.
+
+
+Steps to reproduce the problem:
+here is a code sample which would normally bug
+test.xml is a simple xml file, you can take whatever xml file you want or
+create one. my xml file contains data i'm using for another
+application but
+using another method to load it.
+
+###### CODE FROM HERE ######
+
+using System;
+using System.IO;
+using System.Data;
+using System.Xml;
+
+class MainClass
+{
+	public static void Main(string[] args)
+	{
+		StreamReader sr = new StreamReader("test.xml");
+		XmlDataDocument xdd = new XmlDataDocument();
+		
+		xdd.Load(sr);
+	}
+}
+
+###### CODE ENDS HERE ######
+
+Actual Results:
+result is clearly a crash from the little console application :
+
+###### RESULT FROM HERE ######
+
+$ mono StreamXmlBug.exe
+ 
+Unhandled Exception: System.ArgumentException: The path is not of a
+legal form
+Parameter name: path
+in <0x000ab> System.IO.Path:GetFullPath (string)
+in <0x000f0> System.Xml.XmlResolver:ResolveUri (System.Uri,string)
+in <0x000f8> System.Xml.XmlTextReader:.ctor
+(string,System.Xml.XmlNameTable)
+in <0x00037> System.Xml.XmlTextReader:.ctor (string)
+in <0x0010a> System.Xml.XmlDataDocument:Load (System.Xml.XmlReader)
+in <0x0003b> System.Xml.XmlDataDocument:Load (System.IO.TextReader)
+in <0x0005c> MainClass:Main (string[])
+
+###### RESULT ENDS HERE ######
+
+Expected Results:
+Expected result is that the xml file should be loaded into the
+XmlDataDocument object.
+
+
+How often does this happen? 
+For now, this is happening all the time, even if i try to open the
+StreamReader using the correct encoding, let's say utf-8.
+
+
+Additional Information:
+Loading a xml file from a XmlTextReader object with a XmlDataDocument
+object is working perfectly and it is working all the time, with the exact
+same xml file
+Here is a sample code :
+
+###### SAMPLE CODE FROM HERE ######
+
+using System;
+using System.Data;
+using System.IO;
+using System.Xml;
+
+class MainClass
+{
+	public static void Main(string[] args)
+	{
+		XmlTextReader xtr = new XmlTextReader("test.xml");
+		XmlDataDocument xdd = new XmlDataDocument();
+		
+		xdd.Load(xtr);
+	}
+}
+
+###### SAMPLE CODE ENDS HERE ######
+
+If you are looking for a quick xml file, here is also a sample :
+
+###### XML FILE FROM HERE ######
+
+<?xml version="1.0" encoding="utf-8"?>
+<server>
+  <conf>/opt/apache2/conf/httpd.conf</conf>
+  <status>1</status>
+  <sites>
+    <site name="Site">
+      <alias>alias</alias>
+      <path>path</path>
+      <status>1</status>
+    </site>
+  </sites>
+</server>
+
+###### XML FILE ENDS HERE ######
+
+
+* * * Additional Comments * * *
+
+
+Just changed the priority because it's blocking if someone has got to
+developp an application which get a stream(file) from a server with a
+cookie based authentication, or even for a credential authentication.
+
+For now, i've been looking the code and tried a few things on the
+XmlDataDocument source code.
+Basically, you cannot call in the XmlDataDocument:Load method a
+XmlTextReader just to get a copy in memory, this is a waste of time
+for the case the developper is already using a XmlTextReader in his
+application to load his XmlDataDocument.. just imagine that you are
+loading 2 times data for an operation that requires only once the data.
+
+so...
+##### XmlDataDocument:Load #####
+...
+XmlTextReader textReader = new XmlTextReader(reader.BaseUri);
+...
+##### XmlDataDocument:Load #####
+
+No way.. just comment that thing. And instead of that, you can move up
+the base.Load(textReader) and change it to this :
+
+##### XmlDataDocument:Load #####
+
+//XmlTextReader textReader = new XmlTextReader(reader.BaseUri);
+base.Load(reader);
+
+##### XmlDataDocument:Load #####
+
+i've been changing this localy on the 0.31 release inside
+mcs/class/System.Data/System.Xml and after some test, it's working now
+for both the XmlTextReader and Stream object.