Bug 549329 - More Quickfix options for "This plug-in does not export all
of its packages"
Change-Id: I075f1ef73ab0ab350eae6d05ed78271c14d491de
Signed-off-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java
index e7dbe5b..f54b45b 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java
@@ -3242,6 +3242,7 @@
public static String PDEJavaHelper_msgContentAssistAvailableWithKeyBinding;
public static String AddExportPackageResolution_Label;
+ public static String AddExportPackageInternalDirectiveResolution_Label;
public static String AddBundleClassPathResolution_add;
public static String AddBundleManifestVersionResolution_description;
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddExportPackageInternalDirectiveMarkerResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddExportPackageInternalDirectiveMarkerResolution.java
new file mode 100644
index 0000000..b7cc51f
--- /dev/null
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddExportPackageInternalDirectiveMarkerResolution.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2019 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.pde.internal.ui.correction;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.pde.internal.core.ibundle.IBundle;
+import org.eclipse.pde.internal.core.text.bundle.*;
+import org.eclipse.pde.internal.ui.PDEUIMessages;
+import org.osgi.framework.Constants;
+
+public class AddExportPackageInternalDirectiveMarkerResolution extends AddExportPackageMarkerResolution {
+
+ public AddExportPackageInternalDirectiveMarkerResolution(IMarker mark, int type, String values) {
+ super(mark, type, values);
+ }
+
+ @Override
+ public String getLabel() {
+ return PDEUIMessages.AddExportPackageInternalDirectiveResolution_Label;
+ }
+
+ @Override
+ protected void createChange(BundleModel model) {
+ IBundle bundle = model.getBundle();
+ if (bundle instanceof Bundle) {
+ Bundle bun = (Bundle) bundle;
+ ExportPackageHeader header = (ExportPackageHeader) bun.getManifestHeader(Constants.EXPORT_PACKAGE);
+ if (header == null) {
+ bundle.setHeader(Constants.EXPORT_PACKAGE, ""); //$NON-NLS-1$
+ header = (ExportPackageHeader) bun.getManifestHeader(Constants.EXPORT_PACKAGE);
+ }
+ processPackages(header, true);
+ }
+ }
+
+}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddExportPackageMarkerResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddExportPackageMarkerResolution.java
index 7ad6fd7..4c88baa 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddExportPackageMarkerResolution.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/AddExportPackageMarkerResolution.java
@@ -48,11 +48,11 @@
bundle.setHeader(Constants.EXPORT_PACKAGE, ""); //$NON-NLS-1$
header = (ExportPackageHeader) bun.getManifestHeader(Constants.EXPORT_PACKAGE);
}
- processPackages(header);
+ processPackages(header, false);
}
}
- private void processPackages(ExportPackageHeader header) {
+ protected void processPackages(ExportPackageHeader header, boolean setInternal) {
fValues = marker.getAttribute("packages", null); //$NON-NLS-1$
if (fValues == null) {
return;
@@ -64,6 +64,10 @@
Pattern pat = PatternConstructor.createPattern(filter, false);
for (String packageId : packages) {
ExportPackageObject obj = header.addPackage(packageId);
+ if (setInternal){
+ obj.setInternal(setInternal);
+ continue;
+ }
if (pat.matcher(packageId).matches())
obj.setInternal(true);
}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ResolutionGenerator.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ResolutionGenerator.java
index 8e1dd6e..332ed9a 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ResolutionGenerator.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ResolutionGenerator.java
@@ -88,7 +88,7 @@
case PDEMarkerFactory.M_UNECESSARY_DEP :
return new IMarkerResolution[] {new RemoveRequireBundleResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, marker.getAttribute("bundleId", null), marker)}; //$NON-NLS-1$
case PDEMarkerFactory.M_MISSING_EXPORT_PKGS :
- return new IMarkerResolution[] { new AddExportPackageMarkerResolution(marker,AbstractPDEMarkerResolution.CREATE_TYPE, marker.getAttribute("packages", null)) }; //$NON-NLS-1$
+ return new IMarkerResolution[] { new AddExportPackageMarkerResolution(marker,AbstractPDEMarkerResolution.CREATE_TYPE, marker.getAttribute("packages", null)), new AddExportPackageInternalDirectiveMarkerResolution(marker,AbstractPDEMarkerResolution.CREATE_TYPE, marker.getAttribute("packages", null)) }; //$NON-NLS-1$//$NON-NLS-2$
case PDEMarkerFactory.B_REMOVE_SLASH_FILE_ENTRY :
return new IMarkerResolution[] {new RemoveSeperatorBuildEntryResolution(AbstractPDEMarkerResolution.RENAME_TYPE, marker)};
case PDEMarkerFactory.B_APPEND_SLASH_FOLDER_ENTRY :
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
index f5986ea..85a348f 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
@@ -2370,6 +2370,7 @@
LocationSection_0=&Locations
AppendSeperatorBuildEntryResolution_label=Append a trailing separator to {0}.
AddExportPackageResolution_Label=Add missing packages
+AddExportPackageInternalDirectiveResolution_Label=Add missing packages with x-internal directive
DependencyManagementSection_jobName=Analyzing Code
DescriptionSection_nameLabel=Name: