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