/*******************************************************************************
* Copyright (c) 2001, 2007 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.soda.sat.eclipse.dependency.observer.internal;
import org.eclipse.soda.sat.core.framework.interfaces.BundleDependencyListener;
import org.eclipse.soda.sat.core.service.BundleDependencyService;
import org.eclipse.soda.sat.core.util.BundleManifestUtility;
import org.osgi.framework.Bundle;
public class Observer extends Object implements BundleDependencyListener {
private BundleDependencyService bundleDependencyService;
public void bind(BundleDependencyService bundleDependencyService) {
setBundleDependencyService(bundleDependencyService);
}
private String getBundleName(Bundle bundle) {
BundleManifestUtility utility = BundleManifestUtility.getInstance();
String name = utility.getBundleName(bundle);
return name;
}
public void registered(Bundle importer, Bundle exporter) {
String importerName = getBundleName(importer);
String exporterName = getBundleName(exporter);
System.out.println(importerName + " depends upon " + exporterName);
}
private void setBundleDependencyService(BundleDependencyService bundleDependencyService) {
if (this.bundleDependencyService != null) {
this.bundleDependencyService.removeBundleDependencyListener(this);
}
this.bundleDependencyService = bundleDependencyService;
if (this.bundleDependencyService != null) {
this.bundleDependencyService.addBundleDependencyListener(this);
}
}
public void unbind() {
setBundleDependencyService(null);
}
public void unregistered(Bundle importer, Bundle exporter) {
String importerName = getBundleName(importer);
String exporterName = getBundleName(exporter);
System.out.println(importerName + " no longer depends upon " + exporterName);
}
}