* ExtensionManager.cs: Read extension types from the configuration file.
[mono.git] / mcs / class / System.Web.Services / System.Web.Services.Description / ServiceDescriptionCollection.cs
1 // \r
2 // System.Web.Services.Description.ServiceDescriptionCollection.cs\r
3 //\r
4 // Author:\r
5 //   Tim Coleman (tim@timcoleman.com)\r
6 //   Lluis Sanchez Gual (lluis@ximian.com)\r
7 //\r
8 // Copyright (C) Tim Coleman, 2002\r
9 //\r
10 \r
11 using System.Web.Services;\r
12 using System.Xml;\r
13 \r
14 namespace System.Web.Services.Description {\r
15         public sealed class ServiceDescriptionCollection : ServiceDescriptionBaseCollection {\r
16 \r
17                 #region Constructors\r
18         \r
19                 public ServiceDescriptionCollection () \r
20                         : base (null)\r
21                 {\r
22                 }\r
23 \r
24                 #endregion // Constructors\r
25 \r
26                 #region Properties\r
27 \r
28                 public ServiceDescription this [int index] {\r
29                         get { \r
30                                 if (index < 0 || index > Count)\r
31                                         throw new ArgumentOutOfRangeException ();\r
32 \r
33                                 return (ServiceDescription) List[index]; \r
34                         }\r
35                         set { List [index] = value; }\r
36                 }\r
37 \r
38                 public ServiceDescription this [string ns] {\r
39                         get { \r
40                                 return (ServiceDescription) Table[ns];\r
41                         }\r
42                 }\r
43 \r
44                 #endregion // Properties\r
45 \r
46                 #region Methods\r
47 \r
48                 public int Add (ServiceDescription serviceDescription) \r
49                 {\r
50                         Insert (Count, serviceDescription);\r
51                         return (Count - 1);\r
52                 }\r
53 \r
54                 public bool Contains (ServiceDescription serviceDescription)\r
55                 {\r
56                         return List.Contains (serviceDescription);\r
57                 }\r
58 \r
59                 public void CopyTo (ServiceDescription[] array, int index) \r
60                 {\r
61                         List.CopyTo (array, index);\r
62                 }\r
63 \r
64                 public Binding GetBinding (XmlQualifiedName name)\r
65                 {\r
66                         ServiceDescription desc = (ServiceDescription) Table[name.Namespace];\r
67                         if (desc != null) {\r
68                                 foreach (Binding binding in desc.Bindings) \r
69                                         if (binding.Name == name.Name)\r
70                                                 return binding;\r
71                         }\r
72                         throw new InvalidOperationException ("Binding '" + name + "' not found");\r
73                 }\r
74 \r
75                 protected override string GetKey (object value) \r
76                 {\r
77                         return ((ServiceDescription) value).TargetNamespace;\r
78                 }\r
79 \r
80                 public Message GetMessage (XmlQualifiedName name)\r
81                 {\r
82                         ServiceDescription desc = (ServiceDescription) Table[name.Namespace];\r
83                         if (desc != null) {\r
84                                 foreach (Message message in desc.Messages) \r
85                                         if (message.Name == name.Name)\r
86                                                 return message;\r
87                         }\r
88                         throw new InvalidOperationException ("Message '" + name + "' not found");\r
89                 }\r
90 \r
91                 public PortType GetPortType (XmlQualifiedName name)\r
92                 {\r
93                         ServiceDescription desc = (ServiceDescription) Table[name.Namespace];\r
94                         if (desc != null) {\r
95                                 foreach (PortType portType in desc.PortTypes) \r
96                                         if (portType.Name == name.Name)\r
97                                                 return portType;\r
98                         }\r
99                         throw new InvalidOperationException ("Port type '" + name + "' not found");\r
100                 }\r
101 \r
102                 public Service GetService (XmlQualifiedName name)\r
103                 {\r
104                         ServiceDescription desc = (ServiceDescription) Table[name.Namespace];\r
105                         if (desc != null) {\r
106                                 foreach (Service service in desc.Services) \r
107                                         if (service.Name == name.Name)\r
108                                                 return service;\r
109                         }\r
110                         throw new InvalidOperationException ("Service '" + name + "' not found");\r
111                 }\r
112 \r
113                 public int IndexOf (ServiceDescription serviceDescription)\r
114                 {\r
115                         return List.IndexOf (serviceDescription);\r
116                 }\r
117 \r
118                 public void Insert (int index, ServiceDescription serviceDescription)\r
119                 {\r
120                         List.Insert (index, serviceDescription);\r
121                 }\r
122         \r
123                 public void Remove (ServiceDescription serviceDescription)\r
124                 {\r
125                         List.Remove (serviceDescription);\r
126                 }\r
127 \r
128                 #endregion // Methods\r
129         }\r
130 }