Factor mono_get_exception_missing_field and mono_get_exception_missin… (#9282)
[mono-project.git] / mcs / class / System.Web.Services / System.Web.Services.Description / WebReferenceOptionsSerializer.cs
blob3e95ca1f556a6e732eb55d211a9357cae5379f16
1 using System;
2 using System.Xml;
3 using System.Xml.Schema;
4 using System.Xml.Serialization;
5 using System.Text;
6 using System.Collections;
7 using System.Globalization;
9 namespace System.Web.Services.Description
11 internal class WebReferenceOptionsReader : XmlSerializationReader
13 public object ReadRoot_WebReferenceOptions ()
15 Reader.MoveToContent();
16 if (Reader.LocalName != "webReferenceOptions" || Reader.NamespaceURI != "http://microsoft.com/webReference/")
17 throw CreateUnknownNodeException();
18 return ReadObject_webReferenceOptions (true, true);
21 public System.Web.Services.Description.WebReferenceOptions ReadObject_webReferenceOptions (bool isNullable, bool checkType)
23 System.Web.Services.Description.WebReferenceOptions ob = null;
24 if (isNullable && ReadNull()) return null;
26 if (checkType)
28 System.Xml.XmlQualifiedName t = GetXsiType();
29 if (t == null)
30 { }
31 else if (t.Name != "webReferenceOptions" || t.Namespace != "http://microsoft.com/webReference/")
32 throw CreateUnknownTypeException(t);
35 ob = new System.Web.Services.Description.WebReferenceOptions ();
37 Reader.MoveToElement();
39 ob.@CodeGenerationOptions = ((System.Xml.Serialization.CodeGenerationOptions) System.Xml.Serialization.CodeGenerationOptions.GenerateOldAsync);
40 ob.@Style = ((System.Web.Services.Description.ServiceDescriptionImportStyle) System.Web.Services.Description.ServiceDescriptionImportStyle.Client);
41 while (Reader.MoveToNextAttribute())
43 if (IsXmlnsAttribute (Reader.Name)) {
45 else {
46 UnknownNode (ob);
50 Reader.MoveToElement();
51 if (Reader.IsEmptyElement) {
52 Reader.Skip ();
53 return ob;
56 Reader.ReadStartElement();
57 Reader.MoveToContent();
59 bool b0=false, b1=false, b2=false, b3=false;
61 while (Reader.NodeType != System.Xml.XmlNodeType.EndElement)
63 if (Reader.NodeType == System.Xml.XmlNodeType.Element)
65 if (Reader.LocalName == "style" && Reader.NamespaceURI == "http://microsoft.com/webReference/" && !b2) {
66 b2 = true;
67 ob.@Style = GetEnumValue_ServiceDescriptionImportStyle (Reader.ReadElementString ());
69 else if (Reader.LocalName == "verbose" && Reader.NamespaceURI == "http://microsoft.com/webReference/" && !b3) {
70 b3 = true;
71 ob.@Verbose = XmlConvert.ToBoolean (Reader.ReadElementString ());
73 else if (Reader.LocalName == "codeGenerationOptions" && Reader.NamespaceURI == "http://microsoft.com/webReference/" && !b0) {
74 b0 = true;
75 ob.@CodeGenerationOptions = GetEnumValue_CodeGenerationOptions (Reader.ReadElementString ());
77 else if (Reader.LocalName == "schemaImporterExtensions" && Reader.NamespaceURI == "http://microsoft.com/webReference/" && !b1) {
78 if (((object)ob.@SchemaImporterExtensions) == null)
79 throw CreateReadOnlyCollectionException ("System.Collections.Specialized.StringCollection");
80 if (Reader.IsEmptyElement) {
81 Reader.Skip();
82 } else {
83 int n4 = 0;
84 Reader.ReadStartElement();
85 Reader.MoveToContent();
87 while (Reader.NodeType != System.Xml.XmlNodeType.EndElement)
89 if (Reader.NodeType == System.Xml.XmlNodeType.Element)
91 if (Reader.LocalName == "type" && Reader.NamespaceURI == "http://microsoft.com/webReference/") {
92 if (((object)ob.@SchemaImporterExtensions) == null)
93 throw CreateReadOnlyCollectionException ("System.Collections.Specialized.StringCollection");
94 ob.@SchemaImporterExtensions.Add (Reader.ReadElementString ());
95 n4++;
97 else UnknownNode (null);
99 else UnknownNode (null);
101 Reader.MoveToContent();
103 ReadEndElement();
105 b1 = true;
107 else {
108 UnknownNode (ob);
111 else
112 UnknownNode(ob);
114 Reader.MoveToContent();
117 ReadEndElement();
119 return ob;
122 public System.Web.Services.Description.ServiceDescriptionImportStyle ReadObject_ServiceDescriptionImportStyle (bool isNullable, bool checkType)
124 Reader.ReadStartElement ();
125 System.Web.Services.Description.ServiceDescriptionImportStyle res = GetEnumValue_ServiceDescriptionImportStyle (Reader.ReadString());
126 if (Reader.NodeType != XmlNodeType.None)
127 Reader.ReadEndElement ();
128 return res;
131 System.Web.Services.Description.ServiceDescriptionImportStyle GetEnumValue_ServiceDescriptionImportStyle (string xmlName)
133 switch (xmlName)
135 case "client": return System.Web.Services.Description.ServiceDescriptionImportStyle.Client;
136 case "server": return System.Web.Services.Description.ServiceDescriptionImportStyle.Server;
137 case "serverInterface": return System.Web.Services.Description.ServiceDescriptionImportStyle.ServerInterface;
138 default:
139 throw CreateUnknownConstantException (xmlName, typeof(System.Web.Services.Description.ServiceDescriptionImportStyle));
143 public System.Xml.Serialization.CodeGenerationOptions ReadObject_CodeGenerationOptions (bool isNullable, bool checkType)
145 Reader.ReadStartElement ();
146 System.Xml.Serialization.CodeGenerationOptions res = GetEnumValue_CodeGenerationOptions (Reader.ReadString());
147 if (Reader.NodeType != XmlNodeType.None)
148 Reader.ReadEndElement ();
149 return res;
152 System.Xml.Serialization.CodeGenerationOptions GetEnumValue_CodeGenerationOptions (string xmlName)
154 xmlName = xmlName.Trim();
155 if (xmlName.Length == 0) return (System.Xml.Serialization.CodeGenerationOptions)0;
156 System.Xml.Serialization.CodeGenerationOptions sb = (System.Xml.Serialization.CodeGenerationOptions)0;
157 string[] enumNames = xmlName.Split (null);
158 foreach (string name in enumNames)
160 if (name == string.Empty) continue;
161 sb |= GetEnumValue_CodeGenerationOptions_Switch (name);
163 return sb;
166 System.Xml.Serialization.CodeGenerationOptions GetEnumValue_CodeGenerationOptions_Switch (string xmlName)
168 switch (xmlName)
170 case "properties": return System.Xml.Serialization.CodeGenerationOptions.GenerateProperties;
171 case "newAsync": return System.Xml.Serialization.CodeGenerationOptions.GenerateNewAsync;
172 case "oldAsync": return System.Xml.Serialization.CodeGenerationOptions.GenerateOldAsync;
173 case "order": return System.Xml.Serialization.CodeGenerationOptions.GenerateOrder;
174 case "enableDataBinding": return System.Xml.Serialization.CodeGenerationOptions.EnableDataBinding;
175 default:
176 throw CreateUnknownConstantException (xmlName, typeof(System.Xml.Serialization.CodeGenerationOptions));
180 protected override void InitCallbacks ()
184 protected override void InitIDs ()
190 internal class WebReferenceOptionsWriter : XmlSerializationWriter
192 const string xmlNamespace = "http://www.w3.org/2000/xmlns/";
193 public void WriteRoot_WebReferenceOptions (object o)
195 WriteStartDocument ();
196 System.Web.Services.Description.WebReferenceOptions ob = (System.Web.Services.Description.WebReferenceOptions) o;
197 TopLevelElement ();
198 WriteObject_webReferenceOptions (ob, "webReferenceOptions", "http://microsoft.com/webReference/", true, false, true);
201 void WriteObject_webReferenceOptions (System.Web.Services.Description.WebReferenceOptions ob, string element, string namesp, bool isNullable, bool needType, bool writeWrappingElem)
203 if (((object)ob) == null)
205 if (isNullable)
206 WriteNullTagLiteral(element, namesp);
207 return;
210 System.Type type = ob.GetType ();
211 if (type == typeof(System.Web.Services.Description.WebReferenceOptions))
213 else {
214 throw CreateUnknownTypeException (ob);
217 if (writeWrappingElem) {
218 WriteStartElement (element, namesp, ob);
221 if (needType) WriteXsiType("webReferenceOptions", "http://microsoft.com/webReference/");
223 if (ob.@CodeGenerationOptions != ((System.Xml.Serialization.CodeGenerationOptions) System.Xml.Serialization.CodeGenerationOptions.GenerateOldAsync)) {
224 WriteElementString ("codeGenerationOptions", "http://microsoft.com/webReference/", GetEnumValue_CodeGenerationOptions (ob.@CodeGenerationOptions));
226 if (ob.@SchemaImporterExtensions != null) {
227 WriteStartElement ("schemaImporterExtensions", "http://microsoft.com/webReference/", ob.@SchemaImporterExtensions);
228 for (int n5 = 0; n5 < ob.@SchemaImporterExtensions.Count; n5++) {
229 WriteElementString ("type", "http://microsoft.com/webReference/", ob.@SchemaImporterExtensions[n5]);
231 WriteEndElement (ob.@SchemaImporterExtensions);
233 if (ob.@Style != ((System.Web.Services.Description.ServiceDescriptionImportStyle) System.Web.Services.Description.ServiceDescriptionImportStyle.Client)) {
234 WriteElementString ("style", "http://microsoft.com/webReference/", GetEnumValue_ServiceDescriptionImportStyle (ob.@Style));
236 WriteElementString ("verbose", "http://microsoft.com/webReference/", (ob.@Verbose?"true":"false"));
237 if (writeWrappingElem) WriteEndElement (ob);
240 void WriteObject_CodeGenerationOptions (System.Xml.Serialization.CodeGenerationOptions ob, string element, string namesp, bool isNullable, bool needType, bool writeWrappingElem)
242 System.Type type = ob.GetType ();
243 if (type == typeof(System.Xml.Serialization.CodeGenerationOptions))
245 else {
246 throw CreateUnknownTypeException (ob);
249 if (writeWrappingElem) {
250 WriteStartElement (element, namesp, ob);
253 if (needType) WriteXsiType("CodeGenerationOptions", "http://microsoft.com/webReference/");
255 Writer.WriteString (GetEnumValue_CodeGenerationOptions (ob));
256 if (writeWrappingElem) WriteEndElement (ob);
259 static readonly string[] _xmlNamesCodeGenerationOptions = { "properties","newAsync","oldAsync","order","enableDataBinding" };
260 static readonly long[] _valuesCodeGenerationOptions = { 1L,2L,4L,8L,16L };
262 string GetEnumValue_CodeGenerationOptions (System.Xml.Serialization.CodeGenerationOptions val)
264 switch (val) {
265 case System.Xml.Serialization.CodeGenerationOptions.GenerateProperties: return "properties";
266 case System.Xml.Serialization.CodeGenerationOptions.GenerateNewAsync: return "newAsync";
267 case System.Xml.Serialization.CodeGenerationOptions.GenerateOldAsync: return "oldAsync";
268 case System.Xml.Serialization.CodeGenerationOptions.GenerateOrder: return "order";
269 case System.Xml.Serialization.CodeGenerationOptions.EnableDataBinding: return "enableDataBinding";
270 default:
271 if (val.ToString () == "0") return string.Empty;
272 return FromEnum ((long) val, _xmlNamesCodeGenerationOptions, _valuesCodeGenerationOptions, typeof (System.Xml.Serialization.CodeGenerationOptions).FullName);
276 void WriteObject_ServiceDescriptionImportStyle (System.Web.Services.Description.ServiceDescriptionImportStyle ob, string element, string namesp, bool isNullable, bool needType, bool writeWrappingElem)
278 System.Type type = ob.GetType ();
279 if (type == typeof(System.Web.Services.Description.ServiceDescriptionImportStyle))
281 else {
282 throw CreateUnknownTypeException (ob);
285 if (writeWrappingElem) {
286 WriteStartElement (element, namesp, ob);
289 if (needType) WriteXsiType("ServiceDescriptionImportStyle", "http://microsoft.com/webReference/");
291 Writer.WriteString (GetEnumValue_ServiceDescriptionImportStyle (ob));
292 if (writeWrappingElem) WriteEndElement (ob);
295 string GetEnumValue_ServiceDescriptionImportStyle (System.Web.Services.Description.ServiceDescriptionImportStyle val)
297 switch (val) {
298 case System.Web.Services.Description.ServiceDescriptionImportStyle.Client: return "client";
299 case System.Web.Services.Description.ServiceDescriptionImportStyle.Server: return "server";
300 case System.Web.Services.Description.ServiceDescriptionImportStyle.ServerInterface: return "serverInterface";
301 default: throw CreateInvalidEnumValueException ((long) val, typeof (System.Web.Services.Description.ServiceDescriptionImportStyle).FullName);
305 protected override void InitCallbacks ()
312 internal class WebReferenceOptionsBaseSerializer : System.Xml.Serialization.XmlSerializer
314 protected override System.Xml.Serialization.XmlSerializationReader CreateReader () {
315 return new WebReferenceOptionsReader ();
318 protected override System.Xml.Serialization.XmlSerializationWriter CreateWriter () {
319 return new WebReferenceOptionsWriter ();
322 public override bool CanDeserialize (System.Xml.XmlReader xmlReader) {
323 return true;
327 internal sealed class webReferenceOptionsSerializer : WebReferenceOptionsBaseSerializer
329 protected override void Serialize (object obj, System.Xml.Serialization.XmlSerializationWriter writer) {
330 ((WebReferenceOptionsWriter)writer).WriteRoot_WebReferenceOptions(obj);
333 protected override object Deserialize (System.Xml.Serialization.XmlSerializationReader reader) {
334 return ((WebReferenceOptionsReader)reader).ReadRoot_WebReferenceOptions();
338 internal class WebReferenceOptionsSerializerImplementation : System.Xml.Serialization.XmlSerializerImplementation
340 System.Collections.Hashtable readMethods = null;
341 System.Collections.Hashtable writeMethods = null;
342 System.Collections.Hashtable typedSerializers = null;
344 public override System.Xml.Serialization.XmlSerializationReader Reader {
345 get {
346 return new WebReferenceOptionsReader();
350 public override System.Xml.Serialization.XmlSerializationWriter Writer {
351 get {
352 return new WebReferenceOptionsWriter();
356 public override System.Collections.Hashtable ReadMethods {
357 get {
358 lock (this) {
359 if (readMethods == null) {
360 readMethods = new System.Collections.Hashtable ();
361 readMethods.Add (@"", @"ReadRoot_WebReferenceOptions");
363 return readMethods;
368 public override System.Collections.Hashtable WriteMethods {
369 get {
370 lock (this) {
371 if (writeMethods == null) {
372 writeMethods = new System.Collections.Hashtable ();
373 writeMethods.Add (@"", @"WriteRoot_WebReferenceOptions");
375 return writeMethods;
380 public override System.Collections.Hashtable TypedSerializers {
381 get {
382 lock (this) {
383 if (typedSerializers == null) {
384 typedSerializers = new System.Collections.Hashtable ();
385 typedSerializers.Add (@"", new webReferenceOptionsSerializer());
387 return typedSerializers;
392 public override XmlSerializer GetSerializer (Type type)
394 switch (type.FullName) {
395 case "System.Web.Services.Description.WebReferenceOptions":
396 return (XmlSerializer) TypedSerializers [""];
399 return base.GetSerializer (type);
402 public override bool CanSerialize (System.Type type) {
403 if (type == typeof(System.Web.Services.Description.WebReferenceOptions)) return true;
404 return false;