Package org.huihoo.willow.core

Source Code of org.huihoo.willow.core.ServerLifecycleListener

//----------------------------BEGIN LICENSE----------------------------
/*
* Willow : the Open Source WorkFlow Project
* Distributable under GNU LGPL license by gun.org
*
* Copyright (C) 2004-2010 huihoo.org
* Copyright (C) 2004-2010  ZosaTapo <dertyang@hotmail.com>
*
* ====================================================================
* Project Homepage : http://www.huihoo.org/willow
* Source Forge     : http://sourceforge.net/projects/huihoo
* Mailing list     : willow@lists.sourceforge.net
*/
//----------------------------END  LICENSE-----------------------------
package org.huihoo.willow.core;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import org.huihoo.willow.Container;
import org.huihoo.willow.Context;
import org.huihoo.willow.Lifecycle;
import org.huihoo.willow.LifecycleEvent;
import org.huihoo.willow.LifecycleListener;
import org.huihoo.willow.Server;
import org.huihoo.willow.Service;


/**
* @author reic
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class ServerLifecycleListener implements  LifecycleListener, PropertyChangeListener
{

  private static org.apache.commons.logging.Log log =
  org.apache.commons.logging.LogFactory.getLog(ServerLifecycleListener.class);

  // ------------------------------------------------------------- Properties

  /**
   * The debugging detail level for this component.
   */
  protected int debug = 0;

  public int getDebug()
  {
    return (this.debug);
  }

  public void setDebug(int debug)
  {
    this.debug = debug;
  }
 
  // ---------------------------------------------- LifecycleListener Methods

  /**
   * Primary entry point for startup and shutdown events.
   *
   * @param event The event that has occurred
   */
  public void lifecycleEvent(LifecycleEvent event)
  {

    Lifecycle lifecycle = event.getLifecycle();
    if (Lifecycle.START_EVENT.equals(event.getType()))
    {

      if (lifecycle instanceof Server)
      {

      }

      // We are embedded.
      if (lifecycle instanceof Service)
      {
      }

    }
    else
      if (Lifecycle.STOP_EVENT.equals(event.getType()))
      {
        if (lifecycle instanceof Server)
        {
        }
        if (lifecycle instanceof Service)
        {
        }

      }

    if ((Context.RELOAD_EVENT.equals(event.getType()))
      || (Lifecycle.START_EVENT.equals(event.getType())))
    {

    }

  }

  // ----------------------------------------- PropertyChangeListener Methods

  /**
   * Handle a <code>PropertyChangeEvent</code> from one of the Containers
   * we are interested in.
   *
   * @param event The event that has occurred
   */
  public void propertyChange(PropertyChangeEvent event)
  {

    if (event.getSource() instanceof Container)
    {
      try
      {
        processContainerPropertyChange(
          (Container) event.getSource(),
          event.getPropertyName(),
          event.getOldValue(),
          event.getNewValue());
      }
      catch (Exception e)
      {
        log.error("Exception handling Container property change", e);
      }
    }
    else
      if (event.getSource() instanceof Server)
      {
        try
        {
          processServerPropertyChange(
            (Server) event.getSource(),
            event.getPropertyName(),
            event.getOldValue(),
            event.getNewValue());
        }
        catch (Exception e)
        {
          log.error("Exception handing NamingServer property change", e);
        }
      }
      else
        if (event.getSource() instanceof Service)
        {
          try
          {
            processServicePropertyChange(
              (Service) event.getSource(),
              event.getPropertyName(),
              event.getOldValue(),
              event.getNewValue());
          }
          catch (Exception e)
          {
            log.error("Exception handing Service property change", e);
          }
        }

  }

  // ------------------------------------------------------ Protected Methods

  /**
   * Log a message.
   *
   * @param message The message to be logged
   */
  protected void log(String message)
  {

    System.out.print("ServerLifecycleListener: ");
    System.out.println(message);

  }

  /**
   * Log a message and associated exception.
   *
   * @param message The message to be logged
   * @param throwable The exception to be logged
   */
  protected void log(String message, Throwable throwable)
  {

    log(message);
    throwable.printStackTrace(System.out);

  }

  /**
   * Process the addition of a new child Container to a parent Container.
   *
   * @param parent Parent container
   * @param child Child container
   */
  protected void processContainerAddChild(Container parent, Container child)
  {

    if (log.isDebugEnabled())
      log.debug("Process addChild[parent=" + parent + ",child=" + child + "]");
  }

  /**
   * Process a property change event on a Container.
   *
   * @param container The container on which this event occurred
   * @param propertyName The name of the property that changed
   * @param oldValue The previous value (may be <code>null</code>)
   * @param newValue The new value (may be <code>null</code>)
   *
   * @exception Exception if an exception is thrown
   */
  protected void processContainerPropertyChange(
    Container container,
    String propertyName,
    Object oldValue,
    Object newValue)
    throws Exception
  {

    if (log.isTraceEnabled())
    {
      log.trace(
        "propertyChange[container="
          + container
          + ",propertyName="
          + propertyName
          + ",oldValue="
          + oldValue
          + ",newValue="
          + newValue
          + "]");
    }

  }

  /**
   * Process the removal of a child Container from a parent Container.
   *
   * @param parent Parent container
   * @param child Child container
   */
  protected void processContainerRemoveChild(Container parent, Container child)
  {

    if (log.isDebugEnabled())
      log.debug("Process removeChild[parent=" + parent + ",child=" + child + "]");

    if (child instanceof Context)
    {
      Context context = (Context) child;
      if (context instanceof StandardContext)
      {
        ((StandardContext) context).removePropertyChangeListener(this);
      }
    }

  }

  /**
   * Process a property change event on a NamingServer.
   *
   * @param server The server on which this event occurred
   * @param propertyName The name of the property that changed
   * @param oldValue The previous value (may be <code>null</code>)
   * @param newValue The new value (may be <code>null</code>)
   *
   * @exception Exception if an exception is thrown
   */
  protected void processServerPropertyChange(
    Server server,
    String propertyName,
    Object oldValue,
    Object newValue)
    throws Exception
  {

    if (log.isTraceEnabled())
    {
      log.trace(
        "propertyChange[server="
          + server
          + ",propertyName="
          + propertyName
          + ",oldValue="
          + oldValue
          + ",newValue="
          + newValue
          + "]");
    }

  }

  /**
   * Process a property change event on a Service.
   *
   * @param service The service on which this event occurred
   * @param propertyName The name of the property that changed
   * @param oldValue The previous value (may be <code>null</code>)
   * @param newValue The new value (may be <code>null</code>)
   *
   * @exception Exception if an exception is thrown
   */
  protected void processServicePropertyChange(
    Service service,
    String propertyName,
    Object oldValue,
    Object newValue)
    throws Exception
  {

    if (log.isTraceEnabled())
    {
      log.trace(
        "propertyChange[service="
          + service
          + ",propertyName="
          + propertyName
          + ",oldValue="
          + oldValue
          + ",newValue="
          + newValue
          + "]");
    }
  }

}
TOP

Related Classes of org.huihoo.willow.core.ServerLifecycleListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.