aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorDr Scofield2009-05-18 09:34:30 +0000
committerDr Scofield2009-05-18 09:34:30 +0000
commit2ad8710e190b7543989cdb96a5268d21d2b5cefb (patch)
tree1ebf5e7463f04201459ff2fcd8f81b32a23d6ab2 /OpenSim
parentThank you kindly, StrawberryFride, for a patch that: (diff)
downloadopensim-SC-2ad8710e190b7543989cdb96a5268d21d2b5cefb.zip
opensim-SC-2ad8710e190b7543989cdb96a5268d21d2b5cefb.tar.gz
opensim-SC-2ad8710e190b7543989cdb96a5268d21d2b5cefb.tar.bz2
opensim-SC-2ad8710e190b7543989cdb96a5268d21d2b5cefb.tar.xz
fixing XmlWriter problem
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs53
-rw-r--r--OpenSim/ApplicationPlugins/Rest/Regions/GETRegionInfoHandler.cs86
-rw-r--r--OpenSim/ApplicationPlugins/Rest/Regions/POSTHandler.cs14
-rw-r--r--OpenSim/ApplicationPlugins/Rest/RestPlugin.cs54
-rw-r--r--OpenSim/ApplicationPlugins/Rest/RestXmlWriter.cs16
5 files changed, 124 insertions, 99 deletions
diff --git a/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs b/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs
index 3fc7c06..ced3e5c 100644
--- a/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs
+++ b/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs
@@ -65,29 +65,33 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
65 65
66 public string GetHandlerRegions(OSHttpResponse httpResponse) 66 public string GetHandlerRegions(OSHttpResponse httpResponse)
67 { 67 {
68 XmlWriter.WriteStartElement(String.Empty, "regions", String.Empty); 68 RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
69
70 rxw.WriteStartElement(String.Empty, "regions", String.Empty);
69 foreach (Scene s in App.SceneManager.Scenes) 71 foreach (Scene s in App.SceneManager.Scenes)
70 { 72 {
71 XmlWriter.WriteStartElement(String.Empty, "uuid", String.Empty); 73 rxw.WriteStartElement(String.Empty, "uuid", String.Empty);
72 XmlWriter.WriteString(s.RegionInfo.RegionID.ToString()); 74 rxw.WriteString(s.RegionInfo.RegionID.ToString());
73 XmlWriter.WriteEndElement(); 75 rxw.WriteEndElement();
74 } 76 }
75 XmlWriter.WriteEndElement(); 77 rxw.WriteEndElement();
76 78
77 return XmlWriterResult; 79 return rxw.ToString();
78 } 80 }
79 81
80 protected string ShortRegionInfo(string key, string value) 82 protected string ShortRegionInfo(string key, string value)
81 { 83 {
84 RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
85
82 if (String.IsNullOrEmpty(value) || 86 if (String.IsNullOrEmpty(value) ||
83 String.IsNullOrEmpty(key)) return null; 87 String.IsNullOrEmpty(key)) return null;
84 88
85 XmlWriter.WriteStartElement(String.Empty, "region", String.Empty); 89 rxw.WriteStartElement(String.Empty, "region", String.Empty);
86 XmlWriter.WriteStartElement(String.Empty, key, String.Empty); 90 rxw.WriteStartElement(String.Empty, key, String.Empty);
87 XmlWriter.WriteString(value); 91 rxw.WriteString(value);
88 XmlWriter.WriteEndDocument(); 92 rxw.WriteEndDocument();
89 93
90 return XmlWriterResult; 94 return rxw.ToString();
91 } 95 }
92 96
93 public string GetHandlerRegion(OSHttpResponse httpResponse, string param) 97 public string GetHandlerRegion(OSHttpResponse httpResponse, string param)
@@ -114,9 +118,10 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
114 if (1 == comps.Length) 118 if (1 == comps.Length)
115 { 119 {
116 // complete region details requested 120 // complete region details requested
121 RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
117 XmlSerializer xs = new XmlSerializer(typeof(RegionDetails)); 122 XmlSerializer xs = new XmlSerializer(typeof(RegionDetails));
118 xs.Serialize(XmlWriter, details, _xmlNs); 123 xs.Serialize(rxw, details, _xmlNs);
119 return XmlWriterResult; 124 return rxw.ToString();
120 } 125 }
121 126
122 if (2 == comps.Length) 127 if (2 == comps.Length)
@@ -185,20 +190,22 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
185 int users = scene.GetAvatars().Count; 190 int users = scene.GetAvatars().Count;
186 int objects = scene.Entities.Count - users; 191 int objects = scene.Entities.Count - users;
187 192
188 XmlWriter.WriteStartElement(String.Empty, "region", String.Empty); 193 RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
189 XmlWriter.WriteStartElement(String.Empty, "stats", String.Empty); 194
195 rxw.WriteStartElement(String.Empty, "region", String.Empty);
196 rxw.WriteStartElement(String.Empty, "stats", String.Empty);
190 197
191 XmlWriter.WriteStartElement(String.Empty, "users", String.Empty); 198 rxw.WriteStartElement(String.Empty, "users", String.Empty);
192 XmlWriter.WriteString(users.ToString()); 199 rxw.WriteString(users.ToString());
193 XmlWriter.WriteEndElement(); 200 rxw.WriteEndElement();
194 201
195 XmlWriter.WriteStartElement(String.Empty, "objects", String.Empty); 202 rxw.WriteStartElement(String.Empty, "objects", String.Empty);
196 XmlWriter.WriteString(objects.ToString()); 203 rxw.WriteString(objects.ToString());
197 XmlWriter.WriteEndElement(); 204 rxw.WriteEndElement();
198 205
199 XmlWriter.WriteEndDocument(); 206 rxw.WriteEndDocument();
200 207
201 return XmlWriterResult; 208 return rxw.ToString();
202 } 209 }
203 210
204 protected string RegionPrims(OSHttpResponse httpResponse, Scene scene, Vector3 min, Vector3 max) 211 protected string RegionPrims(OSHttpResponse httpResponse, Scene scene, Vector3 min, Vector3 max)
diff --git a/OpenSim/ApplicationPlugins/Rest/Regions/GETRegionInfoHandler.cs b/OpenSim/ApplicationPlugins/Rest/Regions/GETRegionInfoHandler.cs
index b49c5e9..5f83885 100644
--- a/OpenSim/ApplicationPlugins/Rest/Regions/GETRegionInfoHandler.cs
+++ b/OpenSim/ApplicationPlugins/Rest/Regions/GETRegionInfoHandler.cs
@@ -66,78 +66,78 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
66 66
67 public string GetRegionInfoHandlerRegions(OSHttpResponse httpResponse) 67 public string GetRegionInfoHandlerRegions(OSHttpResponse httpResponse)
68 { 68 {
69 RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
70
69 // regions info 71 // regions info
70 XmlWriter.WriteStartElement(String.Empty, "regions", String.Empty); 72 rxw.WriteStartElement(String.Empty, "regions", String.Empty);
71 { 73 {
72 // regions info: number of regions 74 // regions info: number of regions
73 XmlWriter.WriteStartAttribute(String.Empty, "number", String.Empty); 75 rxw.WriteStartAttribute(String.Empty, "number", String.Empty);
74 XmlWriter.WriteValue(App.SceneManager.Scenes.Count); 76 rxw.WriteValue(App.SceneManager.Scenes.Count);
75 XmlWriter.WriteEndAttribute(); 77 rxw.WriteEndAttribute();
76 78
77 // regions info: max number of regions 79 // regions info: max number of regions
78 XmlWriter.WriteStartAttribute(String.Empty, "max", String.Empty); 80 rxw.WriteStartAttribute(String.Empty, "max", String.Empty);
79 if (App.ConfigSource.Source.Configs["RemoteAdmin"] != null) 81 if (App.ConfigSource.Source.Configs["RemoteAdmin"] != null)
80 { 82 {
81 XmlWriter.WriteValue(App.ConfigSource.Source.Configs["RemoteAdmin"].GetInt("region_limit", -1)); 83 rxw.WriteValue(App.ConfigSource.Source.Configs["RemoteAdmin"].GetInt("region_limit", -1));
82 } 84 }
83 else 85 else
84 { 86 {
85 XmlWriter.WriteValue(-1); 87 rxw.WriteValue(-1);
86 } 88 }
87 XmlWriter.WriteEndAttribute(); 89 rxw.WriteEndAttribute();
88 90
89 // regions info: region 91 // regions info: region
90 foreach (Scene s in App.SceneManager.Scenes) 92 foreach (Scene s in App.SceneManager.Scenes)
91 { 93 {
92 XmlWriter.WriteStartElement(String.Empty, "region", String.Empty); 94 rxw.WriteStartElement(String.Empty, "region", String.Empty);
93 95
94 XmlWriter.WriteStartAttribute(String.Empty, "uuid", String.Empty); 96 rxw.WriteStartAttribute(String.Empty, "uuid", String.Empty);
95 XmlWriter.WriteString(s.RegionInfo.RegionID.ToString()); 97 rxw.WriteString(s.RegionInfo.RegionID.ToString());
96 XmlWriter.WriteEndAttribute(); 98 rxw.WriteEndAttribute();
97 99
98 XmlWriter.WriteStartAttribute(String.Empty, "name", String.Empty); 100 rxw.WriteStartAttribute(String.Empty, "name", String.Empty);
99 XmlWriter.WriteString(s.RegionInfo.RegionName); 101 rxw.WriteString(s.RegionInfo.RegionName);
100 XmlWriter.WriteEndAttribute(); 102 rxw.WriteEndAttribute();
101 103
102 XmlWriter.WriteStartAttribute(String.Empty, "x", String.Empty); 104 rxw.WriteStartAttribute(String.Empty, "x", String.Empty);
103 XmlWriter.WriteValue(s.RegionInfo.RegionLocX); 105 rxw.WriteValue(s.RegionInfo.RegionLocX);
104 XmlWriter.WriteEndAttribute(); 106 rxw.WriteEndAttribute();
105 107
106 XmlWriter.WriteStartAttribute(String.Empty, "y", String.Empty); 108 rxw.WriteStartAttribute(String.Empty, "y", String.Empty);
107 XmlWriter.WriteValue(s.RegionInfo.RegionLocY); 109 rxw.WriteValue(s.RegionInfo.RegionLocY);
108 XmlWriter.WriteEndAttribute(); 110 rxw.WriteEndAttribute();
109 111
110 XmlWriter.WriteStartAttribute(String.Empty, "external_hostname", String.Empty); 112 rxw.WriteStartAttribute(String.Empty, "external_hostname", String.Empty);
111 XmlWriter.WriteString(s.RegionInfo.ExternalHostName); 113 rxw.WriteString(s.RegionInfo.ExternalHostName);
112 XmlWriter.WriteEndAttribute(); 114 rxw.WriteEndAttribute();
113 115
114 XmlWriter.WriteStartAttribute(String.Empty, "master_name", String.Empty); 116 rxw.WriteStartAttribute(String.Empty, "master_name", String.Empty);
115 XmlWriter.WriteString(String.Format("{0} {1}", s.RegionInfo.MasterAvatarFirstName, s.RegionInfo.MasterAvatarLastName)); 117 rxw.WriteString(String.Format("{0} {1}", s.RegionInfo.MasterAvatarFirstName, s.RegionInfo.MasterAvatarLastName));
116 XmlWriter.WriteEndAttribute(); 118 rxw.WriteEndAttribute();
117 119
118 XmlWriter.WriteStartAttribute(String.Empty, "master_uuid", String.Empty); 120 rxw.WriteStartAttribute(String.Empty, "master_uuid", String.Empty);
119 XmlWriter.WriteString(s.RegionInfo.MasterAvatarAssignedUUID.ToString()); 121 rxw.WriteString(s.RegionInfo.MasterAvatarAssignedUUID.ToString());
120 XmlWriter.WriteEndAttribute(); 122 rxw.WriteEndAttribute();
121 123
122 XmlWriter.WriteStartAttribute(String.Empty, "ip", String.Empty); 124 rxw.WriteStartAttribute(String.Empty, "ip", String.Empty);
123 XmlWriter.WriteString(s.RegionInfo.InternalEndPoint.ToString()); 125 rxw.WriteString(s.RegionInfo.InternalEndPoint.ToString());
124 XmlWriter.WriteEndAttribute(); 126 rxw.WriteEndAttribute();
125 127
126 int users = s.GetAvatars().Count; 128 int users = s.GetAvatars().Count;
127 XmlWriter.WriteStartAttribute(String.Empty, "avatars", String.Empty); 129 rxw.WriteStartAttribute(String.Empty, "avatars", String.Empty);
128 XmlWriter.WriteValue(users); 130 rxw.WriteValue(users);
129 XmlWriter.WriteEndAttribute(); 131 rxw.WriteEndAttribute();
130 132
131 XmlWriter.WriteStartAttribute(String.Empty, "objects", String.Empty); 133 rxw.WriteStartAttribute(String.Empty, "objects", String.Empty);
132 XmlWriter.WriteValue(s.Entities.Count - users); 134 rxw.WriteValue(s.Entities.Count - users);
133 XmlWriter.WriteEndAttribute(); 135 rxw.WriteEndAttribute();
134 136
135 XmlWriter.WriteEndElement(); 137 rxw.WriteEndElement();
136 } 138 }
137 } 139 }
138 XmlWriter.WriteEndElement(); 140 return rxw.ToString();
139
140 return XmlWriterResult;
141 } 141 }
142 #endregion GET methods 142 #endregion GET methods
143 } 143 }
diff --git a/OpenSim/ApplicationPlugins/Rest/Regions/POSTHandler.cs b/OpenSim/ApplicationPlugins/Rest/Regions/POSTHandler.cs
index 4b8bb5c..58cb102 100644
--- a/OpenSim/ApplicationPlugins/Rest/Regions/POSTHandler.cs
+++ b/OpenSim/ApplicationPlugins/Rest/Regions/POSTHandler.cs
@@ -94,16 +94,18 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
94 94
95 public string CreateRegion(OSHttpRequest request, OSHttpResponse response) 95 public string CreateRegion(OSHttpRequest request, OSHttpResponse response)
96 { 96 {
97 XmlWriter.WriteStartElement(String.Empty, "regions", String.Empty); 97 RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
98
99 rxw.WriteStartElement(String.Empty, "regions", String.Empty);
98 foreach (Scene s in App.SceneManager.Scenes) 100 foreach (Scene s in App.SceneManager.Scenes)
99 { 101 {
100 XmlWriter.WriteStartElement(String.Empty, "uuid", String.Empty); 102 rxw.WriteStartElement(String.Empty, "uuid", String.Empty);
101 XmlWriter.WriteString(s.RegionInfo.RegionID.ToString()); 103 rxw.WriteString(s.RegionInfo.RegionID.ToString());
102 XmlWriter.WriteEndElement(); 104 rxw.WriteEndElement();
103 } 105 }
104 XmlWriter.WriteEndElement(); 106 rxw.WriteEndElement();
105 107
106 return XmlWriterResult; 108 return rxw.ToString();
107 } 109 }
108 110
109 public string LoadPrims(string requestBody, OSHttpRequest request, OSHttpResponse response, Scene scene) 111 public string LoadPrims(string requestBody, OSHttpRequest request, OSHttpResponse response, Scene scene)
diff --git a/OpenSim/ApplicationPlugins/Rest/RestPlugin.cs b/OpenSim/ApplicationPlugins/Rest/RestPlugin.cs
index 8af1276..514ecd4 100644
--- a/OpenSim/ApplicationPlugins/Rest/RestPlugin.cs
+++ b/OpenSim/ApplicationPlugins/Rest/RestPlugin.cs
@@ -53,8 +53,8 @@ namespace OpenSim.ApplicationPlugins.Rest
53 private string _prefix; // URL prefix below 53 private string _prefix; // URL prefix below
54 // which all REST URLs 54 // which all REST URLs
55 // are living 55 // are living
56 private StringWriter _sw = null; 56 // private StringWriter _sw = null;
57 private RestXmlWriter _xw = null; 57 // private RestXmlWriter _xw = null;
58 58
59 private string _godkey; 59 private string _godkey;
60 private int _reqk; 60 private int _reqk;
@@ -149,31 +149,31 @@ namespace OpenSim.ApplicationPlugins.Rest
149 /// </summary> 149 /// </summary>
150 public abstract string ConfigName { get; } 150 public abstract string ConfigName { get; }
151 151
152 public XmlTextWriter XmlWriter 152 // public XmlTextWriter XmlWriter
153 { 153 // {
154 get 154 // get
155 { 155 // {
156 if (null == _xw) 156 // if (null == _xw)
157 { 157 // {
158 _sw = new StringWriter(); 158 // _sw = new StringWriter();
159 _xw = new RestXmlWriter(_sw); 159 // _xw = new RestXmlWriter(_sw);
160 _xw.Formatting = Formatting.Indented; 160 // _xw.Formatting = Formatting.Indented;
161 } 161 // }
162 return _xw; 162 // return _xw;
163 } 163 // }
164 } 164 // }
165 165
166 public string XmlWriterResult 166 // public string XmlWriterResult
167 { 167 // {
168 get 168 // get
169 { 169 // {
170 _xw.Flush(); 170 // _xw.Flush();
171 _xw.Close(); 171 // _xw.Close();
172 _xw = null; 172 // _xw = null;
173 173
174 return _sw.ToString(); 174 // return _sw.ToString();
175 } 175 // }
176 } 176 // }
177 177
178 #endregion properties 178 #endregion properties
179 179
diff --git a/OpenSim/ApplicationPlugins/Rest/RestXmlWriter.cs b/OpenSim/ApplicationPlugins/Rest/RestXmlWriter.cs
index da37647..9a1047c 100644
--- a/OpenSim/ApplicationPlugins/Rest/RestXmlWriter.cs
+++ b/OpenSim/ApplicationPlugins/Rest/RestXmlWriter.cs
@@ -33,6 +33,14 @@ namespace OpenSim.ApplicationPlugins.Rest
33{ 33{
34 public class RestXmlWriter: XmlTextWriter 34 public class RestXmlWriter: XmlTextWriter
35 { 35 {
36 private StringWriter m_sw = null;
37
38 public RestXmlWriter(StringWriter sw) : base(sw)
39 {
40 m_sw = sw;
41 Formatting = Formatting.Indented;
42 }
43
36 public RestXmlWriter(TextWriter textWriter) : base(textWriter) 44 public RestXmlWriter(TextWriter textWriter) : base(textWriter)
37 { 45 {
38 } 46 }
@@ -52,5 +60,13 @@ namespace OpenSim.ApplicationPlugins.Rest
52 public override void WriteStartDocument(bool standalone) 60 public override void WriteStartDocument(bool standalone)
53 { 61 {
54 } 62 }
63
64 public override string ToString()
65 {
66 WriteEndElement();
67 Flush();
68 Close();
69 return m_sw.ToString();
70 }
55 } 71 }
56} 72}