use of org.eclipse.sirius.components.compatibility.api.ISemanticCandidatesProviderFactory in project sirius-components by eclipse-sirius.
the class EdgeMappingConverterTests method testEdgeFromNodeToContainer.
/**
* Non-regression test for the create edges issue. This test will ensure that a container description can be used as
* a valid target for an edge.
*/
@Test
public void testEdgeFromNodeToContainer() {
EdgeMapping edgeMapping = DescriptionFactory.eINSTANCE.createEdgeMapping();
NodeMapping nodeMapping = DescriptionFactory.eINSTANCE.createNodeMapping();
// $NON-NLS-1$
nodeMapping.setName("nodeMapping");
ContainerMapping containerMapping = DescriptionFactory.eINSTANCE.createContainerMapping();
// $NON-NLS-1$
containerMapping.setName("containerMapping");
edgeMapping.getSourceMapping().add(nodeMapping);
edgeMapping.getTargetMapping().add(containerMapping);
// @formatter:off
UUID nodeMappingUUID = UUID.nameUUIDFromBytes(nodeMapping.getName().getBytes());
UUID containerMappingUUID = UUID.nameUUIDFromBytes(containerMapping.getName().getBytes());
Map<UUID, NodeDescription> id2NodeDescriptions = Map.of(nodeMappingUUID, this.createNodeDescription(nodeMappingUUID), containerMappingUUID, this.createNodeDescription(containerMappingUUID));
// @formatter:on
IObjectService objectService = new IObjectService.NoOp();
IRepresentationMetadataSearchService representationMetadataSearchService = new IRepresentationMetadataSearchService.NoOp();
IIdentifierProvider identifierProvider = new IIdentifierProvider.NoOp() {
@Override
public String getIdentifier(Object element) {
return containerMappingUUID.toString();
}
};
ISemanticCandidatesProviderFactory semanticCandidatesProviderFactory = SemanticCandidatesProvider::new;
IModelOperationHandlerSwitchProvider modelOperationHandlerSwitchProvider = interpeter -> new ModelOperationHandlerSwitch(objectService, representationMetadataSearchService, identifierProvider, List.of(), interpeter);
EdgeMappingConverter edgeMappingConverter = new EdgeMappingConverter(new IObjectService.NoOp(), new IEditService.NoOp(), identifierProvider, semanticCandidatesProviderFactory, modelOperationHandlerSwitchProvider);
EdgeDescription edgeDescription = edgeMappingConverter.convert(edgeMapping, new AQLInterpreter(List.of(), List.of()), id2NodeDescriptions);
assertThat(edgeDescription.getTargetNodeDescriptions()).contains(id2NodeDescriptions.get(containerMappingUUID));
}
use of org.eclipse.sirius.components.compatibility.api.ISemanticCandidatesProviderFactory in project sirius-components by eclipse-sirius.
the class EdgeMappingConverterTests method testEdgeFromContainerToContainer.
/**
* Non-regression test for the create edges issue. This test will ensure that a container description can be used as
* both a valid source and a valid target for an edge.
*/
@Test
public void testEdgeFromContainerToContainer() {
EdgeMapping edgeMapping = DescriptionFactory.eINSTANCE.createEdgeMapping();
ContainerMapping sourceContainerMapping = DescriptionFactory.eINSTANCE.createContainerMapping();
// $NON-NLS-1$
sourceContainerMapping.setName("sourceContainerMapping");
ContainerMapping targetContainerMapping = DescriptionFactory.eINSTANCE.createContainerMapping();
// $NON-NLS-1$
targetContainerMapping.setName("targetContainerMapping");
edgeMapping.getSourceMapping().add(sourceContainerMapping);
edgeMapping.getTargetMapping().add(targetContainerMapping);
// @formatter:off
UUID sourceContainerMappingUUID = UUID.nameUUIDFromBytes(sourceContainerMapping.getName().getBytes());
UUID targetContainerMappingUUID = UUID.nameUUIDFromBytes(targetContainerMapping.getName().getBytes());
Map<UUID, NodeDescription> id2NodeDescriptions = Map.of(sourceContainerMappingUUID, this.createNodeDescription(sourceContainerMappingUUID), targetContainerMappingUUID, this.createNodeDescription(targetContainerMappingUUID));
// @formatter:on
IObjectService objectService = new IObjectService.NoOp();
IRepresentationMetadataSearchService representationMetadataSearchService = new IRepresentationMetadataSearchService.NoOp();
IIdentifierProvider identifierProvider = new IIdentifierProvider() {
@Override
public String getIdentifier(Object element) {
return targetContainerMappingUUID.toString();
}
@Override
public Optional<String> findVsmElementId(UUID id) {
return Optional.empty();
}
};
ISemanticCandidatesProviderFactory semanticCandidatesProviderFactory = SemanticCandidatesProvider::new;
IModelOperationHandlerSwitchProvider modelOperationHandlerSwitchProvider = interpeter -> new ModelOperationHandlerSwitch(objectService, representationMetadataSearchService, identifierProvider, List.of(), interpeter);
EdgeMappingConverter edgeMappingConverter = new EdgeMappingConverter(objectService, new IEditService.NoOp(), identifierProvider, semanticCandidatesProviderFactory, modelOperationHandlerSwitchProvider);
EdgeDescription edgeDescription = edgeMappingConverter.convert(edgeMapping, new AQLInterpreter(List.of(), List.of()), id2NodeDescriptions);
edgeDescription.getSourceNodeDescriptions().contains(id2NodeDescriptions.get(sourceContainerMappingUUID));
assertThat(edgeDescription.getTargetNodeDescriptions()).contains(id2NodeDescriptions.get(targetContainerMappingUUID));
}
use of org.eclipse.sirius.components.compatibility.api.ISemanticCandidatesProviderFactory in project sirius-components by eclipse-sirius.
the class EdgeMappingConverterTests method testEdgeFromContainerToNode.
/**
* Non-regression test for the create edges issue. This test will ensure that a container description can be used as
* a valid source for an edge.
*/
@Test
public void testEdgeFromContainerToNode() {
EdgeMapping edgeMapping = DescriptionFactory.eINSTANCE.createEdgeMapping();
NodeMapping nodeMapping = DescriptionFactory.eINSTANCE.createNodeMapping();
// $NON-NLS-1$
nodeMapping.setName("nodeMapping");
ContainerMapping containerMapping = DescriptionFactory.eINSTANCE.createContainerMapping();
// $NON-NLS-1$
containerMapping.setName("containerMapping");
edgeMapping.getSourceMapping().add(containerMapping);
edgeMapping.getTargetMapping().add(nodeMapping);
// @formatter:off
UUID nodeMappingUUID = UUID.nameUUIDFromBytes(nodeMapping.getName().getBytes());
UUID containerMappingUUID = UUID.nameUUIDFromBytes(containerMapping.getName().getBytes());
Map<UUID, NodeDescription> id2NodeDescriptions = Map.of(nodeMappingUUID, this.createNodeDescription(nodeMappingUUID), containerMappingUUID, this.createNodeDescription(containerMappingUUID));
// @formatter:on
IObjectService objectService = new IObjectService.NoOp();
IRepresentationMetadataSearchService representationMetadataSearchService = new IRepresentationMetadataSearchService.NoOp();
IIdentifierProvider identifierProvider = new IIdentifierProvider() {
@Override
public String getIdentifier(Object element) {
return containerMappingUUID.toString();
}
@Override
public Optional<String> findVsmElementId(UUID id) {
return Optional.empty();
}
};
ISemanticCandidatesProviderFactory semanticCandidatesProviderFactory = SemanticCandidatesProvider::new;
IModelOperationHandlerSwitchProvider modelOperationHandlerSwitchProvider = interpeter -> new ModelOperationHandlerSwitch(objectService, representationMetadataSearchService, identifierProvider, List.of(), interpeter);
EdgeMappingConverter edgeMappingConverter = new EdgeMappingConverter(objectService, new IEditService.NoOp(), identifierProvider, semanticCandidatesProviderFactory, modelOperationHandlerSwitchProvider);
EdgeDescription edgeDescription = edgeMappingConverter.convert(edgeMapping, new AQLInterpreter(List.of(), List.of()), id2NodeDescriptions);
assertThat(edgeDescription.getSourceNodeDescriptions()).contains(id2NodeDescriptions.get(containerMappingUUID));
}
use of org.eclipse.sirius.components.compatibility.api.ISemanticCandidatesProviderFactory in project sirius-components by eclipse-sirius.
the class MappingConverterTests method testContainerWithImageSubNode.
/**
* Test that nodes inside a list are always typed as list items with a matching style, regardless of their "native"
* style.
*/
@Test
public void testContainerWithImageSubNode() {
ContainerMapping containerMapping = DescriptionFactory.eINSTANCE.createContainerMapping();
// $NON-NLS-1$
containerMapping.setName("EClass");
// $NON-NLS-1$
containerMapping.setDomainClass("ecore::EClass");
// $NON-NLS-1$
containerMapping.setSemanticCandidatesExpression("aql:self.eClassifiers");
containerMapping.setChildrenPresentation(ContainerLayout.LIST);
ContainerStyleDescription containerStyle = StyleFactory.eINSTANCE.createFlatContainerStyleDescription();
// $NON-NLS-1$
containerStyle.setLabelExpression("aql:self.name");
containerMapping.setStyle(containerStyle);
NodeMapping itemMapping = DescriptionFactory.eINSTANCE.createNodeMapping();
// $NON-NLS-1$
itemMapping.setDomainClass("ecore::EAttribute");
// $NON-NLS-1$
itemMapping.setSemanticCandidatesExpression("aql:self.eStructuralFeatures");
WorkspaceImageDescription imageStyle = StyleFactory.eINSTANCE.createWorkspaceImageDescription();
// $NON-NLS-1$
imageStyle.setLabelExpression("aql:self.name");
// $NON-NLS-1$
imageStyle.setWorkspacePath("path/to/image.svg");
itemMapping.setStyle(imageStyle);
containerMapping.getSubNodeMappings().add(itemMapping);
IIdentifierProvider identifierProvider = new IIdentifierProvider() {
@Override
public String getIdentifier(Object element) {
return UUID.randomUUID().toString();
}
@Override
public Optional<String> findVsmElementId(UUID id) {
return Optional.empty();
}
};
ISemanticCandidatesProviderFactory semanticCandidatesProviderFactory = (interpreter, domainClass, semanticCandidatesExpression, preconditionExpression) -> variableManager -> List.of();
IModelOperationHandlerSwitchProvider modelOperationHandlerSwitchProvider = interpreter -> modelOperation -> Optional.empty();
AQLInterpreter interpreter = new AQLInterpreter(List.of(), List.of(EcorePackage.eINSTANCE));
var converter = new AbstractNodeMappingConverter(new IObjectService.NoOp(), new IEditService.NoOp(), identifierProvider, semanticCandidatesProviderFactory, modelOperationHandlerSwitchProvider);
NodeDescription convertedNodeDescription = converter.convert(containerMapping, interpreter, new HashMap<UUID, NodeDescription>());
VariableManager variableManager = new VariableManager();
variableManager.put(VariableManager.SELF, EcorePackage.Literals.ECLASS);
assertThat(convertedNodeDescription.getTypeProvider().apply(variableManager)).isEqualTo(NodeType.NODE_LIST);
assertThat(convertedNodeDescription.getStyleProvider().apply(variableManager)).isInstanceOf(ListNodeStyle.class);
assertThat(convertedNodeDescription.getChildNodeDescriptions()).hasSize(1);
NodeDescription subNodeDescription = convertedNodeDescription.getChildNodeDescriptions().get(0);
variableManager.put(VariableManager.SELF, EcorePackage.Literals.ECLASS__ABSTRACT);
assertThat(subNodeDescription.getTypeProvider().apply(variableManager)).isEqualTo(NodeType.NODE_LIST_ITEM);
assertThat(subNodeDescription.getStyleProvider().apply(variableManager)).isInstanceOf(ListItemNodeStyle.class);
}
use of org.eclipse.sirius.components.compatibility.api.ISemanticCandidatesProviderFactory in project sirius-components by eclipse-sirius.
the class FormRendererTests method testEcoreModel.
@Test
public void testEcoreModel() {
ViewExtensionDescription viewExtensionDescription = this.createSiriusProperties();
AQLInterpreterFactory interpreterFactory = new AQLInterpreterFactory() {
@Override
public AQLInterpreter create(ViewExtensionDescription viewExtensionDescription) {
return new AQLInterpreter(List.of(), List.of(EcorePackage.eINSTANCE));
}
};
IObjectService objectService = new IObjectService.NoOp();
IRepresentationMetadataSearchService representationMetadataSearchService = new IRepresentationMetadataSearchService.NoOp();
IIdentifierProvider identifierProvider = new IIdentifierProvider.NoOp() {
@Override
public String getIdentifier(Object element) {
return UUID.randomUUID().toString();
}
};
IdentifiedElementLabelProvider identifiedElementLabelProvider = new IdentifiedElementLabelProvider();
ISemanticCandidatesProviderFactory semanticCandidatesProviderFactory = SemanticCandidatesProvider::new;
IModelOperationHandlerSwitchProvider modelOperationHandlerSwitchProvider = interpeter -> new ModelOperationHandlerSwitch(objectService, representationMetadataSearchService, identifierProvider, List.of(), interpeter);
ViewExtensionDescriptionConverter converter = new ViewExtensionDescriptionConverter(objectService, interpreterFactory, identifierProvider, semanticCandidatesProviderFactory, modelOperationHandlerSwitchProvider, identifiedElementLabelProvider);
FormDescription description = converter.convert(viewExtensionDescription);
this.checkResult(description);
}
Aggregations