Skip to content

Commit

Permalink
[releng] Fix compilation issues
Browse files Browse the repository at this point in the history
- Upgrade to generic diff/merge
- Upgrade to generic coevolution
- Update new capella feature name

Change-Id: I4ef81d97d95c9c61014d6aa6f0d0b3521412ec91
Signed-off-by: Sandu Postaru <sandu.postaru@thalesgroup.com>
  • Loading branch information
sandupostaru authored and pdulth committed Dec 2, 2020
1 parent adc4564 commit ce0da57
Show file tree
Hide file tree
Showing 14 changed files with 111 additions and 82 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.eclipse.emf.diffmerge.bridge.traces.gen.bridgetraces.BridgetracesPackage;
import org.eclipse.emf.diffmerge.bridge.traces.gen.bridgetraces.Trace;
import org.eclipse.emf.diffmerge.diffdata.EComparison;
import org.eclipse.emf.diffmerge.generic.api.scopes.IEditableTreeDataScope;
import org.eclipse.emf.diffmerge.impl.scopes.FragmentedModelScope;
import org.eclipse.emf.diffmerge.ui.specification.IModelScopeDefinition;
import org.eclipse.emf.diffmerge.ui.specification.ext.ResourceScopeDefinition;
Expand Down Expand Up @@ -163,7 +164,7 @@ protected IStatus loadTransformationScope(IContext context) {
EObject root = EcoreUtil.getRootContainer(target);
// Target scope must not be read-only. Otherwise we can have problems during the merge
IModelScopeDefinition definition = new ResourceScopeDefinition(root.eResource(), getId(), true);
IEditableModelScope targetScope = definition.createScope(definition.getEntrypoint());
IEditableTreeDataScope<?> targetScope = definition.createScope(definition.getEntrypoint());
context.put(IRequirementsImporterBridgeConstants.TARGET_SCOPE, targetScope);
return Status.OK_STATUS;
}
Expand Down Expand Up @@ -196,12 +197,13 @@ protected IStatus loadSourceScope(IContext context) {
context.put(IRequirementsImporterBridgeConstants.REQIF_MODEL_CONTAINS_MODULE, false);

// Set status to cancel to avoid unnecessary calculations.
return new Status(IStatus.CANCEL, RequirementsVPPlugin.PLUGIN_ID, Messages.ReqIfImport_NoModuleFoundPopup_Content);
return new Status(IStatus.CANCEL, RequirementsVPPlugin.PLUGIN_ID,
Messages.ReqIfImport_NoModuleFoundPopup_Content);
}

context.put(IRequirementsImporterBridgeConstants.REQIF_MODEL_CONTAINS_MODULE, true);
IModelScopeDefinition definition = new ResourceScopeDefinition(resource, getId(), false);
IEditableModelScope sourceScope = definition.createScope(definition.getEntrypoint());
IEditableTreeDataScope<?> sourceScope = definition.createScope(definition.getEntrypoint());
context.put(IRequirementsImporterBridgeConstants.SOURCE_SCOPE, sourceScope);
return checkErrors(resource.getErrors());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,24 @@
import java.util.List;

import org.eclipse.emf.diffmerge.bridge.interactive.UpdateViewer;
import org.eclipse.emf.diffmerge.diffdata.EMatch;
import org.eclipse.emf.diffmerge.generic.api.IMatch;
import org.eclipse.emf.diffmerge.ui.viewers.EMFDiffNode;
import org.eclipse.emf.diffmerge.ui.viewers.MergeChoiceData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IActionBars;

public class RequirementsComparisonViewer extends UpdateViewer {


public RequirementsComparisonViewer(Composite parent) {
this(parent, null);
this(parent, null);
}

public RequirementsComparisonViewer(Composite parent, IActionBars actionBars) {
super(parent, actionBars);
}

@Override
protected void makeMergeChoices(MergeChoiceData choices, EMFDiffNode input, List<EMatch> selectedMatches,
protected void makeMergeChoices(MergeChoiceData choices, EMFDiffNode input, List<IMatch<?>> selectedMatches,
boolean acceptIncrementalMode) {
// Make the following choices checked by default
choices.setIncrementalMode(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,7 @@

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.diffmerge.api.IComparison;
import org.eclipse.emf.diffmerge.api.IDiffPolicy;
import org.eclipse.emf.diffmerge.api.IMatchPolicy;
import org.eclipse.emf.diffmerge.api.IMergePolicy;
import org.eclipse.emf.diffmerge.api.IMergeSelector;
import org.eclipse.emf.diffmerge.api.diff.IDifference;
import org.eclipse.emf.diffmerge.api.scopes.IEditableModelScope;
import org.eclipse.emf.diffmerge.api.scopes.IModelScope;
import org.eclipse.emf.diffmerge.bridge.api.IBridge;
import org.eclipse.emf.diffmerge.bridge.api.IBridgeTrace;
import org.eclipse.emf.diffmerge.bridge.incremental.BridgeTraceBasedMatchPolicy;
Expand All @@ -36,6 +29,13 @@
import org.eclipse.emf.diffmerge.bridge.traces.gen.bridgetraces.Trace;
import org.eclipse.emf.diffmerge.diffdata.EComparison;
import org.eclipse.emf.diffmerge.diffdata.impl.EComparisonImpl;
import org.eclipse.emf.diffmerge.generic.api.IComparison;
import org.eclipse.emf.diffmerge.generic.api.IDiffPolicy;
import org.eclipse.emf.diffmerge.generic.api.IMatchPolicy;
import org.eclipse.emf.diffmerge.generic.api.IMergePolicy;
import org.eclipse.emf.diffmerge.generic.api.IMergeSelector;
import org.eclipse.emf.diffmerge.generic.api.diff.IDifference;
import org.eclipse.emf.diffmerge.generic.api.scopes.ITreeDataScope;
import org.eclipse.emf.diffmerge.ui.viewers.AbstractComparisonViewer;
import org.eclipse.emf.diffmerge.ui.viewers.EMFDiffNode;
import org.eclipse.emf.diffmerge.ui.viewers.categories.DifferenceCategorySet;
Expand Down Expand Up @@ -75,8 +75,8 @@ public class RequirementsVPBridge extends EMFInteractiveBridge<IEditableModelSco
IEditableModelScope _targetScope;

public RequirementsVPBridge(IEditableModelScope sourceScope, IEditableModelScope targetScope,
IBridge<IEditableModelScope, IEditableModelScope> bridge, IDiffPolicy diffPolicy, IMergePolicy mergePolicy,
IMergeSelector merger) {
IBridge<IEditableModelScope, IEditableModelScope> bridge, IDiffPolicy<EObject> diffPolicy,
IMergePolicy<EObject> mergePolicy, IMergeSelector<EObject> merger) {
super(bridge, diffPolicy, mergePolicy, merger);
_sourceScope = sourceScope;
_targetScope = targetScope;
Expand All @@ -93,10 +93,11 @@ protected IBridgeTrace.Editable createTrace() {
protected EComparison compare(IEditableModelScope created, IEditableModelScope existing, IBridgeTrace createdTrace,
IBridgeTrace existingTrace, IProgressMonitor monitor) {
EComparison result = new EComparisonImpl(existing, created);
IMatchPolicy matchPolicy = new BridgeTraceBasedMatchPolicy(created, createdTrace, existingTrace) {

IMatchPolicy<EObject> matchPolicy = new BridgeTraceBasedMatchPolicy<EObject>(created, createdTrace, existingTrace) {

@Override
public Object getMatchID(EObject element, IModelScope scope) {
public Object getMatchID(EObject element, ITreeDataScope<EObject> scope) {
Object trace = super.getMatchID(element, scope);
if (trace == null) {
trace = EcoreUtil.getID(element);
Expand Down Expand Up @@ -218,7 +219,7 @@ private void removeCapellaRelations(Map<CapellaRelation, Collection<?>> capellaR
}

@Override
protected void handleMergedDifferences(final IComparison comparison, final IBridgeTrace createdTrace,
protected void handleMergedDifferences(final IComparison<EObject> comparison, final IBridgeTrace createdTrace,
final IBridgeTrace existingTrace) {
ExecutionManager manager = TransactionHelper.getExecutionManager(_targetScope.getContents());
if (manager != null) {
Expand All @@ -235,7 +236,7 @@ public void run() {
protected EMFDiffNode createDiffNode(EComparison comparison, EditingDomain domain) {
final EMFDiffNode diffNode = super.createDiffNode(comparison, domain);

Collection<IDifference> remainingDifferences = comparison.getRemainingDifferences();
Collection<IDifference<EObject>> remainingDifferences = comparison.getRemainingDifferences();

DifferenceCategorySet set = new DifferenceCategorySet(Messages.Categories_Name, Messages.Categories_Description);
set.getChildren().add(new EClassCategory(RequirementsPackage.Literals.INTERNAL_RELATION,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
import java.util.Collection;
import java.util.Collections;

import org.eclipse.emf.diffmerge.api.Role;
import org.eclipse.emf.diffmerge.api.diff.IDifference;
import org.eclipse.emf.diffmerge.api.diff.IElementPresence;
import org.eclipse.emf.diffmerge.diffdata.EElementPresence;
import org.eclipse.emf.diffmerge.generic.api.Role;
import org.eclipse.emf.diffmerge.generic.api.diff.IDifference;
import org.eclipse.emf.diffmerge.ui.viewers.EMFDiffNode;
import org.eclipse.emf.diffmerge.ui.viewers.categories.AbstractDifferenceCategory;
import org.eclipse.emf.ecore.EClass;
Expand Down Expand Up @@ -66,10 +66,10 @@ public EClassCategory(EClass iconClazz, String name, EClass... clazzes) {
}

@Override
public boolean covers(IDifference difference, EMFDiffNode node) {
if (difference instanceof IElementPresence) {
EObject source = ((IElementPresence) difference).getElementMatch().get(Role.REFERENCE);
EObject target = ((IElementPresence) difference).getElementMatch().get(Role.TARGET);
public boolean covers(IDifference<?> difference, EMFDiffNode node) {
if (difference instanceof EElementPresence) {
EObject source = ((EElementPresence) difference).getElementMatch().get(Role.REFERENCE);
EObject target = ((EElementPresence) difference).getElementMatch().get(Role.TARGET);
for (EClass clazz : clazzes) {
if (clazz.isInstance(source) || clazz.isInstance(target)) {
return true;
Expand Down Expand Up @@ -98,6 +98,7 @@ public String getText(EMFDiffNode node) {
return name;
}

@Override
public Image getImage(final EMFDiffNode node) {
final Image[] image = new Image[1];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
*******************************************************************************/
package org.polarsys.capella.vp.requirements.importer.transposer.bridge.categories;

import org.eclipse.emf.diffmerge.api.diff.IDifference;
import org.eclipse.emf.diffmerge.diffdata.EAttributeValuePresence;
import org.eclipse.emf.diffmerge.diffdata.EMatch;
import org.eclipse.emf.diffmerge.generic.api.diff.IDifference;
import org.eclipse.emf.diffmerge.ui.viewers.EMFDiffNode;
import org.eclipse.emf.diffmerge.ui.viewers.categories.AbstractDifferenceCategory;
import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
Expand Down Expand Up @@ -40,7 +40,7 @@ public RelationIdentifierCategory() {
* @see org.eclipse.emf.diffmerge.ui.viewers.IDifferenceCategory#covers(org.eclipse.emf.diffmerge.api.diff.IDifference,
* org.eclipse.emf.diffmerge.ui.viewers.EMFDiffNode)
*/
public boolean covers(IDifference difference_p, EMFDiffNode node_p) {
public boolean covers(IDifference<?> difference_p, EMFDiffNode node_p) {
boolean result = false;
if (difference_p instanceof EAttributeValuePresence) {
EAttributeValuePresence vp = (EAttributeValuePresence) difference_p;
Expand All @@ -64,6 +64,7 @@ public String getDescription(EMFDiffNode node_p) {
/**
* @see org.eclipse.emf.diffmerge.ui.viewers.IDifferenceCategory#getID()
*/
@Override
public String getID() {
return ID;
}
Expand All @@ -80,6 +81,7 @@ public Image getImage(EMFDiffNode node_p) {
/**
* @see org.eclipse.emf.diffmerge.ui.viewers.IDifferenceCategory#getText(org.eclipse.emf.diffmerge.ui.viewers.EMFDiffNode)
*/
@Override
public String getText(EMFDiffNode node_p) {
return Messages.Categories_Relation_Identifier;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

import java.util.Set;

import org.eclipse.emf.diffmerge.api.scopes.IFeaturedModelScope;
import org.eclipse.emf.diffmerge.generic.api.scopes.ITreeDataScope;
import org.eclipse.emf.ecore.EObject;
import org.polarsys.capella.core.compare.CapellaMergePolicy;
import org.polarsys.kitalpha.vp.requirements.Requirements.Attribute;
Expand All @@ -32,7 +32,7 @@ public class ReqIFMergePolicy extends CapellaMergePolicy {
/* Add the types needed for each Requirement */
/* Add the source and target for each InternalRelation and their owned Attributes */
@Override
public Set<EObject> getAdditionGroup(EObject element_p, IFeaturedModelScope scope_p) {
public Set<EObject> getAdditionGroup(EObject element_p, ITreeDataScope<EObject> scope_p) {

Set<EObject> result = super.getAdditionGroup(element_p, scope_p);
if (element_p instanceof Attribute) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ include "https://raw.githubusercontent.com/eclipse/capella/master/releng/plugins
with source, requirements

location "https://download.eclipse.org/capella/core/updates/nightly/master/org.polarsys.capella.rcp.site" {
org.polarsys.capella.rcp.feature.feature.group
org.polarsys.capella.rcp.feature.group
org.polarsys.capella.cdo.mock.feature.feature.group
}

Expand Down
2 changes: 1 addition & 1 deletion tests/org.polarsys.capella.vp.requirements.ju/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
<extraRequirements>
<requirement>
<type>eclipse-feature</type>
<id>org.polarsys.capella.rcp.feature</id>
<id>org.polarsys.capella.rcp</id>
<versionRange>0.0.0</versionRange>
</requirement>
<requirement>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,14 @@

import java.io.File;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.diffmerge.api.diff.IDifference;
import org.eclipse.emf.diffmerge.diffdata.EElementPresence;
import org.eclipse.emf.diffmerge.generic.api.diff.IDifference;
import org.eclipse.emf.ecore.EObject;
import org.polarsys.capella.common.data.modellingcore.ModelElement;
import org.polarsys.capella.common.ef.command.AbstractReadWriteCommand;
Expand Down Expand Up @@ -57,6 +58,7 @@ public List<String> getRequiredTestModels() {
public void test() throws Exception {
SessionContext session = new SessionContext(getSession(projectTestName)) {

@Override
public <T extends EObject> T getSemanticElement(String objectIdentifier) {
Map<String, EObject> map = getSemanticObjectMap();
if (!map.containsKey(objectIdentifier)) {
Expand All @@ -72,7 +74,7 @@ public <T extends EObject> T getSemanticElement(String objectIdentifier) {
final EObject target = session.getSemanticElement(systemAnalysis);

assertTrue(((BlockArchitecture) target).getOwnedExtensions().isEmpty());

TestRequirementsImportLauncher testRequirementsImportLauncher = new TestRequirementsImportLauncher();
TransactionHelper.getExecutionManager(target).execute(new AbstractReadWriteCommand() {
@Override
Expand All @@ -83,11 +85,11 @@ public void run() {
}
});
assertTrue(((BlockArchitecture) target).getOwnedExtensions().stream().anyMatch(x -> x instanceof CapellaModule));

IContext context = testRequirementsImportLauncher.getContext();
List<IDifference> differencesFromReferenceScope = (List<IDifference>) context
Collection<IDifference<EObject>> differencesFromReferenceScope = (Collection<IDifference<EObject>>) context
.get(TestInitializeTransformation.DIFFERENCES_FROM_REFERENCE_SCOPE);

boolean anyMatch = differencesFromReferenceScope.stream().filter(EElementPresence.class::isInstance)
.map(EElementPresence.class::cast).anyMatch(diff -> (diff.getElement() instanceof ModelElement));
assertFalse("There should not be differences of Capella Element in the Candidate model", anyMatch);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@

import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.diffmerge.api.Role;
import org.eclipse.emf.diffmerge.api.diff.IDifference;
import org.eclipse.emf.diffmerge.diffdata.impl.EComparisonImpl;
import org.eclipse.emf.diffmerge.generic.api.Role;
import org.eclipse.emf.diffmerge.generic.api.diff.IDifference;
import org.eclipse.emf.diffmerge.generic.api.scopes.IEditableTreeDataScope;
import org.eclipse.emf.diffmerge.impl.policies.ConfigurableMatchPolicy;
import org.eclipse.emf.diffmerge.impl.policies.ConfigurableMatchPolicy.FineGrainedMatchCriterion;
import org.eclipse.emf.diffmerge.impl.policies.ConfigurableMatchPolicy.MatchCriterionKind;
Expand All @@ -30,6 +31,7 @@
import org.polarsys.capella.core.compare.CapellaMatchPolicy;
import org.polarsys.capella.core.compare.CapellaScopeFactory;
import org.polarsys.capella.core.data.cs.BlockArchitecture;
import org.polarsys.capella.core.libraries.model.CapellaModel;
import org.polarsys.capella.test.framework.api.BasicTestCase;
import org.polarsys.capella.test.framework.context.SessionContext;
import org.polarsys.capella.test.framework.helpers.IResourceHelpers;
Expand Down Expand Up @@ -76,14 +78,20 @@ public void run() {
});
}

IModelScopeDefinition testFixtureScope = new CapellaScopeFactory().createScopeDefinition(
getTestModel(projectWithImportedReqifTestName).getUriSemanticFile(), "testFixtureModel", true);
IModelScopeDefinition modelToTestScope = new CapellaScopeFactory()
.createScopeDefinition(getTestModel(projectTestName).getUriSemanticFile(), "toTestModel", true);
CapellaModel modelWithRequif = getTestModel(projectWithImportedReqifTestName);
CapellaModel testModel = getTestModel(projectTestName);

EComparisonImpl comparison = new EComparisonImpl(
testFixtureScope.createScope(getTestModel(projectWithImportedReqifTestName).getEditingDomain()),
modelToTestScope.createScope(getTestModel(projectTestName).getEditingDomain()));
IModelScopeDefinition testFixtureScopeDef = new CapellaScopeFactory()
.createScopeDefinition(modelWithRequif.getUriSemanticFile(), "testFixtureModel", true);
IModelScopeDefinition modelToTestScopeDef = new CapellaScopeFactory()
.createScopeDefinition(testModel.getUriSemanticFile(), "toTestModel", true);

IEditableTreeDataScope<EObject> textFixtureScope = (IEditableTreeDataScope<EObject>) testFixtureScopeDef
.createScope(modelWithRequif.getEditingDomain());
IEditableTreeDataScope<EObject> modelToTestScope = (IEditableTreeDataScope<EObject>) modelToTestScopeDef
.createScope(testModel.getEditingDomain());

EComparisonImpl comparison = new EComparisonImpl(textFixtureScope, modelToTestScope);

// Since ReqIF elements have different IDs each time they are imported, we should use these match criteria
CapellaMatchPolicy custoMatchPolicy = new CapellaMatchPolicy();
Expand All @@ -99,8 +107,8 @@ public void run() {
comparison.compute(custoMatchPolicy, new ReqIFImporterDiffPolicy(), new ReqIFMergePolicy(),
new NullProgressMonitor());

List<IDifference> differencesFromReference = comparison.getDifferences(Role.REFERENCE);
List<IDifference> differencesFromTarget = comparison.getDifferences(Role.TARGET);
Collection<IDifference<EObject>> differencesFromReference = comparison.getDifferences(Role.REFERENCE);
Collection<IDifference<EObject>> differencesFromTarget = comparison.getDifferences(Role.TARGET);

if (differencesFromReference.size() > 0 || differencesFromTarget.size() > 0) {
fail("There should not be any differences between the test model with ReqIf imported and the reference model");
Expand Down

0 comments on commit ce0da57

Please sign in to comment.