Skip to main content
AgeCommit message (Collapse)AuthorFilesLines
2017-09-07[518760] Remove legacy JUnit3 artefactsMathieu Cartaud1-21/+0
Bug: 518760 Change-Id: I230f7b853a5f81fd3f9288c7061c51a165a7e0b6
2017-06-27[514415] Relationships between diffs should be cachedMartin Fleck1-1/+3
Add an interface for diff relationship computers that are able to calculate diff relationships and provide two implementations: - Standard implementation replacing MergeDependenciesUtil methods. - Caching implementation keeping the results until invalidated. The computers are usable whenever diff relationships are calculated. Either an explicit instance is provided or the standard implementation is used as fallback: - ComputeDiffsToMerge calculates the order in which diffs are merged. - BatchMerger propagates to ComputeDiffsToMerge. - DependencyData finds required/rejected diffs for selected diffs. The instances are created in two scenarios: - The resource mapping mergers create their own caching instance and invalidate the cache after performing their operation. - The EMF SMV creates its own caching instance for the UI, stored in the EMFCompareConfiguration and invalidates the cache when another comparison is used. Includes tests. Bug: 514415 Change-Id: Id2a56db00b6ca80db2602b3f207377e72a9d80b8 Signed-off-by: Martin Fleck <>
2017-01-24[510704] Add equivalent diffs in same conflictLaurent Delaigue1-2/+3
Bug: 510704 Change-Id: Ib6496b5713c962bcfa34e74e8b526384aef54f77 Signed-off-by: Laurent Delaigue <>
2017-01-24Merge test suite 'AtLeastLuna' with 'AllTests'Laurent Delaigue2-67/+6
Since we now only support Luna+ eclipse versions. Change-Id: I795a04002192618b2d7d37aebdb3c180d471f268 Signed-off-by: Laurent Delaigue <>
2017-01-20Merge algorithm refactoringLaurent Delaigue1-2/+5
In order to address several bugs we faced on merging, a refactoring of the merge algorithm was made. The responsibility of IMerger is reduced to just merging one diff and telling which diffs are required to be merged prior to a given diff and which ones need to be merged in the same 'transaction'. It is now the responsibility of BatchMerger to merge all the necessary diffs in the right order when asked to merge one or several diffs. A new class ComputeDiffsToMerge encapsulates the logic of computing the diffs to merge and in which order. The Graph is no longer used to describe the dependencies between diffs, hence BreadthFirstIterator is no longer used for merging. Refined diffs are considered as 'to be merged in the same transaction' (logically resulting merges). Required diffs must be merged before (merge dependencies). Equivalent and implied diffs are dealt with like before. - Diffs have a new state MERGING to distinguish between an in-progress merge (MERGING) and an already executed merge (MERGED). - Implied merges need to be set to MERGED recursively - Diff ordering for implications needs to be checked recursively - Deterministic refinement order that does not rely on hash values - Simplified, common method for copyLeftToRight and copyRightToLeft Includes tests. Bug: 507177 Bug: 501574 Change-Id: Iad8bad7a4326d4fb297662264b4ad3737f508136 Also-by: Martin Fleck <> Signed-off-by: Laurent Delaigue <>
2017-01-13[508665] Delete EnumerationLiteral classifier changes from comparisonPhilip Langer1-2/+3
EnumerationLiteral.classifier is essentially a derived feature. In fact, the classifier of an EnumerationLiteral is always its containing Enumeration. However, this feature is not declared as such in the metamodel, as it is inherited from InstanceSpecification.classifier, which is not derived. In the UML implementation, EnumerationLiteral.classifier, therefore, overwrites InstanceSpecification.classifier to return an unmodifiable collection always containing the Enumeration instead of a writable collection. Thus, we have to avoid merging changes of EnumerationLiteral.classifier changes and can ignore changes of this feature altogether. Changes of this feature on EnumerationLiterals will therefore be deleted, just as if it would have been the case if the feature would really be declared as derived feature. Bug: 508665 Change-Id: I685e5ab6ef29c3c452845e4f9deae087a9b3b40b Signed-off-by: Philip Langer <>
2017-01-13[483798] Introduce and use context in adapter factoriesMartin Fleck1-1/+2
- Provide context tester for fine-grained selection of adapter factory - Extend extension point with optional context tester - Allow context to be given during creation of adapter factory registry - Fire event on adapter factory change in compare configuration - Add listeners to propagate new adapter factory after context change Includes tests. Bug: 483798 Change-Id: Ib0a1a3538a8cf705ea82620bde625cebfd68636c Signed-off-by: Martin Fleck <> Signed-off-by: Philip Langer <>
2016-10-13[501864] Refactoring of group providers & filtersLaurent Delaigue1-5/+6
Diffs that have no real conflict (direct or indirect) and only some pseudo-conflicts (but also non-conflicting refining diffs) only appear in the side group. Also add javadoc to describe the expected behaviour of the group provider 'by side' and some unit tests for predicates. Change-Id: I3d02172b1c77199ea0904459b196289b19db35d6 Signed-off-by: Laurent Delaigue <>
2016-06-15Switch to Eclipse mars.2Mathieu Cartaud1-2/+2
Format all non generated classes to get ride of formatter incompatibilities Migrate checkstyle config for checkstyle 6.19 Change-Id: I8c2b31765053a3686de62320f893bedf4ad81d1f Signed-off-by: Mathieu Cartaud <>
2016-06-03Store all file URIs that have initially been in scopePhilip Langer1-1/+3
With this change, we provide access to the originally selected resources in the synchronization model and the comparison scope. This information will allow us to better identify the context of a comparison or merge. Change-Id: I344ed455e77df171143ceb089c6269d207046e31 Signed-off-by: Philip Langer <>
2016-05-31[493650] Fix order of merged childrenLaurent Delaigue1-2/+4
Improved after discussion with Laurent Goubet. A test is added to check that when merging every diff and resolving conflicts by: - first reject all target side conflicting diffs - then accepting all other diffs yields models to be identical on both sides, no matter in what order the diffs are accepted/rejected. The test uses Collections2.permutations, which appeared in guava 12, so an update of the TP was necessary. Bug: 493650 Change-Id: Ib790b992184f6038806bf890f7af96ae2c447ca7 Signed-off-by: Laurent Delaigue <>
2016-05-10[492261] Merge ResourceAttChange in the right resourceMathieu Cartaud1-1/+2
Add test to make sure that diffs linked to a merged RAC are now created in the right resource Bug: 492261 Change-Id: I4de6c63d16add447241c891a22e46c224f819cd3 Signed-off-by: Mathieu Cartaud <>
2016-02-03[487011] Fix wrong conflict detectionMathieu Cartaud1-1/+2
When comparing two identical models and a different ancestor, some changes lead to real conflicts instead of pseudo-conflicts. Bug: 487011 Change-Id: Ibab0a456eab7833497de24a19c5cd85ff500b207 Signed-off-by: Mathieu Cartaud <>
2016-01-26[485266] Fix merge consequences for delete/move conflictsMathieu Cartaud1-2/+4
Bug: 485266 Change-Id: I29bc1d2d2df58d63aa2fd822c181239643a97f26 Signed-off-by: Mathieu Cartaud <>
2016-01-08[484579] Fix merge consequences algorithmMathieu Cartaud1-0/+63
When computing the consequences of a merge, one must be careful when pseudo-conflict cause diffs from the other side to be merged, since then the leftToRight parameter must be negated to get the relevant consequences for these "opposite side" diffs. Bug: 484579 Change-Id: I34eb80d028068d2b80a59d42fcb3fb9ea9ed0053 Also-by: Laurent Delaigue <> Signed-off-by: Mathieu Cartaud <>
2016-01-05[484557] ResourceAttachment vs Attribute conflictsLaurent Delaigue1-1/+2
Conflicts between ResourceAttachmentChanges and Attribute or FeatureMap changes were not properly detected. Bug: 484557 Change-Id: I06afb3f4141f9194b1314f423282b7df51e66d2e Signed-off-by: Laurent Delaigue <>
2015-09-18Remove dependency to rcp in Delaigue1-3/+2
Introduce new test project to do so. Change-Id: I6d487446bd7b78110ab6b742c57496d56d81ca14 Signed-off-by: Laurent Delaigue <>
2015-09-02[475401] Modify RootIDMatchingStrategy to only return unique mappingsStefan Dirix1-1/+2
The RootIDMatchingStrategy determines matching between resources by intersecting the IDs of their root objects. The RootIDMatchingStrategy now checks if a possible mapping is unique and does therefore not intersect with another possible mapping. The previous behavior of returning the first possible mapping creates "random" results, affected by the order the given iterators return their resources. Since this strategy can not determine which is the "better" mapping of multiple options it should not return any of them. This way the remaining EMFCompareFramework is not confused by "half-true" mappings. Includes two-way testcases. Bug: 475401 Signed-off-by: Stefan Dirix <> Change-Id: I2cb886d088d6ce27cbc06ec2958fc02ef9253d36
2015-06-10[469237] Merge Refining diffs if all refined diffs have been mergedAxel Richard1-1/+2
If a diff refines another, we have to check if the "macro" diff has to be merged with it. Also add test case. Bug: 469237 Change-Id: Ieb6cf681c7f6e0255eb061da9b69605a513aa655 Signed-off-by: Axel Richard <>
2015-05-28[467576] Correct Handling of Proxies in ReqEngineMichael Borkowski1-2/+5
MatchUtil so far did not handle proxy objects correctly, which led to false negatives in detecting required diffs, which was exposed in bug 467576. This change fixes this issue by comparing the objects' URIs to detect proxy matches. Bug: 467576 Change-Id: Ib390ddbd56e65145ecd554535d960e769c728a29 Signed-off-by: Michael Borkowski <>
2015-03-17[462203] Child match appear as top-level match.Axel Richard1-1/+2
Reorganize matches in IdentifierEObjectMatcher class to avoid root matches that are actually child matches. Bug: 462203 Change-Id: I0045b96cbf7805c3e7e19f6e2fa4ed3bb6085c85 Signed-off-by: Axel Richard <>
2015-03-09[457652] Give xmi:ids higher priority than attribute idsStefan Dirix1-4/+5
The IdentifierEObjectMatcher will now give xmi:ids priority over attribute ids to prevent models with duplicate xmi:ids. Includes testcases. Bug: 457652 Signed-off-by: Stefan Dirix <> Change-Id: Ia3ba4222837ecc7f6a17bccc3973ecaee334fad0
2015-03-09[461291] Avoid matching proxies with actual objects inStefan Dirix1-2/+5
IdentifierEObjectMatcher Differentiates between identifiers for proxies and identifiers for actual objects within the IdentifierEObjectMachter. This avoids matching proxies with actual objects while still allowing themselves to be matched. Includes testcases. Bug: 461291 Signed-off-by: Stefan Dirix <> Change-Id: Ib1a6553bfd0a682652de728f727a21607c6cc6c6
2015-02-06[457034] ProximityEObjectMatcher should support cancellationLaurent Delaigue1-3/+4
Improved monitoring by making use of SubMonitor and supporting cancel where it makes sense. Also added dedicated unit tests. Didn't want to break the API so added TODOs instead... Bug: 457034 Change-Id: I92dc82e2217c0cce818fb3d95a545f38f97bc86b Signed-off-by: Laurent Delaigue <>
2014-11-17[450949] Avoid shortcuts in DefaultDiffEngine for certain FeatureMapsStefan Dirix1-3/+4
Changes in FeatureMaps should be merged via FeatureMapChanges in the FeatureMapChangeMerger. In cases of added / removed elements the DefaultDiffEngine prevents the calculation of required FeatureMapChanges since they only affect attributes of those elements. This leads to ordering problems since the ReferenceChangeMerger can not handle FeatureMaps properly. This fix removes the calculation prevention for these cases. Includes testcases for this issue. Bug: 450949 Signed-off-by: Stefan Dirix <> Change-Id: Ie21a54c2e08b27bcc421f1c28d42e542407b990d
2014-10-27[446947] Adds support for three-way merging multi-line String attributesPhilip Langer1-1/+7
Changes applied to String attributes, which might for instance contain multiple lines of code in a model (e.g., OpaqueBehaviors in UML), will now be checked whether concurrent changes in the context of a three-way diff are mergeable using a three-way line-based merge algorithm. If yes, no conflict will be raised and they will be merged line by line. Therefore, this commit introduces a copy of the diff_match_patch class R106 and a ThreeWayTextDiff utility, which extends the capabilities of diff_match_patch to support three-way diffing and merging of text (as opposed to two-way diffing only). Bug: 446947 CQ: 8824 Change-Id: Ifc7a3144461f7d47750b90a8098d565279ee826d Signed-off-by: Philip Langer <>
2014-10-14[446739] Fixes obtaining the target feature in three-way merge of a movePhilip Langer1-1/+2
We now make sure that the target feature is correctly determined. This prevents a NullPointerException thrown during a three-way merge of a move, in which the target containment feature is not available in the type of the original containment feature. Bug: 446739 Signed-off-by: Philip Langer <> Change-Id: I98a7f37bb5e43f10ddaf4a042893ed4773bf25b9
2014-09-25[443031] Fix NPE on FeatureFilter.referenceIsSetAxel Richard1-1/+3
Fix NPE on FeatureFilter.referenceIsSet Add tests Bug: 443031 Change-Id: Id2ecebcff6c174341199451d472aad4c06101239 Signed-off-by: Axel Richard <>
2014-09-19[444351] Fix bug in EqualityHelper.matchingArraysAxel Richard1-1/+2
EqualityHelper.matchingArrays now returns false for arrays of different lengths Add very basic tests for EqualityHelper.matchingValues Bug: 444351 Change-Id: I569e3f0bae796fbb8d2cc35196f550480ce25516 Signed-off-by: Axel Richard <>
2014-07-31[440679] Avoids NPE when performing a movePhilip Langer1-1/+2
We now make sure that the correct feature (i.e., the target feature of the target container) is used when obtaining the target value list (current list of values in the target container's feature) for finding the insertion index. Signed-off-by: Philip Langer <> Bug: 440679 Change-Id: I02798dc702c3a17c49ae63d80cf6a099858b7d89
2014-07-07FeatureMaps: FeatureMapChanges testsAxel Richard1-2/+8
Add feature map element in nodes.ecore Add core tests Change-Id: I61becd6b8f28cb8f494951493e8367759eaa2e4b
2014-05-23[435053] Add Pseudo conflicts tests.Axel Richard1-1/+2
In case of a pseudo conflict, no merge action is performed, even in ACCEPT/REJECT mode. Add tests for pseudo conflicts. Bug: 435053 Change-Id: I450c6676633502bb001829c889336023ee0d1cc1
2014-04-02New tests: Test ItemRegistryArthur Daussy1-1/+2
Add unit tests for ItemRegistry. Change-Id: I50fd60e42d9f8424bf0d68cb742d3a4782dad0c7 Signed-off-by: Arthur Daussy <>
2014-01-30extract fuzzy in a test fragmentLaurent Goubet1-40/+0
Change-Id: Ib5aafed3455ac8a8a884520e2f630d1f38de0452
2014-01-28[421609] ProximityEObjectMatcher match even when Distance function sais nocbrun1-1/+3
Introduce a test to make sure the Proximity index will never return a "closest" EObject if it uses a distance which always return the MAX. Change-Id: I279c21dab920b75d312fbf41528dcc40f1d8cdfc
2013-09-24[416400] - Fix IOWrappedException by adding a ConflictMergerAxel Richard1-2/+3
The merge of conflicts was not managed yet. Add a new Merger for conflict with a ranking of 15 (higher than ReferenceMerger and AttributeMerger). Bug: 416400 Change-Id: Id38da2f67db570f276518e8cba81636bcc777669
2013-06-21Filling of the implication link with UML subsets.Cedric Notot1-5/+6
Like equivalences, the merge of a difference may imply the merge of other ones. But, contrary to equivalences, this implication link is unidirectional. So, if A implies B, B does not imply A. In the context of UML, references can be defined as subset of other ones. So, the merge of the add of a reference which is subset of another one implies the add of this last one. In the same way, the delete of a reference which is superset of other ones implies the delete of these last ones. Note that some superset references can be defined as 'union' (that is to say that each superset reference is in one of the subsets). Union supersets are derived, so they are not managed by EMF Compare. The implications are set in Diff#implies and Diff#impliedBy. The reference merger of EMF Compare scans these links to mark as merged the impacted differences without merging them (because the merge itself will be managed by the 'meta-model'). Change-Id: If3a62076c3569b1ba0aa4628c657765cd8ad7711
2013-03-19[403055] Provide a match engine extension mechanism.Axel Richard1-85/+87
Make the match engine extensible by providing extension point mechanism. Bug: 403055 Change-Id: I5b824adf66840d76b8046518103d447ad5711c41
2013-01-30[399361] Adding performance tests for the LCSLaurent Goubet1-4/+5
2013-01-24[398863] Provide a merge extension mechanismCedric Notot1-1/+2
2013-01-21[381143] Conflict detection issueLaurent Goubet1-2/+3
See the linked bug for details. We need to change the conflict detector and fix the tests accordingly.
2013-01-08Enable Fuzzy tests for the Nodes ecore model.cbrun1-1/+2
2012-11-19refactor EMFCompareEditingDomain to implement an interface.Mikaël Barbero1-1/+2
refactor EMFCompareCommandStack to implement an interface. add 2 implementations of CompareCommandStack (delegating to one, and delegating to two other CommandStacks). refactor CopyAllNonConflictingCommand and CopyCommand to implement a common interface. add unittests on ICompareCommandStack implementations.
2012-11-09add some test for compare.edit (esp. getChildren() of ItemProvider)Mikaël Barbero1-1/+3
2012-11-07Missing file from commit bf4c9d4Laurent Goubet1-0/+39
2012-11-07Extract the fuzzy tests from the standalone-capable test suite to a newLaurent Goubet1-2/+1
eclipse-only suite.
2012-10-30Merge Brute Force Testingcbrun1-1/+2
Add a simple fuzzy test
2012-09-26Renaming AbstractInputData#loadFromClassLoader (typo).lgoubet1-1/+2
Drafting the fragmentation tests.
2012-09-18We should not use stat similarity to compare URIscbrun1-1/+2
No more using the classical "string similarity" algorithm based on the dice coefficient to compare URIs. Introduces a specific implementation comparing URIs or fragments spliting the path and comparing those.
2012-09-18389810 : Dynamic instance match failscbrun1-1/+3
Introduces a very basic yet useful test case of comparison and merge of Dynamic Instances.

Back to the top