Skip to content

Commit 8d42621

Browse files
committed
JBIDE-29208: Support JDK 17+
Signed-off-by: Koen Aers <koen.aers@gmail.com>
1 parent 921f220 commit 8d42621

File tree

1 file changed

+10
-70
lines changed

1 file changed

+10
-70
lines changed

orm/plugin/core/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/workbench/ProjectCompilerVersionChecker.java

Lines changed: 10 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
import org.eclipse.jdt.core.IJavaProject;
1414
import org.eclipse.jdt.core.JavaCore;
15-
import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
1615
import org.eclipse.jface.dialogs.MessageDialog;
1716
import org.eclipse.osgi.util.NLS;
1817
import org.eclipse.swt.widgets.Display;
@@ -23,7 +22,6 @@
2322
* @author Dmitry Geraskov (geraskov@gmail.com)
2423
*
2524
*/
26-
@SuppressWarnings("restriction")
2725
public class ProjectCompilerVersionChecker {
2826

2927
/**
@@ -38,8 +36,8 @@ public static boolean validateProjectComplianceLevel(final ConsoleConfiguration
3836
if (iJavaProject.exists()) {
3937
String projectTarget = iJavaProject.getOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, true);
4038
String eclipseCompilerVersion = System.getProperty("java.specification.version"); //$NON-NLS-1$
41-
long projectJdkLevel = versionToJdkLevel(projectTarget);
42-
long eclipseJdkLevel = versionToJdkLevel(eclipseCompilerVersion);
39+
long projectJdkLevel = decodeJdkVersion(projectTarget);
40+
long eclipseJdkLevel = decodeJdkVersion(eclipseCompilerVersion);
4341
if (eclipseJdkLevel < projectJdkLevel){
4442
Display.getDefault().syncExec(new Runnable(){
4543
@Override
@@ -56,73 +54,15 @@ public void run() {
5654
return true;
5755
}
5856

59-
private static final String VERSION_JSR14 = "jsr14"; //$NON-NLS-1$
60-
private static final String VERSION_CLDC1_1 = "cldc1.1"; //$NON-NLS-1$
61-
62-
private static long versionToJdkLevel(Object versionID) {
63-
if (versionID instanceof String) {
64-
String version = (String) versionID;
65-
// verification is optimized for all versions with same length and same "1." prefix
66-
if (version.length() == 1) {
67-
switch (version.charAt(0)) {
68-
case '9':
69-
return ClassFileConstants.JDK9;
70-
default:
71-
return 0;
72-
}
73-
}
74-
if (version.length() == 2 && version.charAt(0) == '1') {
75-
switch (version.charAt(1)) {
76-
case '0':
77-
return ClassFileConstants.JDK10;
78-
case '1':
79-
return ClassFileConstants.JDK11;
80-
case '2':
81-
return ClassFileConstants.JDK12;
82-
case '3':
83-
return ClassFileConstants.JDK13;
84-
case '4':
85-
return ClassFileConstants.JDK14;
86-
case '5':
87-
return ClassFileConstants.JDK15;
88-
case '6':
89-
return ClassFileConstants.JDK16;
90-
case '7':
91-
return ClassFileConstants.JDK17;
92-
default:
93-
return 0;
94-
}
95-
}
96-
if (version.length() == 3 && version.charAt(0) == '1' && version.charAt(1) == '.') {
97-
switch (version.charAt(2)) {
98-
case '1':
99-
return ClassFileConstants.JDK1_1;
100-
case '2':
101-
return ClassFileConstants.JDK1_2;
102-
case '3':
103-
return ClassFileConstants.JDK1_3;
104-
case '4':
105-
return ClassFileConstants.JDK1_4;
106-
case '5':
107-
return ClassFileConstants.JDK1_5;
108-
case '6':
109-
return ClassFileConstants.JDK1_6;
110-
case '7':
111-
return ClassFileConstants.JDK1_7;
112-
case '8':
113-
return ClassFileConstants.JDK1_8;
114-
default:
115-
return 0; // unknown
116-
}
117-
}
118-
if (VERSION_JSR14.equals(versionID)) {
119-
return ClassFileConstants.JDK1_4;
120-
}
121-
if (VERSION_CLDC1_1.equals(versionID)) {
122-
return ClassFileConstants.CLDC_1_1;
123-
}
57+
private static long decodeJdkVersion(String versionString) {
58+
long result = 0;
59+
int length = versionString.length();
60+
if (length == 1 || length == 2) {
61+
result = Long.parseLong(versionString);
62+
} else if (length == 3 && versionString.charAt(0) == '1' && versionString.charAt(1) == '.') {
63+
result = Long.parseLong(versionString.substring(2));
12464
}
125-
return 0; // unknown
65+
return result;
12666
}
12767

12868

0 commit comments

Comments
 (0)