* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / System.Web.Services / System.Web.Services.Description / Operation.cs
1 // \r
2 // System.Web.Services.Description.Operation.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
10 //
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
18 // 
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
21 // 
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30 \r
31 using System.ComponentModel;\r
32 using System.Xml;\r
33 using System.Xml.Serialization;\r
34 using System.Web.Services.Configuration;
35 \r
36 namespace System.Web.Services.Description \r
37 {\r
38 #if NET_2_0\r
39         [XmlFormatExtensionPoint ("Extensions")]\r
40 #endif\r
41         public sealed class Operation :\r
42 #if NET_2_0\r
43                 NamedItem\r
44 #else\r
45                 DocumentableItem \r
46 #endif\r
47         {\r
48                 #region Fields\r
49 \r
50                 OperationFaultCollection faults;\r
51                 OperationMessageCollection messages;\r
52 #if !NET_2_0\r
53                 string name;\r
54 #endif\r
55                 string[] parameterOrder;\r
56                 PortType portType;\r
57 #if NET_2_0
58                 ServiceDescriptionFormatExtensionCollection extensions;\r
59 #endif
60 \r
61                 #endregion // Fields\r
62 \r
63                 #region Constructors\r
64                 \r
65                 public Operation ()\r
66                 {\r
67                         faults = new OperationFaultCollection (this);\r
68                         messages = new OperationMessageCollection (this);\r
69 #if !NET_2_0\r
70                         name = String.Empty;\r
71 #endif\r
72                         parameterOrder = null;\r
73                         portType = null;\r
74 #if NET_2_0
75                         extensions = new ServiceDescriptionFormatExtensionCollection (this);\r
76 #endif
77                 }\r
78                 \r
79                 #endregion // Constructors\r
80 \r
81                 #region Properties\r
82 \r
83                 [XmlElement ("fault")]\r
84                 public OperationFaultCollection Faults {\r
85                         get { return faults; }\r
86                 }\r
87 \r
88                 [XmlElement ("output", typeof (OperationOutput))]\r
89                 [XmlElement ("input", typeof (OperationInput))]\r
90                 public OperationMessageCollection Messages {\r
91                         get { return messages; }\r
92                 }\r
93 \r
94 #if !NET_2_0\r
95                 [XmlAttribute ("name", DataType = "NCName")]\r
96                 public string Name {\r
97                         get { return name; }\r
98                         set { name = value; }\r
99                 }\r
100 #endif\r
101 \r
102                 [XmlIgnore]\r
103                 public string[] ParameterOrder {\r
104                         get { return parameterOrder; }\r
105                         set { parameterOrder = value; }\r
106                 }\r
107 \r
108                 [DefaultValue ("")]\r
109                 [XmlAttribute ("parameterOrder")]\r
110                 public string ParameterOrderString {\r
111                         get { \r
112                                 if (parameterOrder == null)\r
113                                         return String.Empty;\r
114                                 return String.Join (" ", parameterOrder); \r
115                         }\r
116                         set { ParameterOrder = value.Split (' '); }\r
117                 }\r
118 \r
119 //              [XmlIgnore]\r
120                 public PortType PortType {\r
121                         get { return portType; }\r
122                 }\r
123
124 #if NET_2_0
125                 [XmlIgnore]
126                 public override ServiceDescriptionFormatExtensionCollection Extensions {
127                         get { return extensions; }\r
128                 }\r
129 #endif
130
131                 #endregion // Properties\r
132 \r
133                 #region Methods\r
134 \r
135                 public bool IsBoundBy (OperationBinding operationBinding)\r
136                 {\r
137                         return (operationBinding.Name == Name);\r
138                 }\r
139 \r
140                 internal void SetParent (PortType portType)\r
141                 {\r
142                         this.portType = portType;\r
143                 }\r
144 \r
145                 #endregion\r
146         }\r
147 }\r