From 93d4213af74fb92ee9675cad6336c6b278d1ba6c Mon Sep 17 00:00:00 2001 From: "Andrei.Kuznetsov" Date: Tue, 5 Aug 2025 18:22:15 +0200 Subject: [PATCH] IJPL-15953 make LanguageLevelProjectExtension.{getDefault and setDefault} abstract to ease migration to the workspace model: it is convenient when the LanguageLevelProjectExtensionImpl state (LanguageLevel + isDefault) is stored in one single place (in contrast to being distributed through the class hierarchy). GitOrigin-RevId: b2ff3c4b0e55b4b9b53a8eb45981507527825c34 --- .../roots/LanguageLevelProjectExtension.java | 13 ++++--------- .../impl/LanguageLevelProjectExtensionImpl.java | 13 ++++++++++++- .../core/CoreLanguageLevelProjectExtension.java | 12 ++++++++++++ 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/java/java-frontback-psi-api/src/com/intellij/openapi/roots/LanguageLevelProjectExtension.java b/java/java-frontback-psi-api/src/com/intellij/openapi/roots/LanguageLevelProjectExtension.java index 3f8d5213a88b..01ba835b7348 100644 --- a/java/java-frontback-psi-api/src/com/intellij/openapi/roots/LanguageLevelProjectExtension.java +++ b/java/java-frontback-psi-api/src/com/intellij/openapi/roots/LanguageLevelProjectExtension.java @@ -26,22 +26,17 @@ public abstract class LanguageLevelProjectExtension { public abstract void setLanguageLevel(@NotNull LanguageLevel languageLevel); - private Boolean myDefault; - /** * Auto-detect language level from project JDK maximum possible level. * @return null if the property is not set yet (e.g. after migration). */ - public @Nullable Boolean getDefault() { - return myDefault; - } + public abstract @Nullable Boolean getDefault(); - public void setDefault(@Nullable Boolean value) { - myDefault = value; - } + public abstract void setDefault(@Nullable Boolean value); public boolean isDefault() { - return myDefault != null && myDefault; + Boolean currentValue = getDefault(); + return currentValue != null && currentValue; } public void languageLevelsChanged() { diff --git a/java/java-impl/src/com/intellij/openapi/roots/impl/LanguageLevelProjectExtensionImpl.java b/java/java-impl/src/com/intellij/openapi/roots/impl/LanguageLevelProjectExtensionImpl.java index 3df3aa197802..9ddefed239f3 100644 --- a/java/java-impl/src/com/intellij/openapi/roots/impl/LanguageLevelProjectExtensionImpl.java +++ b/java/java-impl/src/com/intellij/openapi/roots/impl/LanguageLevelProjectExtensionImpl.java @@ -26,7 +26,8 @@ public final class LanguageLevelProjectExtensionImpl extends LanguageLevelProjec private static final String DEFAULT_ATTRIBUTE = "default"; private final Project myProject; - private LanguageLevel myLanguageLevel; + private @Nullable LanguageLevel myLanguageLevel; + private @Nullable Boolean myDefault; private LanguageLevel myCurrentLevel; public LanguageLevelProjectExtensionImpl(final Project project) { @@ -98,6 +99,16 @@ public final class LanguageLevelProjectExtensionImpl extends LanguageLevelProjec } } + @Override + public @Nullable Boolean getDefault() { + return myDefault; + } + + @Override + public void setDefault(@Nullable Boolean newDefault) { + myDefault = newDefault; + } + @Override public void languageLevelsChanged() { languageLevelsChanged(myProject); diff --git a/java/java-psi-impl/src/com/intellij/core/CoreLanguageLevelProjectExtension.java b/java/java-psi-impl/src/com/intellij/core/CoreLanguageLevelProjectExtension.java index d632d4f84f37..810f124d587b 100644 --- a/java/java-psi-impl/src/com/intellij/core/CoreLanguageLevelProjectExtension.java +++ b/java/java-psi-impl/src/com/intellij/core/CoreLanguageLevelProjectExtension.java @@ -5,10 +5,12 @@ import com.intellij.openapi.roots.LanguageLevelProjectExtension; import com.intellij.pom.java.JavaRelease; import com.intellij.pom.java.LanguageLevel; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class CoreLanguageLevelProjectExtension extends LanguageLevelProjectExtension { private LanguageLevel myLanguageLevel = JavaRelease.getHighest(); + private @Nullable Boolean myDefault; @Override public @NotNull LanguageLevel getLanguageLevel() { @@ -19,4 +21,14 @@ public class CoreLanguageLevelProjectExtension extends LanguageLevelProjectExten public void setLanguageLevel(@NotNull LanguageLevel languageLevel) { myLanguageLevel = languageLevel; } + + @Override + public @Nullable Boolean getDefault() { + return myDefault; + } + + @Override + public void setDefault(@Nullable Boolean isDefault) { + myDefault = isDefault; + } }