|
8 | 8 | *
|
9 | 9 | * SPDX-License-Identifier: EPL-2.0
|
10 | 10 | *
|
| 11 | + * This is an implementation of an early-draft specification developed under the Java |
| 12 | + * Community Process (JCP) and is made available for testing and evaluation purposes |
| 13 | + * only. The code is not compatible with any specification of the JCP. |
| 14 | + * |
11 | 15 | * Contributors:
|
12 | 16 | * IBM Corporation - initial API and implementation
|
13 | 17 | * Frits Jalvingh - Contribution for Bug 459831 - [launching] Support attaching
|
|
88 | 92 | import org.eclipse.jdt.internal.launching.DefaultEntryResolver;
|
89 | 93 | import org.eclipse.jdt.internal.launching.DefaultProjectClasspathEntry;
|
90 | 94 | import org.eclipse.jdt.internal.launching.DetectVMInstallationsJob;
|
| 95 | +import org.eclipse.jdt.internal.launching.EECompilationParticipant; |
91 | 96 | import org.eclipse.jdt.internal.launching.EEVMInstall;
|
92 | 97 | import org.eclipse.jdt.internal.launching.EEVMType;
|
93 | 98 | import org.eclipse.jdt.internal.launching.JREContainerInitializer;
|
@@ -3338,88 +3343,36 @@ private static void updateCompliance(IVMInstall vm) {
|
3338 | 3343 | LaunchingPlugin.log("Compliance needs an update."); //$NON-NLS-1$
|
3339 | 3344 | }
|
3340 | 3345 | if (vm instanceof IVMInstall2) {
|
3341 |
| - String javaVersion = ((IVMInstall2)vm).getJavaVersion(); |
3342 |
| - if (javaVersion != null) { |
3343 |
| - String compliance = null; |
3344 |
| - if (javaVersion.startsWith(JavaCore.VERSION_1_8)) { |
3345 |
| - compliance = JavaCore.VERSION_1_8; |
3346 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_9) |
3347 |
| - && (javaVersion.length() == JavaCore.VERSION_9.length() || javaVersion.charAt(JavaCore.VERSION_9.length()) == '.')) { |
3348 |
| - compliance = JavaCore.VERSION_9; |
3349 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_10) |
3350 |
| - && (javaVersion.length() == JavaCore.VERSION_10.length() || javaVersion.charAt(JavaCore.VERSION_10.length()) == '.')) { |
3351 |
| - compliance = JavaCore.VERSION_10; |
3352 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_11) |
3353 |
| - && (javaVersion.length() == JavaCore.VERSION_11.length() || javaVersion.charAt(JavaCore.VERSION_11.length()) == '.')) { |
3354 |
| - compliance = JavaCore.VERSION_11; |
3355 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_12) |
3356 |
| - && (javaVersion.length() == JavaCore.VERSION_12.length() || javaVersion.charAt(JavaCore.VERSION_12.length()) == '.')) { |
3357 |
| - compliance = JavaCore.VERSION_12; |
3358 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_13) |
3359 |
| - && (javaVersion.length() == JavaCore.VERSION_13.length() || javaVersion.charAt(JavaCore.VERSION_13.length()) == '.')) { |
3360 |
| - compliance = JavaCore.VERSION_13; |
3361 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_14) |
3362 |
| - && (javaVersion.length() == JavaCore.VERSION_14.length() || javaVersion.charAt(JavaCore.VERSION_14.length()) == '.')) { |
3363 |
| - compliance = JavaCore.VERSION_14; |
3364 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_15) |
3365 |
| - && (javaVersion.length() == JavaCore.VERSION_15.length() || javaVersion.charAt(JavaCore.VERSION_15.length()) == '.')) { |
3366 |
| - compliance = JavaCore.VERSION_15; |
3367 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_16) |
3368 |
| - && (javaVersion.length() == JavaCore.VERSION_16.length() || javaVersion.charAt(JavaCore.VERSION_16.length()) == '.')) { |
3369 |
| - compliance = JavaCore.VERSION_16; |
3370 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_17) |
3371 |
| - && (javaVersion.length() == JavaCore.VERSION_17.length() || javaVersion.charAt(JavaCore.VERSION_17.length()) == '.')) { |
3372 |
| - compliance = JavaCore.VERSION_17; |
3373 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_18) |
3374 |
| - && (javaVersion.length() == JavaCore.VERSION_18.length() || javaVersion.charAt(JavaCore.VERSION_18.length()) == '.')) { |
3375 |
| - compliance = JavaCore.VERSION_18; |
3376 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_19) |
3377 |
| - && (javaVersion.length() == JavaCore.VERSION_19.length() || javaVersion.charAt(JavaCore.VERSION_19.length()) == '.')) { |
3378 |
| - compliance = JavaCore.VERSION_19; |
3379 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_20) |
3380 |
| - && (javaVersion.length() == JavaCore.VERSION_20.length() || javaVersion.charAt(JavaCore.VERSION_20.length()) == '.')) { |
3381 |
| - compliance = JavaCore.VERSION_20; |
3382 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_21) |
3383 |
| - && (javaVersion.length() == JavaCore.VERSION_21.length() || javaVersion.charAt(JavaCore.VERSION_21.length()) == '.')) { |
3384 |
| - compliance = JavaCore.VERSION_21; |
3385 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_22) |
3386 |
| - && (javaVersion.length() == JavaCore.VERSION_22.length() || javaVersion.charAt(JavaCore.VERSION_22.length()) == '.')) { |
3387 |
| - compliance = JavaCore.VERSION_22; |
3388 |
| - } else if (javaVersion.startsWith(JavaCore.VERSION_23) |
3389 |
| - && (javaVersion.length() == JavaCore.VERSION_23.length() || javaVersion.charAt(JavaCore.VERSION_23.length()) == '.')) { |
3390 |
| - compliance = JavaCore.VERSION_23; |
3391 |
| - } else { |
3392 |
| - compliance = JavaCore.VERSION_23; // use latest by default |
3393 |
| - } |
| 3346 | + String compliance = EECompilationParticipant.getCompilerCompliance((IVMInstall2) vm); |
| 3347 | + if (compliance == null) { |
| 3348 | + compliance = JavaCore.latestSupportedJavaVersion(); |
| 3349 | + } |
3394 | 3350 |
|
3395 |
| - Hashtable<String, String> options= JavaCore.getOptions(); |
| 3351 | + Hashtable<String, String> options = JavaCore.getOptions(); |
3396 | 3352 |
|
3397 |
| - org.osgi.service.prefs.Preferences bundleDefaults = BundleDefaultsScope.INSTANCE.getNode(JavaCore.PLUGIN_ID); |
| 3353 | + org.osgi.service.prefs.Preferences bundleDefaults = BundleDefaultsScope.INSTANCE.getNode(JavaCore.PLUGIN_ID); |
3398 | 3354 |
|
3399 |
| - boolean isDefault = |
3400 |
| - equals(JavaCore.COMPILER_COMPLIANCE, options, bundleDefaults) && |
3401 |
| - equals(JavaCore.COMPILER_SOURCE, options, bundleDefaults) && |
3402 |
| - equals(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, options, bundleDefaults) && |
3403 |
| - equals(JavaCore.COMPILER_PB_ASSERT_IDENTIFIER, options, bundleDefaults) && |
3404 |
| - equals(JavaCore.COMPILER_PB_ENUM_IDENTIFIER, options, bundleDefaults); |
3405 |
| - if (JavaCore.compareJavaVersions(compliance, JavaCore.VERSION_10) > 0) { |
3406 |
| - isDefault = isDefault && equals(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, options, bundleDefaults) |
3407 |
| - && equals(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, options, bundleDefaults); |
3408 |
| - } |
3409 |
| - // only update the compliance settings if they are default settings, otherwise the |
3410 |
| - // settings have already been modified by a tool or user |
| 3355 | + boolean isDefault = equals(JavaCore.COMPILER_COMPLIANCE, options, bundleDefaults) |
| 3356 | + && equals(JavaCore.COMPILER_SOURCE, options, bundleDefaults) |
| 3357 | + && equals(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, options, bundleDefaults) |
| 3358 | + && equals(JavaCore.COMPILER_PB_ASSERT_IDENTIFIER, options, bundleDefaults) |
| 3359 | + && equals(JavaCore.COMPILER_PB_ENUM_IDENTIFIER, options, bundleDefaults); |
| 3360 | + if (JavaCore.compareJavaVersions(compliance, JavaCore.VERSION_10) > 0) { |
| 3361 | + isDefault = isDefault && equals(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, options, bundleDefaults) |
| 3362 | + && equals(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, options, bundleDefaults); |
| 3363 | + } |
| 3364 | + // only update the compliance settings if they are default settings, otherwise the |
| 3365 | + // settings have already been modified by a tool or user |
| 3366 | + if (LaunchingPlugin.isVMLogging()) { |
| 3367 | + LaunchingPlugin.log("Compliance to be updated is: " + compliance); //$NON-NLS-1$ |
| 3368 | + } |
| 3369 | + if (isDefault) { |
| 3370 | + JavaCore.setComplianceOptions(compliance, options); |
| 3371 | + JavaCore.setOptions(options); |
3411 | 3372 | if (LaunchingPlugin.isVMLogging()) {
|
3412 |
| - LaunchingPlugin.log("Compliance to be updated is: " + compliance); //$NON-NLS-1$ |
| 3373 | + LaunchingPlugin.log("Compliance Options are updated."); //$NON-NLS-1$ |
3413 | 3374 | }
|
3414 |
| - if (isDefault) { |
3415 |
| - JavaCore.setComplianceOptions(compliance, options); |
3416 |
| - JavaCore.setOptions(options); |
3417 |
| - if (LaunchingPlugin.isVMLogging()) { |
3418 |
| - LaunchingPlugin.log("Compliance Options are updated."); //$NON-NLS-1$ |
3419 |
| - } |
3420 |
| - } |
3421 |
| - |
3422 |
| - } |
| 3375 | + } |
3423 | 3376 | }
|
3424 | 3377 | }
|
3425 | 3378 |
|
|
0 commit comments