blob: 3230742a73b3aad29b41529a2f64049cc4e7d820 [file] [log] [blame]
/*
* 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.
*
* <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.
*
* @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);
}