View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.api;
8   
9   import org.mule.config.MuleManifest;
10  import org.mule.config.i18n.CoreMessages;
11  import org.mule.config.i18n.Message;
12  import org.mule.transport.NullPayload;
13  import org.mule.util.StringUtils;
14  
15  /**
16   * <code>MessagingException</code> is a general message exception thrown when
17   * errors specific to Message processing occur..
18   */
19  
20  public class MessagingException extends MuleException
21  {
22      /**
23       * Serial version
24       */
25      private static final long serialVersionUID = 6941498759267936649L;
26  
27      /**
28       * The MuleMessage being processed when the error occurred
29       */
30      protected final transient MuleMessage muleMessage;
31      
32      /**
33       * The MuleEvent being processed when the error occurred
34       */
35      protected final transient MuleEvent event;
36  
37      /**
38       * @deprecated use MessagingException(Message, MuleEvent)
39       */
40      @Deprecated
41      public MessagingException(Message message, MuleMessage muleMessage)
42      {
43          super();
44          this.muleMessage = muleMessage;
45          this.event = null;
46          setMessage(generateMessage(message));
47      }
48  
49      public MessagingException(Message message, MuleEvent event)
50      {
51          super();
52          this.event = event;
53          this.muleMessage = (event != null ? event.getMessage() : null);
54          setMessage(generateMessage(message));
55      }
56  
57      /**
58       * @deprecated use MessagingException(Message, MuleEvent, Throwable)
59       */
60      @Deprecated
61      public MessagingException(Message message, MuleMessage muleMessage, Throwable cause)
62      {
63          super(cause);
64          this.muleMessage = muleMessage;
65          this.event = null;
66          setMessage(generateMessage(message));
67      }
68  
69      public MessagingException(Message message, MuleEvent event, Throwable cause)
70      {
71          super(cause);
72          this.event = event;
73          this.muleMessage = (event != null ? event.getMessage() : null);
74          setMessage(generateMessage(message));
75      }
76  
77      public MessagingException(MuleEvent event, Throwable cause)
78      {
79          super(cause);
80          this.event = event;
81          this.muleMessage = (event != null ? event.getMessage() : null);
82          setMessage(generateMessage(getI18nMessage()));
83      }
84  
85      private String generateMessage(Message message)
86      {
87          StringBuffer buf = new StringBuffer(80);
88  
89          if (message != null)
90          {
91              buf.append(message.getMessage()).append(". ");
92          }
93  
94          if (muleMessage != null)
95          {
96              Object payload = muleMessage.getPayload();
97              if (payload == null)
98              {
99                  payload = NullPayload.getInstance();
100             }
101 
102             buf.append(CoreMessages.messageIsOfType(payload.getClass()).getMessage());
103             addInfo("Payload", StringUtils.abbreviate(payload.toString(), 1000));
104         }
105         else
106         {
107             buf.append("The current MuleMessage is null! Please report this to ").append(MuleManifest.getDevListEmail());
108             addInfo("Payload", NullPayload.getInstance().toString());
109         }
110 
111         return buf.toString();
112     }
113 
114     public MuleMessage getMuleMessage()
115     {
116         if ((event != null) && (muleMessage == null))
117         {
118             return event.getMessage();
119         }
120         return muleMessage;
121     }
122 
123     public MuleEvent getEvent()
124     {
125         return event;
126     }
127 }