search for functional interfaces in java 8 modules only

This commit is contained in:
Anna Kozlova
2014-11-05 21:39:01 +01:00
parent ada5edbf1e
commit ef0844d837
18 changed files with 169 additions and 45 deletions
@@ -17,6 +17,7 @@ package com.intellij.openapi.module;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.roots.LanguageLevelModuleExtension;
import com.intellij.openapi.roots.LanguageLevelModuleExtensionImpl;
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.pom.java.LanguageLevel;
import org.jetbrains.annotations.NotNull;
@@ -25,7 +26,7 @@ public class EffectiveLanguageLevelUtil {
@NotNull
public static LanguageLevel getEffectiveLanguageLevel(@NotNull final Module module) {
ApplicationManager.getApplication().assertReadAccessAllowed();
LanguageLevelModuleExtension moduleLevel = LanguageLevelModuleExtension.getInstance(module);
LanguageLevelModuleExtension moduleLevel = LanguageLevelModuleExtensionImpl.getInstance(module);
LanguageLevel level = moduleLevel == null ? null : moduleLevel.getLanguageLevel();
if (level != null) return level;
return LanguageLevelProjectExtension.getInstance(module.getProject()).getLanguageLevel();
@@ -29,42 +29,38 @@ import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.Nullable;
public class LanguageLevelModuleExtension extends ModuleExtension<LanguageLevelModuleExtension> {
public class LanguageLevelModuleExtensionImpl extends ModuleExtension<LanguageLevelModuleExtensionImpl> implements LanguageLevelModuleExtension {
@NonNls private static final String LANGUAGE_LEVEL_ELEMENT_NAME = "LANGUAGE_LEVEL";
private Module myModule;
private final boolean myWritable;
private static final Logger LOG = Logger.getInstance("#" + LanguageLevelModuleExtension.class.getName());
public static LanguageLevelModuleExtension getInstance(final Module module) {
return ModuleRootManager.getInstance(module).getModuleExtension(LanguageLevelModuleExtension.class);
}
private static final Logger LOG = Logger.getInstance("#" + LanguageLevelModuleExtensionImpl.class.getName());
private LanguageLevel myLanguageLevel;
private final LanguageLevelModuleExtension mySource;
private final LanguageLevelModuleExtensionImpl mySource;
public LanguageLevelModuleExtension(Module module) {
public static LanguageLevelModuleExtensionImpl getInstance(final Module module) {
return ModuleRootManager.getInstance(module).getModuleExtension(LanguageLevelModuleExtensionImpl.class);
}
public LanguageLevelModuleExtensionImpl(Module module) {
myModule = module;
mySource = null;
myWritable = false;
}
public LanguageLevelModuleExtension(final LanguageLevelModuleExtension source, boolean writable) {
public LanguageLevelModuleExtensionImpl(final LanguageLevelModuleExtensionImpl source, boolean writable) {
myWritable = writable;
myModule = source.myModule;
myLanguageLevel = source.myLanguageLevel;
mySource = source;
}
@Override
public void setLanguageLevel(final LanguageLevel languageLevel) {
LOG.assertTrue(myWritable, "Writable model can be retrieved from writable ModifiableRootModel");
myLanguageLevel = languageLevel;
}
@Nullable
public LanguageLevel getLanguageLevel() {
return myLanguageLevel;
}
@Override
public void readExternal(final Element element) throws InvalidDataException {
final String languageLevel = element.getAttributeValue(LANGUAGE_LEVEL_ELEMENT_NAME);
@@ -90,7 +86,7 @@ public class LanguageLevelModuleExtension extends ModuleExtension<LanguageLevelM
@Override
public ModuleExtension getModifiableModel(final boolean writable) {
return new LanguageLevelModuleExtension(this, writable);
return new LanguageLevelModuleExtensionImpl(this, writable);
}
@Override
@@ -111,4 +107,10 @@ public class LanguageLevelModuleExtension extends ModuleExtension<LanguageLevelM
myModule = null;
myLanguageLevel = null;
}
@Nullable
@Override
public LanguageLevel getLanguageLevel() {
return myLanguageLevel;
}
}