package org.osgi.framework;
import java.util.EventObject;
/**
* A general Framework event.
*
* <p>
* <tt>FrameworkEvent</tt> is the event class used when notifying listeners of
* general events occuring within the OSGI environment. A type code is used to
* identify the event type for future extendability.
*
* <p>
* OSGi reserves the right to extend the set of event types.
*
* @version $Revision: 1.1 $
* @author Open Services Gateway Initiative
*/
public class FrameworkEvent extends EventObject {
/**
* the serial UID.
*/
private static final long serialVersionUID = 207051004521261705L;
/**
* Bundle related to the event.
*/
private final transient Bundle bundle;
/**
* Exception related to the event.
*/
private final transient Throwable throwable;
/**
* Type of event.
*/
private final transient int type;
/**
* The Framework has started.
*
* <p>
* This event is broadcast when the Framework has started after all
* installed bundles that are marked to be started have been started and the
* Framework has reached the intitial start level.
*
* <p>
* The value of <tt>STARTED</tt> is 0x00000001.
*
* @see org.osgi.service.startlevel.StartLevel
*/
public static final int STARTED = 0x00000001;
/**
* An error has occurred.
*
* <p>
* There was an error associated with a bundle.
*
* <p>
* The value of <tt>ERROR</tt> is 0x00000002.
*/
public static final int ERROR = 0x00000002;
/**
* A PackageAdmin.refreshPackage operation has completed.
*
* <p>
* This event is broadcast when the Framework has completed the refresh
* packages operation initiated by a call to the
* PackageAdmin.refreshPackages method.
*
* <p>
* The value of <tt>PACKAGES_REFRESHED</tt> is 0x00000004.
*
* @since 1.2
* @see org.osgi.service.packageadmin.PackageAdmin#refreshPackages
*/
public static final int PACKAGES_REFRESHED = 0x00000004;
/**
* A StartLevel.setStartLevel operation has completed.
*
* <p>
* This event is broadcast when the Framework has completed changing the
* active start level initiated by a call to the StartLevel.setStartLevel
* method.
*
* <p>
* The value of <tt>STARTLEVEL_CHANGED</tt> is 0x00000008.
*
* @since 1.2
* @see org.osgi.service.startlevel.StartLevel
*/
public static final int STARTLEVEL_CHANGED = 0x00000008;
/**
* Creates a Framework event.
*
* @param type
* The event type.
* @param source
* The event source object. This may not be <tt>null</tt>.
* @deprecated Since 1.2. This constructor is deprecated in favor of using
* the other constructor with the System Bundle as the event
* source.
*/
public FrameworkEvent(final int type, final Object source) {
super(source);
this.type = type;
this.bundle = null;
this.throwable = null;
}
/**
* Creates a Framework event regarding the specified bundle.
*
* @param type
* The event type.
* @param bundle
* The event source.
* @param throwable
* The related exception. This argument may be <tt>null</tt> if
* there is no related exception.
*/
public FrameworkEvent(final int type, final Bundle bundle,
final Throwable throwable) {
super(bundle);
this.type = type;
this.bundle = bundle;
this.throwable = throwable;
}
/**
* Returns the exception associated with the event.
* <p>
* If the event type is <tt>ERROR</tt>, this method returns the exception
* related to the error.
*
* @return An exception if an event of type <tt>ERROR</tt> or
* <tt>null</tt>.
*/
public final Throwable getThrowable() {
return (throwable);
}
/**
* Returns the bundle associated with the event. This bundle is also the
* source of the event.
*
* @return The bundle associated with the event.
*/
public final Bundle getBundle() {
return (bundle);
}
/**
* Returns the type of bundle state change.
* <p>
* The type values are:
* <ul>
* <li>{@link #STARTED}
* <li>{@link #ERROR}
* <li>{@link #PACKAGES_REFRESHED}
* <li>{@link #STARTLEVEL_CHANGED}
* </ul>
*
* @return The type of state change.
*/
public final int getType() {
return (type);
}
}