java: correct SDK version from language level

This commit is contained in:
Roman Shevchenko
2015-05-13 22:31:05 +02:00
parent b7d0d8374c
commit f6ee774945
2 changed files with 41 additions and 7 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
* Copyright 2000-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,14 +26,17 @@ import java.util.Arrays;
* @author nik
*/
public enum JavaSdkVersion {
JDK_1_0(LanguageLevel.JDK_1_3, "1.0"), JDK_1_1(LanguageLevel.JDK_1_3, "1.1"), JDK_1_2(LanguageLevel.JDK_1_3, "1.2"), JDK_1_3(LanguageLevel.JDK_1_3, "1.3"),
JDK_1_0(LanguageLevel.JDK_1_3, "1.0"),
JDK_1_1(LanguageLevel.JDK_1_3, "1.1"),
JDK_1_2(LanguageLevel.JDK_1_3, "1.2"),
JDK_1_3(LanguageLevel.JDK_1_3, "1.3"),
JDK_1_4(LanguageLevel.JDK_1_4, "1.4"),
JDK_1_5(LanguageLevel.JDK_1_5, "1.5"),
JDK_1_6(LanguageLevel.JDK_1_6, "1.6"),
JDK_1_7(LanguageLevel.JDK_1_7, "1.7"),
JDK_1_8(LanguageLevel.JDK_1_8, "1.8"),
JDK_1_9(LanguageLevel.JDK_1_9, "1.9");
private final LanguageLevel myMaxLanguageLevel;
private final String myDescription;
@@ -75,15 +78,16 @@ public enum JavaSdkVersion {
@NotNull
public static JavaSdkVersion fromLanguageLevel(@NotNull LanguageLevel languageLevel) throws IllegalArgumentException {
JavaSdkVersion[] values = values();
for (int i = values.length - 1; i >= 0; i--) {
JavaSdkVersion version = values[i];
if (languageLevel == LanguageLevel.JDK_1_3) {
return JDK_1_3;
}
for (JavaSdkVersion version : values()) {
if (version.getMaxLanguageLevel().isAtLeast(languageLevel)) {
return version;
}
}
throw new IllegalArgumentException(
"Can't map Java SDK by language level "+languageLevel+". Available values: "+ Arrays.toString(values())
"Can't map Java SDK by language level " + languageLevel + ". Available values: " + Arrays.toString(values())
);
}
}
@@ -0,0 +1,30 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.openapi.projectRoots;
import com.intellij.pom.java.LanguageLevel;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class JavaSdkVersionTest {
@Test
public void sdkVersionFromLanguageLevel() {
assertEquals(JavaSdkVersion.JDK_1_3, JavaSdkVersion.fromLanguageLevel(LanguageLevel.JDK_1_3));
assertEquals(JavaSdkVersion.JDK_1_6, JavaSdkVersion.fromLanguageLevel(LanguageLevel.JDK_1_6));
assertEquals(JavaSdkVersion.JDK_1_8, JavaSdkVersion.fromLanguageLevel(LanguageLevel.JDK_1_8));
}
}