View Javadoc

1   /*
2    * $Id: MessagingException.java 10489 2008-01-23 17:53:38Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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   * <code>MessagingException</code> is a general message exception thrown when
24   * errors specific to Message processing occur..
25   */
26  
27  public class MessagingException extends MuleException
28  {
29      /**
30       * Serial version
31       */
32      private static final long serialVersionUID = 6941498759267936649L;
33  
34      /**
35       * The MuleMessage being processed when the error occurred
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 }