Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/ProjectModelResolver.java')
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/ProjectModelResolver.java33
1 files changed, 32 insertions, 1 deletions
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/ProjectModelResolver.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/ProjectModelResolver.java
index 4abc3ab84..14afddb6b 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/ProjectModelResolver.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/ProjectModelResolver.java
@@ -221,7 +221,7 @@ public class ProjectModelResolver extends LogicalModelResolver {
updateChangedDependencies(monitor);
updateDependencies(leftFile, storageAccessor, monitor);
- final Set<IStorage> leftTraversal = resolveTraversal(leftFile, monitor);
+ final Set<IStorage> leftTraversal = resolveLocalTraversal(storageAccessor, leftFile, monitor);
final Set<IStorage> rightTraversal = resolveTraversal(storageAccessor, DiffSide.REMOTE,
leftTraversal, monitor);
final Set<IStorage> originTraversal;
@@ -373,6 +373,37 @@ public class ProjectModelResolver extends LogicalModelResolver {
}
/**
+ * This will be used in case of remote comparisons to resolve the local side's traversal (if there is a
+ * local side).
+ *
+ * @param storageAccessor
+ * The accessor that can be used to retrieve synchronization information between our resources.
+ * @param resource
+ * The resource for which we need the full logical model.
+ * @param monitor
+ * Monitor on which to report progress to the user.
+ * @return The set of all storages that compose the logical model of <code>resource</code>.
+ */
+ private Set<IStorage> resolveLocalTraversal(IStorageProviderAccessor storageAccessor, IFile resource,
+ IProgressMonitor monitor) {
+ final Set<IStorage> traversal = new LinkedHashSet<IStorage>();
+ final URI startURI = createURIFor(resource);
+
+ final Iterable<URI> uris = dependencyGraph.getSubgraphOf(startURI);
+ for (URI uri : uris) {
+ final IFile file = getFileAt(uri);
+ try {
+ if (!storageAccessor.isInSync(file)) {
+ traversal.add(file);
+ }
+ } catch (CoreException e) {
+ // swallow
+ }
+ }
+ return traversal;
+ }
+
+ /**
* This will be used to resolve the traversal of a file's logical model, according to
* {@link #dependencyGraph}.
*

Back to the top