View Javadoc

1   /*
2    * $Id: ComponentException.java 14179 2009-02-27 18:46:19Z aperepel $
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.component;
12  
13  import org.mule.api.MessagingException;
14  import org.mule.api.MuleEvent;
15  import org.mule.api.component.Component;
16  import org.mule.config.i18n.CoreMessages;
17  import org.mule.config.i18n.Message;
18  
19  /**
20   * <code>ComponentException</code> should be thrown when some action on a component
21   * fails, such as starting or stopping
22   */
23  // @ThreadSafe
24  public class ComponentException extends MessagingException
25  {
26      /**
27       * Serial version
28       */
29      private static final long serialVersionUID = 56178344205041600L;
30  
31      private final transient Component component;
32  
33      public ComponentException(Message message, MuleEvent muleMessage, Component component)
34      {
35          super(generateMessage(message, component), muleMessage);
36          this.component = component;
37      }
38  
39      public ComponentException(Message message, MuleEvent event, Component component, Throwable cause)
40      {
41          super(generateMessage(message, component), event, cause);
42          this.component = component;
43      }
44  
45      public ComponentException(MuleEvent message, Component component, Throwable cause)
46      {
47          super(generateMessage(null, component), message, cause);
48          this.component = component;
49      }
50  
51      public Component getComponent()
52      {
53          return component;
54      }
55  
56      private static Message generateMessage(Message previousMessage, Component component)
57      {
58          Message returnMessage = CoreMessages.componentCausedErrorIs(component);
59          if (previousMessage != null)
60          {
61              previousMessage.setNextMessage(returnMessage);
62              return previousMessage;
63          }
64          else
65          {
66              return returnMessage;
67          }
68      }
69  }