1
2
3
4
5
6
7
8
9
10
11 package org.mule.api;
12
13 import org.mule.DefaultMuleMessage;
14 import org.mule.RequestContext;
15 import org.mule.config.MuleManifest;
16 import org.mule.config.i18n.CoreMessages;
17 import org.mule.config.i18n.Message;
18 import org.mule.transport.NullPayload;
19
20 import java.util.Map;
21
22
23
24
25
26
27 public class MessagingException extends MuleException
28 {
29
30
31
32 private static final long serialVersionUID = 6941498759267936649L;
33
34
35
36
37 protected final transient MuleMessage umoMessage;
38
39 public MessagingException(Message message, MuleMessage umoMessage)
40 {
41 super();
42 this.umoMessage = umoMessage;
43 setMessage(generateMessage(message));
44 }
45
46 public MessagingException(Message message, MuleMessage umoMessage, Throwable cause)
47 {
48 super(cause);
49 this.umoMessage = umoMessage;
50 setMessage(generateMessage(message));
51 }
52
53 public MessagingException(Message message, Object payload)
54 {
55 super();
56 if (payload == null)
57 {
58 this.umoMessage = RequestContext.getEventContext().getMessage();
59 }
60 else
61 {
62 this.umoMessage = new DefaultMuleMessage(payload, (Map) null);
63 }
64 setMessage(generateMessage(message));
65 }
66
67 public MessagingException(Message message, Object payload, Throwable cause)
68 {
69 super(cause);
70 if (payload == null)
71 {
72 this.umoMessage = RequestContext.getEventContext().getMessage();
73 }
74 else
75 {
76 this.umoMessage = new DefaultMuleMessage(payload, (Map) null);
77 }
78 setMessage(generateMessage(message));
79 }
80
81 private String generateMessage(Message message)
82 {
83 StringBuffer buf = new StringBuffer(80);
84
85 if (message != null)
86 {
87 buf.append(message.getMessage()).append(". ");
88 }
89
90 if (umoMessage != null)
91 {
92 Object payload = umoMessage.getPayload();
93 if (payload == null)
94 {
95 payload = NullPayload.getInstance();
96 }
97
98 buf.append(CoreMessages.messageIsOfType(payload.getClass()).getMessage());
99 addInfo("Payload", payload.toString());
100 }
101 else
102 {
103 buf.append("The current MuleMessage is null! Please report this to ").append(MuleManifest.getDevListEmail());
104 addInfo("Payload", NullPayload.getInstance().toString());
105 }
106
107 return buf.toString();
108 }
109
110 public MuleMessage getUmoMessage()
111 {
112 return umoMessage;
113 }
114
115 }