[tests] Separate MONO_PATH directories by PLATFORM_PATH_SEPARATOR
[mono.git] / mcs / class / System.ServiceModel / System.ServiceModel / FaultException.cs
1 //
2 // System.ServiceModel.FaultException.cs
3 //
4 // Author: Duncan Mak (duncan@novell.com)
5 //         Atsushi Enomoto (atsushi@ximian.com)
6 //
7 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 // 
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 // 
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28
29 using System;
30 using System.Collections.ObjectModel;
31 using System.Runtime.Serialization;
32 using System.ServiceModel.Channels;
33
34 namespace System.ServiceModel
35 {
36         [Serializable]
37         public class FaultException : CommunicationException
38         {
39                 MessageFault fault;
40                 string action;
41
42                 public FaultException ()
43                         : this ("Communication has faulted.")
44                 {
45                 }
46
47                 public FaultException (string msg)
48                         : this (new FaultReason (msg))
49                 {
50                 }
51
52                 public FaultException (string msg, FaultCode code)
53                         : this (new FaultReason (msg), code)
54                 {
55                 }
56
57                 [MonoTODO]
58                 protected FaultException (SerializationInfo info, StreamingContext context)
59                         : base (info, context)
60                 {
61                         throw new NotImplementedException ();
62                 }
63
64                 [MonoTODO]
65                 public FaultException (MessageFault fault)
66                         : this (fault, String.Empty)
67                 {
68                 }
69
70                 public FaultException (MessageFault fault, string action)
71                 {
72                         if (fault == null)
73                                 throw new ArgumentNullException ("fault");
74                         //if (action == null)
75                         //      throw new ArgumentNullException ("action");
76
77                         this.fault = fault;
78                         this.action = action;
79                 }
80
81                 [MonoTODO]
82                 public FaultException (FaultReason reason)
83                         : this (reason, new FaultCode (String.Empty))
84                 {
85                 }
86
87                 public FaultException (FaultReason reason, FaultCode code)
88                         : this (MessageFault.CreateFault (code, reason))
89                 {
90                 }
91
92                 public FaultException (string reason, FaultCode code, string action)
93                         : this (MessageFault.CreateFault (code, reason), action)
94                 {
95                 }
96
97                 public FaultException (FaultReason reason, FaultCode code, string action)
98                         : this (MessageFault.CreateFault (code, reason), action)
99                 {
100                 }
101
102                 [MonoTODO]
103                 public static FaultException CreateFault (MessageFault messageFault,  params Type [] faultDetailTypes)
104                 {
105                         throw new NotImplementedException ();
106                 }
107
108                 [MonoTODO]
109                 public static FaultException CreateFault (MessageFault messageFault, string action, params Type[] faultDetailTypes)
110                 {
111                         throw new NotImplementedException ();
112                 }
113
114                 public virtual MessageFault CreateMessageFault ()
115                 {
116                         return fault;
117                 }
118
119                 [MonoTODO]
120                 public override void GetObjectData (SerializationInfo info, StreamingContext context)
121                 {
122                         // How could it be Serializable while none of
123                         // FaultReason and FaultCode are serializable.
124                         throw new NotImplementedException ();
125                 }
126
127                 public string Action {
128                         get { return action; }
129                 }
130
131                 public FaultCode Code {
132                         get { return fault.Code; }
133                 }
134
135                 public FaultReason Reason {
136                         get{ return fault.Reason; }
137                 }
138
139                 public override string Message {
140                         get { return Reason.GetMatchingTranslation ().Text; }
141                 }
142         }
143 }