2525import java .util .Set ;
2626import java .util .SortedSet ;
2727import java .util .TreeSet ;
28+ import java .util .regex .Matcher ;
29+ import java .util .regex .Pattern ;
2830
2931import javax .xml .parsers .DocumentBuilder ;
3032
6466 */
6567public 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