opencaesar / oml-rosetta

An Eclipse IDE that supports OML natively
Apache License 2.0
11 stars 1 forks source link

Problems comparing UML models. #23

Open NicolasRouquette opened 3 years ago

NicolasRouquette commented 3 years ago

With Rosetta 1.0.3 and 1.0.5, one can install the following features:

UML2 Extender SDK 5.5.2.v20210228-1829 org.eclipse.uml2.sdk.feature.group Eclipse Modeling Project

UML2 Extender SDK Developer Resources 5.5.2.v20210228-1829 org.eclipse.uml2.sdk.source.feature.group Eclipse Modeling Project

Model comparison (EMF Compare) - UML2 support 3.3.14.202102231741 org.eclipse.emf.compare.uml2.feature.group Eclipse Modeling Project

With Rosetta 1.0.3, comparing two *.uml files works properly.

With Rosetta 1.0.5, this comparison brings up an internal error:

An internal error occurred during: "Computing Model Differences".
loader constraint violation: 

when resolving method 'void org.eclipse.emf.compare.scope.FilterComparisonScope.setResourceSetContentFilter(com.google.common.base.Predicate)' 

the class loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @7a8450a of the current class, org/eclipse/emf/compare/ide/ui/internal/logical/ComparisonScopeBuilder, 
and the class loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @34347e00 for the method's defining class, org/eclipse/emf/compare/scope/FilterComparisonScope, 
have different Class objects for the type com/google/common/base/Predicate 
used in the signature 
(org.eclipse.emf.compare.ide.ui.internal.logical.ComparisonScopeBuilder is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @7a8450a, parent loader 'platform'; 
org.eclipse.emf.compare.scope.FilterComparisonScope is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @34347e00, parent loader 'platform')

It turns out that there are differences between the two versions of Rosetta w.r.t Eclipse features.

In 1.0.3, the installation of the UML2 comparison feature looks like this:

image

This is consistent with the Rosetta 1.0.3 dependencies:

image

In 1.0.5, the Rosetta dependencies resolve to an earlier version of EMF Compare:

image

This affects the installation of UML2 compare:

image

The difference seems to be causing the runtime discrepancy between the versions of com/google/common/base/Predicate.