Skip to content

Commit e491b7a

Browse files
committed
Improve handling of add patches on attributes
Currently `add` patches for attributes only handle many features correctly. For single attributes a `SetCommand` should be used instead. Signed-off-by: Eugen Neufeld <eneufeld@eclipsesource.com>
1 parent a98817d commit e491b7a

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

bundles/org.eclipse.emfcloud.modelserver.common/src/org/eclipse/emfcloud/modelserver/common/patch/AbstractJsonPatchHelper.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -239,15 +239,19 @@ protected Command getAddCommand(final String modelURI, final ResourceSet resourc
239239
}
240240

241241
JsonNode value = patchAction.get("value");
242+
EStructuralFeature feature = setting.getFeature();
242243
Command result;
243-
if (setting.getFeature() instanceof EReference) {
244+
if (feature instanceof EReference) {
244245
// References
245246
result = getAddReferenceCommand(modelURI, resourceSet, setting, value);
246247
} else {
247248
// Attributes
248-
Object emfValue = getEMFValue(modelURI, resourceSet, setting.getFeature(), value);
249-
result = AddCommand.create(getEditingDomain(setting.getEObject()), setting.getEObject(),
250-
setting.getFeature(), Collections.singleton(emfValue));
249+
Object emfValue = getEMFValue(modelURI, resourceSet, feature, value);
250+
result = setting.getFeature().isMany()
251+
? AddCommand.create(getEditingDomain(setting.getEObject()), setting.getEObject(),
252+
feature, Collections.singleton(emfValue))
253+
: SetCommand.create(getEditingDomain(setting.getEObject()), setting.getEObject(), feature,
254+
emfValue);
251255
}
252256

253257
return result;

0 commit comments

Comments
 (0)