private boolean isAffected(BundleDescription desc, BundleDescription dependent) { ImportPackageSpecification[] imports = dependent.getImportPackages(); Iterator iter = fElements.keySet().iterator(); while (iter.hasNext()) { String name = ((IJavaElement) iter.next()).getElementName(); for (int i = 0; i < imports.length; i++) { if (name.equals(imports[i].getName())) { BaseDescription supplier = imports[i].getSupplier(); if (supplier instanceof ExportPackageDescription) { if (desc.equals(((ExportPackageDescription) supplier).getExporter())) return true; } } } } return false; }
protected void addBundleManifestChange(CompositeChange result, IProgressMonitor pm) throws CoreException { super.addBundleManifestChange(result, pm); IMonitorModelBase model = MonitorRegistry.findModel(fProject); if (model != null) { BundleDescription desc = model.getBundleDescription(); if (desc != null) { BundleDescription[] dependents = desc.getDependents(); for (int i = 0; i < dependents.length; i++) { if (isAffected(desc, dependents[i])) { IMonitorModelBase candidate = MonitorRegistry.findModel(dependents[i]); if (candidate instanceof IBundlePluginModelBase) { IFile file = (IFile) candidate.getUnderlyingResource(); addBundleManifestChange(file, result, pm); } } } } } }