Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Delaigue2015-05-12 07:57:16 +0000
committerAxel RICHARD2015-05-13 14:39:30 +0000
commit0cf8ab7ba583c0f95f07ce476f4b1255e52f28b9 (patch)
tree3e17f6d8f70f017d85c4ecb7105d4543f0da13b3 /plugins
parente059d0fd3bad2f92176e9b3116f56991abbfab22 (diff)
downloadorg.eclipse.emf.compare-0cf8ab7ba583c0f95f07ce476f4b1255e52f28b9.tar.gz
org.eclipse.emf.compare-0cf8ab7ba583c0f95f07ce476f4b1255e52f28b9.tar.xz
org.eclipse.emf.compare-0cf8ab7ba583c0f95f07ce476f4b1255e52f28b9.zip
Make sure all resources are always unloaded.
When using SynchronizedResourceSet, all resources must be unloaded event if they've not been loaded by the ThreadedModelResolver (which seems to happen for profiles). Change-Id: I1952b8b3f2e0553424d347a1b94efa6c59dc70c9 Signed-off-by: Laurent Delaigue <laurent.delaigue@obeo.fr>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ModelsResolution.java15
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ResourceDependencyLocalResolver.java9
2 files changed, 24 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ModelsResolution.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ModelsResolution.java
index ccdad8a68..b2cc9cc23 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ModelsResolution.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ModelsResolution.java
@@ -21,8 +21,10 @@ import com.google.common.base.Function;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
+import java.util.List;
import java.util.Set;
import java.util.concurrent.Callable;
@@ -38,6 +40,7 @@ import org.eclipse.emf.compare.ide.ui.logical.SynchronizationModel;
import org.eclipse.emf.compare.ide.utils.ResourceUtil;
import org.eclipse.emf.compare.ide.utils.StorageTraversal;
import org.eclipse.emf.compare.ide.utils.StorageURIConverter;
+import org.eclipse.emf.ecore.resource.Resource;
/**
* Computation that resolves 2 or 3 storages (left, right and potentially origin).
@@ -423,6 +426,12 @@ public class ModelsResolution extends AbstractResolution {
Iterable<URI> urisToResolve = transform(additionalStorages, asURI());
scheduler.computeAll(transform(urisToResolve, resolveRemoteURI(tspm, resourceSet)));
+ // Unload all remaining resources from resource set
+ List<Resource> resources = new ArrayList<Resource>(resourceSet.getResources());
+ for (Resource r : resources) {
+ resourceSet.unload(r, tspm);
+ }
+
if (tspm.isCanceled()) {
throw new OperationCanceledException();
}
@@ -524,6 +533,12 @@ public class ModelsResolution extends AbstractResolution {
scheduler.clearComputedElements();
+ // Unload all remaining resources from resource set
+ List<Resource> resources = new ArrayList<Resource>(resourceSet.getResources());
+ for (Resource r : resources) {
+ resourceSet.unload(r, tspm);
+ }
+
if (logger.isDebugEnabled()) {
logger.debug("resolveRemotetraversal() - END for " + start); //$NON-NLS-1$
}
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ResourceDependencyLocalResolver.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ResourceDependencyLocalResolver.java
index c39f9f13e..d6a716d26 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ResourceDependencyLocalResolver.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ResourceDependencyLocalResolver.java
@@ -19,9 +19,11 @@ import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
import com.google.common.eventbus.EventBus;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashSet;
+import java.util.List;
import java.util.Set;
import org.eclipse.core.resources.IFile;
@@ -34,6 +36,7 @@ import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.compare.ide.ui.internal.util.ThreadSafeProgressMonitor;
import org.eclipse.emf.compare.ide.utils.ResourceUtil;
import org.eclipse.emf.compare.internal.utils.Graph;
+import org.eclipse.emf.ecore.resource.Resource;
/**
* The default implementation of the {@link IResourceDependencyProvider}.
@@ -256,6 +259,12 @@ public class ResourceDependencyLocalResolver implements IResourceDependencyLocal
}
}));
updateChangedResources(resourceSet, diagnostic, tspm);
+
+ // Unload all remaining resources from resource set
+ List<Resource> resources = new ArrayList<Resource>(resourceSet.getResources());
+ for (Resource r : resources) {
+ resourceSet.unload(r, tspm);
+ }
}
/**

Back to the top