Skip to content

Commit 410d19a

Browse files
committed
Added function that adds missing versions to export packages and resolved merge conflicts
Author: Yvonna M. <[email protected]> Date: Sat Sep 6 12:57:00 2025 -0700 Issue 1815 - Add an option to automatically add missing versions on exported packages The new function sorts through a list of export packages checks if there is a missing version and adds the new version to export package. Resolved merge conflicts present in the Organize Manifests Wizard Page and PDEUI messages file. Co-Authored by: Hillary V. <[email protected]>
1 parent 0a4c726 commit 410d19a

File tree

6 files changed

+105
-3
lines changed

6 files changed

+105
-3
lines changed

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3021,6 +3021,12 @@ public class PDEUIMessages extends NLS {
30213021

30223022
public static String OrganizeManifestsWizardPage_unresolvedDependencies;
30233023

3024+
public static String OrganizeManifestsWizardPage_addMissingVersions;
3025+
3026+
public static String OrganizeManifestsWizardPage_addFixedVersions;
3027+
3028+
public static String OrganizeManifestsWizardPage_addBundledVersions;
3029+
30243030
public static String OrganizeManifestsWizardPage_remove;
30253031

30263032
public static String OrganizeManifestsWizardPage_markOptional;

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2360,6 +2360,9 @@ OrganizeManifestsWizardPage_prefixNL=&Prefix icon paths in plug-in extensions wi
23602360
OrganizeManifestsOperation_nlIconPath=checking icon paths for missing $nl$ segments... {0}
23612361
OrganizeManifestsOperation_unusedKeys=checking for unused keys... {0}
23622362
OrganizeManifestsWizardPage_addMissing=&Ensure that all packages appear in the MANIFEST.MF
2363+
OrganizeManifestsWizardPage_addMissingVersions=&Add missing versions to package exports with...
2364+
OrganizeManifestsWizardPage_addFixedVersions=&add fixed version (defaults to 1.0.0)
2365+
OrganizeManifestsWizardPage_addBundledVersions=&add bundled version
23632366
OrganizeManifestsProcessor_rootMessage=Organize Manifest for {0}
23642367
ConvertAutomaticManifestsProcessor_rootMessage=Converting {0}...
23652368
ConvertAutomaticManifestsProcessor_changeProject=Convert project {0}

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/IOrganizeManifestsSettings.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
public interface IOrganizeManifestsSettings {
1717

18+
public static final String PROP_ADD_MISSING_VERSIONS = "OrganizeManifests.ExportedPackages.addMissingVersions"; //$NON-NLS-1$
19+
public static final String PROP_MISSING_VERSION_OPTIONS = "OrganizeManifests.ExportedPackages.missingVersionOptions"; //$NON-NLS-1$
1820
public static final String PROP_ADD_MISSING = "OrganizeManifests.ExportedPackages.addMissing"; //$NON-NLS-1$
1921
public static final String PROP_MARK_INTERNAL = "OrganizeManifests.ExportedPackages.makeInternal"; //$NON-NLS-1$
2022
public static final String PROP_INTERAL_PACKAGE_FILTER = "OrganizeManifests.ExportedPackages.packageFilter"; //$NON-NLS-1$

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/OrganizeManifest.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,40 @@ private static final Set<String> getAvailableExportedPackages() {
348348
return set;
349349
}
350350

351+
public static void addMissingExportVersions(IBundleModel bundle, boolean useFixedVersion,
352+
boolean useBundleVersion) {
353+
ExportPackageHeader header = (ExportPackageHeader) bundle.getBundle()
354+
.getManifestHeader(Constants.EXPORT_PACKAGE);
355+
356+
if (header == null) {
357+
return;
358+
}
359+
360+
ExportPackageObject[] packages = header.getPackages();
361+
String bundleVersion = bundle.getBundle().getHeader(Constants.BUNDLE_VERSION);
362+
363+
for (ExportPackageObject pkg : packages) {
364+
String version = pkg.getVersion();
365+
366+
if (version == null || version.trim().isEmpty()) {
367+
String newVersion = null;
368+
if (useFixedVersion) {
369+
newVersion = "1.0.0"; //$NON-NLS-1$
370+
} else if (useBundleVersion && bundleVersion != null) {
371+
newVersion = bundleVersion;
372+
}
373+
if (newVersion != null) {
374+
pkg.setVersion(newVersion);
375+
}
376+
}
377+
}
378+
379+
try {
380+
// bundle.save(null);
381+
} catch (Exception e) {
382+
e.printStackTrace();
383+
}
384+
}
351385
public static void removeUnneededLazyStart(IBundle bundle) {
352386
if (!(bundle instanceof Bundle)) {
353387
return;

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/OrganizeManifestsProcessor.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,12 @@ public class OrganizeManifestsProcessor extends RefactoringProcessor implements
5353
protected boolean fMarkInternal = true; // mark export-package as internal
5454
protected String fPackageFilter = VALUE_DEFAULT_FILTER;
5555
protected boolean fRemoveUnresolved = true; // remove unresolved
56-
// export-package
56+
protected boolean fAddMissingVersions = true; // add missing versions to
57+
// export packages
58+
protected boolean fMissingVersionOptions = true; // options for fixed or
59+
// bundled versions to
60+
// packages
61+
// export-package
5762
protected boolean fCalculateUses = false; // calculate the 'uses' directive
5863
// for exported packages
5964
protected boolean fModifyDep = true; // modify import-package /
@@ -78,6 +83,7 @@ public class OrganizeManifestsProcessor extends RefactoringProcessor implements
7883
private IProject fCurrentProject;
7984
private boolean fComputeImports;
8085

86+
8187
public OrganizeManifestsProcessor(List<IProject> projects) {
8288
fProjectList = projects;
8389
}
@@ -351,4 +357,12 @@ public void setAddDependencies(boolean addDependencies) {
351357
public void setComputeImports(boolean computeImports) {
352358
this.fComputeImports = computeImports;
353359
}
360+
361+
public void setAddMissingVersions(boolean addMissingVersions) {
362+
this.fAddMissingVersions = addMissingVersions;
363+
}
364+
365+
public void setMissingVersionOptions(boolean missingVersionOptions) {
366+
this.fMissingVersionOptions = missingVersionOptions;
367+
}
354368
}

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/OrganizeManifestsWizardPage.java

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@
4545

4646
public class OrganizeManifestsWizardPage extends UserInputWizardPage implements ILaunchingPreferenceConstants, IOrganizeManifestsSettings {
4747

48+
private Button fAddFixedVersions;
49+
private Button fAddBundledVersions;
50+
private Button fAddMissingVersions;
4851
private Button fRemoveUnresolved;
4952
private Button fCalculateUses;
5053
private Button fAddMissing;
@@ -164,6 +167,19 @@ private void createExportedPackagesGroup(Composite container) {
164167
gd = new GridData();
165168
gd.verticalIndent = 5;
166169
fCalculateUses.setLayoutData(gd);
170+
171+
fAddMissingVersions = new Button(group, SWT.CHECK);
172+
fAddMissingVersions.setText(PDEUIMessages.OrganizeManifestsWizardPage_addMissingVersions);
173+
gd = new GridData();
174+
gd.verticalIndent = 5;
175+
fAddMissingVersions.setLayoutData(gd);
176+
177+
fAddFixedVersions = new Button(group, SWT.RADIO);
178+
fAddFixedVersions.setText(PDEUIMessages.OrganizeManifestsWizardPage_addFixedVersions);
179+
180+
fAddBundledVersions = new Button(group, SWT.RADIO);
181+
fAddBundledVersions.setText(PDEUIMessages.OrganizeManifestsWizardPage_addBundledVersions);
182+
167183
}
168184

169185
private void createRequireImportGroup(Composite container) {
@@ -226,6 +242,7 @@ private void presetOptions() {
226242
fMarkInternal.setSelection(selection);
227243
fProcessor.setMarkInternal(selection);
228244

245+
229246
String filter = settings.get(PROP_INTERAL_PACKAGE_FILTER);
230247
if (filter == null) {
231248
filter = VALUE_DEFAULT_FILTER;
@@ -237,6 +254,15 @@ private void presetOptions() {
237254
fRemoveUnresolved.setSelection(selection);
238255
fProcessor.setRemoveUnresolved(selection);
239256

257+
selection = settings.getBoolean(PROP_ADD_MISSING_VERSIONS);
258+
fAddMissingVersions.setSelection(selection);
259+
fProcessor.setAddMissingVersions(selection);
260+
261+
selection = settings.getBoolean(PROP_MISSING_VERSION_OPTIONS);
262+
fAddBundledVersions.setSelection(selection);
263+
fAddFixedVersions.setSelection(!selection);
264+
fProcessor.setMissingVersionOptions(selection);
265+
240266
selection = settings.getBoolean(PROP_CALCULATE_USES);
241267
fCalculateUses.setSelection(selection);
242268
fProcessor.setCalculateUses(selection);
@@ -291,6 +317,8 @@ protected void performOk() {
291317
settings.put(PROP_REMOVE_UNRESOLVED_EX, !fRemoveUnresolved.getSelection());
292318
settings.put(PROP_CALCULATE_USES, fCalculateUses.getSelection());
293319

320+
settings.put(PROP_ADD_MISSING_VERSIONS, !fAddMissingVersions.getSelection());
321+
294322
settings.put(PROP_MODIFY_DEP, !fModifyDependencies.getSelection());
295323
settings.put(PROP_RESOLVE_IMP_MARK_OPT, fOptionalImport.getSelection());
296324
settings.put(PROP_UNUSED_DEPENDENCIES, fUnusedDependencies.getSelection());
@@ -313,10 +341,15 @@ private void setEnabledStates() {
313341
boolean modifyDependencies = fModifyDependencies.getSelection();
314342
fRemoveImport.setEnabled(modifyDependencies);
315343
fOptionalImport.setEnabled(modifyDependencies);
344+
345+
boolean addMissingVersions = fAddMissingVersions.getSelection();
346+
fAddBundledVersions.setEnabled(addMissingVersions);
347+
fAddFixedVersions.setEnabled(addMissingVersions);
316348
}
317349

318350
private void setButtonArrays() {
319-
fTopLevelButtons = new Button[] { fRemoveUnresolved, fAddMissing, fModifyDependencies, fMarkInternal,
351+
fTopLevelButtons = new Button[] { fRemoveUnresolved, fAddMissing, fAddMissingVersions, fModifyDependencies,
352+
fMarkInternal,
320353
fUnusedDependencies, fAdditonalDependencies, fComputeImportPackages, fFixIconNLSPaths,
321354
fRemovedUnusedKeys, fRemoveLazy, fRemoveUselessFiles, fCalculateUses };
322355
}
@@ -333,7 +366,8 @@ private void setPageComplete() {
333366
}
334367

335368
private void hookListeners() {
336-
hookSelectionListener(new Button[] { fMarkInternal, fModifyDependencies }, widgetSelectedAdapter(e -> {
369+
hookSelectionListener(new Button[] { fMarkInternal, fModifyDependencies, fAddMissingVersions },
370+
widgetSelectedAdapter(e -> {
337371
setEnabledStates();
338372
doProcessorSetting(e.getSource());
339373
}));
@@ -344,6 +378,8 @@ private void hookListeners() {
344378
hookSelectionListener(new Button[] { fRemoveImport, fOptionalImport },
345379
widgetSelectedAdapter(e -> doProcessorSetting(e.getSource())));
346380
hookTextListener(new Text[] {fPackageFilter}, e -> doProcessorSetting(e.getSource()));
381+
hookSelectionListener(new Button[] { fAddFixedVersions, fAddBundledVersions },
382+
widgetSelectedAdapter(e -> doProcessorSetting(e.getSource())));
347383
}
348384

349385
private void doProcessorSetting(Object source) {
@@ -380,9 +416,16 @@ private void doProcessorSetting(Object source) {
380416
fProcessor.setPrefixIconNL(fFixIconNLSPaths.getSelection());
381417
} else if (fRemovedUnusedKeys.equals(source)) {
382418
fProcessor.setUnusedKeys(fRemovedUnusedKeys.getSelection());
419+
} else if (fAddMissingVersions.equals(source)) {
420+
fProcessor.setAddMissingVersions(fAddMissingVersions.getSelection());
421+
} else if (fAddFixedVersions.equals(source)) {
422+
fProcessor.setMissingVersionOptions(fAddFixedVersions.getSelection());
423+
} else if (fAddBundledVersions.equals(source)) {
424+
fProcessor.setMissingVersionOptions(fAddBundledVersions.getSelection());
383425
}
384426
}
385427

428+
386429
private void hookSelectionListener(Button[] buttons, SelectionListener adapter) {
387430
for (Button button : buttons) {
388431
button.addSelectionListener(adapter);

0 commit comments

Comments
 (0)