View Javadoc

1   /*
2    * $Id: ConnectorLifecycleManager.java 20696 2010-12-14 07:53:32Z dirk.olmes $
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.transport;
12  
13  import org.mule.api.MuleException;
14  import org.mule.api.lifecycle.Disposable;
15  import org.mule.api.lifecycle.Initialisable;
16  import org.mule.api.lifecycle.LifecycleCallback;
17  import org.mule.api.lifecycle.Startable;
18  import org.mule.api.lifecycle.Stoppable;
19  import org.mule.api.transport.Connector;
20  import org.mule.context.notification.ConnectionNotification;
21  import org.mule.lifecycle.SimpleLifecycleManager;
22  
23  /**
24   * Manages the lifecycle of connectors in Mule. Currently only manages the
25   * 'initialsie', 'start', 'stop' and 'dispose' phases, not the connect phase which is
26   * managed by the Retry handler
27   *
28   * @since 3.0
29   */
30  public class ConnectorLifecycleManager extends SimpleLifecycleManager<Connector>
31  {
32      public ConnectorLifecycleManager(AbstractConnector connector)
33      {
34          super(connector.getName(), connector);
35      }
36  
37      @Override
38      public void fireInitialisePhase(LifecycleCallback<Connector> callback) throws MuleException
39      {
40          checkPhase(Initialisable.PHASE_NAME);
41  
42          if (logger.isInfoEnabled())
43          {
44              logger.info("Initialising connector: " + getLifecycleObject().getName());
45          }
46  
47          // No pre notification
48          invokePhase(Initialisable.PHASE_NAME, getLifecycleObject(), callback);
49          // No post notification
50      }
51  
52      @Override
53      public void fireStartPhase(LifecycleCallback<Connector> callback) throws MuleException
54      {
55          checkPhase(Startable.PHASE_NAME);
56  
57          if (logger.isInfoEnabled())
58          {
59              logger.info("Starting connector: " + getLifecycleObject().getName());
60          }
61  
62          // No pre notification
63          invokePhase(Startable.PHASE_NAME, getLifecycleObject(), callback);
64          // No post notification
65      }
66  
67      @Override
68      public void fireStopPhase(LifecycleCallback<Connector> callback) throws MuleException
69      {
70          checkPhase(Stoppable.PHASE_NAME);
71          if (logger.isInfoEnabled())
72  
73          {
74              logger.info("Stopping connector: " + getLifecycleObject().getName());
75          }
76  
77          // No pre notification
78          invokePhase(Stoppable.PHASE_NAME, getLifecycleObject(), callback);
79          // No post notification
80      }
81  
82      @Override
83      public void fireDisposePhase(LifecycleCallback<Connector> callback) throws MuleException
84      {
85          checkPhase(Disposable.PHASE_NAME);
86  
87          if (logger.isInfoEnabled())
88          {
89              logger.info("Disposing connector: " + getLifecycleObject().getName());
90          }
91  
92          // No pre notification
93          invokePhase(Disposable.PHASE_NAME, getLifecycleObject(), callback);
94          // No post notification
95      }
96  
97      protected void fireNotification(int action)
98      {
99          getLifecycleObject().getMuleContext().fireNotification(
100             new ConnectionNotification(getLifecycleObject(), getLifecycleObject().getName(), action));
101     }
102 }