Skip to content

Commit 9efbd89

Browse files
laeubiiloveeclipse
authored andcommitted
Make determination of execution environment compliance generic
Currently one needs to add a new if for each new java version while the value is only matched against the number in the string. This now uses a pattern and check the result is larger than Java 1.8 version and then returns the number as a string so it automatically adapt to new java versions.
1 parent 8016ad6 commit 9efbd89

File tree

1 file changed

+14
-37
lines changed

1 file changed

+14
-37
lines changed

org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/environments/EnvironmentsManager.java

Lines changed: 14 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import java.util.Set;
2626
import java.util.SortedSet;
2727
import java.util.TreeSet;
28+
import java.util.regex.Matcher;
29+
import java.util.regex.Pattern;
2830

2931
import javax.xml.parsers.DocumentBuilder;
3032

@@ -64,6 +66,8 @@
6466
*/
6567
public class EnvironmentsManager implements IExecutionEnvironmentsManager, IVMInstallChangedListener, IPreferenceChangeListener {
6668

69+
private static final Pattern EE_PATTERN = Pattern.compile("(\\d+)"); //$NON-NLS-1$
70+
6771
/**
6872
* Extension configuration element name.
6973
*/
@@ -203,41 +207,15 @@ public synchronized Analyzer[] getAnalyzers() {
203207

204208
private String getExecutionEnvironmentCompliance(IExecutionEnvironment executionEnvironment) {
205209
String desc = executionEnvironment.getId();
206-
if (desc.indexOf(JavaCore.VERSION_25) != -1) {
207-
return JavaCore.VERSION_25;
208-
} else if (desc.indexOf(JavaCore.VERSION_24) != -1) {
209-
return JavaCore.VERSION_24;
210-
} else if (desc.indexOf(JavaCore.VERSION_23) != -1) {
211-
return JavaCore.VERSION_23;
212-
} else if (desc.indexOf(JavaCore.VERSION_22) != -1) {
213-
return JavaCore.VERSION_22;
214-
} else if (desc.indexOf(JavaCore.VERSION_21) != -1) {
215-
return JavaCore.VERSION_21;
216-
} else if (desc.indexOf(JavaCore.VERSION_20) != -1) {
217-
return JavaCore.VERSION_20;
218-
} else if (desc.indexOf(JavaCore.VERSION_19) != -1) {
219-
return JavaCore.VERSION_19;
220-
} else if (desc.indexOf(JavaCore.VERSION_18) != -1) {
221-
return JavaCore.VERSION_18;
222-
} else if (desc.indexOf(JavaCore.VERSION_17) != -1) {
223-
return JavaCore.VERSION_17;
224-
} else if (desc.indexOf(JavaCore.VERSION_16) != -1) {
225-
return JavaCore.VERSION_16;
226-
} else if (desc.indexOf(JavaCore.VERSION_15) != -1) {
227-
return JavaCore.VERSION_15;
228-
} else if (desc.indexOf(JavaCore.VERSION_14) != -1) {
229-
return JavaCore.VERSION_14;
230-
} else if (desc.indexOf(JavaCore.VERSION_13) != -1) {
231-
return JavaCore.VERSION_13;
232-
} else if (desc.indexOf(JavaCore.VERSION_12) != -1) {
233-
return JavaCore.VERSION_12;
234-
} else if (desc.indexOf(JavaCore.VERSION_11) != -1) {
235-
return JavaCore.VERSION_11;
236-
} else if (desc.indexOf(JavaCore.VERSION_10) != -1) {
237-
return JavaCore.VERSION_10;
238-
} else if (desc.indexOf(JavaCore.VERSION_9) != -1) {
239-
return JavaCore.VERSION_9;
240-
} else if (desc.indexOf(JavaCore.VERSION_1_8) != -1) {
210+
// For java version > 1.8 we can simply extract the version from the string by searching the numbers
211+
Matcher matcher = EE_PATTERN.matcher(desc);
212+
if (matcher.find()) {
213+
String group = matcher.group(1);
214+
if (Integer.parseInt(group) >= 9) {
215+
return group;
216+
}
217+
}
218+
if (desc.indexOf(JavaCore.VERSION_1_8) != -1) {
241219
return JavaCore.VERSION_1_8;
242220
} else if (desc.indexOf(JavaCore.VERSION_1_7) != -1) {
243221
return JavaCore.VERSION_1_7;
@@ -253,10 +231,9 @@ private String getExecutionEnvironmentCompliance(IExecutionEnvironment execution
253231
return JavaCore.VERSION_1_2;
254232
} else if (desc.indexOf(JavaCore.VERSION_1_1) != -1) {
255233
return JavaCore.VERSION_1_1;
256-
} else if (desc.indexOf("1.0") != -1) { //$NON-NLS-1$
234+
} else {
257235
return "1.0"; //$NON-NLS-1$
258236
}
259-
return JavaCore.VERSION_1_3;
260237
}
261238

262239
private synchronized void initializeExtensions() {

0 commit comments

Comments
 (0)