Mercurial > repos > IBBoard
annotate Xml/XmlResourceResolver.cs @ 116:07660ac09a5f
Merge heads, but keep de0ed24eb961/IBBoard
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Tue, 26 Jun 2012 20:09:01 +0100 |
parents | de0ed24eb961 7ca4acc659bb |
children | e53bf3356914 |
rev | line source |
---|---|
115
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
1 using System; |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
2 using System.Xml; |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
3 using System.Reflection; |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
4 using System.Collections.Generic; |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
5 using System.IO; |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
6 using System.Net; |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
7 |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
8 namespace IBBoard.Xml |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
9 { |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
10 public class XmlResourceResolver : XmlUrlResolver |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
11 { |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
12 private Assembly assm; |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
13 private Dictionary<string, string> relativeToUriMap = new Dictionary<string, string>(); |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
14 |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
15 public XmlResourceResolver(Assembly assembly) |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
16 { |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
17 assm = assembly; |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
18 } |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
19 |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
20 public void AddMapping(string relativeURI, string resourceName) |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
21 { |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
22 relativeToUriMap[relativeURI] = resourceName; |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
23 } |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
24 |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
25 public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn) |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
26 { |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
27 string absoluteUriString = absoluteUri.ToString(); |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
28 |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
29 if (relativeToUriMap.ContainsKey(absoluteUriString)) |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
30 { |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
31 string file = relativeToUriMap[absoluteUriString]; |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
32 Stream stream = assm.GetManifestResourceStream(file); |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
33 return stream; |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
34 } |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
35 |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
36 return base.GetEntity(absoluteUri, role, ofObjectToReturn); |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
37 } |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
38 } |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
39 } |
de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
40 |