blob: 5866f35ed33305aad11dc0d17bc3a30c35a26dbe [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 Eteration A.S. 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
* - This code is based on WTP SDK frameworks and Tomcat Server Adapters
* org.eclipse.jst.server.core
* org.eclipse.jst.server.ui
*
* Naci Dai and Murat Yener, Eteration A.S.
*******************************************************************************/
package org.eclipse.libra.framework.core.internal.dependency;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.eclipse.osgi.service.resolver.BundleDescription;
import org.eclipse.osgi.service.resolver.BundleSpecification;
import org.eclipse.osgi.service.resolver.ExportPackageDescription;
public class DependencyUtil {
public static Object[] getDependencies(BundleDescription bundleDescription) {
if (bundleDescription == null) {
return new BundleDescription[0];
}
List<Object> c = getDescription(bundleDescription.getRequiredBundles());
c.addAll(getExportedDescription(bundleDescription,
bundleDescription.getResolvedImports()));
if (bundleDescription.getHost() != null) {
c.add(bundleDescription.getHost().getSupplier());
}
return c.toArray(new Object[c.size()]);
}
public static List<Object> getDescription(
BundleSpecification[] specifications) {
ArrayList<Object> descriptionList = new ArrayList<Object>();
for (int i = 0; i < specifications.length; i++) {
BundleSpecification specification = specifications[i];
if (specification.getSupplier() == null) {
// We can't get a description, so just keep the bundle
// specification
descriptionList.add(specification);
} else {
descriptionList.add(specification.getSupplier());
}
}
return descriptionList;
}
private static Set<BundleDescription> getExportedDescription(
BundleDescription element,
ExportPackageDescription[] exportedPackages) {
Set<BundleDescription> descriptionList = new HashSet<BundleDescription>();
for (int i = 0; i < exportedPackages.length; i++) {
ExportPackageDescription exportedPackage = exportedPackages[i];
if (!element.getLocation().equals(
exportedPackage.getExporter().getLocation())) {
descriptionList.add(exportedPackage.getExporter());
}
}
return descriptionList;
}
}