diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc
index 222dae534e..59671332ad 100644
--- a/CHANGELOG.adoc
+++ b/CHANGELOG.adoc
@@ -86,6 +86,7 @@ This will be fixed in the next version.
- https://github.com/eclipse-sirius/sirius-web/issues/2208[#2208] [diagram] Add Cypress tests for React Flow.
- https://github.com/eclipse-sirius/sirius-web/issues/2198[#2198] [view] Add a default Color Palette on View creation
- https://github.com/eclipse-sirius/sirius-web/issues/2228[#2228] [domain] Creating a domain from the onboard area action now initialize its name.
+- https://github.com/eclipse-sirius/sirius-web/issues/2329[#2329] [form] Change the default representation in the details view for non containment reference from a select widget to a reference widget.
== v2023.8.0
diff --git a/integration-tests/cypress/e2e/project/edit/color-palette.cy.js b/integration-tests/cypress/e2e/project/edit/color-palette.cy.js
index fefd9e9608..873fbfacae 100644
--- a/integration-tests/cypress/e2e/project/edit/color-palette.cy.js
+++ b/integration-tests/cypress/e2e/project/edit/color-palette.cy.js
@@ -75,7 +75,6 @@ describe('/projects/:projectId/edit - Color Palette', () => {
cy.getByTestId('LinkedTo Edge-toggle').click();
cy.get('[title="diagram::EdgeStyle"]').click();
cy.getByTestId('Color').click();
- cy.contains('FixedColor color_blue').click();
+ cy.getByTestId('option-color_blue').should('exist');
});
});
-
diff --git a/packages/compatibility/backend/sirius-components-compatibility-emf/pom.xml b/packages/compatibility/backend/sirius-components-compatibility-emf/pom.xml
index eb46819d26..24806115e8 100644
--- a/packages/compatibility/backend/sirius-components-compatibility-emf/pom.xml
+++ b/packages/compatibility/backend/sirius-components-compatibility-emf/pom.xml
@@ -12,14 +12,14 @@
Obeo - initial API and implementation
-->
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
spring-boot-starter-parent
3.1.2
-
+
org.eclipse.sirius
sirius-components-compatibility-emf
@@ -75,6 +75,11 @@
sirius-components-emf
2023.8.2
+
+ org.eclipse.sirius
+ sirius-components-widget-reference
+ 2023.8.2
+
org.springframework.boot
spring-boot-starter-test
diff --git a/packages/compatibility/backend/sirius-components-compatibility-emf/src/main/java/org/eclipse/sirius/components/compatibility/emf/properties/MonoValuedNonContainmentReferenceIfDescriptionProvider.java b/packages/compatibility/backend/sirius-components-compatibility-emf/src/main/java/org/eclipse/sirius/components/compatibility/emf/properties/MonoValuedNonContainmentReferenceIfDescriptionProvider.java
deleted file mode 100644
index dbd26b9787..0000000000
--- a/packages/compatibility/backend/sirius-components-compatibility-emf/src/main/java/org/eclipse/sirius/components/compatibility/emf/properties/MonoValuedNonContainmentReferenceIfDescriptionProvider.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019, 2023 Obeo.
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Obeo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.sirius.components.compatibility.emf.properties;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
-import org.eclipse.sirius.components.compatibility.emf.properties.api.IPropertiesValidationProvider;
-import org.eclipse.sirius.components.compatibility.forms.WidgetIdProvider;
-import org.eclipse.sirius.components.core.api.IEditingContext;
-import org.eclipse.sirius.components.core.api.IObjectService;
-import org.eclipse.sirius.components.forms.components.SelectComponent;
-import org.eclipse.sirius.components.forms.description.IfDescription;
-import org.eclipse.sirius.components.forms.description.SelectDescription;
-import org.eclipse.sirius.components.representations.Failure;
-import org.eclipse.sirius.components.representations.IStatus;
-import org.eclipse.sirius.components.representations.Success;
-import org.eclipse.sirius.components.representations.VariableManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Provides the default description of the widget to use to support mono-valued non-containment reference.
- *
- * @author sbegaudeau
- */
-public class MonoValuedNonContainmentReferenceIfDescriptionProvider {
-
- private static final String ID_DESCRIPTION_ID = "MonoValued NonContainment Reference";
-
- private static final String SELECT_DESCRIPTION_ID = "Select";
-
- private final ComposedAdapterFactory composedAdapterFactory;
-
- private final IObjectService objectService;
-
- private final IPropertiesValidationProvider propertiesValidationProvider;
-
- private final Logger logger = LoggerFactory.getLogger(MonoValuedNonContainmentReferenceIfDescriptionProvider.class);
-
- private final Function semanticTargetIdProvider;
-
- public MonoValuedNonContainmentReferenceIfDescriptionProvider(ComposedAdapterFactory composedAdapterFactory, IObjectService objectService,
- IPropertiesValidationProvider propertiesValidationProvider, Function semanticTargetIdProvider) {
- this.composedAdapterFactory = Objects.requireNonNull(composedAdapterFactory);
- this.objectService = Objects.requireNonNull(objectService);
- this.propertiesValidationProvider = Objects.requireNonNull(propertiesValidationProvider);
- this.semanticTargetIdProvider = Objects.requireNonNull(semanticTargetIdProvider);
-
- }
-
- public IfDescription getIfDescription() {
- // @formatter:off
- return IfDescription.newIfDescription(ID_DESCRIPTION_ID)
- .targetObjectIdProvider(this.semanticTargetIdProvider)
- .predicate(this.getPredicate())
- .controlDescriptions(List.of(this.getSelectDescription()))
- .build();
- // @formatter:on
- }
-
- private Function getPredicate() {
- return variableManager -> {
- var optionalEReference = variableManager.get(PropertiesDefaultDescriptionProvider.ESTRUCTURAL_FEATURE, EReference.class);
- return optionalEReference.filter(eReference -> {
- boolean isCandidate = true;
- isCandidate = isCandidate && !eReference.isMany();
- isCandidate = isCandidate && !eReference.isContainment();
- return isCandidate;
- }).isPresent();
- };
- }
-
- private SelectDescription getSelectDescription() {
- // @formatter:off
- return SelectDescription.newSelectDescription(SELECT_DESCRIPTION_ID)
- .targetObjectIdProvider(this.semanticTargetIdProvider)
- .idProvider(new WidgetIdProvider())
- .labelProvider(this.getLabelProvider())
- .valueProvider(this.getValueProvider())
- .optionsProvider(this.getOptionsProvider())
- .optionIdProvider(this.getOptionIdProvider())
- .optionLabelProvider(this.getOptionLabelProvider())
- .optionIconURLProvider(variableManager -> variableManager.get(SelectComponent.CANDIDATE_VARIABLE, Object.class).map(this.objectService::getImagePath).orElse(""))
- .newValueHandler(this.getNewValueHandler())
- .diagnosticsProvider(this.propertiesValidationProvider.getDiagnosticsProvider())
- .kindProvider(this.propertiesValidationProvider.getKindProvider())
- .messageProvider(this.propertiesValidationProvider.getMessageProvider())
- .build();
- // @formatter:on
- }
-
- private BiFunction getNewValueHandler() {
- return (variableManager, newValue) -> {
- var optionalEObject = variableManager.get(VariableManager.SELF, EObject.class);
- var optionalEReference = variableManager.get(PropertiesDefaultDescriptionProvider.ESTRUCTURAL_FEATURE, EReference.class);
- var optionalEditingContext = variableManager.get(IEditingContext.EDITING_CONTEXT, IEditingContext.class);
-
- IStatus result = new Failure("");
- if (optionalEObject.isPresent() && optionalEReference.isPresent()) {
- EObject eObject = optionalEObject.get();
- EReference eReference = optionalEReference.get();
-
- if (newValue == null || newValue.isBlank()) {
- try {
- eObject.eUnset(eReference);
- result = new Success();
- } catch (IllegalArgumentException | ClassCastException | ArrayStoreException exception) {
- this.logger.warn(exception.getMessage(), exception);
- }
- } else {
- // @formatter:off
- var optionalNewValueToSet = optionalEditingContext.flatMap(context -> this.objectService.getObject(context, newValue))
- .filter(EObject.class::isInstance)
- .map(EObject.class::cast);
- // @formatter:on
- if (optionalNewValueToSet.isPresent()) {
- EObject newValueToSet = optionalNewValueToSet.get();
- try {
- eObject.eSet(eReference, newValueToSet);
- result = new Success();
- } catch (IllegalArgumentException | ClassCastException | ArrayStoreException exception) {
- this.logger.warn(exception.getMessage(), exception);
- }
- }
- }
- }
- return result;
- };
- }
-
- private Function getLabelProvider() {
- return new EStructuralFeatureLabelProvider(PropertiesDefaultDescriptionProvider.ESTRUCTURAL_FEATURE, this.composedAdapterFactory);
- }
-
- private Function getValueProvider() {
- return variableManager -> {
- Object object = variableManager.getVariables().get(VariableManager.SELF);
- Object eStructuralFeature = variableManager.getVariables().get(PropertiesDefaultDescriptionProvider.ESTRUCTURAL_FEATURE);
-
- if (object instanceof EObject && eStructuralFeature instanceof EReference) {
- EObject eObject = (EObject) object;
- EReference eReference = (EReference) eStructuralFeature;
-
- Object value = eObject.eGet(eReference);
- if (value != null) {
- return this.objectService.getId(value);
- }
- }
- return null;
- };
- }
-
- private Function> getOptionsProvider() {
- return new EStructuralFeatureChoiceOfValueProvider(PropertiesDefaultDescriptionProvider.ESTRUCTURAL_FEATURE, this.composedAdapterFactory);
- }
-
- private Function getOptionIdProvider() {
- return variableManager -> {
- Object object = variableManager.getVariables().get(SelectComponent.CANDIDATE_VARIABLE);
- String objectId = this.objectService.getId(object);
- return objectId;
- };
- }
-
- private Function getOptionLabelProvider() {
- return variableManager -> {
- Object object = variableManager.getVariables().get(SelectComponent.CANDIDATE_VARIABLE);
- String objectLabel = this.objectService.getFullLabel(object);
- return objectLabel;
- };
- }
-
-}
diff --git a/packages/compatibility/backend/sirius-components-compatibility-emf/src/main/java/org/eclipse/sirius/components/compatibility/emf/properties/MultiValuedNonContainmentReferenceIfDescriptionProvider.java b/packages/compatibility/backend/sirius-components-compatibility-emf/src/main/java/org/eclipse/sirius/components/compatibility/emf/properties/MultiValuedNonContainmentReferenceIfDescriptionProvider.java
deleted file mode 100644
index a3249c6620..0000000000
--- a/packages/compatibility/backend/sirius-components-compatibility-emf/src/main/java/org/eclipse/sirius/components/compatibility/emf/properties/MultiValuedNonContainmentReferenceIfDescriptionProvider.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019, 2023 Obeo.
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Obeo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.sirius.components.compatibility.emf.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
-import org.eclipse.sirius.components.compatibility.emf.properties.api.IPropertiesValidationProvider;
-import org.eclipse.sirius.components.compatibility.forms.WidgetIdProvider;
-import org.eclipse.sirius.components.core.api.IEditingContext;
-import org.eclipse.sirius.components.core.api.IObjectService;
-import org.eclipse.sirius.components.forms.components.SelectComponent;
-import org.eclipse.sirius.components.forms.description.IfDescription;
-import org.eclipse.sirius.components.forms.description.MultiSelectDescription;
-import org.eclipse.sirius.components.representations.Failure;
-import org.eclipse.sirius.components.representations.IStatus;
-import org.eclipse.sirius.components.representations.Success;
-import org.eclipse.sirius.components.representations.VariableManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Provides the default description of the widget to use to support multi-valued non-containment reference.
- *
- * @author sbegaudeau
- */
-public class MultiValuedNonContainmentReferenceIfDescriptionProvider {
-
- private static final String ID_DESCRIPTION_ID = "MultiValued NonContainment Reference";
-
- private static final String MULTI_SELECT_DESCRIPTION_ID = "MultiSelect";
-
- private final ComposedAdapterFactory composedAdapterFactory;
-
- private final IObjectService objectService;
-
- private final IPropertiesValidationProvider propertiesValidationProvider;
-
- private final Logger logger = LoggerFactory.getLogger(MultiValuedNonContainmentReferenceIfDescriptionProvider.class);
-
- private final Function semanticTargetIdProvider;
-
- public MultiValuedNonContainmentReferenceIfDescriptionProvider(ComposedAdapterFactory composedAdapterFactory, IObjectService objectService,
- IPropertiesValidationProvider propertiesValidationProvider, Function semanticTargetIdProvider) {
- this.composedAdapterFactory = Objects.requireNonNull(composedAdapterFactory);
- this.objectService = Objects.requireNonNull(objectService);
- this.propertiesValidationProvider = Objects.requireNonNull(propertiesValidationProvider);
- this.semanticTargetIdProvider = Objects.requireNonNull(semanticTargetIdProvider);
- }
-
- public IfDescription getIfDescription() {
- // @formatter:off
- return IfDescription.newIfDescription(ID_DESCRIPTION_ID)
- .targetObjectIdProvider(this.semanticTargetIdProvider)
- .predicate(this.getPredicate())
- .controlDescriptions(List.of(this.getMultiSelectDescription()))
- .build();
- // @formatter:on
- }
-
- private Function getPredicate() {
- return variableManager -> {
- var optionalEReference = variableManager.get(PropertiesDefaultDescriptionProvider.ESTRUCTURAL_FEATURE, EReference.class);
- return optionalEReference.filter(eReference -> {
- boolean isCandidate = true;
- isCandidate = isCandidate && eReference.isMany();
- isCandidate = isCandidate && !eReference.isContainment();
- return isCandidate;
- }).isPresent();
- };
- }
-
- private MultiSelectDescription getMultiSelectDescription() {
- // @formatter:off
- return MultiSelectDescription.newMultiSelectDescription(MULTI_SELECT_DESCRIPTION_ID)
- .targetObjectIdProvider(this.semanticTargetIdProvider)
- .idProvider(new WidgetIdProvider())
- .labelProvider(this.getLabelProvider())
- .valuesProvider(this.getValuesProvider())
- .optionsProvider(this.getOptionsProvider())
- .optionIdProvider(this.getOptionIdProvider())
- .optionLabelProvider(this.getOptionLabelProvider())
- .optionIconURLProvider(variableManager -> variableManager.get(SelectComponent.CANDIDATE_VARIABLE, Object.class).map(this.objectService::getImagePath).orElse(""))
- .newValuesHandler(this.getNewValuesHandler())
- .diagnosticsProvider(this.propertiesValidationProvider.getDiagnosticsProvider())
- .kindProvider(this.propertiesValidationProvider.getKindProvider())
- .messageProvider(this.propertiesValidationProvider.getMessageProvider())
- .build();
- // @formatter:on
- }
-
- private BiFunction, IStatus> getNewValuesHandler() {
- return (variableManager, newValues) -> {
- IStatus status = new Failure("");
- var optionalEObject = variableManager.get(VariableManager.SELF, EObject.class);
- var optionalEReference = variableManager.get(PropertiesDefaultDescriptionProvider.ESTRUCTURAL_FEATURE, EReference.class);
- var optionalEditingContext = variableManager.get(IEditingContext.EDITING_CONTEXT, IEditingContext.class);
-
- if (optionalEObject.isPresent() && optionalEReference.isPresent()) {
- EObject eObject = optionalEObject.get();
- EReference eReference = optionalEReference.get();
- EList refElements = (EList) eObject.eGet(eReference);
- List newValuesToSet = new ArrayList<>();
-
- for (String newValue : newValues) {
- // @formatter:off
- var optionalNewValueToSet = optionalEditingContext.flatMap(context -> this.objectService.getObject(context, newValue))
- .filter(EObject.class::isInstance)
- .map(EObject.class::cast);
- // @formatter:on
- if (optionalNewValueToSet.isPresent()) {
- EObject newValueToSet = optionalNewValueToSet.get();
- newValuesToSet.add(newValueToSet);
- try {
- if (!refElements.contains(newValueToSet)) {
- refElements.add(newValueToSet);
- }
- } catch (IllegalArgumentException | ClassCastException | ArrayStoreException exception) {
- this.logger.warn(exception.getMessage(), exception);
- }
- } else {
- this.logger.warn("The " + newValue + " cannot be retrieved and set to " + eReference.getName() + " of " + eObject.toString());
- }
- }
-
- refElements.removeIf(refElt -> !newValuesToSet.contains(refElt));
-
- status = new Success();
- }
- return status;
- };
- }
-
- private Function getLabelProvider() {
- return new EStructuralFeatureLabelProvider(PropertiesDefaultDescriptionProvider.ESTRUCTURAL_FEATURE, this.composedAdapterFactory);
- }
-
- private Function> getValuesProvider() {
- return variableManager -> {
- Object object = variableManager.getVariables().get(VariableManager.SELF);
- Object eStructuralFeature = variableManager.getVariables().get(PropertiesDefaultDescriptionProvider.ESTRUCTURAL_FEATURE);
-
- if (object instanceof EObject && eStructuralFeature instanceof EReference) {
- EObject eObject = (EObject) object;
- EReference eReference = (EReference) eStructuralFeature;
-
- Object value = eObject.eGet(eReference);
- if (value instanceof EList>) {
- return ((EList>) value).stream().map(this.objectService::getId).toList();
- }
- }
- return null;
- };
- }
-
- private Function> getOptionsProvider() {
- return new EStructuralFeatureChoiceOfValueProvider(PropertiesDefaultDescriptionProvider.ESTRUCTURAL_FEATURE, this.composedAdapterFactory);
- }
-
- private Function getOptionIdProvider() {
- return variableManager -> {
- Object object = variableManager.getVariables().get(SelectComponent.CANDIDATE_VARIABLE);
- String objectId = this.objectService.getId(object);
- return objectId;
- };
- }
-
- private Function getOptionLabelProvider() {
- return variableManager -> {
- Object object = variableManager.getVariables().get(SelectComponent.CANDIDATE_VARIABLE);
- String objectLabel = this.objectService.getFullLabel(object);
- return objectLabel;
- };
- }
-
-}
diff --git a/packages/compatibility/backend/sirius-components-compatibility-emf/src/main/java/org/eclipse/sirius/components/compatibility/emf/properties/NonContainmentReferenceIfDescriptionProvider.java b/packages/compatibility/backend/sirius-components-compatibility-emf/src/main/java/org/eclipse/sirius/components/compatibility/emf/properties/NonContainmentReferenceIfDescriptionProvider.java
new file mode 100644
index 0000000000..c7c9338022
--- /dev/null
+++ b/packages/compatibility/backend/sirius-components-compatibility-emf/src/main/java/org/eclipse/sirius/components/compatibility/emf/properties/NonContainmentReferenceIfDescriptionProvider.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2023 Obeo.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.components.compatibility.emf.properties;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.function.Function;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.sirius.components.compatibility.forms.WidgetIdProvider;
+import org.eclipse.sirius.components.core.api.IObjectService;
+import org.eclipse.sirius.components.forms.description.IfDescription;
+import org.eclipse.sirius.components.representations.VariableManager;
+import org.eclipse.sirius.components.widget.reference.ReferenceWidgetComponent;
+import org.eclipse.sirius.components.widget.reference.ReferenceWidgetDescription;
+
+/**
+ * Provides the default description of the widget to use to support non-containment reference.
+ *
+ * @author frouene
+ */
+public class NonContainmentReferenceIfDescriptionProvider {
+
+ private static final String ID_DESCRIPTION_ID = "NonContainment Reference";
+
+ private static final String REFERENCE_WIDGET_DESCRIPTION_ID = "ReferenceWidget";
+
+ private final ComposedAdapterFactory composedAdapterFactory;
+
+ private final IObjectService objectService;
+
+ private final Function semanticTargetIdProvider;
+
+ public NonContainmentReferenceIfDescriptionProvider(ComposedAdapterFactory composedAdapterFactory, IObjectService objectService, Function semanticTargetIdProvider) {
+ this.composedAdapterFactory = Objects.requireNonNull(composedAdapterFactory);
+ this.objectService = Objects.requireNonNull(objectService);
+ this.semanticTargetIdProvider = Objects.requireNonNull(semanticTargetIdProvider);
+ }
+
+ public IfDescription getIfDescription() {
+ return IfDescription.newIfDescription(ID_DESCRIPTION_ID)
+ .targetObjectIdProvider(this.semanticTargetIdProvider)
+ .predicate(this.getPredicate())
+ .controlDescriptions(List.of(this.getReferenceWidgetDescription()))
+ .build();
+ }
+
+ private Function getPredicate() {
+ return variableManager -> {
+ var optionalEReference = variableManager.get(PropertiesDefaultDescriptionProvider.ESTRUCTURAL_FEATURE, EReference.class);
+ return optionalEReference.filter(eReference -> !eReference.isContainment()).isPresent();
+ };
+ }
+
+ private ReferenceWidgetDescription getReferenceWidgetDescription() {
+ return ReferenceWidgetDescription.newReferenceWidgetDescription(REFERENCE_WIDGET_DESCRIPTION_ID)
+ .targetObjectIdProvider(this.semanticTargetIdProvider)
+ .idProvider(new WidgetIdProvider())
+ .labelProvider(this.getLabelProvider())
+ .optionsProvider(this.getOptionsProvider())
+ .iconURLProvider(variableManager -> "")
+ .itemsProvider(this::getReferenceValue)
+ .itemIdProvider(this::getItemId)
+ .itemKindProvider(this::getItemKind)
+ .itemLabelProvider(this::getItemLabel)
+ .itemImageURLProvider(this::getItemIconURL)
+ .settingProvider(this::resolveSetting)
+ .styleProvider(variableManager -> null)
+ .ownerIdProvider(this::getOwnerId)
+ .diagnosticsProvider(variableManager -> List.of())
+ .kindProvider(object -> "")
+ .messageProvider(object -> "")
+ .build();
+ }
+
+ private List> getReferenceValue(VariableManager variableManager) {
+ List> value = List.of();
+ EStructuralFeature.Setting setting = this.resolveSetting(variableManager);
+ if (setting != null) {
+ var rawValue = setting.get(true);
+ if (setting.getEStructuralFeature().isMany()) {
+ value = (List>) rawValue;
+ } else if (rawValue != null) {
+ value = List.of(rawValue);
+ } else {
+ value = List.of();
+ }
+ }
+ return value;
+ }
+
+ private Function> getOptionsProvider() {
+ return new EStructuralFeatureChoiceOfValueProvider(PropertiesDefaultDescriptionProvider.ESTRUCTURAL_FEATURE, this.composedAdapterFactory);
+ }
+
+ private EStructuralFeature.Setting resolveSetting(VariableManager variableManager) {
+ EObject referenceOwner = variableManager.get(VariableManager.SELF, EObject.class).orElse(null);
+ var optionalEReference = variableManager.get(PropertiesDefaultDescriptionProvider.ESTRUCTURAL_FEATURE, EReference.class);
+
+ if (referenceOwner != null && optionalEReference.isPresent()) {
+ return ((InternalEObject) referenceOwner).eSetting(optionalEReference.get());
+ } else {
+ return null;
+ }
+ }
+
+ private Optional
diff --git a/packages/forms/backend/sirius-components-collaborative-widget-reference/README.adoc b/packages/forms/backend/sirius-components-collaborative-widget-reference/README.adoc
new file mode 100644
index 0000000000..873c5f226d
--- /dev/null
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/README.adoc
@@ -0,0 +1,9 @@
+= sirius-components-collaborative-widget-reference
+
+== Goal
+
+This project provides support for collaborative edition layer.
+
+== Dependencies
+
+- sirius-components-widget-reference
diff --git a/packages/forms/backend/sirius-components-collaborative-widget-reference/pom.xml b/packages/forms/backend/sirius-components-collaborative-widget-reference/pom.xml
new file mode 100644
index 0000000000..a11d473508
--- /dev/null
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/pom.xml
@@ -0,0 +1,140 @@
+
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.0.6
+
+
+ org.eclipse.sirius
+ sirius-components-collaborative-widget-reference
+ 2023.8.2
+ sirius-components-collaborative-widget-reference
+ Sirius Components Collaborative Forms :: Reference Widget
+
+
+ 17
+
+
+
+
+ github
+ Apache Maven Packages
+ https://maven.pkg.github.com/eclipse-sirius/sirius-components
+
+
+
+
+
+ org.springframework
+ spring-context
+
+
+ io.micrometer
+ micrometer-core
+
+
+ org.eclipse.sirius
+ sirius-components-widget-reference
+ 2023.8.2
+
+
+ org.eclipse.sirius
+ sirius-components-view-emf
+ 2023.8.2
+
+
+ org.eclipse.sirius
+ sirius-components-tests
+ 2023.8.2
+ test
+
+
+ org.eclipse.sirius
+ sirius-components-spring-tests
+ 2023.8.2
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ 3.2.0
+
+ ../../../releng/backend/sirius-components-resources/checkstyle/CheckstyleConfiguration.xml
+ true
+ true
+ true
+
+
+
+ validate
+ validate
+
+ check
+
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.8.10
+
+
+
+ prepare-agent
+
+
+
+ report
+ prepare-package
+
+ report
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+
+
+ attach-sources
+
+ jar
+
+
+
+
+
+
+
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceEMFConfiguration.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/ReferenceEMFConfiguration.java
similarity index 95%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceEMFConfiguration.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/ReferenceEMFConfiguration.java
index 88780c08ab..fa70e515cb 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceEMFConfiguration.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/ReferenceEMFConfiguration.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference;
+package org.eclipse.sirius.components.collaborative.widget.reference;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.ecore.EPackage;
@@ -28,6 +28,7 @@
*/
@Configuration
public class ReferenceEMFConfiguration {
+
@Bean
public EPackage referenceWidgetEPackage() {
return ReferencePackage.eINSTANCE;
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetDescriptionConverterProvider.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/ReferenceWidgetDescriptionConverterProvider.java
similarity index 96%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetDescriptionConverterProvider.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/ReferenceWidgetDescriptionConverterProvider.java
index 43b82c0b14..1eb05d8c83 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetDescriptionConverterProvider.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/ReferenceWidgetDescriptionConverterProvider.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference;
+package org.eclipse.sirius.components.collaborative.widget.reference;
import org.eclipse.emf.ecore.util.Switch;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetDescriptionConverterSwitch.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/ReferenceWidgetDescriptionConverterSwitch.java
similarity index 96%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetDescriptionConverterSwitch.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/ReferenceWidgetDescriptionConverterSwitch.java
index 812301580c..ae7943ea65 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetDescriptionConverterSwitch.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/ReferenceWidgetDescriptionConverterSwitch.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference;
+package org.eclipse.sirius.components.collaborative.widget.reference;
import java.util.ArrayList;
import java.util.Arrays;
@@ -48,6 +48,9 @@
import org.eclipse.sirius.components.representations.VariableManager;
import org.eclipse.sirius.components.view.Operation;
import org.eclipse.sirius.components.view.emf.OperationInterpreter;
+import org.eclipse.sirius.components.widget.reference.ReferenceWidgetComponent;
+import org.eclipse.sirius.components.widget.reference.ReferenceWidgetStyle;
+import org.eclipse.sirius.components.widget.reference.ReferenceWidgetStyleProvider;
import org.eclipse.sirius.components.widgets.reference.ReferenceWidgetDescription;
import org.eclipse.sirius.components.widgets.reference.ReferenceWidgetDescriptionStyle;
import org.eclipse.sirius.components.widgets.reference.util.ReferenceSwitch;
@@ -110,7 +113,10 @@ public AbstractWidgetDescription caseReferenceWidgetDescription(ReferenceWidgetD
.itemImageURLProvider(this::getItemIconURL)
.settingProvider(variableManager -> this.resolveSetting(referenceDescription, variableManager))
.ownerIdProvider(variableManager -> this.getOwnerId(referenceDescription, variableManager))
- .styleProvider(styleProvider);
+ .styleProvider(styleProvider)
+ .diagnosticsProvider(variableManager -> List.of())
+ .kindProvider(object -> "")
+ .messageProvider(object -> "");
if (referenceDescription.getHelpExpression() != null && !referenceDescription.getHelpExpression().isBlank()) {
builder.helpTextProvider(this.getStringValueProvider(referenceDescription.getHelpExpression()));
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/browser/ModelBrowserTreePathProvider.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/browser/ModelBrowserTreePathProvider.java
similarity index 98%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/browser/ModelBrowserTreePathProvider.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/browser/ModelBrowserTreePathProvider.java
index 442767cce9..af92cf57e1 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/browser/ModelBrowserTreePathProvider.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/browser/ModelBrowserTreePathProvider.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference.browser;
+package org.eclipse.sirius.components.collaborative.widget.reference.browser;
import java.util.ArrayList;
import java.util.HashSet;
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/browser/ModelBrowsersDescriptionProvider.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/browser/ModelBrowsersDescriptionProvider.java
similarity index 99%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/browser/ModelBrowsersDescriptionProvider.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/browser/ModelBrowsersDescriptionProvider.java
index 91c0f0173c..d4b6f8882e 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/browser/ModelBrowsersDescriptionProvider.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/browser/ModelBrowsersDescriptionProvider.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference.browser;
+package org.eclipse.sirius.components.collaborative.widget.reference.browser;
import java.util.ArrayList;
import java.util.Collection;
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/MutationClickReferenceValueDataFetcher.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/MutationClickReferenceValueDataFetcher.java
similarity index 93%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/MutationClickReferenceValueDataFetcher.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/MutationClickReferenceValueDataFetcher.java
index fac1ba46c1..dd1ed5d381 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/MutationClickReferenceValueDataFetcher.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/MutationClickReferenceValueDataFetcher.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference.datafetchers;
+package org.eclipse.sirius.components.collaborative.widget.reference.datafetchers;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -18,11 +18,11 @@
import java.util.concurrent.CompletableFuture;
import org.eclipse.sirius.components.annotations.spring.graphql.MutationDataFetcher;
+import org.eclipse.sirius.components.collaborative.widget.reference.dto.ClickReferenceValueInput;
import org.eclipse.sirius.components.core.api.IPayload;
import org.eclipse.sirius.components.graphql.api.IDataFetcherWithFieldCoordinates;
import org.eclipse.sirius.components.graphql.api.IEditingContextDispatcher;
import org.eclipse.sirius.components.graphql.api.IExceptionWrapper;
-import org.eclipse.sirius.components.widget.reference.dto.ClickReferenceValueInput;
import graphql.schema.DataFetchingEnvironment;
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/MutationEditReferenceDataFetcher.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/MutationEditReferenceDataFetcher.java
similarity index 93%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/MutationEditReferenceDataFetcher.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/MutationEditReferenceDataFetcher.java
index 5f273fed2f..8c931297fd 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/MutationEditReferenceDataFetcher.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/MutationEditReferenceDataFetcher.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference.datafetchers;
+package org.eclipse.sirius.components.collaborative.widget.reference.datafetchers;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -18,11 +18,11 @@
import java.util.concurrent.CompletableFuture;
import org.eclipse.sirius.components.annotations.spring.graphql.MutationDataFetcher;
+import org.eclipse.sirius.components.collaborative.widget.reference.dto.EditReferenceInput;
import org.eclipse.sirius.components.core.api.IPayload;
import org.eclipse.sirius.components.graphql.api.IDataFetcherWithFieldCoordinates;
import org.eclipse.sirius.components.graphql.api.IEditingContextDispatcher;
import org.eclipse.sirius.components.graphql.api.IExceptionWrapper;
-import org.eclipse.sirius.components.widget.reference.dto.EditReferenceInput;
import graphql.schema.DataFetchingEnvironment;
@@ -33,6 +33,7 @@
*/
@MutationDataFetcher(type = "Mutation", field = "editReference")
public class MutationEditReferenceDataFetcher implements IDataFetcherWithFieldCoordinates> {
+
private static final String INPUT_ARGUMENT = "input";
private final ObjectMapper objectMapper;
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/ReferenceValueHasClickActionDataFetcher.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/ReferenceValueHasClickActionDataFetcher.java
similarity index 93%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/ReferenceValueHasClickActionDataFetcher.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/ReferenceValueHasClickActionDataFetcher.java
index a1dc0e39f8..401a012a8d 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/ReferenceValueHasClickActionDataFetcher.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/ReferenceValueHasClickActionDataFetcher.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference.datafetchers;
+package org.eclipse.sirius.components.collaborative.widget.reference.datafetchers;
import org.eclipse.sirius.components.annotations.spring.graphql.QueryDataFetcher;
import org.eclipse.sirius.components.graphql.api.IDataFetcherWithFieldCoordinates;
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/ReferenceValueIconURLDataFetcher.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/ReferenceValueIconURLDataFetcher.java
similarity index 95%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/ReferenceValueIconURLDataFetcher.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/ReferenceValueIconURLDataFetcher.java
index c504fed89c..733dd39df6 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/ReferenceValueIconURLDataFetcher.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/ReferenceValueIconURLDataFetcher.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference.datafetchers;
+package org.eclipse.sirius.components.collaborative.widget.reference.datafetchers;
import org.eclipse.sirius.components.annotations.spring.graphql.QueryDataFetcher;
import org.eclipse.sirius.components.graphql.api.IDataFetcherWithFieldCoordinates;
@@ -29,6 +29,7 @@
*/
@QueryDataFetcher(type = "ReferenceValue", field = "iconURL")
public class ReferenceValueIconURLDataFetcher implements IDataFetcherWithFieldCoordinates {
+
@Override
public String get(DataFetchingEnvironment environment) throws Exception {
ReferenceValue item = environment.getSource();
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/ReferenceWidgetReferenceDataFetcher.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/ReferenceWidgetReferenceDataFetcher.java
similarity index 96%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/ReferenceWidgetReferenceDataFetcher.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/ReferenceWidgetReferenceDataFetcher.java
index 5b4e263681..37b927676a 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/datafetchers/ReferenceWidgetReferenceDataFetcher.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/datafetchers/ReferenceWidgetReferenceDataFetcher.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference.datafetchers;
+package org.eclipse.sirius.components.collaborative.widget.reference.datafetchers;
import java.util.Objects;
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/dto/ClickReferenceValueInput.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/dto/ClickReferenceValueInput.java
similarity index 93%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/dto/ClickReferenceValueInput.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/dto/ClickReferenceValueInput.java
index f7ed2abbca..12e7aaf458 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/dto/ClickReferenceValueInput.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/dto/ClickReferenceValueInput.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference.dto;
+package org.eclipse.sirius.components.collaborative.widget.reference.dto;
import java.util.UUID;
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/dto/EditReferenceInput.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/dto/EditReferenceInput.java
similarity index 92%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/dto/EditReferenceInput.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/dto/EditReferenceInput.java
index 9e14498771..fb68ccb956 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/dto/EditReferenceInput.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/dto/EditReferenceInput.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference.dto;
+package org.eclipse.sirius.components.collaborative.widget.reference.dto;
import java.util.List;
import java.util.UUID;
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/handlers/ClickReferenceValueEventHandler.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/handlers/ClickReferenceValueEventHandler.java
similarity index 96%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/handlers/ClickReferenceValueEventHandler.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/handlers/ClickReferenceValueEventHandler.java
index 71b8726751..45131c0682 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/handlers/ClickReferenceValueEventHandler.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/handlers/ClickReferenceValueEventHandler.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference.handlers;
+package org.eclipse.sirius.components.collaborative.widget.reference.handlers;
import java.util.Collection;
import java.util.Objects;
@@ -22,6 +22,7 @@
import org.eclipse.sirius.components.collaborative.forms.api.IFormInput;
import org.eclipse.sirius.components.collaborative.forms.api.IFormQueryService;
import org.eclipse.sirius.components.collaborative.forms.messages.ICollaborativeFormMessageService;
+import org.eclipse.sirius.components.collaborative.widget.reference.dto.ClickReferenceValueInput;
import org.eclipse.sirius.components.core.api.ErrorPayload;
import org.eclipse.sirius.components.core.api.IEditingContext;
import org.eclipse.sirius.components.core.api.IPayload;
@@ -32,7 +33,6 @@
import org.eclipse.sirius.components.representations.Success;
import org.eclipse.sirius.components.widget.reference.ReferenceValue;
import org.eclipse.sirius.components.widget.reference.ReferenceWidget;
-import org.eclipse.sirius.components.widget.reference.dto.ClickReferenceValueInput;
import org.springframework.stereotype.Service;
import io.micrometer.core.instrument.Counter;
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/handlers/EditReferenceEventHandler.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/handlers/EditReferenceEventHandler.java
similarity index 97%
rename from packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/handlers/EditReferenceEventHandler.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/handlers/EditReferenceEventHandler.java
index 7d35de55b3..b6bfa10510 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/handlers/EditReferenceEventHandler.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/java/org/eclipse/sirius/components/collaborative/widget/reference/handlers/EditReferenceEventHandler.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference.handlers;
+package org.eclipse.sirius.components.collaborative.widget.reference.handlers;
import java.util.List;
import java.util.Objects;
@@ -23,6 +23,7 @@
import org.eclipse.sirius.components.collaborative.forms.api.IFormInput;
import org.eclipse.sirius.components.collaborative.forms.api.IFormQueryService;
import org.eclipse.sirius.components.collaborative.forms.messages.ICollaborativeFormMessageService;
+import org.eclipse.sirius.components.collaborative.widget.reference.dto.EditReferenceInput;
import org.eclipse.sirius.components.core.api.ErrorPayload;
import org.eclipse.sirius.components.core.api.IEditingContext;
import org.eclipse.sirius.components.core.api.IObjectService;
@@ -33,7 +34,6 @@
import org.eclipse.sirius.components.representations.IStatus;
import org.eclipse.sirius.components.representations.Success;
import org.eclipse.sirius.components.widget.reference.ReferenceWidget;
-import org.eclipse.sirius.components.widget.reference.dto.EditReferenceInput;
import org.springframework.stereotype.Service;
import io.micrometer.core.instrument.Counter;
@@ -48,6 +48,7 @@
*/
@Service
public class EditReferenceEventHandler implements IFormEventHandler {
+
private final IFormQueryService formQueryService;
private final ICollaborativeFormMessageService messageService;
diff --git a/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/resources/.gitkeep b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/main/resources/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/java/org/eclipse/sirius/components/collaborative/widget/reference/architecture/ArchitectureConstants.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/java/org/eclipse/sirius/components/collaborative/widget/reference/architecture/ArchitectureConstants.java
new file mode 100644
index 0000000000..e7415f9002
--- /dev/null
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/java/org/eclipse/sirius/components/collaborative/widget/reference/architecture/ArchitectureConstants.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2023 Obeo.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.components.collaborative.widget.reference.architecture;
+
+import com.tngtech.archunit.core.domain.JavaClasses;
+import com.tngtech.archunit.core.importer.ClassFileImporter;
+import com.tngtech.archunit.core.importer.ImportOption;
+
+/**
+ * Constants shared across multiple tests.
+ *
+ * @author frouene
+ */
+public final class ArchitectureConstants {
+
+ public static final String SIRIUS_COMPONENTS_COLLABORATIVE_FORMS_ROOT_PACKAGE = "org.eclipse.sirius.components.collaborative.widget.reference..";
+
+ // @formatter:off
+ public static final JavaClasses CLASSES = new ClassFileImporter()
+ .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS)
+ .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS)
+ .importPackages(SIRIUS_COMPONENTS_COLLABORATIVE_FORMS_ROOT_PACKAGE);
+ // @formatter:on
+
+ private ArchitectureConstants() {
+ // Prevent instantiation
+ }
+}
diff --git a/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/java/org/eclipse/sirius/components/collaborative/widget/reference/architecture/CodingRulesTests.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/java/org/eclipse/sirius/components/collaborative/widget/reference/architecture/CodingRulesTests.java
new file mode 100644
index 0000000000..8eca4837df
--- /dev/null
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/java/org/eclipse/sirius/components/collaborative/widget/reference/architecture/CodingRulesTests.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2023 Obeo.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.components.collaborative.widget.reference.architecture;
+
+import com.tngtech.archunit.core.domain.JavaClasses;
+
+import org.eclipse.sirius.components.tests.architecture.AbstractCodingRulesTests;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Coding rules tests.
+ *
+ * @author frouene
+ */
+public class CodingRulesTests extends AbstractCodingRulesTests {
+
+ @Override
+ protected String getProjectRootPackage() {
+ return ArchitectureConstants.SIRIUS_COMPONENTS_COLLABORATIVE_FORMS_ROOT_PACKAGE;
+ }
+
+ @Override
+ protected JavaClasses getClasses() {
+ return ArchitectureConstants.CLASSES;
+ }
+
+ @Test
+ @Override
+ public void noClassesShouldUseApacheCommons() {
+ super.noClassesShouldUseApacheCommons();
+ }
+}
diff --git a/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/java/org/eclipse/sirius/components/collaborative/widget/reference/architecture/SpringCodingRulesTests.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/java/org/eclipse/sirius/components/collaborative/widget/reference/architecture/SpringCodingRulesTests.java
new file mode 100644
index 0000000000..82ea3f5d5e
--- /dev/null
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/java/org/eclipse/sirius/components/collaborative/widget/reference/architecture/SpringCodingRulesTests.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2023 Obeo.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.components.collaborative.widget.reference.architecture;
+
+import com.tngtech.archunit.core.domain.JavaClasses;
+
+import org.eclipse.sirius.components.spring.tests.architecture.AbstractSpringCodingRulesTests;
+
+/**
+ * Spring coding rules tests.
+ *
+ * @author frouene
+ */
+public class SpringCodingRulesTests extends AbstractSpringCodingRulesTests {
+
+ @Override
+ protected String getProjectRootPackage() {
+ return ArchitectureConstants.SIRIUS_COMPONENTS_COLLABORATIVE_FORMS_ROOT_PACKAGE;
+ }
+
+ @Override
+ protected JavaClasses getClasses() {
+ return ArchitectureConstants.CLASSES;
+ }
+
+}
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/test/java/org/eclipse/sirius/components/widget/reference/handlers/ClickReferenceValueEventHandlerTests.java b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/java/org/eclipse/sirius/components/collaborative/widget/reference/handlers/ClickReferenceValueEventHandlerTests.java
similarity index 98%
rename from packages/forms/backend/sirius-components-widget-reference/src/test/java/org/eclipse/sirius/components/widget/reference/handlers/ClickReferenceValueEventHandlerTests.java
rename to packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/java/org/eclipse/sirius/components/collaborative/widget/reference/handlers/ClickReferenceValueEventHandlerTests.java
index fc70764761..75506a0b5c 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/test/java/org/eclipse/sirius/components/widget/reference/handlers/ClickReferenceValueEventHandlerTests.java
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/java/org/eclipse/sirius/components/collaborative/widget/reference/handlers/ClickReferenceValueEventHandlerTests.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.components.widget.reference.handlers;
+package org.eclipse.sirius.components.collaborative.widget.reference.handlers;
import static org.assertj.core.api.Assertions.assertThat;
@@ -31,6 +31,7 @@
import org.eclipse.sirius.components.collaborative.api.ChangeKind;
import org.eclipse.sirius.components.collaborative.forms.api.IFormQueryService;
import org.eclipse.sirius.components.collaborative.forms.messages.ICollaborativeFormMessageService;
+import org.eclipse.sirius.components.collaborative.widget.reference.dto.ClickReferenceValueInput;
import org.eclipse.sirius.components.core.api.ErrorPayload;
import org.eclipse.sirius.components.core.api.IEditingContext;
import org.eclipse.sirius.components.core.api.IPayload;
@@ -44,7 +45,6 @@
import org.eclipse.sirius.components.representations.Success;
import org.eclipse.sirius.components.widget.reference.ReferenceValue;
import org.eclipse.sirius.components.widget.reference.ReferenceWidget;
-import org.eclipse.sirius.components.widget.reference.dto.ClickReferenceValueInput;
import org.junit.jupiter.api.Test;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
diff --git a/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/resources/logback-test.xml b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/resources/logback-test.xml
new file mode 100644
index 0000000000..122c46e103
--- /dev/null
+++ b/packages/forms/backend/sirius-components-collaborative-widget-reference/src/test/resources/logback-test.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/packages/forms/backend/sirius-components-widget-reference/pom.xml b/packages/forms/backend/sirius-components-widget-reference/pom.xml
index af938b3d6f..0a8b664999 100644
--- a/packages/forms/backend/sirius-components-widget-reference/pom.xml
+++ b/packages/forms/backend/sirius-components-widget-reference/pom.xml
@@ -12,14 +12,14 @@
Obeo - initial API and implementation
-->
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
spring-boot-starter-parent
3.1.2
-
+
org.eclipse.sirius
sirius-components-widget-reference
@@ -59,11 +59,6 @@
sirius-components-forms
2023.8.2
-
- org.eclipse.sirius
- sirius-components-view-emf
- 2023.8.2
-
org.eclipse.sirius
sirius-components-view-form
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetDescription.java b/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetDescription.java
index b684e39092..bcf092f3b4 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetDescription.java
+++ b/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetDescription.java
@@ -164,6 +164,12 @@ public static final class Builder {
private Function ownerIdProvider;
+ private Function> diagnosticsProvider;
+
+ private Function kindProvider;
+
+ private Function messageProvider;
+
private Builder(String id) {
this.id = Objects.requireNonNull(id);
}
@@ -248,6 +254,21 @@ public Builder ownerIdProvider(Function ownerIdProvider
return this;
}
+ public Builder diagnosticsProvider(Function> diagnosticsProvider) {
+ this.diagnosticsProvider = Objects.requireNonNull(diagnosticsProvider);
+ return this;
+ }
+
+ public Builder kindProvider(Function kindProvider) {
+ this.kindProvider = Objects.requireNonNull(kindProvider);
+ return this;
+ }
+
+ public Builder messageProvider(Function messageProvider) {
+ this.messageProvider = Objects.requireNonNull(messageProvider);
+ return this;
+ }
+
public ReferenceWidgetDescription build() {
ReferenceWidgetDescription referenceWidgetDescription = new ReferenceWidgetDescription();
referenceWidgetDescription.id = Objects.requireNonNull(this.id);
@@ -267,6 +288,9 @@ public ReferenceWidgetDescription build() {
referenceWidgetDescription.itemClickHandlerProvider = this.itemClickHandlerProvider; // Optional on purpose
referenceWidgetDescription.styleProvider = Objects.requireNonNull(this.styleProvider);
referenceWidgetDescription.ownerIdProvider = Objects.requireNonNull(this.ownerIdProvider);
+ referenceWidgetDescription.diagnosticsProvider = Objects.requireNonNull(this.diagnosticsProvider);
+ referenceWidgetDescription.kindProvider = Objects.requireNonNull(this.kindProvider);
+ referenceWidgetDescription.messageProvider = Objects.requireNonNull(this.messageProvider);
return referenceWidgetDescription;
}
}
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetPreviewConverterProvider.java b/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetPreviewConverterProvider.java
index be37c558d2..708f29c49f 100644
--- a/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetPreviewConverterProvider.java
+++ b/packages/forms/backend/sirius-components-widget-reference/src/main/java/org/eclipse/sirius/components/widget/reference/ReferenceWidgetPreviewConverterProvider.java
@@ -44,38 +44,45 @@ public AbstractWidgetDescription caseReferenceWidgetDescription(org.eclipse.siri
VariableManager childVariableManager = variableManager.createChild();
childVariableManager.put(VariableManager.SELF, referenceDescription);
String id = formDescriptionEditorDescription.getTargetObjectIdProvider().apply(childVariableManager);
- var builder = ReferenceWidgetDescription.newReferenceWidgetDescription(UUID.randomUUID().toString())
- .idProvider(vm -> id)
- .targetObjectIdProvider(vm -> "")
- .labelProvider(vm -> ReferenceWidgetPreviewConverterProvider.this.getWidgetLabel(referenceDescription, "Reference"))
- .iconURLProvider(variableManager -> "")
- .isReadOnlyProvider(variableManager -> false)
- .itemsProvider(variableManager -> List.of())
- .optionsProvider(variableManager -> List.of())
- .itemIdProvider(variableManager -> "")
- .itemKindProvider(variableManager -> "")
- .itemLabelProvider(variableManager -> "")
- .itemKindProvider(variableManager -> "")
- .itemLabelProvider(variableManager -> "")
- .itemImageURLProvider(variableManager -> "")
- .settingProvider(variableManager -> {
- // We need a non-null Setting instance which does not depend on any actual instance model.
- EObject owner = EcorePackage.Literals.ECLASS;
- return ((InternalEObject) owner).eSetting(EcorePackage.Literals.ECLASS__EALL_STRUCTURAL_FEATURES);
- })
- .ownerIdProvider(variableManager -> "")
- .itemClickHandlerProvider(variableManager -> new Success())
- .styleProvider(variableManager -> ReferenceWidgetPreviewConverterProvider.this.getWidgetStyle(referenceDescription, variableManager));
+ var builder = ReferenceWidgetPreviewConverterProvider.this.getReferenceWidgetDescriptionBuilder(referenceDescription, id);
if (referenceDescription.getHelpExpression() != null && !referenceDescription.getHelpExpression().isBlank()) {
String helpText = ReferenceWidgetPreviewConverterProvider.this.getWidgetHelpText(referenceDescription);
builder.helpTextProvider(variableManager -> helpText);
}
return builder.build();
}
-
};
}
+ public ReferenceWidgetDescription.Builder getReferenceWidgetDescriptionBuilder(org.eclipse.sirius.components.widgets.reference.ReferenceWidgetDescription referenceDescription,
+ String id) {
+ return ReferenceWidgetDescription.newReferenceWidgetDescription(UUID.randomUUID().toString())
+ .idProvider(vm -> id)
+ .targetObjectIdProvider(vm -> "")
+ .labelProvider(vm -> this.getWidgetLabel(referenceDescription, "Reference"))
+ .iconURLProvider(variableManager -> "")
+ .isReadOnlyProvider(variableManager -> false)
+ .itemsProvider(variableManager -> List.of())
+ .optionsProvider(variableManager -> List.of())
+ .itemIdProvider(variableManager -> "")
+ .itemKindProvider(variableManager -> "")
+ .itemLabelProvider(variableManager -> "")
+ .itemKindProvider(variableManager -> "")
+ .itemLabelProvider(variableManager -> "")
+ .itemImageURLProvider(variableManager -> "")
+ .settingProvider(variableManager -> {
+ // We need a non-null Setting instance which does not depend on any actual instance model.
+ EObject owner = EcorePackage.Literals.ECLASS;
+ return ((InternalEObject) owner).eSetting(EcorePackage.Literals.ECLASS__EALL_STRUCTURAL_FEATURES);
+ })
+ .ownerIdProvider(variableManager -> "")
+ .itemClickHandlerProvider(variableManager -> new Success())
+ .styleProvider(variableManager -> ReferenceWidgetPreviewConverterProvider.this.getWidgetStyle(referenceDescription, variableManager))
+ .diagnosticsProvider(variableManager -> List.of())
+ .kindProvider(object -> "")
+ .messageProvider(object -> "");
+ }
+
public String getWidgetLabel(org.eclipse.sirius.components.view.form.WidgetDescription widgetDescription, String defaultLabel) {
String widgetLabel = defaultLabel;
String name = widgetDescription.getName();
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/test/java/org/eclipse/sirius/components/widget/reference/architecture/ArchitectureConstants.java b/packages/forms/backend/sirius-components-widget-reference/src/test/java/org/eclipse/sirius/components/widget/reference/architecture/ArchitectureConstants.java
new file mode 100644
index 0000000000..29858513a7
--- /dev/null
+++ b/packages/forms/backend/sirius-components-widget-reference/src/test/java/org/eclipse/sirius/components/widget/reference/architecture/ArchitectureConstants.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2023 Obeo.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.components.widget.reference.architecture;
+
+import com.tngtech.archunit.core.domain.JavaClasses;
+import com.tngtech.archunit.core.importer.ClassFileImporter;
+import com.tngtech.archunit.core.importer.ImportOption;
+
+/**
+ * Constants shared across multiple tests.
+ *
+ * @author frouene
+ */
+public final class ArchitectureConstants {
+
+ public static final String SIRIUS_COMPONENTS_FORMS_ROOT_PACKAGE = "org.eclipse.sirius.components.widget.reference..";
+
+ // @formatter:off
+ public static final JavaClasses CLASSES = new ClassFileImporter()
+ .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS)
+ .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS)
+ .importPackages(SIRIUS_COMPONENTS_FORMS_ROOT_PACKAGE);
+ // @formatter:on
+
+ private ArchitectureConstants() {
+ // Prevent instantiation
+ }
+}
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/test/java/org/eclipse/sirius/components/widget/reference/architecture/CodingRulesTests.java b/packages/forms/backend/sirius-components-widget-reference/src/test/java/org/eclipse/sirius/components/widget/reference/architecture/CodingRulesTests.java
new file mode 100644
index 0000000000..05d8ba8dc3
--- /dev/null
+++ b/packages/forms/backend/sirius-components-widget-reference/src/test/java/org/eclipse/sirius/components/widget/reference/architecture/CodingRulesTests.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2023 Obeo.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.components.widget.reference.architecture;
+
+import com.tngtech.archunit.core.domain.JavaClasses;
+
+import org.eclipse.sirius.components.tests.architecture.AbstractCodingRulesTests;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Coding rules tests.
+ *
+ * @author frouene
+ */
+public class CodingRulesTests extends AbstractCodingRulesTests {
+
+ @Override
+ protected String getProjectRootPackage() {
+ return ArchitectureConstants.SIRIUS_COMPONENTS_FORMS_ROOT_PACKAGE;
+ }
+
+ @Override
+ protected JavaClasses getClasses() {
+ return ArchitectureConstants.CLASSES;
+ }
+
+ @Test
+ @Override
+ public void noClassesShouldUseApacheCommons() {
+ super.noClassesShouldUseApacheCommons();
+ }
+
+}
diff --git a/packages/forms/backend/sirius-components-widget-reference/src/test/java/org/eclipse/sirius/components/widget/reference/architecture/ImmutableTests.java b/packages/forms/backend/sirius-components-widget-reference/src/test/java/org/eclipse/sirius/components/widget/reference/architecture/ImmutableTests.java
new file mode 100644
index 0000000000..9850b55364
--- /dev/null
+++ b/packages/forms/backend/sirius-components-widget-reference/src/test/java/org/eclipse/sirius/components/widget/reference/architecture/ImmutableTests.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2023 Obeo.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.components.widget.reference.architecture;
+
+import com.tngtech.archunit.core.domain.JavaClasses;
+
+import org.eclipse.sirius.components.tests.architecture.AbstractImmutableTests;
+
+/**
+ * Immutable tests.
+ *
+ * @author frouene
+ */
+public class ImmutableTests extends AbstractImmutableTests {
+
+ @Override
+ protected String getProjectRootPackage() {
+ return ArchitectureConstants.SIRIUS_COMPONENTS_FORMS_ROOT_PACKAGE;
+ }
+
+ @Override
+ protected JavaClasses getClasses() {
+ return ArchitectureConstants.CLASSES;
+ }
+
+}
diff --git a/packages/sirius-web/backend/sirius-web-sample-application/pom.xml b/packages/sirius-web/backend/sirius-web-sample-application/pom.xml
index d4816f5791..cca6d4263a 100644
--- a/packages/sirius-web/backend/sirius-web-sample-application/pom.xml
+++ b/packages/sirius-web/backend/sirius-web-sample-application/pom.xml
@@ -189,7 +189,13 @@
sirius-components-widget-reference
2023.8.2
- org.eclipse.sirius
+
+ org.eclipse.sirius
+ sirius-components-collaborative-widget-reference
+ 2023.8.2
+
+
+ org.eclipse.sirius
sirius-components-forms-tests
2023.8.2
test
diff --git a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/ViewPropertiesDescriptionRegistryConfigurer.java b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/ViewPropertiesDescriptionRegistryConfigurer.java
index 61c3e0a0d6..c9dfef42a9 100644
--- a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/ViewPropertiesDescriptionRegistryConfigurer.java
+++ b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/ViewPropertiesDescriptionRegistryConfigurer.java
@@ -33,8 +33,7 @@
import org.eclipse.sirius.components.compatibility.emf.properties.EBooleanIfDescriptionProvider;
import org.eclipse.sirius.components.compatibility.emf.properties.EEnumIfDescriptionProvider;
import org.eclipse.sirius.components.compatibility.emf.properties.EStringIfDescriptionProvider;
-import org.eclipse.sirius.components.compatibility.emf.properties.MonoValuedNonContainmentReferenceIfDescriptionProvider;
-import org.eclipse.sirius.components.compatibility.emf.properties.MultiValuedNonContainmentReferenceIfDescriptionProvider;
+import org.eclipse.sirius.components.compatibility.emf.properties.NonContainmentReferenceIfDescriptionProvider;
import org.eclipse.sirius.components.compatibility.emf.properties.NumberIfDescriptionProvider;
import org.eclipse.sirius.components.compatibility.emf.properties.api.IPropertiesValidationProvider;
import org.eclipse.sirius.components.core.api.IObjectService;
@@ -194,8 +193,7 @@ public boolean handles(EAttribute eAttribute) {
ifDescriptions.add(new EBooleanIfDescriptionProvider(this.composedAdapterFactory, this.propertiesValidationProvider, this.semanticTargetIdProvider).getIfDescription());
ifDescriptions.add(new EEnumIfDescriptionProvider(this.composedAdapterFactory, this.propertiesValidationProvider, this.semanticTargetIdProvider).getIfDescription());
- ifDescriptions.add(new MonoValuedNonContainmentReferenceIfDescriptionProvider(this.composedAdapterFactory, this.objectService, this.propertiesValidationProvider, this.semanticTargetIdProvider).getIfDescription());
- ifDescriptions.add(new MultiValuedNonContainmentReferenceIfDescriptionProvider(this.composedAdapterFactory, this.objectService, this.propertiesValidationProvider, this.semanticTargetIdProvider).getIfDescription());
+ ifDescriptions.add(new NonContainmentReferenceIfDescriptionProvider(this.composedAdapterFactory, this.objectService, this.semanticTargetIdProvider).getIfDescription());
var numericDataTypes = List.of(
EcorePackage.Literals.EINT,
@@ -209,7 +207,7 @@ public boolean handles(EAttribute eAttribute) {
EcorePackage.Literals.ESHORT,
EcorePackage.Literals.ESHORT_OBJECT,
ViewPackage.Literals.LENGTH
- );
+ );
for (var dataType : numericDataTypes) {
ifDescriptions.add(new NumberIfDescriptionProvider(dataType, this.composedAdapterFactory, this.propertiesValidationProvider, this.emfMessageService, this.semanticTargetIdProvider).getIfDescription());
}