View Javadoc

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