refactoring: making fields readonly
[mono.git] / mcs / class / System.Web.Services / System.Web.Services.Protocols / SoapServerMessage.cs
1 // 
2 // System.Web.Services.Protocols.SoapServerMessage.cs
3 //
4 // Author:
5 //   Tim Coleman (tim@timcoleman.com)
6 //   Lluis Sanchez Gual (lluis@ximian.com)
7 //
8 // Copyright (C) Tim Coleman, 2002
9 //
10
11 //
12 // Permission is hereby granted, free of charge, to any person obtaining
13 // a copy of this software and associated documentation files (the
14 // "Software"), to deal in the Software without restriction, including
15 // without limitation the rights to use, copy, modify, merge, publish,
16 // distribute, sublicense, and/or sell copies of the Software, and to
17 // permit persons to whom the Software is furnished to do so, subject to
18 // the following conditions:
19 // 
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
22 // 
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 //
31
32 using System.Web.Services;
33 using System.IO;
34
35 namespace System.Web.Services.Protocols {
36         public sealed class SoapServerMessage : SoapMessage {
37
38                 #region Fields
39
40                 string action;
41                 SoapMethodStubInfo stubInfo;
42                 object server;
43                 string url;
44                 object[] parameters;
45 #if NET_2_0
46                 SoapProtocolVersion soapVersion;
47 #endif
48
49                 #endregion
50
51                 #region Constructors
52
53                 internal SoapServerMessage (HttpRequest request, object server, Stream stream)
54                         : base (stream, null)
55                 {
56                         this.action = request.Headers ["SOAPAction"];
57                         if (this.action != null)
58                                 this.action = action.Trim ('"',' ');
59                         this.server = server;
60                         this.url = request.Url.ToString();
61                         ContentEncoding = request.Headers ["Content-Encoding"];
62                 }
63
64                 internal SoapServerMessage (HttpRequest request, SoapException exception, SoapMethodStubInfo stubInfo, object server, Stream stream)
65                         : base (stream, exception)
66                 {
67                         this.action = request.Headers ["SOAPAction"];
68                         if (this.action != null)
69                                 this.action = action.Trim ('"',' ');
70                         this.stubInfo = stubInfo;
71                         this.server = server;
72                         this.url = request.Url.ToString();
73                         ContentEncoding = request.Headers ["Content-Encoding"];
74                 }
75
76                 #endregion
77
78                 #region Properties
79
80                 public override LogicalMethodInfo MethodInfo {
81                         get { return stubInfo.MethodInfo; }
82                 }
83
84                 public override string Action {
85                         get { return action; }
86                 }
87
88                 internal SoapMethodStubInfo MethodStubInfo {
89                         get { return stubInfo; }
90                         set { stubInfo = value; }
91                 }
92
93                 public override bool OneWay {
94                         get { return stubInfo.OneWay; }
95                 }
96
97                 public object Server {
98                         get { return server; }
99                 }       
100
101                 public override string Url {
102                         get { return url; }
103                 }
104
105 #if NET_2_0
106                 [MonoTODO]
107                 [System.Runtime.InteropServices.ComVisible(false)]
108                 public override SoapProtocolVersion SoapVersion {
109                         get { return soapVersion; }
110                 }
111 #endif
112
113                 #endregion // Properties
114
115                 #region Methods
116
117                 protected override void EnsureInStage ()
118                 {
119                         EnsureStage (SoapMessageStage.AfterDeserialize);
120                 }
121
122                 protected override void EnsureOutStage ()
123                 {
124                         EnsureStage (SoapMessageStage.BeforeSerialize);
125                 }
126
127 #if NET_2_0
128                 internal void SetSoapVersion (SoapProtocolVersion value)
129                 {
130                         soapVersion = value;
131                 }
132 #endif
133
134                 #endregion // Methods
135         }
136 }