/** * Returns a list of packages that are listed in <i>Import-Package</i> header * and are <b>not</b> listed in <i>Export-Package</i> header. */ public List<ImportPackage> getExternalImports() { List<ImportPackage> imports = getImportPackage(); List<ExportPackage> exports = getExportPackage(); List<ImportPackage> realImports = new ArrayList<ImportPackage>(); for (ImportPackage p : imports) { if (!isExported(exports, p)) { realImports.add(p); } } return realImports; }
private boolean needsProviderImports(Bundle persistenceBundle, BundleDescription providerDescription) { BundleDescription description = new BundleDescription(persistenceBundle.getHeaders()); for (HeaderEntry importPackage : description.getDynamicImportPackage()) { if ("*".equals(importPackage.getName())) { LOG.debug("Persistence bundle {} can load any class.", persistenceBundle.getSymbolicName()); return false; } } for (ImportPackage importPackage : description.getImportPackage()) { for (ExportPackage exportPackage : providerDescription.getExportPackage()) { if (importPackage.getName().equals(exportPackage.getName()) && importPackage.getVersionRange().isInRange(exportPackage.getVersion())) { LOG.debug("Persistence bundle {} already imports at least one package from JPA provider bundle.", persistenceBundle.getSymbolicName()); return false; } } } return true; }
private Set<PackageBundlePair> getImportingPairs(PackageAdmin packageAdmin, Bundle bundle, Set<String> wiredPackages) { BundleDescription description = new BundleDescription(bundle.getHeaders()); Set<PackageBundlePair> importingPairs = new HashSet<PackageBundlePair>(); List<BundleDescription.ImportPackage> imports = description.getImportPackage(); for (BundleDescription.ImportPackage packageImport : imports) { //find the packages that we are importing ExportedPackage[] exportedPackages = packageAdmin.getExportedPackages(packageImport.getName()); if (exportedPackages == null) { importingPairs.add(new PackageBundlePair(packageImport.getName(), packageImport.getVersionRange().toString(), null)); } else { for (ExportedPackage exportedPackage : exportedPackages) { Bundle exportingBundle = exportedPackage.getExportingBundle(); if (exportingBundle != bundle && containsBundle(exportedPackage.getImportingBundles(), bundle)) { importingPairs.add(new PackageBundlePair(packageImport.getName(), packageImport.getVersionRange().toString(), exportedPackage.getExportingBundle())); wiredPackages.add(toString(exportedPackage)); } } } } return importingPairs; }