Skip to content

Commit 7ad3e31

Browse files
committed
Added function that adds missing versions to export packages
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. Co-Authored by: Hillary V. <[email protected]> Added buttons and text to Organize Manifests Wizard Author: Yvonna M. <[email protected]> Date: Mon Aug 4 14:48:06 2025 -0700 Issue 1815 - Add an option to automatically add missing versions on exported packages Added a checkbox button, two radio buttons, and text to Organize Manifests Wizard for the adding missing export feature. Co-authored-by: Hillary V. <[email protected]> Fixed merge conflicts for organize manifests code Author: Yvonna M. <[email protected]> Date: Mon Aug 11 20:30:40 2025 -0700 Issue 1815 - Add an option to automatically add missing versions on exported packages Fixed conflicting merge conflicts in organize manifests settings file and the wizard page file. Co-authored-by: Hillary V. <[email protected]> Configured buttons in Organize Manifests Wizard Author: Yvonna M. <[email protected]> Date: Mon Aug 11 2025 Issue 1815 - Add an option to automatically add missing versions on exported packages Configured buttons in Organize Manifests Wizard to work to add versions to missing package exports. Fixed radio buttons so it defaults to a fixed version and when the checkbox is unclicked, other options become unavailable. Co-authored-by: Hillary V. <[email protected]> Adjusted text and button configurations in Organize Manifests Wizard Author: Yvonna M. <[email protected]> Date: Mon Aug 11 19:55:54 2025 -0700 Issue 1815 - Add an option to automatically add missing versions on exported packages Configured buttons in Organize Manifests Wizard to work to add versions to missing package exports. Fixed radio button to default to fixed version, adjusted text to show what the fixed version default would look like. Repaired checkbox button. Co-authored-by: Hillary V. <[email protected]> Resolved merge conflicts Author: Yvonna M. <[email protected]> Date: Sat Sep 6 21:24:33 2025 -0700 Issue 1815 - Add an option to automatically add missing versions on exported packages 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 7ad3e31

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)