mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
less disk operations in integrate
This commit is contained in:
@@ -1650,40 +1650,46 @@ public class Mappings {
|
||||
|
||||
if (delta.isDifferentiated()) {
|
||||
for (DependencyContext.S c : delta.getChangedClasses()) {
|
||||
myClassToSubclasses.remove(c);
|
||||
|
||||
final Collection<DependencyContext.S> subClasses = delta.myClassToSubclasses.get(c);
|
||||
|
||||
if (subClasses != null) {
|
||||
myClassToSubclasses.put(c, subClasses);
|
||||
myClassToSubclasses.replace(c, subClasses);
|
||||
}
|
||||
else {
|
||||
myClassToSubclasses.remove(c);
|
||||
}
|
||||
|
||||
myClassToSourceFile.remove(c);
|
||||
|
||||
final DependencyContext.S sourceFile = delta.myClassToSourceFile.get(c);
|
||||
|
||||
if (sourceFile != null) {
|
||||
myClassToSourceFile.put(c, sourceFile);
|
||||
}
|
||||
else {
|
||||
myClassToSourceFile.remove(c);
|
||||
}
|
||||
}
|
||||
|
||||
for (DependencyContext.S f : delta.getChangedFiles()) {
|
||||
mySourceFileToClasses.remove(f);
|
||||
final Collection<ClassRepr> classes = delta.mySourceFileToClasses.get(f);
|
||||
if (classes != null) {
|
||||
mySourceFileToClasses.put(f, classes);
|
||||
mySourceFileToClasses.replace(f, classes);
|
||||
}
|
||||
else {
|
||||
mySourceFileToClasses.remove(f);
|
||||
}
|
||||
|
||||
mySourceFileToUsages.remove(f);
|
||||
final Collection<UsageRepr.Cluster> clusters = delta.mySourceFileToUsages.get(f);
|
||||
if (clusters != null) {
|
||||
mySourceFileToUsages.put(f, clusters);
|
||||
mySourceFileToUsages.replace(f, clusters);
|
||||
}
|
||||
else {
|
||||
mySourceFileToUsages.remove(f);
|
||||
}
|
||||
|
||||
mySourceFileToAnnotationUsages.remove(f);
|
||||
final Collection<UsageRepr.Usage> usages = delta.mySourceFileToAnnotationUsages.get(f);
|
||||
if (usages != null) {
|
||||
mySourceFileToAnnotationUsages.put(f, usages);
|
||||
mySourceFileToAnnotationUsages.replace(f, usages);
|
||||
}
|
||||
else {
|
||||
mySourceFileToAnnotationUsages.remove(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1728,8 +1734,7 @@ public class Mappings {
|
||||
changed |= past.addAll(now);
|
||||
|
||||
if (changed) {
|
||||
myClassToClassDependency.remove(aClass);
|
||||
myClassToClassDependency.put(aClass, past);
|
||||
myClassToClassDependency.replace(aClass, past);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ interface MultiMaplet<K, V> {
|
||||
Collection<V> get(final K key);
|
||||
void put(final K key, final V value);
|
||||
void put(final K key, final Collection<V> value);
|
||||
void replace(final K key, final Collection<V> value);
|
||||
void putAll(MultiMaplet<K,V> m);
|
||||
void replaceAll(MultiMaplet<K, V> m);
|
||||
void remove(final K key);
|
||||
|
||||
@@ -66,6 +66,21 @@ class PersistentMultiMaplet<K, V> implements MultiMaplet<K, V> {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void replace(K key, Collection<V> value) {
|
||||
try {
|
||||
if (value == null || value.isEmpty()) {
|
||||
myMap.remove(key);
|
||||
}
|
||||
else {
|
||||
myMap.put(key, value);
|
||||
}
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void put(final K key, final Collection<V> value) {
|
||||
try {
|
||||
@@ -149,9 +164,7 @@ class PersistentMultiMaplet<K, V> implements MultiMaplet<K, V> {
|
||||
@Override
|
||||
public void replaceAll(MultiMaplet<K, V> m) {
|
||||
for (Map.Entry<K, Collection<V>> entry : m.entrySet()) {
|
||||
final K key = entry.getKey();
|
||||
remove(key);
|
||||
put(key, entry.getValue());
|
||||
replace(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -72,6 +72,16 @@ class TransientMultiMaplet<K, V> implements MultiMaplet<K, V> {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void replace(K key, Collection<V> value) {
|
||||
if (value == null || value.isEmpty()) {
|
||||
myMap.remove(key);
|
||||
}
|
||||
else {
|
||||
myMap.put(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void put(final K key, final V value) {
|
||||
final Collection<V> x = constr.create();
|
||||
@@ -111,8 +121,7 @@ class TransientMultiMaplet<K, V> implements MultiMaplet<K, V> {
|
||||
@Override
|
||||
public void replaceAll(MultiMaplet<K, V> m) {
|
||||
for (Map.Entry<K, Collection<V>> e : m.entrySet()) {
|
||||
remove(e.getKey());
|
||||
put(e.getKey(), e.getValue());
|
||||
replace(e.getKey(), e.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user