|
48 | 48 | import org.eclipse.pde.core.project.IBundleProjectService; |
49 | 49 | import org.eclipse.pde.core.project.IPackageExportDescription; |
50 | 50 | import org.eclipse.pde.core.project.IPackageImportDescription; |
| 51 | +import org.eclipse.pde.core.project.IRequiredBundleDescription; |
51 | 52 | import org.eclipse.pde.core.target.NameVersionDescriptor; |
52 | 53 | import org.eclipse.pde.internal.core.FeatureModelManager; |
53 | 54 | import org.eclipse.pde.internal.core.PDECore; |
@@ -215,6 +216,7 @@ public static IProject createPluginProject(String bundleSymbolicName, String ver |
215 | 216 | switch (header) { |
216 | 217 | case Constants.EXPORT_PACKAGE -> setPackageExports(description, projectService, value); |
217 | 218 | case Constants.IMPORT_PACKAGE -> setPackageImports(description, projectService, value); |
| 219 | + case Constants.REQUIRE_BUNDLE -> setRequiredBundles(description, projectService, value); |
218 | 220 | default -> throw new IllegalArgumentException("Unsupported header: " + header); |
219 | 221 | } |
220 | 222 | }); |
@@ -242,6 +244,18 @@ private static void setPackageImports(IBundleProjectDescription project, IBundle |
242 | 244 | project.setPackageImports(imports); |
243 | 245 | } |
244 | 246 |
|
| 247 | + private static void setRequiredBundles(IBundleProjectDescription project, IBundleProjectService projectService, |
| 248 | + String value) { |
| 249 | + var imports = parseHeader(Constants.REQUIRE_BUNDLE, value, h -> { |
| 250 | + VersionRange bundleVersion = Optional.ofNullable(h.getAttribute(Constants.BUNDLE_VERSION)) |
| 251 | + .map(VersionRange::valueOf).orElse(null); |
| 252 | + boolean optional = Constants.RESOLUTION_OPTIONAL.equals(h.getDirective(Constants.RESOLUTION_DIRECTIVE)); |
| 253 | + boolean reexport = Constants.VISIBILITY_REEXPORT.equals(h.getDirective(Constants.VISIBILITY_DIRECTIVE)); |
| 254 | + return projectService.newRequiredBundle(h.getValue(), bundleVersion, optional, reexport); |
| 255 | + }).toArray(IRequiredBundleDescription[]::new); |
| 256 | + project.setRequiredBundles(imports); |
| 257 | + } |
| 258 | + |
245 | 259 | private static <T> Stream<T> parseHeader(String header, String value, Function<ManifestElement, T> parser) { |
246 | 260 | try { |
247 | 261 | return Arrays.stream(ManifestElement.parseHeader(header, value)).map(parser); |
|
0 commit comments