diff options
author | Atsushi Eno <atsushieno@gmail.com> | 2009-01-22 16:40:32 +0300 |
---|---|---|
committer | Atsushi Eno <atsushieno@gmail.com> | 2009-01-22 16:40:32 +0300 |
commit | 00fb04d6fdd35b7385cbdbbc206e5a055ad39bf3 (patch) | |
tree | 003fefb42b225c616f61cd179473ab4416ffef34 | |
parent | cd94cd2e94681f3a28b0219bc29a7a1f7c4a4163 (diff) |
2009-01-22 Atsushi Enomoto <atsushi@ximian.com>
* 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
-rw-r--r-- | mcs/class/System.XML/ChangeLog | 4 | ||||
-rw-r--r-- | mcs/class/System.XML/System.Xml/ChangeLog | 5 | ||||
-rw-r--r-- | mcs/class/System.XML/System.Xml/XmlReaderSettings.cs | 6 | ||||
-rw-r--r-- | mcs/class/System.XML/System.Xml/XmlXapResolver.cs | 56 | ||||
-rw-r--r-- | mcs/class/System.XML/net_2_1_raw_System.Xml.dll.sources | 1 |
5 files changed, 70 insertions, 2 deletions
diff --git a/mcs/class/System.XML/ChangeLog b/mcs/class/System.XML/ChangeLog index 7da1de9ac27..c53f59bc455 100644 --- a/mcs/class/System.XML/ChangeLog +++ b/mcs/class/System.XML/ChangeLog @@ -1,3 +1,7 @@ +2009-01-22 Atsushi Enomoto <atsushi@ximian.com> + + * net_2_1_raw_System.Xml.dll.sources: added XmlXapResolver.cs. + 2009-01-14 Sebastien Pouliot <sebastien@ximian.com> * net_2_1_raw_System.Xml.dll.sources: Add NamespaceHandling diff --git a/mcs/class/System.XML/System.Xml/ChangeLog b/mcs/class/System.XML/System.Xml/ChangeLog index 3807976d01f..35e71177490 100644 --- a/mcs/class/System.XML/System.Xml/ChangeLog +++ b/mcs/class/System.XML/System.Xml/ChangeLog @@ -1,3 +1,8 @@ +2009-01-22 Atsushi Enomoto <atsushi@ximian.com> + + * XmlXapResolver.cs : new in 2.1. + * XmlReaderSettings.cs : use above. + 2009-01-20 Atsushi Enomoto <atsushi@ximian.com> * XmlDocumentNavigator.cs : in some corner cases an attribute diff --git a/mcs/class/System.XML/System.Xml/XmlReaderSettings.cs b/mcs/class/System.XML/System.Xml/XmlReaderSettings.cs index a24c85b28bb..98009c57125 100644 --- a/mcs/class/System.XML/System.Xml/XmlReaderSettings.cs +++ b/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 { diff --git a/mcs/class/System.XML/System.Xml/XmlXapResolver.cs b/mcs/class/System.XML/System.Xml/XmlXapResolver.cs new file mode 100644 index 00000000000..7b7527bcc78 --- /dev/null +++ b/mcs/class/System.XML/System.Xml/XmlXapResolver.cs @@ -0,0 +1,56 @@ +// +// XmlXapResolver.cs +// +// Author: +// Atsushi Enomoto (atsushi@ximian.com) +// +// (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); + } + } + } +} diff --git a/mcs/class/System.XML/net_2_1_raw_System.Xml.dll.sources b/mcs/class/System.XML/net_2_1_raw_System.Xml.dll.sources index c76bed60983..ca414e0ec27 100644 --- a/mcs/class/System.XML/net_2_1_raw_System.Xml.dll.sources +++ b/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 |