A {@code ServiceEvent} listener. {@code ServiceListener} is a listenerinterface that may be implemented by a bundle developer. When a {@code ServiceEvent} is fired, it is synchronously delivered to a{@code ServiceListener}. The Framework may deliver {@code ServiceEvent}objects to a {@code ServiceListener} out of order and may concurrently calland/or reenter a {@code ServiceListener}.
A {@code ServiceListener} object is registered with the Framework using the{@code BundleContext.addServiceListener} method. {@code ServiceListener}objects are called with a {@code ServiceEvent} object when a service isregistered, modified, or is in the process of unregistering.
{@code ServiceEvent} object delivery to {@code ServiceListener} objects isfiltered by the filter specified when the listener was registered. If the Java Runtime Environment supports permissions, then additional filtering is done. {@code ServiceEvent} objects are only delivered to the listener if thebundle which defines the listener object's class has the appropriate {@code ServicePermission} to get the service using at least one of the namedclasses under which the service was registered.
{@code ServiceEvent} object delivery to {@code ServiceListener} objects isfurther filtered according to package sources as defined in {@link ServiceReference#isAssignableTo(Bundle,String)}.
@see ServiceEvent
@see ServicePermission
@ThreadSafe
@author $Id: 8468dbc769382269184c932d41e084cb2fa58eb9 $