diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 5e71f8dc7b6..5c5c7510694 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -26,6 +26,7 @@ === Bug fixes - https://github.com/eclipse-sirius/sirius-web/issues/4195[#4195] [sirius-web] Prevent objects disappearing when dropped on themselves (or a descendant) in the _Explorer_. +- https://github.com/eclipse-sirius/sirius-web/issues/4204[#4204] [core] Prevent the changeDescriptionSink from crashing because of the related representation refresh === New Features diff --git a/packages/core/backend/sirius-components-collaborative/src/main/java/org/eclipse/sirius/components/collaborative/editingcontext/EditingContextEventProcessor.java b/packages/core/backend/sirius-components-collaborative/src/main/java/org/eclipse/sirius/components/collaborative/editingcontext/EditingContextEventProcessor.java index b9eed4fd783..2537ca5c8a2 100644 --- a/packages/core/backend/sirius-components-collaborative/src/main/java/org/eclipse/sirius/components/collaborative/editingcontext/EditingContextEventProcessor.java +++ b/packages/core/backend/sirius-components-collaborative/src/main/java/org/eclipse/sirius/components/collaborative/editingcontext/EditingContextEventProcessor.java @@ -157,18 +157,18 @@ private Disposable setupChangeDescriptionSinkConsumer() { var refreshRepresentationSample = Timer.start(this.meterRegistry); - RepresentationEventProcessorEntry representationEventProcessorEntry = this.representationEventProcessors.get(changeDescription.getSourceId()); - if (representationEventProcessorEntry != null) { - try { + try { + RepresentationEventProcessorEntry representationEventProcessorEntry = this.representationEventProcessors.get(changeDescription.getSourceId()); + if (representationEventProcessorEntry != null) { IRepresentationEventProcessor representationEventProcessor = representationEventProcessorEntry.getRepresentationEventProcessor(); representationEventProcessor.refresh(changeDescription); IRepresentation representation = representationEventProcessor.getRepresentation(); this.applicationEventPublisher.publishEvent(new RepresentationRefreshedEvent(this.editingContext.getId(), representation)); - } catch (Exception exception) { - this.logger.warn(exception.getMessage(), exception); } + this.refreshOtherRepresentations(changeDescription); + } catch (Exception exception) { + this.logger.warn(exception.getMessage(), exception); } - this.refreshOtherRepresentations(changeDescription); var timer = this.meterRegistry.timer(Monitoring.TIMER_REFRESH_REPRESENTATION, "changeDescription", changeDescription.getSourceId()); refreshRepresentationSample.stop(timer); diff --git a/packages/emf/backend/sirius-components-interpreter/src/main/java/org/eclipse/sirius/components/interpreter/Result.java b/packages/emf/backend/sirius-components-interpreter/src/main/java/org/eclipse/sirius/components/interpreter/Result.java index b452eeac51c..21a9d69b119 100644 --- a/packages/emf/backend/sirius-components-interpreter/src/main/java/org/eclipse/sirius/components/interpreter/Result.java +++ b/packages/emf/backend/sirius-components-interpreter/src/main/java/org/eclipse/sirius/components/interpreter/Result.java @@ -147,6 +147,6 @@ public Optional asBoolean() { @Override public String toString() { - return MessageFormat.format("Result { status: {0}, rawValue: {1}}", this.status, this.rawValue); + return MessageFormat.format("Result '{' status: {0}, rawValue: {1} '}'", this.status, this.rawValue); } }