Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EMF Compare/Logical Model"

 
(52 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Logical Model =
+
This page has moved to http://www.eclipse.org/emf/compare/documentation/latest/developer/logical-model.html
  
== What is a logical model? ==
+
[[Category:EMF Compare/Archive]]
 
+
We name "logical model" a set of '''physical resources''' that form a coherent business model. For example, we could say that a given Java class forms a coherent logical model only when it is linked with all of its imported classes.
+
 
+
In the case of EMF, we name a ''logical resource'' (or ''model'') the EMF resource loaded in memory, as opposed to a ''physical resource'' (or ''file'') that is merely the serialization of this model on disk. A given EMF model can reference a number of other models, and it will be incoherent, or even sometimes corrupted, if these other models are not loaded in memory. In EMF, a given model can be serialized as a single file, ''fragmented'' in multiple files on disk, or ''reference'' multiple files. The logical model is only coherent when the whole set of its physical files is accessible.
+
 
+
== Eclipse Team ==
+
 
+
The Eclipse Team project (referred as "Team" in this document) provides an API named "model providers". This API allows implementers to define the semantics of what is a "logical model" in his case. In short, it allows us to link any number of physical resources to a given "starting" file.
+
 
+
Technically, this is done through an extension point that can be implemented by anyone and that will adapt a file (a workspace ''IResource'') to a set of files (a Team ''ResourceTraversal''). The model providers can be queried by anyone who calls actions on workspace files in order to determine if this action can be done against a single file or if it should be executed against a set of files.
+
 
+
== Limitations ==
+
 
+
Team only provides the API to define logical models. It is then the responsibility of its clients to properly query the model provider when calling an action. In the context of EMF Compare, we are interested in the "compare" actions. These actions are contributed by the repository providers (CVS, EGit, Subversive, Subclipse, Clearcase...). It is their responsibility, within the code of these actions, to query the model providers in order to determine if the selected files can be compared alone... or if they need to be compared along with a set of others.
+
 
+
* The CVS plugin does not consistently use it. For example, when using "compare with > latest from HEAD" on a file that is part of a logical model, it will 'see' the logical model and open the "synchronize" perspective instead of a compare editor : this is what's expected. However, when the user, from the synchronization view, asks to see the differences (right-click then select 'open in compare editor')... CVS will not query the logical model, comparing the file alone (see also [https://bugs.eclipse.org/bugs/show_bug.cgi?id=345415 bug 345415]).
+
* The EGit, Subversive and Subclipse plugins never query the model providers for any comparison action.
+
 
+
= EMF Compare =
+
 
+
== Chosen solution ==
+
 
+
== How it works ==
+

Latest revision as of 11:40, 5 March 2014

This page has moved to http://www.eclipse.org/emf/compare/documentation/latest/developer/logical-model.html

Back to the top