blob: 4b09002f11426c8083d1ae242b2e83403c341366 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (version 1.7.0_75) on Mon May 18 03:56:41 EDT 2015 -->
<title>ThreadedModelResolver (EMF Compare API Specification)</title>
<meta name="date" content="2015-05-18">
<link rel="stylesheet" type="text/css" href="../../../../../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ThreadedModelResolver (EMF Compare API Specification)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ThreadedModelResolver.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><span style='font-size:small'><b>EMF Compare</b><br>3.2.0.201505180755</span></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/internal/logical/resolver/RevisionedURIConverter.html" title="class in org.eclipse.emf.compare.ide.ui.internal.logical.resolver"><span class="strong">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../../../index.html?org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ThreadedModelResolver.html" target="_top">Frames</a></li>
<li><a href="ThreadedModelResolver.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.eclipse.emf.compare.ide.ui.internal.logical.resolver</div>
<h2 title="Class ThreadedModelResolver" class="title">Class ThreadedModelResolver</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://download.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/AbstractModelResolver.html" title="class in org.eclipse.emf.compare.ide.ui.logical">org.eclipse.emf.compare.ide.ui.logical.AbstractModelResolver</a></li>
<li>
<ul class="inheritance">
<li>org.eclipse.emf.compare.ide.ui.internal.logical.resolver.ThreadedModelResolver</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/IModelResolver.html" title="interface in org.eclipse.emf.compare.ide.ui.logical">IModelResolver</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">ThreadedModelResolver</span>
extends <a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/AbstractModelResolver.html" title="class in org.eclipse.emf.compare.ide.ui.logical">AbstractModelResolver</a></pre>
<div class="block">This implementation of an <a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/IModelResolver.html" title="interface in org.eclipse.emf.compare.ide.ui.logical"><code>IModelResolver</code></a> will look up all of the models located in a set container
level of the "starting point" (by default, the containing project) to construct the graph of dependencies
between these models.
<p>
Once this graph is created for the "local" resource, the right and origin (if any) resources will be
inferred from the same traversal of resources, though this time expanded with a "top-down" approach : load
all models of the traversal from the remote side, then resolve their containment tree to check whether
there are other remote resources in the logical model that do not (or "that no longer) exist locally and
thus couldn't be discovered in the first resolution phase. <b>Note</b> that this will be looped in order to
determine whether the resource is really inexistent locally, or if on the contrary, it is a new dependency
that's been added remotely; in which case we need to start from the local resolution again : the local
resource may have changed locally and depend on other again.
</p>
<p>
All model loading will happen concurrently. At first, a distinct thread will be launched to resolve every
model discovered in the container we're browsing. Then, each thread can and will launch separate threads to
resolve the set of dependencies discovered "under" the model they are in charge of resolving.
</p>
<p>
No model will be loaded twice, since this will be aware of what models have already been resolved, thus
ignoring duplicate resolving demands.
</p></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ThreadedModelResolver.html#ThreadedModelResolver()">ThreadedModelResolver</a></strong>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ThreadedModelResolver.html#canResolve(org.eclipse.core.resources.IStorage)">canResolve</a></strong>(<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IStorage.html?is-external=true" title="class or interface in org.eclipse.core.resources">IStorage</a>&nbsp;sourceStorage)</code>
<div class="block">This will be used in order to determine whether this resolver can be used for the given storage.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/internal/logical/resolver/DefaultResolutionContext.html" title="class in org.eclipse.emf.compare.ide.ui.internal.logical.resolver">DefaultResolutionContext</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ThreadedModelResolver.html#createContext(com.google.common.eventbus.EventBus,%20org.eclipse.emf.compare.internal.utils.Graph)">createContext</a></strong>(com.google.common.eventbus.EventBus&nbsp;eventBus,
<a href="../../../../../../../../../org/eclipse/emf/compare/internal/utils/Graph.html" title="class in org.eclipse.emf.compare.internal.utils">Graph</a>&lt;<a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/emf/common/util/URI.html?is-external=true" title="class or interface in org.eclipse.emf.common.util">URI</a>&gt;&nbsp;graph)</code>
<div class="block">For testing purposes, this method is protected.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ThreadedModelResolver.html#dispose()">dispose</a></strong>()</code>
<div class="block">This will be called when the contributing plugin of this class is about to be stopped.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../../../org/eclipse/emf/compare/internal/utils/ReadOnlyGraph.html" title="class in org.eclipse.emf.compare.internal.utils">ReadOnlyGraph</a>&lt;<a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/emf/common/util/URI.html?is-external=true" title="class or interface in org.eclipse.emf.common.util">URI</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ThreadedModelResolver.html#getDependencyGraph()">getDependencyGraph</a></strong>()</code>
<div class="block">Convert the dependency graph to its read-only version.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ThreadedModelResolver.html#initialize()">initialize</a></strong>()</code>
<div class="block">This will be called as soon as the class is created by the registry.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../../../org/eclipse/emf/compare/ide/utils/StorageTraversal.html" title="class in org.eclipse.emf.compare.ide.utils">StorageTraversal</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ThreadedModelResolver.html#resolveLocalModel(org.eclipse.core.resources.IResource,%20org.eclipse.core.runtime.IProgressMonitor)">resolveLocalModel</a></strong>(<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IResource.html?is-external=true" title="class or interface in org.eclipse.core.resources">IResource</a>&nbsp;start,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/IProgressMonitor.html?is-external=true" title="class or interface in org.eclipse.core.runtime">IProgressMonitor</a>&nbsp;monitor)</code>
<div class="block">This will be called by Team in order to determine whether a given file can be compared alone, or if it
needs to be compared along with others (and, thus, compared from the synchronize view).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/SynchronizationModel.html" title="class in org.eclipse.emf.compare.ide.ui.logical">SynchronizationModel</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ThreadedModelResolver.html#resolveLocalModels(org.eclipse.core.resources.IResource,%20org.eclipse.core.resources.IResource,%20org.eclipse.core.resources.IResource,%20org.eclipse.core.runtime.IProgressMonitor)">resolveLocalModels</a></strong>(<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IResource.html?is-external=true" title="class or interface in org.eclipse.core.resources">IResource</a>&nbsp;left,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IResource.html?is-external=true" title="class or interface in org.eclipse.core.resources">IResource</a>&nbsp;right,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IResource.html?is-external=true" title="class or interface in org.eclipse.core.resources">IResource</a>&nbsp;origin,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/IProgressMonitor.html?is-external=true" title="class or interface in org.eclipse.core.runtime">IProgressMonitor</a>&nbsp;monitor)</code>
<div class="block">Called by EMF Compare in order to resolve the logical models corresponding to the given IResources.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/SynchronizationModel.html" title="class in org.eclipse.emf.compare.ide.ui.logical">SynchronizationModel</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ThreadedModelResolver.html#resolveModels(org.eclipse.emf.compare.ide.ui.logical.IStorageProviderAccessor,%20org.eclipse.core.resources.IStorage,%20org.eclipse.core.resources.IStorage,%20org.eclipse.core.resources.IStorage,%20org.eclipse.core.runtime.IProgressMonitor)">resolveModels</a></strong>(<a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/IStorageProviderAccessor.html" title="interface in org.eclipse.emf.compare.ide.ui.logical">IStorageProviderAccessor</a>&nbsp;storageAccessor,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IStorage.html?is-external=true" title="class or interface in org.eclipse.core.resources">IStorage</a>&nbsp;left,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IStorage.html?is-external=true" title="class or interface in org.eclipse.core.resources">IStorage</a>&nbsp;right,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IStorage.html?is-external=true" title="class or interface in org.eclipse.core.resources">IStorage</a>&nbsp;origin,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/IProgressMonitor.html?is-external=true" title="class or interface in org.eclipse.core.runtime">IProgressMonitor</a>&nbsp;monitor)</code>
<div class="block">This will be called by EMF Compare in order to resolve the whole logical models containing the given
storages.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://download.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://download.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://download.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://download.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://download.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://download.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://download.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://download.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://download.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://download.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://download.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://download.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="ThreadedModelResolver()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ThreadedModelResolver</h4>
<pre>public&nbsp;ThreadedModelResolver()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getDependencyGraph()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDependencyGraph</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/eclipse/emf/compare/internal/utils/ReadOnlyGraph.html" title="class in org.eclipse.emf.compare.internal.utils">ReadOnlyGraph</a>&lt;<a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/emf/common/util/URI.html?is-external=true" title="class or interface in org.eclipse.emf.common.util">URI</a>&gt;&nbsp;getDependencyGraph()</pre>
<div class="block">Convert the dependency graph to its read-only version.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>a read-only version of the dependency graph associated to this model resolver.</dd></dl>
</li>
</ul>
<a name="initialize()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initialize</h4>
<pre>public&nbsp;void&nbsp;initialize()</pre>
<div class="block">This will be called as soon as the class is created by the registry. Clients can override if they need
to set up their resolver for use. When initialized, the ThreadedModelResolver will:
<ol>
<li>install a listener on the workspace to keep track of modified resources</li>
<li>Register its <code>#graphUpdater</code> to its <code>#eventBus</code></li>
<li>initialize its <code>#scheduler</code></li>
</ol></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/IModelResolver.html#initialize()">initialize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/IModelResolver.html" title="interface in org.eclipse.emf.compare.ide.ui.logical">IModelResolver</a></code></dd>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/AbstractModelResolver.html#initialize()">initialize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/AbstractModelResolver.html" title="class in org.eclipse.emf.compare.ide.ui.logical">AbstractModelResolver</a></code></dd>
<dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/IModelResolver.html#initialize()"><code>IModelResolver.initialize()</code></a></dd></dl>
</li>
</ul>
<a name="dispose()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dispose</h4>
<pre>public&nbsp;void&nbsp;dispose()</pre>
<div class="block">This will be called when the contributing plugin of this class is about to be stopped. Clients can
override to get rid of any state they've maintained within their resolver.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/IModelResolver.html#dispose()">dispose</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/IModelResolver.html" title="interface in org.eclipse.emf.compare.ide.ui.logical">IModelResolver</a></code></dd>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/AbstractModelResolver.html#dispose()">dispose</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/AbstractModelResolver.html" title="class in org.eclipse.emf.compare.ide.ui.logical">AbstractModelResolver</a></code></dd>
<dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/IModelResolver.html#dispose()"><code>IModelResolver.dispose()</code></a></dd></dl>
</li>
</ul>
<a name="createContext(com.google.common.eventbus.EventBus, org.eclipse.emf.compare.internal.utils.Graph)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createContext</h4>
<pre>protected&nbsp;<a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/internal/logical/resolver/DefaultResolutionContext.html" title="class in org.eclipse.emf.compare.ide.ui.internal.logical.resolver">DefaultResolutionContext</a>&nbsp;createContext(com.google.common.eventbus.EventBus&nbsp;eventBus,
<a href="../../../../../../../../../org/eclipse/emf/compare/internal/utils/Graph.html" title="class in org.eclipse.emf.compare.internal.utils">Graph</a>&lt;<a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/emf/common/util/URI.html?is-external=true" title="class or interface in org.eclipse.emf.common.util">URI</a>&gt;&nbsp;graph)</pre>
<div class="block">For testing purposes, this method is protected.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>eventBus</code> - </dd><dd><code>graph</code> - </dd>
<dt><span class="strong">Returns:</span></dt><dd>The resolution context to use.</dd></dl>
</li>
</ul>
<a name="canResolve(org.eclipse.core.resources.IStorage)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>canResolve</h4>
<pre>public&nbsp;boolean&nbsp;canResolve(<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IStorage.html?is-external=true" title="class or interface in org.eclipse.core.resources">IStorage</a>&nbsp;sourceStorage)</pre>
<div class="block">This will be used in order to determine whether this resolver can be used for the given storage. For
each given storage, the resolver with the highest ranking will be selected for resolution. This test
should be fast.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>sourceStorage</code> - The resource we're trying to resolve the logical model of. This will always be the "source"
or "left" variant of the compared resource.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>true</code> if this resolver is capable of handling the given storage, <code>false</code>
otherwise.</dd></dl>
</li>
</ul>
<a name="resolveLocalModel(org.eclipse.core.resources.IResource, org.eclipse.core.runtime.IProgressMonitor)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resolveLocalModel</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/eclipse/emf/compare/ide/utils/StorageTraversal.html" title="class in org.eclipse.emf.compare.ide.utils">StorageTraversal</a>&nbsp;resolveLocalModel(<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IResource.html?is-external=true" title="class or interface in org.eclipse.core.resources">IResource</a>&nbsp;start,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/IProgressMonitor.html?is-external=true" title="class or interface in org.eclipse.core.runtime">IProgressMonitor</a>&nbsp;monitor)
throws <a href="http://download.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
<div class="block">This will be called by Team in order to determine whether a given file can be compared alone, or if it
needs to be compared along with others (and, thus, compared from the synchronize view). Note that only
local data is available here.
<p>
Note that no two threads will be able to resolve models at once : all three "resolve*" methods will
lock internally to prevent multiple resolutions at once. Though this shouldn't happen unless the user
calls multiple comparisons one after the other in quick succession, we use this locking to prevent
potential unforeseen interactions.
</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>start</code> - The workspace resource for which we need a traversal.</dd><dd><code>monitor</code> - Monitor on which to report progress to the user.</dd>
<dt><span class="strong">Returns:</span></dt><dd>A traversal corresponding to all resources composing the given file's logical model.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - Thrown if the resolution is cancelled or interrupted one way or another.</dd></dl>
</li>
</ul>
<a name="resolveLocalModels(org.eclipse.core.resources.IResource, org.eclipse.core.resources.IResource, org.eclipse.core.resources.IResource, org.eclipse.core.runtime.IProgressMonitor)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resolveLocalModels</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/SynchronizationModel.html" title="class in org.eclipse.emf.compare.ide.ui.logical">SynchronizationModel</a>&nbsp;resolveLocalModels(<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IResource.html?is-external=true" title="class or interface in org.eclipse.core.resources">IResource</a>&nbsp;left,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IResource.html?is-external=true" title="class or interface in org.eclipse.core.resources">IResource</a>&nbsp;right,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IResource.html?is-external=true" title="class or interface in org.eclipse.core.resources">IResource</a>&nbsp;origin,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/IProgressMonitor.html?is-external=true" title="class or interface in org.eclipse.core.runtime">IProgressMonitor</a>&nbsp;monitor)
throws <a href="http://download.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
<div class="block">Called by EMF Compare in order to resolve the logical models corresponding to the given IResources.
Only local data is available.
<p>
Note that no two threads will be able to resolve models at once : all three "resolve*" methods will
lock internally to prevent multiple resolutions at once. Though this shouldn't happen unless the user
calls multiple comparisons one after the other in quick succession, we use this locking to prevent
potential unforeseen interactions.
</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>left</code> - The file that will be considered as the "starting point" of the traversal to resolve as the
left logical model.</dd><dd><code>right</code> - "starting point" of the traversal to resolve as the right logical model.</dd><dd><code>origin</code> - "starting point" of the traversal to resolve as the origin logical model (common ancestor of
left and right). Can be <code>null</code>.</dd><dd><code>monitor</code> - Monitor on which to report progress to the user.</dd>
<dt><span class="strong">Returns:</span></dt><dd>A traversal corresponding to all resources composing the given file's logical model.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - Thrown if the resolution is cancelled or interrupted one way or another.</dd></dl>
</li>
</ul>
<a name="resolveModels(org.eclipse.emf.compare.ide.ui.logical.IStorageProviderAccessor, org.eclipse.core.resources.IStorage, org.eclipse.core.resources.IStorage, org.eclipse.core.resources.IStorage, org.eclipse.core.runtime.IProgressMonitor)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>resolveModels</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/SynchronizationModel.html" title="class in org.eclipse.emf.compare.ide.ui.logical">SynchronizationModel</a>&nbsp;resolveModels(<a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/logical/IStorageProviderAccessor.html" title="interface in org.eclipse.emf.compare.ide.ui.logical">IStorageProviderAccessor</a>&nbsp;storageAccessor,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IStorage.html?is-external=true" title="class or interface in org.eclipse.core.resources">IStorage</a>&nbsp;left,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IStorage.html?is-external=true" title="class or interface in org.eclipse.core.resources">IStorage</a>&nbsp;right,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IStorage.html?is-external=true" title="class or interface in org.eclipse.core.resources">IStorage</a>&nbsp;origin,
<a href="http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/IProgressMonitor.html?is-external=true" title="class or interface in org.eclipse.core.runtime">IProgressMonitor</a>&nbsp;monitor)
throws <a href="http://download.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
<div class="block">This will be called by EMF Compare in order to resolve the whole logical models containing the given
storages. Since this may be either a local or remote model, all I/O should go through the given storage
accessor.
<p>
Note that no two threads will be able to resolve models at once : all three "resolve*" methods will
lock internally to prevent multiple resolutions at once. Though this shouldn't happen unless the user
calls multiple comparisons one after the other in quick succession, we use this locking to prevent
potential unforeseen interactions.
</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>storageAccessor</code> - The accessor that can be used to retrieve synchronization information between our resources.</dd><dd><code>left</code> - The storage that will be considered as the "starting point" of the traversal to resolve as
the left logical model.</dd><dd><code>right</code> - "starting point" of the traversal to resolve as the right logical model.</dd><dd><code>origin</code> - "starting point" of the traversal to resolve as the origin logical model (common ancestor of
left and right). Can be <code>null</code>.</dd><dd><code>monitor</code> - Monitor on which to report progress to the user.</dd>
<dt><span class="strong">Returns:</span></dt><dd>A traversal corresponding to all resources composing the given file's logical model.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - Thrown if the resolution is cancelled or interrupted one way or another.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ThreadedModelResolver.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><span style='font-size:small'><b>EMF Compare</b><br>3.2.0.201505180755</span></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../../../org/eclipse/emf/compare/ide/ui/internal/logical/resolver/RevisionedURIConverter.html" title="class in org.eclipse.emf.compare.ide.ui.internal.logical.resolver"><span class="strong">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../../../index.html?org/eclipse/emf/compare/ide/ui/internal/logical/resolver/ThreadedModelResolver.html" target="_top">Frames</a></li>
<li><a href="ThreadedModelResolver.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small><br><span style='font-size:small;float:right'>Copyright (c) 2006, 2014 Obeo and others. All rights reserved.</span></small></p>
</body>
</html>