2004-06-25 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / class / Microsoft.Web.Services / Microsoft.Web.Services.Configuration / WebServicesConfiguration.cs
1 //
2 // WebServicesConfiguration.cs: Web Services Configuration
3 //
4 // Author:
5 //      Sebastien Pouliot (spouliot@motus.com)
6 //
7 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
8 //
9
10 using System;
11 using System.Configuration;
12 using System.Xml;
13 #if WSE2
14 using Microsoft.Web.Services.Messaging.Configuration;
15 #endif
16
17 namespace Microsoft.Web.Services.Configuration {
18
19         internal class WSEConfig {
20                 bool diagnosticsTraceEnabled;
21                 string diagnosticsTraceInputFilename;
22                 string diagnosticsTraceOutputFilename;
23 #if WSE2
24                 private MessagingConfiguration _messagingConfiguration = new MessagingConfiguration ();
25 #endif
26
27                 public WSEConfig (XmlNode section) 
28                 {
29                         XmlNode trace = section.SelectSingleNode ("/diagnostics/trace");
30                         if (trace != null) {
31                                 diagnosticsTraceEnabled = (trace.Attributes ["enabled"].InnerText == "true");
32                                 diagnosticsTraceInputFilename = trace.Attributes ["input"].InnerText;
33                                 diagnosticsTraceOutputFilename = trace.Attributes ["output"].InnerText;
34                         }
35                 }
36
37 #if WSE2 //Not sure why this keeps happenning, this code will workaround it though
38                 public WSEConfig ()
39                 {
40
41                 }
42 #endif
43
44                 public bool Trace {
45                         get { return diagnosticsTraceEnabled; }
46                 }
47
48                 public string TraceInput {
49                         get { return diagnosticsTraceInputFilename; }
50                 }
51
52                 public string TraceOutput {
53                         get { return diagnosticsTraceOutputFilename; }
54                 }
55 #if WSE2
56                 public MessagingConfiguration MessagingConfiguration {
57                         get { return _messagingConfiguration; }
58                 }
59 #endif
60         }
61
62         [MonoTODO("This whole class requires some serious attention")]
63         public sealed class WebServicesConfiguration : ConfigurationBase, IConfigurationSectionHandler {
64
65                 static WSEConfig config = (WSEConfig) ConfigurationSettings.GetConfig ("microsoft.web.services");
66
67                 internal WebServicesConfiguration () {}
68
69                 internal static WSEConfig Config {
70                         get { return config; }
71                 }
72
73                 public static FilterConfiguration FilterConfiguration { 
74                         get { return new FilterConfiguration (); }
75                 }
76 #if WSE2
77
78                 static WebServicesConfiguration ()
79                 {
80                         if(config == null) {
81                                 config = new WSEConfig ();
82                         }
83                 }
84
85                 public static MessagingConfiguration MessagingConfiguration {
86                         get { 
87                                 return config.MessagingConfiguration;
88                         }
89                 }
90                 
91 /* Class not stubbed
92                 [MonoTODO()]
93                 public static TokenIssuerConfiguration TokenIssuerConfiguration {
94                         get { return null; }
95                 }
96 */
97 #endif
98
99                 // from IConfigurationSectionHandler
100                 [MonoTODO()]
101                 object IConfigurationSectionHandler.Create (object parent, object configContext, XmlNode section) 
102                 {
103                         return new WSEConfig (section);
104                 }
105         }
106 }