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.model;
8   
9   import org.mule.api.MuleException;
10  import org.mule.api.lifecycle.Disposable;
11  import org.mule.api.lifecycle.Initialisable;
12  import org.mule.api.lifecycle.LifecycleCallback;
13  import org.mule.api.lifecycle.Startable;
14  import org.mule.api.lifecycle.Stoppable;
15  import org.mule.context.notification.ModelNotification;
16  import org.mule.lifecycle.SimpleLifecycleManager;
17  
18  /**
19   * Handles Lifecycle transitions for {@link org.mule.api.model.Model} implementations
20   */
21  public class ModelLifecycleManager extends SimpleLifecycleManager<AbstractModel>
22  {
23      public ModelLifecycleManager(AbstractModel model)
24      {
25          super(model.getName(), model);
26      }
27  
28      @Override
29      public void fireInitialisePhase(LifecycleCallback<AbstractModel> callback) throws MuleException
30      {
31          checkPhase(Initialisable.PHASE_NAME);
32          //TODO No pre notification
33          if(logger.isInfoEnabled()) logger.info("Initialising model: " + getLifecycleObject().getName());
34          invokePhase(Initialisable.PHASE_NAME, getLifecycleObject(), callback);
35          fireNotification(ModelNotification.MODEL_INITIALISED);
36      }
37  
38      @Override
39      public void fireStartPhase(LifecycleCallback<AbstractModel> callback) throws MuleException
40      {
41          checkPhase(Startable.PHASE_NAME);
42          //TODO No pre notification
43          if(logger.isInfoEnabled()) logger.info("Starting model: " + getLifecycleObject().getName());
44          invokePhase(Startable.PHASE_NAME, getLifecycleObject(), callback);
45          fireNotification(ModelNotification.MODEL_STARTED);
46      }
47  
48      @Override
49      public void fireStopPhase(LifecycleCallback<AbstractModel> callback) throws MuleException
50      {
51          checkPhase(Stoppable.PHASE_NAME);
52          //TODO No pre notification
53          if(logger.isInfoEnabled()) logger.info("Stopping model: " + getLifecycleObject().getName());
54          invokePhase(Stoppable.PHASE_NAME, getLifecycleObject(), callback);
55          fireNotification(ModelNotification.MODEL_STOPPED);
56      }
57  
58      @Override
59      public void fireDisposePhase(LifecycleCallback<AbstractModel> callback) throws MuleException
60      {
61          checkPhase(Disposable.PHASE_NAME);
62          //TODO No pre notification
63          if(logger.isInfoEnabled()) logger.info("Disposing model: " + getLifecycleObject().getName());
64          invokePhase(Disposable.PHASE_NAME, getLifecycleObject(), callback);
65          fireNotification(ModelNotification.MODEL_DISPOSED);
66      }
67  
68      void fireNotification(int action)
69      {
70          getLifecycleObject().getMuleContext().fireNotification(new ModelNotification(getLifecycleObject(), action));
71      }
72  }