deprecate ConcurrentWeakFactoryMap in favor of factory method in ConcurrentFactoryMap

This commit is contained in:
Alexey Kudravtsev
2017-06-30 18:17:35 +03:00
parent 0505105418
commit 8a471c10b9
4 changed files with 19 additions and 26 deletions
@@ -23,7 +23,7 @@ import com.intellij.openapi.components.Storage;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.util.PatternUtil;
import com.intellij.util.containers.ConcurrentWeakFactoryMap;
import com.intellij.util.containers.ConcurrentFactoryMap;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.xmlb.XmlSerializerUtil;
import com.intellij.util.xmlb.annotations.AbstractCollection;
@@ -44,9 +44,7 @@ import java.util.regex.Pattern;
@State(name = "JavaProjectCodeInsightSettings", storages = @Storage("codeInsightSettings.xml"))
public class JavaProjectCodeInsightSettings implements PersistentStateComponent<JavaProjectCodeInsightSettings> {
@SuppressWarnings("MismatchedQueryAndUpdateOfCollection")
private static final ConcurrentMap<String, Pattern> ourPatterns = ConcurrentWeakFactoryMap.createWeakMap(key->
PatternUtil.fromMask(key)
);
private static final ConcurrentMap<String, Pattern> ourPatterns = ConcurrentFactoryMap.createWeakMap(PatternUtil::fromMask);
@Tag("excluded-names")
@@ -17,7 +17,7 @@ package com.intellij;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.util.Function;
import com.intellij.util.containers.ConcurrentWeakFactoryMap;
import com.intellij.util.containers.ConcurrentFactoryMap;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -70,7 +70,7 @@ public abstract class AbstractBundle {
@SuppressWarnings("MismatchedQueryAndUpdateOfCollection")
private static final Map<ClassLoader, Map<String, ResourceBundle>> ourCache =
ConcurrentWeakFactoryMap.createWeakMap(new Function<ClassLoader, Map<String, ResourceBundle>>() {
ConcurrentFactoryMap.createWeakMap(new Function<ClassLoader, Map<String, ResourceBundle>>() {
@Override
public Map<String, ResourceBundle> fun(ClassLoader k) {return ContainerUtil.createConcurrentSoftValueMap();}
});
@@ -230,4 +230,16 @@ public abstract class ConcurrentFactoryMap<K,V> implements ConcurrentMap<K,V> {
}
};
}
/**
* @return Concurrent factory map with weak keys, strong values
*/
@NotNull
public static <T, V> ConcurrentMap<T, V> createWeakMap(@NotNull Function<T, V> compute) {
return createMap(compute, new Producer<ConcurrentMap<T, V>>() {
@Override
public ConcurrentMap<T, V> produce() {return ContainerUtil.createConcurrentWeakMap();}
});
}
}
@@ -17,28 +17,11 @@
package com.intellij.util.containers;
import com.intellij.util.Function;
import com.intellij.util.Producer;
import org.jetbrains.annotations.NotNull;
import java.util.concurrent.ConcurrentMap;
/**
* @author peter
* Use {@link ConcurrentFactoryMap#createWeakMap(Function)} instead
* TODO to remove in IDEA 2018
*/
@Deprecated
public abstract class ConcurrentWeakFactoryMap extends ConcurrentFactoryMap {
/**
* Use {@link #createWeakMap(Function)} instead
* TODO to remove in IDEA 2018
*/
@Deprecated
public ConcurrentWeakFactoryMap() {
}
@NotNull
public static <T, V> ConcurrentMap<T, V> createWeakMap(@NotNull Function<T, V> compute) {
return ConcurrentFactoryMap.createMap(compute, new Producer<ConcurrentMap<T, V>>() {
@Override
public ConcurrentMap<T, V> produce() {return ContainerUtil.createConcurrentWeakMap();}
});
}
}