View Javadoc

1   /*
2    * $Id: MessagingException.java 7963 2007-08-21 08:53:15Z dirk.olmes $
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.umo;
12  
13  import org.mule.config.i18n.CoreMessages;
14  import org.mule.config.i18n.Message;
15  import org.mule.impl.MuleMessage;
16  import org.mule.impl.RequestContext;
17  import org.mule.providers.NullPayload;
18  
19  import java.util.Map;
20  
21  /**
22   * <code>MessagingException</code> is a general message exception thrown when
23   * errors specific to Message processing occur..
24   */
25  
26  public class MessagingException extends UMOException
27  {
28      /**
29       * Serial version
30       */
31      private static final long serialVersionUID = 6941498759267936649L;
32  
33      /**
34       * The UMOMessage being processed when the error occurred
35       */
36      protected final transient UMOMessage umoMessage;
37  
38      public MessagingException(Message message, UMOMessage umoMessage)
39      {
40          super();
41          this.umoMessage = umoMessage;
42          setMessage(generateMessage(message));
43      }
44  
45      public MessagingException(Message message, UMOMessage umoMessage, Throwable cause)
46      {
47          super(cause);
48          this.umoMessage = umoMessage;
49          setMessage(generateMessage(message));
50      }
51  
52      public MessagingException(Message message, Object payload)
53      {
54          super();
55          if (payload == null)
56          {
57              this.umoMessage = RequestContext.getEventContext().getMessage();
58          }
59          else
60          {
61              this.umoMessage = new MuleMessage(payload, (Map) null);
62          }
63          setMessage(generateMessage(message));
64      }
65  
66      public MessagingException(Message message, Object payload, Throwable cause)
67      {
68          super(cause);
69          if (payload == null)
70          {
71              this.umoMessage = RequestContext.getEventContext().getMessage();
72          }
73          else
74          {
75              this.umoMessage = new MuleMessage(payload, (Map) null);
76          }
77          setMessage(generateMessage(message));
78      }
79  
80      private String generateMessage(Message message)
81      {
82          StringBuffer buf = new StringBuffer(80);
83  
84          if (message != null)
85          {
86              buf.append(message.getMessage()).append(". ");
87          }
88  
89          if (umoMessage != null)
90          {
91              Object payload = umoMessage.getPayload();
92              if (payload == null)
93              {
94                  payload = NullPayload.getInstance();
95              }
96  
97              buf.append(CoreMessages.messageIsOfType(payload.getClass()).getMessage());
98              addInfo("Payload", payload.toString());
99          }
100         else
101         {
102             buf.append("The current UMOMessage is null! Please report this to dev@mule.codehaus.org.");
103             addInfo("Payload", NullPayload.getInstance().toString());
104         }
105 
106         return buf.toString();
107     }
108 
109     public UMOMessage getUmoMessage()
110     {
111         return umoMessage;
112     }
113 
114 }