/*
 * Copyright (c) OSGi Alliance (2010, 2013). All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.osgi.framework.hooks.service;

import java.util.Collection;
import java.util.Map;
import org.osgi.annotation.versioning.ConsumerType;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceEvent;
import org.osgi.framework.hooks.service.ListenerHook.ListenerInfo;

OSGi Framework Service Event Listener Hook Service.

Bundles registering this service will be called during framework service (register, modify, and unregister service) operations.

Author:$Id: 2b80241ca24005be3a9a3550138e1ba9a3a9ad6e $
@ThreadSafe
Since:1.1
/** * OSGi Framework Service Event Listener Hook Service. * * <p> * Bundles registering this service will be called during framework service * (register, modify, and unregister service) operations. * * @ThreadSafe * @since 1.1 * @author $Id: 2b80241ca24005be3a9a3550138e1ba9a3a9ad6e $ */
@ConsumerType public interface EventListenerHook {
Event listener hook method. This method is called prior to service event delivery when a publishing bundle registers, modifies or unregisters a service. This method can filter the listeners which receive the event.
Params:
  • event – The service event to be delivered.
  • listeners – A map of Bundle Contexts to a collection of Listener Infos for the bundle's listeners to which the specified event will be delivered. The implementation of this method may remove bundle contexts from the map and listener infos from the collection values to prevent the event from being delivered to the associated listeners. The map supports all the optional Map operations except put and putAll. Attempting to add to the map will result in an UnsupportedOperationException. The collection values in the map supports all the optional Collection operations except add and addAll. Attempting to add to a collection will result in an UnsupportedOperationException . The map and the collections are not synchronized.
/** * Event listener hook method. This method is called prior to service event * delivery when a publishing bundle registers, modifies or unregisters a * service. This method can filter the listeners which receive the event. * * @param event The service event to be delivered. * @param listeners A map of Bundle Contexts to a collection of Listener * Infos for the bundle's listeners to which the specified event will * be delivered. The implementation of this method may remove bundle * contexts from the map and listener infos from the collection * values to prevent the event from being delivered to the associated * listeners. The map supports all the optional {@code Map} * operations except {@code put} and {@code putAll}. Attempting to * add to the map will result in an * {@code UnsupportedOperationException}. The collection values in * the map supports all the optional {@code Collection} operations * except {@code add} and {@code addAll}. Attempting to add to a * collection will result in an {@code UnsupportedOperationException} * . The map and the collections are not synchronized. */
void event(ServiceEvent event, Map<BundleContext, Collection<ListenerInfo>> listeners); }