Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGonzalo Paniagua Javier <gonzalo.mono@gmail.com>2004-05-19 23:43:16 +0400
committerGonzalo Paniagua Javier <gonzalo.mono@gmail.com>2004-05-19 23:43:16 +0400
commit8886aab23f4f5575bf81cdf88e4fbfcf7d00422f (patch)
treedbfd55a4a3fe9c6735d858c4cb9ff5ce4bb01fe2 /mcs/class/System/System.Diagnostics
parent954742c93ec082286af6b420aa0d0454f788508e (diff)
Fix ChangeLog entry to tell the truth
svn path=/trunk/mcs/; revision=27708
Diffstat (limited to 'mcs/class/System/System.Diagnostics')
-rw-r--r--mcs/class/System/System.Diagnostics/ChangeLog2
-rw-r--r--mcs/class/System/System.Diagnostics/DiagnosticsConfigurationHandler.cs715
2 files changed, 359 insertions, 358 deletions
diff --git a/mcs/class/System/System.Diagnostics/ChangeLog b/mcs/class/System/System.Diagnostics/ChangeLog
index d8bb8741ceb..8f1f330144c 100644
--- a/mcs/class/System/System.Diagnostics/ChangeLog
+++ b/mcs/class/System/System.Diagnostics/ChangeLog
@@ -6,7 +6,7 @@
2004-05-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
* Process.cs: redirecting I/O is not permitted if UseShellExecute is
- false. Also throw if FileName is null.
+ true. Also throw if FileName is null.
2004-04-06 Lluis Sanchez Gual <lluis@ximian.com>
diff --git a/mcs/class/System/System.Diagnostics/DiagnosticsConfigurationHandler.cs b/mcs/class/System/System.Diagnostics/DiagnosticsConfigurationHandler.cs
index 8ad3817dd8c..efd5c4be4c2 100644
--- a/mcs/class/System/System.Diagnostics/DiagnosticsConfigurationHandler.cs
+++ b/mcs/class/System/System.Diagnostics/DiagnosticsConfigurationHandler.cs
@@ -1,359 +1,360 @@
-//
-// System.Diagnostics.DiagnosticsConfigurationHandler.cs
-//
-// Comments from John R. Hicks <angryjohn69@nc.rr.com> original implementation
-// can be found at: /mcs/docs/apidocs/xml/en/System.Diagnostics
-//
-// Authors:
-// John R. Hicks <angryjohn69@nc.rr.com>
-// Jonathan Pryor <jonpryor@vt.edu>
-//
-// (C) 2002
-//
-using System;
-using System.Collections;
-using System.Configuration; #if (XML_DEP)
+//
+// System.Diagnostics.DiagnosticsConfigurationHandler.cs
+//
+// Comments from John R. Hicks <angryjohn69@nc.rr.com> original implementation
+// can be found at: /mcs/docs/apidocs/xml/en/System.Diagnostics
+//
+// Authors:
+// John R. Hicks <angryjohn69@nc.rr.com>
+// Jonathan Pryor <jonpryor@vt.edu>
+//
+// (C) 2002
+//
+using System;
+using System.Collections;
+using System.Configuration;
+#if (XML_DEP)
using System.Xml;
-#endif
-namespace System.Diagnostics
-{
- internal sealed class DiagnosticsConfiguration
- {
- private static IDictionary settings = null;
-
- public static IDictionary Settings {
- get {
- // TODO: Does anybody know if this is actually thread-safe under .NET?
- // I've heard that this construct isn't safe under Java, but it's used
- // reasonably often under C++, so I'm not sure about .NET.
- if (settings == null) {
- lock (typeof(DiagnosticsConfiguration)) {
- if (settings == null)
- settings = (IDictionary) ConfigurationSettings.GetConfig ("system.diagnostics");
- }
- }
- return settings;
- }
- }
- }
- #if (XML_DEP)
- public class DiagnosticsConfigurationHandler : IConfigurationSectionHandler
- {
- delegate void ElementHandler (IDictionary d, XmlNode node);
-
- IDictionary elementHandlers = new Hashtable ();
-
- public DiagnosticsConfigurationHandler ()
- {
- elementHandlers ["assert"] = new ElementHandler (AddAssertNode);
- elementHandlers ["switches"] = new ElementHandler (AddSwitchesNode);
- elementHandlers ["trace"] = new ElementHandler (AddTraceNode);
- }
-
- public virtual object Create (object parent, object configContext, XmlNode section)
- {
- IDictionary d;
- if (parent == null)
- d = new Hashtable (CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default);
- else
- d = (IDictionary) ((ICloneable)parent).Clone();
-
- foreach (XmlNode child in section.ChildNodes) {
- XmlNodeType type = child.NodeType;
-
- switch (type) {
- /* ignore */
- case XmlNodeType.Whitespace:
- case XmlNodeType.Comment:
- continue;
- case XmlNodeType.Element:
- ElementHandler eh = (ElementHandler) elementHandlers [child.Name];
- if (eh != null)
- eh (d, child);
- else
- ThrowUnrecognizedElement (child);
- break;
- default:
- ThrowUnrecognizedElement (child);
- break;
- }
- }
-
- return d;
- }
-
- // Remarks: Both attribute are optional
- private void AddAssertNode (IDictionary d, XmlNode node)
- {
- XmlAttributeCollection c = node.Attributes;
- string assertuienabled = GetAttribute (c, "assertuienabled", false, node);
- string logfilename = GetAttribute (c, "logfilename", false, node);
- ValidateInvalidAttributes (c, node);
- if (assertuienabled != null) {
- try {
- d ["assertuienabled"] = bool.Parse (assertuienabled);
- }
- catch (Exception e) {
- throw new ConfigurationException ("The `assertuienabled' attribute must be `true' or `false'",
- e, node);
- }
- }
-
- if (logfilename != null)
- d ["logfilename"] = logfilename;
-
- DefaultTraceListener dtl = (DefaultTraceListener) TraceImpl.Listeners["Default"];
- if (dtl != null) {
- if (assertuienabled != null)
- dtl.AssertUiEnabled = (bool) d ["assertuienabled"];
- if (logfilename != null)
- dtl.LogFileName = logfilename;
- }
-
- if (node.ChildNodes.Count > 0)
- ThrowUnrecognizedElement (node.ChildNodes[0]);
- }
-
- // name attribute is required, value is optional
- // Docs do not define "remove" or "clear" elements, but .NET recognizes
- // them
- private void AddSwitchesNode (IDictionary d, XmlNode node)
- {
- // There are no attributes on <switch/>
- ValidateInvalidAttributes (node.Attributes, node);
-
- IDictionary newNodes = new Hashtable ();
-
- foreach (XmlNode child in node.ChildNodes) {
- XmlNodeType t = child.NodeType;
- if (t == XmlNodeType.Whitespace || t == XmlNodeType.Comment)
- continue;
- if (t == XmlNodeType.Element) {
- XmlAttributeCollection attributes = child.Attributes;
- string name = null;
- string value = null;
- switch (child.Name) {
- case "add":
- name = GetAttribute (attributes, "name", true, child);
- value = GetAttribute (attributes, "value", false, child);
- newNodes[name] = AsString (value);
- break;
- case "remove":
- name = GetAttribute (attributes, "name", true, child);
- newNodes.Remove (name);
- break;
- case "clear":
- newNodes.Clear ();
- break;
- default:
- ThrowUnrecognizedElement (child);
- break;
- }
- ValidateInvalidAttributes (attributes, child);
- }
- else
- ThrowUnrecognizedNode (child);
- }
-
- d [node.Name] = newNodes;
- }
-
- private void AddTraceNode (IDictionary d, XmlNode node)
- {
- AddTraceAttributes (d, node);
-
- foreach (XmlNode child in node.ChildNodes) {
- XmlNodeType t = child.NodeType;
- if (t == XmlNodeType.Whitespace || t == XmlNodeType.Comment)
- continue;
- if (t == XmlNodeType.Element) {
- if (child.Name == "listeners")
- AddTraceListeners (child);
- else
- ThrowUnrecognizedElement (child);
- ValidateInvalidAttributes (child.Attributes, child);
- }
- else
- ThrowUnrecognizedNode (child);
- }
- }
-
- // all attributes are optional
- private void AddTraceAttributes (IDictionary d, XmlNode node)
- {
- XmlAttributeCollection c = node.Attributes;
- string autoflush = GetAttribute (c, "autoflush", false, node);
- string indentsize = GetAttribute (c, "indentsize", false, node);
- ValidateInvalidAttributes (c, node);
- if (autoflush != null) {
- try {
- bool b = bool.Parse (autoflush);
- d ["autoflush"] = b;
- TraceImpl.AutoFlush = b;
- }
- catch (Exception e) {
- throw new ConfigurationException ("The `autoflush' attribute must be `true' or `false'",
- e, node);
- }
- }
- if (indentsize != null) {
- try {
- int n = int.Parse (indentsize);
- d ["indentsize"] = n;
- TraceImpl.IndentSize = n;
- }
- catch (Exception e) {
- throw new ConfigurationException ("The `indentsize' attribute must be an integral value.",
- e, node);
- }
- }
- }
-
- // only defines "add" and "remove", but "clear" also works
- // for add, "name" and "type" are required; initializeData is optional
- private void AddTraceListeners (XmlNode listenersNode)
- {
- // There are no attributes on <listeners/>
- ValidateInvalidAttributes (listenersNode.Attributes, listenersNode);
-
- foreach (XmlNode child in listenersNode.ChildNodes) {
- XmlNodeType t = child.NodeType;
- if (t == XmlNodeType.Whitespace || t == XmlNodeType.Comment)
- continue;
- if (t == XmlNodeType.Element) {
- XmlAttributeCollection attributes = child.Attributes;
- string name = null;
- string type = null;
- string id = null;
- switch (child.Name) {
- case "add":
- name = GetAttribute (attributes, "name", true, child);
- type = GetAttribute (attributes, "type", true, child);
- id = GetAttribute (attributes, "initializeData", false, child);
- AddTraceListener (name, type, id);
- break;
- case "remove":
- name = GetAttribute (attributes, "name", true, child);
- RemoveTraceListener (name);
- break;
- case "clear":
- TraceImpl.Listeners.Clear ();
- break;
- default:
- ThrowUnrecognizedElement (child);
- break;
- }
- ValidateInvalidAttributes (attributes, child);
- }
- else
- ThrowUnrecognizedNode (child);
- }
- }
-
- private void AddTraceListener (string name, string type, string initializeData)
- {
- Type t = Type.GetType (type);
- if (t == null)
- throw new ConfigurationException (string.Format ("Invalid Type Specified: {0}", type));
-
- object[] args;
- Type[] types;
-
- if (initializeData != null) {
- args = new object[] { initializeData };
- types = new Type[] { typeof(string) };
- }
- else {
- args = null;
- types = new Type[0];
- }
-
- System.Reflection.ConstructorInfo ctor = t.GetConstructor (types);
- if (ctor == null)
- throw new ConfigurationException ("Couldn't find constructor for class " + type);
-
- TraceListener l = (TraceListener) ctor.Invoke (args);
- l.Name = name;
- TraceImpl.Listeners.Add (l);
- }
-
- private void RemoveTraceListener (string name)
- {
- try {
- TraceImpl.Listeners.Remove (name);
- }
- catch (ArgumentException) {
- // The specified listener wasn't in the collection
- // Ignore this; .NET does.
- }
- catch (Exception e) {
- throw new ConfigurationException (
- string.Format ("Unknown error removing listener: {0}", name),
- e);
- }
- }
-
- private string GetAttribute (XmlAttributeCollection attrs, string attr, bool required, XmlNode node)
- {
- XmlAttribute a = attrs[attr];
-
- string r = null;
-
- if (a != null) {
- r = a.Value;
- if (required)
- ValidateAttribute (attr, r, node);
- attrs.Remove (a);
- }
- else if (required)
- ThrowMissingAttribute (attr, node);
-
- return r;
- }
-
- private string AsString (string s)
- {
- return s == null ? string.Empty : s;
- }
-
- private void ValidateAttribute (string attribute, string value, XmlNode node)
- {
- if (value == null || value.Length == 0)
- throw new ConfigurationException (string.Format ("Required attribute `{0}' cannot be empty.", attribute), node);
- }
-
- private void ValidateInvalidAttributes (XmlAttributeCollection c, XmlNode node)
- {
- if (c.Count != 0)
- ThrowUnrecognizedAttribute (c[0].Name, node);
- }
-
- private void ThrowMissingAttribute (string attribute, XmlNode node)
- {
- throw new ConfigurationException (string.Format ("Missing required attribute `{0}'.", attribute), node);
- }
-
- private void ThrowUnrecognizedNode (XmlNode node)
- {
- throw new ConfigurationException (
- string.Format ("Unrecognized node `{0}'; nodeType={1}", node.Name, node.NodeType),
- node);
- }
-
- private void ThrowUnrecognizedElement (XmlNode node)
- {
- throw new ConfigurationException (
- string.Format ("Unrecognized element <{0}/>", node.Name),
- node);
- }
-
- private void ThrowUnrecognizedAttribute (string attribute, XmlNode node)
- {
- throw new ConfigurationException (
- string.Format ("Unrecognized attribute `{0}' on element <{1}/>.", attribute, node.Name),
- node);
- }
+#endif
+namespace System.Diagnostics
+{
+ internal sealed class DiagnosticsConfiguration
+ {
+ private static IDictionary settings = null;
+
+ public static IDictionary Settings {
+ get {
+ // TODO: Does anybody know if this is actually thread-safe under .NET?
+ // I've heard that this construct isn't safe under Java, but it's used
+ // reasonably often under C++, so I'm not sure about .NET.
+ if (settings == null) {
+ lock (typeof(DiagnosticsConfiguration)) {
+ if (settings == null)
+ settings = (IDictionary) ConfigurationSettings.GetConfig ("system.diagnostics");
+ }
+ }
+ return settings;
+ }
+ }
}
-#endif
-}
-
+#if (XML_DEP)
+ public class DiagnosticsConfigurationHandler : IConfigurationSectionHandler
+ {
+ delegate void ElementHandler (IDictionary d, XmlNode node);
+
+ IDictionary elementHandlers = new Hashtable ();
+
+ public DiagnosticsConfigurationHandler ()
+ {
+ elementHandlers ["assert"] = new ElementHandler (AddAssertNode);
+ elementHandlers ["switches"] = new ElementHandler (AddSwitchesNode);
+ elementHandlers ["trace"] = new ElementHandler (AddTraceNode);
+ }
+
+ public virtual object Create (object parent, object configContext, XmlNode section)
+ {
+ IDictionary d;
+ if (parent == null)
+ d = new Hashtable (CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default);
+ else
+ d = (IDictionary) ((ICloneable)parent).Clone();
+
+ foreach (XmlNode child in section.ChildNodes) {
+ XmlNodeType type = child.NodeType;
+
+ switch (type) {
+ /* ignore */
+ case XmlNodeType.Whitespace:
+ case XmlNodeType.Comment:
+ continue;
+ case XmlNodeType.Element:
+ ElementHandler eh = (ElementHandler) elementHandlers [child.Name];
+ if (eh != null)
+ eh (d, child);
+ else
+ ThrowUnrecognizedElement (child);
+ break;
+ default:
+ ThrowUnrecognizedElement (child);
+ break;
+ }
+ }
+
+ return d;
+ }
+
+ // Remarks: Both attribute are optional
+ private void AddAssertNode (IDictionary d, XmlNode node)
+ {
+ XmlAttributeCollection c = node.Attributes;
+ string assertuienabled = GetAttribute (c, "assertuienabled", false, node);
+ string logfilename = GetAttribute (c, "logfilename", false, node);
+ ValidateInvalidAttributes (c, node);
+ if (assertuienabled != null) {
+ try {
+ d ["assertuienabled"] = bool.Parse (assertuienabled);
+ }
+ catch (Exception e) {
+ throw new ConfigurationException ("The `assertuienabled' attribute must be `true' or `false'",
+ e, node);
+ }
+ }
+
+ if (logfilename != null)
+ d ["logfilename"] = logfilename;
+
+ DefaultTraceListener dtl = (DefaultTraceListener) TraceImpl.Listeners["Default"];
+ if (dtl != null) {
+ if (assertuienabled != null)
+ dtl.AssertUiEnabled = (bool) d ["assertuienabled"];
+ if (logfilename != null)
+ dtl.LogFileName = logfilename;
+ }
+
+ if (node.ChildNodes.Count > 0)
+ ThrowUnrecognizedElement (node.ChildNodes[0]);
+ }
+
+ // name attribute is required, value is optional
+ // Docs do not define "remove" or "clear" elements, but .NET recognizes
+ // them
+ private void AddSwitchesNode (IDictionary d, XmlNode node)
+ {
+ // There are no attributes on <switch/>
+ ValidateInvalidAttributes (node.Attributes, node);
+
+ IDictionary newNodes = new Hashtable ();
+
+ foreach (XmlNode child in node.ChildNodes) {
+ XmlNodeType t = child.NodeType;
+ if (t == XmlNodeType.Whitespace || t == XmlNodeType.Comment)
+ continue;
+ if (t == XmlNodeType.Element) {
+ XmlAttributeCollection attributes = child.Attributes;
+ string name = null;
+ string value = null;
+ switch (child.Name) {
+ case "add":
+ name = GetAttribute (attributes, "name", true, child);
+ value = GetAttribute (attributes, "value", false, child);
+ newNodes[name] = AsString (value);
+ break;
+ case "remove":
+ name = GetAttribute (attributes, "name", true, child);
+ newNodes.Remove (name);
+ break;
+ case "clear":
+ newNodes.Clear ();
+ break;
+ default:
+ ThrowUnrecognizedElement (child);
+ break;
+ }
+ ValidateInvalidAttributes (attributes, child);
+ }
+ else
+ ThrowUnrecognizedNode (child);
+ }
+
+ d [node.Name] = newNodes;
+ }
+
+ private void AddTraceNode (IDictionary d, XmlNode node)
+ {
+ AddTraceAttributes (d, node);
+
+ foreach (XmlNode child in node.ChildNodes) {
+ XmlNodeType t = child.NodeType;
+ if (t == XmlNodeType.Whitespace || t == XmlNodeType.Comment)
+ continue;
+ if (t == XmlNodeType.Element) {
+ if (child.Name == "listeners")
+ AddTraceListeners (child);
+ else
+ ThrowUnrecognizedElement (child);
+ ValidateInvalidAttributes (child.Attributes, child);
+ }
+ else
+ ThrowUnrecognizedNode (child);
+ }
+ }
+
+ // all attributes are optional
+ private void AddTraceAttributes (IDictionary d, XmlNode node)
+ {
+ XmlAttributeCollection c = node.Attributes;
+ string autoflush = GetAttribute (c, "autoflush", false, node);
+ string indentsize = GetAttribute (c, "indentsize", false, node);
+ ValidateInvalidAttributes (c, node);
+ if (autoflush != null) {
+ try {
+ bool b = bool.Parse (autoflush);
+ d ["autoflush"] = b;
+ TraceImpl.AutoFlush = b;
+ }
+ catch (Exception e) {
+ throw new ConfigurationException ("The `autoflush' attribute must be `true' or `false'",
+ e, node);
+ }
+ }
+ if (indentsize != null) {
+ try {
+ int n = int.Parse (indentsize);
+ d ["indentsize"] = n;
+ TraceImpl.IndentSize = n;
+ }
+ catch (Exception e) {
+ throw new ConfigurationException ("The `indentsize' attribute must be an integral value.",
+ e, node);
+ }
+ }
+ }
+
+ // only defines "add" and "remove", but "clear" also works
+ // for add, "name" and "type" are required; initializeData is optional
+ private void AddTraceListeners (XmlNode listenersNode)
+ {
+ // There are no attributes on <listeners/>
+ ValidateInvalidAttributes (listenersNode.Attributes, listenersNode);
+
+ foreach (XmlNode child in listenersNode.ChildNodes) {
+ XmlNodeType t = child.NodeType;
+ if (t == XmlNodeType.Whitespace || t == XmlNodeType.Comment)
+ continue;
+ if (t == XmlNodeType.Element) {
+ XmlAttributeCollection attributes = child.Attributes;
+ string name = null;
+ string type = null;
+ string id = null;
+ switch (child.Name) {
+ case "add":
+ name = GetAttribute (attributes, "name", true, child);
+ type = GetAttribute (attributes, "type", true, child);
+ id = GetAttribute (attributes, "initializeData", false, child);
+ AddTraceListener (name, type, id);
+ break;
+ case "remove":
+ name = GetAttribute (attributes, "name", true, child);
+ RemoveTraceListener (name);
+ break;
+ case "clear":
+ TraceImpl.Listeners.Clear ();
+ break;
+ default:
+ ThrowUnrecognizedElement (child);
+ break;
+ }
+ ValidateInvalidAttributes (attributes, child);
+ }
+ else
+ ThrowUnrecognizedNode (child);
+ }
+ }
+
+ private void AddTraceListener (string name, string type, string initializeData)
+ {
+ Type t = Type.GetType (type);
+ if (t == null)
+ throw new ConfigurationException (string.Format ("Invalid Type Specified: {0}", type));
+
+ object[] args;
+ Type[] types;
+
+ if (initializeData != null) {
+ args = new object[] { initializeData };
+ types = new Type[] { typeof(string) };
+ }
+ else {
+ args = null;
+ types = new Type[0];
+ }
+
+ System.Reflection.ConstructorInfo ctor = t.GetConstructor (types);
+ if (ctor == null)
+ throw new ConfigurationException ("Couldn't find constructor for class " + type);
+
+ TraceListener l = (TraceListener) ctor.Invoke (args);
+ l.Name = name;
+ TraceImpl.Listeners.Add (l);
+ }
+
+ private void RemoveTraceListener (string name)
+ {
+ try {
+ TraceImpl.Listeners.Remove (name);
+ }
+ catch (ArgumentException) {
+ // The specified listener wasn't in the collection
+ // Ignore this; .NET does.
+ }
+ catch (Exception e) {
+ throw new ConfigurationException (
+ string.Format ("Unknown error removing listener: {0}", name),
+ e);
+ }
+ }
+
+ private string GetAttribute (XmlAttributeCollection attrs, string attr, bool required, XmlNode node)
+ {
+ XmlAttribute a = attrs[attr];
+
+ string r = null;
+
+ if (a != null) {
+ r = a.Value;
+ if (required)
+ ValidateAttribute (attr, r, node);
+ attrs.Remove (a);
+ }
+ else if (required)
+ ThrowMissingAttribute (attr, node);
+
+ return r;
+ }
+
+ private string AsString (string s)
+ {
+ return s == null ? string.Empty : s;
+ }
+
+ private void ValidateAttribute (string attribute, string value, XmlNode node)
+ {
+ if (value == null || value.Length == 0)
+ throw new ConfigurationException (string.Format ("Required attribute `{0}' cannot be empty.", attribute), node);
+ }
+
+ private void ValidateInvalidAttributes (XmlAttributeCollection c, XmlNode node)
+ {
+ if (c.Count != 0)
+ ThrowUnrecognizedAttribute (c[0].Name, node);
+ }
+
+ private void ThrowMissingAttribute (string attribute, XmlNode node)
+ {
+ throw new ConfigurationException (string.Format ("Missing required attribute `{0}'.", attribute), node);
+ }
+
+ private void ThrowUnrecognizedNode (XmlNode node)
+ {
+ throw new ConfigurationException (
+ string.Format ("Unrecognized node `{0}'; nodeType={1}", node.Name, node.NodeType),
+ node);
+ }
+
+ private void ThrowUnrecognizedElement (XmlNode node)
+ {
+ throw new ConfigurationException (
+ string.Format ("Unrecognized element <{0}/>", node.Name),
+ node);
+ }
+
+ private void ThrowUnrecognizedAttribute (string attribute, XmlNode node)
+ {
+ throw new ConfigurationException (
+ string.Format ("Unrecognized attribute `{0}' on element <{1}/>.", attribute, node.Name),
+ node);
+ }
+ }
+#endif
+}
+