From f6ee7749450ddcf424874082b2f80438c5b4ee4d Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 13 May 2015 22:31:05 +0200 Subject: [PATCH] java: correct SDK version from language level --- .../openapi/projectRoots/JavaSdkVersion.java | 18 ++++++----- .../projectRoots/JavaSdkVersionTest.java | 30 +++++++++++++++++++ 2 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 java/java-tests/testSrc/com/intellij/openapi/projectRoots/JavaSdkVersionTest.java diff --git a/java/java-psi-api/src/com/intellij/openapi/projectRoots/JavaSdkVersion.java b/java/java-psi-api/src/com/intellij/openapi/projectRoots/JavaSdkVersion.java index b185b481c315..9e19383fd45b 100644 --- a/java/java-psi-api/src/com/intellij/openapi/projectRoots/JavaSdkVersion.java +++ b/java/java-psi-api/src/com/intellij/openapi/projectRoots/JavaSdkVersion.java @@ -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()) ); } } diff --git a/java/java-tests/testSrc/com/intellij/openapi/projectRoots/JavaSdkVersionTest.java b/java/java-tests/testSrc/com/intellij/openapi/projectRoots/JavaSdkVersionTest.java new file mode 100644 index 000000000000..198a7f6571b2 --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/openapi/projectRoots/JavaSdkVersionTest.java @@ -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)); + } +}