Sfoglia il codice sorgente

2009-01-22 Atsushi Enomoto <[email protected]>

	* XmlXapResolver.cs : new in 2.1.
	* XmlReaderSettings.cs : use above.

	* net_2_1_raw_System.Xml.dll.sources: added XmlXapResolver.cs.


svn path=/trunk/mcs/; revision=124198
Atsushi Eno 17 anni fa
parent
commit
00fb04d6fd

+ 4 - 0
mcs/class/System.XML/ChangeLog

@@ -1,3 +1,7 @@
+2009-01-22  Atsushi Enomoto  <[email protected]>
+
+	* net_2_1_raw_System.Xml.dll.sources: added XmlXapResolver.cs.
+
 2009-01-14  Sebastien Pouliot  <[email protected]>
 
 	* net_2_1_raw_System.Xml.dll.sources: Add NamespaceHandling

+ 5 - 0
mcs/class/System.XML/System.Xml/ChangeLog

@@ -1,3 +1,8 @@
+2009-01-22  Atsushi Enomoto  <[email protected]>
+
+	* XmlXapResolver.cs : new in 2.1.
+	* XmlReaderSettings.cs : use above.
+
 2009-01-20  Atsushi Enomoto  <[email protected]>
 
 	* XmlDocumentNavigator.cs : in some corner cases an attribute

+ 4 - 2
mcs/class/System.XML/System.Xml/XmlReaderSettings.cs

@@ -90,15 +90,17 @@ namespace System.Xml
 			lineNumberOffset = 0;
 			linePositionOffset = 0;
 			prohibitDtd = true;
-#if !NET_2_1
+#if NET_2_1
+			xmlResolver = new XmlXapResolver ();
+#else
 			schemas = null;
 			schemasNeedsInitialization = true;
 			validationFlags =
 				XsValidationFlags.ProcessIdentityConstraints |
 				XsValidationFlags.AllowXmlAttributes;
 			validationType = ValidationType.None;
-#endif
 			xmlResolver = new XmlUrlResolver ();
+#endif
 		}
 
 		public bool CheckCharacters {

+ 56 - 0
mcs/class/System.XML/System.Xml/XmlXapResolver.cs

@@ -0,0 +1,56 @@
+//
+// XmlXapResolver.cs
+//
+// Author:
+//   Atsushi Enomoto ([email protected])
+//
+// (C) 2009 Novell Inc.
+//
+
+//
+// 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.IO;
+using System.Net;
+using System.Reflection;
+
+namespace System.Xml
+{
+	public class XmlXapResolver : XmlResolver
+	{
+		static readonly MethodInfo method = Type.GetType ("System.Windows.Application, System.Windows.dll").GetMethod ("GetResourceStream", new Type [0]);
+		static readonly PropertyInfo property = Type.GetType ("System.Windows.Resources, System.Windows.dll").GetProperty ("Stream");
+
+		// FIXME: remove this compromised part when this class got working
+		XmlUrlResolver url_resolver = new XmlUrlResolver ();
+
+		public override object GetEntity (Uri absoluteUri, string role, Type ofObjectToReturn)
+		{
+			try {
+				if (ofObjectToReturn != typeof (Stream))
+					throw new NotSupportedException (String.Format ("Not supported entity type '{0}'", ofObjectToReturn));
+				return property.GetValue (method.Invoke (null, new object [] {absoluteUri}), new object [0]);
+			} catch {
+				return url_resolver.GetEntity (absoluteUri, role, ofObjectToReturn);
+			}
+		}
+	}
+}

+ 1 - 0
mcs/class/System.XML/net_2_1_raw_System.Xml.dll.sources

@@ -58,6 +58,7 @@ System.Xml/XmlTokenizedType.cs
 System.Xml/XmlUrlResolver.cs
 System.Xml/XmlWriter.cs
 System.Xml/XmlWriterSettings.cs
+System.Xml/XmlXapResolver.cs
 System.Xml.Schema/XmlSchemaDatatype_2_1.cs
 System.Xml.Schema/XmlSchema_2_1.cs
 System.Xml.Schema/XmlSchemaObject_2_1.cs