This commit is contained in:
Alexey Kudravtsev
2012-04-23 10:19:22 +04:00
parent ab2ec1a9a7
commit ff27ee767e
3 changed files with 9 additions and 4 deletions
@@ -29,7 +29,7 @@ import java.util.List;
public class LanguageExtension<T> extends KeyedExtensionCollector<T, Language> {
private final T myDefaultImplementation;
private final /* non static!!! */ Key<T> IN_LANGUAGE_CACHE = new Key<T>("EXTENSIONS_IN_LANGUAGE");
private final /* non static!!! */ Key<T> IN_LANGUAGE_CACHE;
public LanguageExtension(@NonNls final String epName) {
this(epName, null);
@@ -38,6 +38,7 @@ public class LanguageExtension<T> extends KeyedExtensionCollector<T, Language> {
public LanguageExtension(@NonNls final String epName, @Nullable final T defaultImplementation) {
super(epName);
myDefaultImplementation = defaultImplementation;
IN_LANGUAGE_CACHE = Key.create("EXTENSIONS_IN_LANGUAGE_"+epName);
}
@Override
@@ -59,8 +60,8 @@ public class LanguageExtension<T> extends KeyedExtensionCollector<T, Language> {
else {
result = extensions.get(0);
}
if (result == null) return result;
l.putUserDataIfAbsent(IN_LANGUAGE_CACHE, result);
if (result == null) return null;
result = l.putUserDataIfAbsent(IN_LANGUAGE_CACHE, result);
return result;
}
@@ -42,10 +42,12 @@ public class Disposer {
}
private static final ObjectTreeAction<Disposable> ourDisposeAction = new ObjectTreeAction<Disposable>() {
@Override
public void execute(final Disposable each) {
each.dispose();
}
@Override
public void beforeTreeExecution(final Disposable parent) {
if (parent instanceof Disposable.Parent) {
((Disposable.Parent)parent).beforeTreeDispose();
@@ -61,6 +63,7 @@ public class Disposer {
@NotNull
public static Disposable newDisposable() {
return new Disposable() {
@Override
public void dispose() {
}
};
@@ -81,6 +84,7 @@ public class Disposer {
assert get(key) == null;
ourKeyDisposables.put(key, child);
register(child, new Disposable() {
@Override
public void dispose() {
ourKeyDisposables.remove(key);
}
@@ -25,7 +25,7 @@ import com.intellij.util.NotNullFunction;
public class NotNullLazyKey<T,H extends UserDataHolder> extends Key<T>{
private final NotNullFunction<H,T> myFunction;
private NotNullLazyKey(@NonNls String name, final NotNullFunction<H, T> function) {
private NotNullLazyKey(@NotNull @NonNls String name, @NotNull NotNullFunction<H, T> function) {
super(name);
myFunction = function;
}