blob: 02e277ea9afff2272c066b94b54341630b021f84 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2014 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.internal.event.mapper;
import org.osgi.framework.*;
import org.osgi.service.event.EventAdmin;
/**
* Main class to redeliver framework published events via EventAdmin.
*
* @version $Revision: 1.3 $
*/
public class EventRedeliverer implements FrameworkListener, BundleListener, ServiceListener {
private final EventAdmin eventAdmin;
private final BundleContext bc;
public EventRedeliverer(BundleContext bc, EventAdmin eventAdmin) {
this.bc = bc;
this.eventAdmin = eventAdmin;
}
public void close() {
bc.removeFrameworkListener(this);
bc.removeBundleListener(this);
bc.removeServiceListener(this);
}
/**
* register event listeners which are
* necessary to obtain events to be mapped
*/
public void open() {
// add legacy event listener for framework level event
bc.addFrameworkListener(this);
bc.addBundleListener(this);
bc.addServiceListener(this);
}
/**
* @param event
* @see org.osgi.framework.FrameworkListener#frameworkEvent(org.osgi.framework.FrameworkEvent)
*/
public void frameworkEvent(FrameworkEvent event) {
new FrameworkEventAdapter(event, eventAdmin).redeliver();
}
/**
* @param event
* @see org.osgi.framework.BundleListener#bundleChanged(org.osgi.framework.BundleEvent)
*/
public void bundleChanged(BundleEvent event) {
new BundleEventAdapter(event, eventAdmin).redeliver();
}
/**
* @param event
* @see org.osgi.framework.ServiceListener#serviceChanged(org.osgi.framework.ServiceEvent)
*/
public void serviceChanged(ServiceEvent event) {
new ServiceEventAdapter(event, eventAdmin).redeliver();
}
}