Bug 559325 - "One of the plug-in's dependencies requires an execution
environment of JavaSE-1.8, hence this plug-in's execution environment
should be at least JavaSE-1.8." should mention at least one plugin
Change-Id: If53ac93919b863baaabeda8dab1ab6bcc3fe6624
Signed-off-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BundleErrorReporter.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BundleErrorReporter.java
index bec7641..a126d1c 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BundleErrorReporter.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BundleErrorReporter.java
@@ -679,22 +679,27 @@
// Check for highest BREE of bundle dependencies
int compilerFlag = CompilerFlags.getFlag(fProject, CompilerFlags.P_EXEC_ENV_TOO_LOW);
if (compilerFlag != CompilerFlags.IGNORE) {
- String highestDependencyEE = checkBREE(desc);
- String highestBundleEE = getHighestBREE(bundleEnvs);
- try {
- if (highestBundleEE != getHighestEE(highestDependencyEE, highestBundleEE)) {
-
+ ArrayList<Object> checkBREE = checkBREE(desc);
+ String highestDependencyEE = checkBREE.size() > 0 ? (String) checkBREE.get(0) : ""; //$NON-NLS-1$
+ String highestBundleEE = getHighestBREE(bundleEnvs);
+ try {
+ if (highestBundleEE != getHighestEE(highestDependencyEE, highestBundleEE)) {
+ BundleDescription object = null;
+ if (checkBREE.size() == 2) {
+ object = (BundleDescription) checkBREE.get(1);
+ }
VirtualMarker marker = report(
NLS.bind(PDECoreMessages.BundleErrorReporter_ExecEnv_tooLow, highestDependencyEE,
- highestDependencyEE),
+ object != null ? object.getName() : ""), //$NON-NLS-1$
getLine(header, highestBundleEE), compilerFlag, PDEMarkerFactory.M_EXEC_ENV_TOO_LOW,
PDEMarkerFactory.CAT_EE);
addMarkerAttribute(marker, PDEMarkerFactory.compilerKey, CompilerFlags.P_EXEC_ENV_TOO_LOW);
addMarkerAttribute(marker, PDEMarkerFactory.REQUIRED_EXEC_ENV, highestDependencyEE);
+ }
+ } catch (Exception e) {
+ PDECore.log(e);
}
- } catch (Exception e) {
- PDECore.log(e);
- }
+ checkBREE.clear();
}
}
@@ -825,11 +830,14 @@
* @param desc
* The bundle description of the bundle which we wish to check
* for it's highest required Execution Environment
- * @return The highest Execution Environment required by the bundle or any
- * of it's dependencies
+ * @return List containing the highest Execution Environment &
+ * BundleDescription with the highest BREE required by the bundle or
+ * any of it's dependencies
*/
- private String checkBREE(BundleDescription desc) {
+ private ArrayList<Object> checkBREE(BundleDescription desc) {
+ ArrayList<Object> ret = new ArrayList<>();
String highestBREE = getHighestBREE(desc.getExecutionEnvironments());
+ ret.add(highestBREE);
HashSet<BundleDescription> visitedBundles = new HashSet<>();
Deque<BundleDescription> bundleDescriptions = new ArrayDeque<>();
bundleDescriptions.push(desc);
@@ -847,14 +855,19 @@
}
}
try {
- highestBREE = getHighestEE(highestBREE, getHighestBREE(dependencyDesc.getExecutionEnvironments()));
+ String high = getHighestEE(highestBREE, getHighestBREE(dependencyDesc.getExecutionEnvironments()));
+ if (!high.equals(highestBREE)) {
+ highestBREE = high;
+ ret.clear();
+ ret.add(highestBREE);
+ ret.add(dependencyDesc);
+ }
} catch (Exception e) {
PDECore.log(e);
}
}
- return highestBREE;
+ return ret;
}
-
/**
* Validates the Eclipse-BundleShape header
*
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties
index b05af12..a820694 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties
@@ -174,7 +174,7 @@
BundleErrorReporter_BundleRangeInvalidInBundleVersion=Unsatisfied version constraint: ''{0}''
BundleErrorReporter_NotExistPDE=Bundle ''{0}'' cannot be resolved
BundleErrorReporter_EmptyTargetPlatform=Target Platform is not set
-BundleErrorReporter_ExecEnv_tooLow=Execution environment is lower than one of the plug-in''s dependencies which has an execution environment of {0}.
+BundleErrorReporter_ExecEnv_tooLow=Execution environment is lower than one of the plug-in''s dependencies ({1}) which has an execution environment of {0}.
BundleErrorReporter_exportNoJRE=Cannot export packages prefixed with 'java'
BundleErrorReporter_importNoJRE=Cannot import packages prefixed with 'java'
BundleErrorReporter_HostNotExistPDE=Host bundle ''{0}'' cannot be resolved