package org.osgi.framework;
import java.util.EventObject;
/**
* A Framework event describing a bundle lifecycle change.
* <p><tt>BundleEvent</tt> objects are delivered to <tt>BundleListener</tt> objects when a change
* occurs in a bundle's lifecycle. A type code is used to identify the event type
* for future extendability.
*
* <p>OSGi reserves the right to extend the set of types.
*
* @version $Revision: 1.1 $
* @author Open Services Gateway Initiative
*/
public class BundleEvent extends EventObject
{
/**
* Bundle that had a change occur in its lifecycle.
*/
private transient Bundle bundle;
/**
* Type of bundle lifecycle change.
*/
private transient int type;
/**
* This bundle has been installed.
* <p>The value of <tt>INSTALLED</tt> is 0x00000001.
*
* @see BundleContext#installBundle
*/
public final static int INSTALLED = 0x00000001;
/**
* This bundle has been started.
* <p>The value of <tt>STARTED</tt> is 0x00000002.
*
* @see Bundle#start
*/
public final static int STARTED = 0x00000002;
/**
* This bundle has been stopped.
* <p>The value of <tt>STOPPED</tt> is 0x00000004.
*
* @see Bundle#stop
*/
public final static int STOPPED = 0x00000004;
/**
* This bundle has been updated.
* <p>The value of <tt>UPDATED</tt> is 0x00000008.
*
* @see Bundle#update
*/
public final static int UPDATED = 0x00000008;
/**
* This bundle has been uninstalled.
* <p>The value of <tt>UNINSTALLED</tt> is 0x00000010.
*
* @see Bundle#uninstall
*/
public final static int UNINSTALLED = 0x00000010;
public final static int BEFORE_INSTALL = 10086;
public final static int BEFORE_STARTED = 10087;
/**
* Creates a bundle event of the specified type.
*
* @param type The event type.
* @param bundle The bundle which had a lifecycle change.
*/
public BundleEvent(int type, Bundle bundle)
{
super(bundle);
this.bundle = bundle;
this.type = type;
}
/**
* Returns the bundle which had a lifecycle change.
* This bundle is the source of the event.
*
* @return A bundle that had a change occur in its lifecycle.
*/
public Bundle getBundle()
{
return bundle;
}
/**
* Returns the type of lifecyle event.
* The type values are:
* <ul>
* <li>{@link #INSTALLED}
* <li>{@link #STARTED}
* <li>{@link #STOPPED}
* <li>{@link #UPDATED}
* <li>{@link #UNINSTALLED}
* </ul>
*
* @return The type of lifecycle event.
*/
public int getType()
{
return type;
}
}