This is an automated email from the ASF dual-hosted git repository.
tiagobento pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git
The following commit(s) were added to refs/heads/main by this push:
new cae3660f8c5 kie-issues#975: Improve messages when the user tries to
load DMN assets > 1.2 in DMN and SCESIM editors (#2241)
cae3660f8c5 is described below
commit cae3660f8c5b5edace0468e61d6e6707b4fcf6c2
Author: Yeser Amer <[email protected]>
AuthorDate: Tue Apr 16 20:12:29 2024 +0200
kie-issues#975: Improve messages when the user tries to load DMN assets >
1.2 in DMN and SCESIM editors (#2241)
---
.../i18n/ScenarioSimulationEditorConstants.java | 4 ++
.../ScenarioSimulationEditorConstants.properties | 4 +-
.../ScenarioSimulationKogitoCreationPopupView.html | 8 +++
.../ScenarioSimulationKogitoCreationPopupView.java | 5 ++
...enarioSimulationKogitoDMNMarshallerService.java | 74 ++++++++++++++--------
...narioSimulationKogitoCreationPopupViewTest.java | 4 ++
.../client/docks/preview/PreviewDiagramScreen.java | 2 +-
.../expressions/ExpressionEditorViewImpl.java | 2 +-
.../client/marshaller/DMNMarshallerService.java | 42 ++++++++++--
.../included/DMNMarshallerImportsClientHelper.java | 6 +-
.../client/resources/i18n/DMNEditorConstants.java | 6 ++
.../dmn/client/service/DMNClientServicesProxy.java | 2 +-
.../resources/i18n/DMNClientConstants.properties | 2 +
.../services/DMNClientServicesProxyImplTest.java | 2 +-
.../client/widgets/editor/StunnerEditor.java | 6 +-
.../session/impl/AbstractSessionPresenter.java | 4 +-
.../core/client/service/ClientRuntimeError.java | 46 ++++++++++----
.../core/client/canvas/BaseCanvasHandler.java | 2 +-
.../core/client/util/StunnerClientLogger.java | 2 +-
.../common/widgets/client/errorpage/ErrorPage.java | 8 ++-
20 files changed, 170 insertions(+), 61 deletions(-)
diff --git
a/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-client/src/main/java/org/drools/workbench/screens/scenariosimulation/client/resources/i18n/ScenarioSimulationEditorConstants.java
b/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-client/src/main/java/org/drools/workbench/screens/scenariosimulation/client/resources/i18n/ScenarioSimulationEdito
[...]
index b9189a10c85..37f93a01675 100644
---
a/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-client/src/main/java/org/drools/workbench/screens/scenariosimulation/client/resources/i18n/ScenarioSimulationEditorConstants.java
+++
b/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-client/src/main/java/org/drools/workbench/screens/scenariosimulation/client/resources/i18n/ScenarioSimulationEditorConstants.java
@@ -50,6 +50,10 @@ public interface ScenarioSimulationEditorConstants
String currentlyNotAvailable();
+ String supportedDmnVersions();
+
+ String unSupportedDmnVersion(String dmnVersion);
+
String invalidDefinitionDisabled();
String testTools();
diff --git
a/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-client/src/main/resources/org/drools/workbench/screens/scenariosimulation/client/resources/i18n/ScenarioSimulationEditorConstants.properties
b/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-client/src/main/resources/org/drools/workbench/screens/scenariosimulation/client/resources/i18n/Scenari
[...]
index f3ddd773d19..7d4a18bb09f 100644
---
a/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-client/src/main/resources/org/drools/workbench/screens/scenariosimulation/client/resources/i18n/ScenarioSimulationEditorConstants.properties
+++
b/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-client/src/main/resources/org/drools/workbench/screens/scenariosimulation/client/resources/i18n/ScenarioSimulationEditorConstants.properties
@@ -31,6 +31,8 @@ scenarioSimulationEditorTitle=Test Scenarios
scenarioSimulationResourceTypeDescription=Test Scenarios
remove=Remove
currentlyNotAvailable=Currently not available
+supportedDmnVersions=This editor supports up to DMN 1.2 version.
+unSupportedDmnVersion=Test scenario supports up to DMN version 1.2. The
provided DMN file version is {0}.
invalidDefinitionDisabled=Invalid definition. Editing is disabled.
testTools=Test Tools
testEditor=Test Editor
@@ -145,7 +147,7 @@ settings=Settings
name=Name
type=Type
dmnPathErrorLabel=Impossible to find ''{0}'' file. Please select one.
-dmnPathErrorDetailedLabel=ACTION REQUIRED: Referred DMN file ''{0}'' is no
longer valid. Please provide a valid DMN file and update the DMN model in the
Settings dock. Message: ''{1}''
+dmnPathErrorDetailedLabel=ACTION REQUIRED: Referred DMN file ''{0}'' is not
valid. Please provide a valid DMN file and update the DMN model in the Settings
dock. Message: ''{1}''
missingSelectedType=Missing selected type
missingDmnPath=Missing DMN path
coverageReport=Coverage Report
diff --git
a/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/main/java/org/drools/workbench/screens/scenariosimulation/kogito/client/popup/ScenarioSimulationKogitoCreationPopupView.html
b/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/main/java/org/drools/workbench/screens/scenariosimulation/kogito/client/popup/Scena
[...]
index 14b7010ff00..443dba2a19e 100644
---
a/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/main/java/org/drools/workbench/screens/scenariosimulation/kogito/client/popup/ScenarioSimulationKogitoCreationPopupView.html
+++
b/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/main/java/org/drools/workbench/screens/scenariosimulation/kogito/client/popup/ScenarioSimulationKogitoCreationPopupView.html
@@ -46,6 +46,14 @@
<label>
<input data-field="dmn-button" name="scesimType"
type="radio" value="dmn" />
<span>DMN</span>
+ <sup>
+ <div
+ class="pficon pficon-warning-triangle-o
kie-test-tools-info__icon"
+ data-field="info-dmn-icon"
+ data-placement="left"
+ data-toggle="tooltip"
+ ></div>
+ </sup>
</label>
</div>
</div>
diff --git
a/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/main/java/org/drools/workbench/screens/scenariosimulation/kogito/client/popup/ScenarioSimulationKogitoCreationPopupView.java
b/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/main/java/org/drools/workbench/screens/scenariosimulation/kogito/client/popup/Scena
[...]
index 7f05f635707..a94c762d38d 100644
---
a/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/main/java/org/drools/workbench/screens/scenariosimulation/kogito/client/popup/ScenarioSimulationKogitoCreationPopupView.java
+++
b/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/main/java/org/drools/workbench/screens/scenariosimulation/kogito/client/popup/ScenarioSimulationKogitoCreationPopupView.java
@@ -66,6 +66,10 @@ public class ScenarioSimulationKogitoCreationPopupView
extends AbstractScenarioP
@DataField("info-rule-icon")
protected HTMLDivElement infoRuleIconDivElement;
+ @Inject
+ @DataField("info-dmn-icon")
+ protected HTMLDivElement infoDMNIconDivElement;
+
protected ScenarioSimulationModel.Type selectedType = null;
protected String selectedPath = null;
@@ -90,6 +94,7 @@ public class ScenarioSimulationKogitoCreationPopupView
extends AbstractScenarioP
dmnAssetsLabelElement.textContent =
ScenarioSimulationEditorConstants.INSTANCE.chooseValidDMNAsset();
dmnAssetsDivElement.appendChild(dmnAssetsLabelElement);
infoRuleIconDivElement.setAttribute("title",
ScenarioSimulationEditorConstants.INSTANCE.currentlyNotAvailable());
+ infoDMNIconDivElement.setAttribute("title",
ScenarioSimulationEditorConstants.INSTANCE.supportedDmnVersions());
initializeDropdown();
}
diff --git
a/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/main/java/org/drools/workbench/screens/scenariosimulation/kogito/client/services/ScenarioSimulationKogitoDMNMarshallerService.java
b/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/main/java/org/drools/workbench/screens/scenariosimulation/kogito/client/servi
[...]
index 06919459638..f2a05eb06b3 100644
---
a/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/main/java/org/drools/workbench/screens/scenariosimulation/kogito/client/services/ScenarioSimulationKogitoDMNMarshallerService.java
+++
b/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/main/java/org/drools/workbench/screens/scenariosimulation/kogito/client/services/ScenarioSimulationKogitoDMNMarshallerService.java
@@ -6,15 +6,15 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
+ * under the License.
*/
package org.drools.workbench.screens.scenariosimulation.kogito.client.services;
@@ -27,6 +27,7 @@ import javax.inject.Inject;
import jsinterop.base.Js;
import
org.drools.workbench.scenariosimulation.kogito.marshaller.mapper.JsUtils;
+import
org.drools.workbench.screens.scenariosimulation.client.resources.i18n.ScenarioSimulationEditorConstants;
import
org.drools.workbench.screens.scenariosimulation.kogito.client.dmn.model.KogitoDMNModel;
import org.jboss.errai.common.client.api.ErrorCallback;
import org.jboss.errai.common.client.api.RemoteCallback;
@@ -47,42 +48,61 @@ public class ScenarioSimulationKogitoDMNMarshallerService {
final Callback<KogitoDMNModel> callback,
final ErrorCallback<Object> errorCallback) {
resourceContentService.getFileContent(dmnFilePath,
-
getDMNFileContentCallback(dmnFilePath, callback, errorCallback),
- errorCallback);
+ getDMNFileContentCallback(dmnFilePath, callback,
errorCallback),
+ errorCallback);
}
private RemoteCallback<String> getDMNFileContentCallback(final Path
dmnFilePath,
final
Callback<KogitoDMNModel> callback,
final
ErrorCallback<Object> errorCallback) {
- return dmnContent -> unmarshallDMN(dmnContent,
getDMN12UnmarshallCallback(dmnFilePath, callback, errorCallback));
+ return dmnContent -> {
+ try {
+ unmarshallDMN(dmnContent,
getDMN12UnmarshallCallback(dmnFilePath, callback, errorCallback));
+ } catch (Exception e) {
+ String dmnVersion = "higher than 1.2";
+ if
(dmnContent.contains("https://www.omg.org/spec/DMN/20191111/MODEL/")) {
+ dmnVersion = "1.3";
+ } else if
(dmnContent.contains("https://www.omg.org/spec/DMN/20211108/MODEL/")) {
+ dmnVersion = "1.4";
+ } else if
(dmnContent.contains("https://www.omg.org/spec/DMN/20230324/MODEL/")) {
+ dmnVersion = "1.5";
+ }
+
+
errorCallback.error(ScenarioSimulationEditorConstants.INSTANCE.unSupportedDmnVersion(dmnVersion),
e);
+ }
+ };
}
protected DMN12UnmarshallCallback getDMN12UnmarshallCallback(final Path
dmnFilePath,
final
Callback<KogitoDMNModel> callback,
final
ErrorCallback<Object> errorCallback) {
return dmn12 -> {
- final JSITDefinitions jsitDefinitions = uncheckedCast(dmn12);
- final Map<String, JSITDefinitions> importedModels = new
HashMap<>();
- final KogitoDMNModel kogitoDMNModel = new
KogitoDMNModel(jsitDefinitions, importedModels);
- final Map<String, Path> includedDMNImportsPaths = new HashMap<>();
- if (jsitDefinitions.getImport() != null &&
!jsitDefinitions.getImport().isEmpty()) {
-
includedDMNImportsPaths.putAll(jsitDefinitions.getImport().stream()
- .filter(jsitImport ->
jsitImport.getImportType().toUpperCase().contains("DMN"))
- .collect(Collectors.toMap(jsitImport ->
jsitImport.getName(),
- jsitImport ->
PathFactory.newPath(jsitImport.getLocationURI(),
-
dmnFilePath.toURI().replace(dmnFilePath.getFileName(),
-
jsitImport.getLocationURI())))));
- }
- if (includedDMNImportsPaths.isEmpty()) {
- callback.callback(kogitoDMNModel);
- } else {
- for (Map.Entry<String, Path> importPath :
includedDMNImportsPaths.entrySet()) {
-
resourceContentService.getFileContent(importPath.getValue(),
-
getDMNImportContentRemoteCallback(callback,
-
kogitoDMNModel,
-
includedDMNImportsPaths.size()),
- errorCallback);
+ try {
+ final JSITDefinitions jsitDefinitions = uncheckedCast(dmn12);
+ final Map<String, JSITDefinitions> importedModels = new
HashMap<>();
+ final KogitoDMNModel kogitoDMNModel = new
KogitoDMNModel(jsitDefinitions, importedModels);
+ final Map<String, Path> includedDMNImportsPaths = new
HashMap<>();
+ if (jsitDefinitions.getImport() != null &&
!jsitDefinitions.getImport().isEmpty()) {
+
includedDMNImportsPaths.putAll(jsitDefinitions.getImport().stream()
+ .filter(jsitImport ->
jsitImport.getImportType().toUpperCase().contains("DMN"))
+ .collect(Collectors.toMap(jsitImport ->
jsitImport.getName(),
+ jsitImport ->
PathFactory.newPath(jsitImport.getLocationURI(),
+
dmnFilePath.toURI().replace(dmnFilePath.getFileName(),
+
jsitImport.getLocationURI())))));
+ }
+ if (includedDMNImportsPaths.isEmpty()) {
+ callback.callback(kogitoDMNModel);
+ } else {
+ for (Map.Entry<String, Path> importPath :
includedDMNImportsPaths.entrySet()) {
+
resourceContentService.getFileContent(importPath.getValue(),
+ getDMNImportContentRemoteCallback(callback,
+ kogitoDMNModel,
+ includedDMNImportsPaths.size()),
+ errorCallback);
+ }
}
+ } catch (Error e) {
+ errorCallback.error("Asada", e);
}
};
}
diff --git
a/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/test/java/org/drools/workbench/screens/scenariosimulation/kogito/client/popup/ScenarioSimulationKogitoCreationPopupViewTest.java
b/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/test/java/org/drools/workbench/screens/scenariosimulation/kogito/client/popup/S
[...]
index a221d3b0338..c5181c49e6d 100644
---
a/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/test/java/org/drools/workbench/screens/scenariosimulation/kogito/client/popup/ScenarioSimulationKogitoCreationPopupViewTest.java
+++
b/packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-client/src/test/java/org/drools/workbench/screens/scenariosimulation/kogito/client/popup/ScenarioSimulationKogitoCreationPopupViewTest.java
@@ -78,6 +78,8 @@ public class ScenarioSimulationKogitoCreationPopupViewTest {
@Mock
private HTMLDivElement infoRuleIconDivElementMock;
@Mock
+ private HTMLDivElement infoDMNIconDivElementMock;
+ @Mock
private HTMLLabelElement sourceTypeLabelElementMock;
@Mock
private HTMLLabelElement dmnAssetsLabelElementMock;
@@ -100,6 +102,7 @@ public class ScenarioSimulationKogitoCreationPopupViewTest {
sourceTypeLabelElement = sourceTypeLabelElementMock;
modal = modalMock;
infoRuleIconDivElement = infoRuleIconDivElementMock;
+ infoDMNIconDivElement = infoDMNIconDivElementMock;
selectedPath = "";
}
});
@@ -122,6 +125,7 @@ public class ScenarioSimulationKogitoCreationPopupViewTest {
verify(dmnAssetsDivElementMock,
times(1)).setAttribute(eq(ConstantHolder.HIDDEN), eq(""));
verify(dmnAssetsDivElementMock,
times(1)).appendChild(eq(dmnAssetsLabelElementMock));
verify(infoRuleIconDivElementMock, times(1)).setAttribute(eq("title"),
eq(ScenarioSimulationEditorConstants.INSTANCE.currentlyNotAvailable()));
+ verify(infoDMNIconDivElementMock, times(1)).setAttribute(eq("title"),
eq(ScenarioSimulationEditorConstants.INSTANCE.supportedDmnVersions()));
verify(scenarioSimulationCreationPopupViewSpy,
times(1)).initializeDropdown();
}
diff --git
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/docks/preview/PreviewDiagramScreen.java
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/docks/preview/PreviewDiagramScreen.java
index f66060d394a..883645e2f28 100644
---
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/docks/preview/PreviewDiagramScreen.java
+++
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/docks/preview/PreviewDiagramScreen.java
@@ -184,7 +184,7 @@ public class PreviewDiagramScreen extends AbstractActivity {
@Override
public void onError(final
ClientRuntimeError error) {
- LOGGER.log(Level.SEVERE,
error.getMessage());
+ LOGGER.log(Level.SEVERE,
error.getErrorMessage());
}
});
}
diff --git
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/editors/expressions/ExpressionEditorViewImpl.java
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/editors/expressions/ExpressionEditorViewImpl.java
index be0e68af9a9..337392c487a 100644
---
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/editors/expressions/ExpressionEditorViewImpl.java
+++
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/editors/expressions/ExpressionEditorViewImpl.java
@@ -380,7 +380,7 @@ public class ExpressionEditorViewImpl implements
ExpressionEditorView {
@Override
public void onError(final ClientRuntimeError error) {
- LOGGER.log(Level.SEVERE, error.getMessage(),
error.getThrowable());
+ LOGGER.log(Level.SEVERE, error.getErrorMessage(),
error.getThrowable());
}
});
}
diff --git
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/marshaller/DMNMarshallerService.java
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/marshaller/DMNMarshallerService.java
index 554248dab2b..6bac1b0b998 100644
---
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/marshaller/DMNMarshallerService.java
+++
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/marshaller/DMNMarshallerService.java
@@ -6,15 +6,15 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
+ * under the License.
*/
package org.kie.workbench.common.dmn.client.marshaller;
@@ -44,6 +44,7 @@ import
org.kie.workbench.common.dmn.client.docks.navigator.drds.DRGDiagramUtils;
import org.kie.workbench.common.dmn.client.marshaller.common.DMNGraphUtils;
import org.kie.workbench.common.dmn.client.marshaller.marshall.DMNMarshaller;
import
org.kie.workbench.common.dmn.client.marshaller.unmarshall.DMNUnmarshaller;
+import org.kie.workbench.common.dmn.client.resources.i18n.DMNEditorConstants;
import org.kie.workbench.common.dmn.webapp.kogito.marshaller.js.model.MainJs;
import
org.kie.workbench.common.dmn.webapp.kogito.marshaller.js.model.callbacks.DMN12MarshallCallback;
import
org.kie.workbench.common.dmn.webapp.kogito.marshaller.js.model.callbacks.DMN12UnmarshallCallback;
@@ -52,6 +53,7 @@ import
org.kie.workbench.common.dmn.webapp.kogito.marshaller.js.model.dmn12.JSIT
import org.kie.workbench.common.dmn.webapp.kogito.marshaller.mapper.JSIName;
import org.kie.workbench.common.dmn.webapp.kogito.marshaller.mapper.JsUtils;
import org.kie.workbench.common.stunner.core.api.DefinitionManager;
+import
org.kie.workbench.common.stunner.core.client.i18n.ClientTranslationService;
import org.kie.workbench.common.stunner.core.client.service.ClientRuntimeError;
import org.kie.workbench.common.stunner.core.client.service.ServiceCallback;
import
org.kie.workbench.common.stunner.core.definition.adapter.binding.BindableAdapterUtils;
@@ -83,6 +85,8 @@ public class DMNMarshallerService {
private final DMNDiagramsSession dmnDiagramsSession;
+ private final ClientTranslationService translationService;
+
private ServiceCallback<Diagram> onDiagramLoad = emptyService();
private Metadata metadata;
@@ -93,13 +97,15 @@ public class DMNMarshallerService {
final DMNDiagramFactory dmnDiagramFactory,
final DefinitionManager definitionManager,
final Promises promises,
- final DMNDiagramsSession dmnDiagramsSession) {
+ final DMNDiagramsSession dmnDiagramsSession,
+ final ClientTranslationService
translationService) {
this.dmnUnmarshaller = dmnUnmarshaller;
this.dmnMarshaller = dmnMarshaller;
this.dmnDiagramFactory = dmnDiagramFactory;
this.definitionManager = definitionManager;
this.promises = promises;
this.dmnDiagramsSession = dmnDiagramsSession;
+ this.translationService = translationService;
}
public void unmarshall(final Path path,
@@ -127,10 +133,32 @@ public class DMNMarshallerService {
MainJs.unmarshall(xml, "", jsCallback);
} catch (final Exception e) {
LOGGER.severe(e.getMessage());
- callback.onError(new ClientRuntimeError(e.getMessage(), new
DiagramParsingException(getMetadata(), xml)));
+ String contentMessage = generateUnsupportedVersionMessage(xml);
+
+ if (contentMessage != null) {
+ callback.onError(
+ new
ClientRuntimeError(translationService.getValue(DMNEditorConstants.DMNMarshaller_UnsupportedMessageTitle),
contentMessage, e.getMessage(),
+ new DiagramParsingException(getMetadata(),
xml)));
+ } else {
+ callback.onError(new ClientRuntimeError(e.getMessage(), new
DiagramParsingException(getMetadata(), xml)));
+ }
}
}
+ private String generateUnsupportedVersionMessage(String xml) {
+ String errorMessage = null;
+
+ if (xml.contains("https://www.omg.org/spec/DMN/20191111/MODEL/")) {
+ errorMessage =
translationService.getValue(DMNEditorConstants.DMNMarshaller_UnsupportedMessage,
"1.3");
+ } else if
(xml.contains("https://www.omg.org/spec/DMN/20211108/MODEL/")) {
+ errorMessage =
translationService.getValue(DMNEditorConstants.DMNMarshaller_UnsupportedMessage,
"1.4");
+ } else if
(xml.contains("https://www.omg.org/spec/DMN/20230324/MODEL/")) {
+ errorMessage =
translationService.getValue(DMNEditorConstants.DMNMarshaller_UnsupportedMessage,
"1.5");
+ }
+
+ return errorMessage;
+ }
+
public void marshall(final Diagram diagram,
final ServiceCallback<String> contentServiceCallback)
{
final DMN12MarshallCallback jsCallback =
contentServiceCallback::onSuccess;
@@ -153,7 +181,7 @@ public class DMNMarshallerService {
JsUtils.setValueOnWrapped(dmn12, jsitDefinitions);
final JavaScriptObject namespaces =
createNamespaces(jsitDefinitions.getOtherAttributes(),
-
jsitDefinitions.getNamespace());
+ jsitDefinitions.getNamespace());
MainJs.marshall(dmn12, namespaces, jsCallback);
} catch (final Exception e) {
contentServiceCallback.onError(new ClientRuntimeError("Error
during the marshaller: " + e.getMessage()));
@@ -227,7 +255,7 @@ public class DMNMarshallerService {
final String shapeSetId =
BindableAdapterUtils.getShapeSetId(DMNShapeSet.class);
return new MetadataImpl.MetadataImplBuilder(defSetId,
- definitionManager)
+ definitionManager)
.setPath(path)
.setShapeSetId(shapeSetId)
.build();
diff --git
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/marshaller/included/DMNMarshallerImportsClientHelper.java
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/marshaller/included/DMNMarshallerImportsClientHelper.java
index 3376adef298..d31195fadbf 100644
---
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/marshaller/included/DMNMarshallerImportsClientHelper.java
+++
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/marshaller/included/DMNMarshallerImportsClientHelper.java
@@ -184,7 +184,7 @@ public class DMNMarshallerImportsClientHelper implements
DMNMarshallerImportsHel
@Override
public void onError(final ClientRuntimeError
error) {
- LOGGER.severe(error::getMessage);
+ LOGGER.severe(error::getErrorMessage);
fail.onInvoke(error);
}
})
@@ -221,7 +221,7 @@ public class DMNMarshallerImportsClientHelper implements
DMNMarshallerImportsHel
@Override
public void onError(final
ClientRuntimeError error) {
- LOGGER.warning(error::getMessage);
+ LOGGER.warning(error::getErrorMessage);
//Swallow. Since it must try to load
other paths.
success.onInvoke(promises.resolve());
}
@@ -288,7 +288,7 @@ public class DMNMarshallerImportsClientHelper implements
DMNMarshallerImportsHel
@Override
public void onError(final ClientRuntimeError error) {
- LOGGER.log(Level.SEVERE, error.getMessage());
+ LOGGER.log(Level.SEVERE, error.getErrorMessage());
}
};
}
diff --git
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/resources/i18n/DMNEditorConstants.java
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/resources/i18n/DMNEditorConstants.java
index dec1562bb9c..4b2d596a56e 100644
---
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/resources/i18n/DMNEditorConstants.java
+++
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/resources/i18n/DMNEditorConstants.java
@@ -531,4 +531,10 @@ public class DMNEditorConstants {
@TranslationKey(defaultValue = "")
public static final String AutomaticLayout_DiagramDoesNotHaveLayout =
"AutomaticLayout.DiagramDoesNotHaveLayout";
+
+ @TranslationKey(defaultValue = "")
+ public static final String DMNMarshaller_UnsupportedMessageTitle =
"DMNMarshaller.UnsupportedMessageTitle";
+
+ @TranslationKey(defaultValue = "")
+ public static final String DMNMarshaller_UnsupportedMessage =
"DMNMarshaller.UnsupportedMessage";
}
diff --git
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/service/DMNClientServicesProxy.java
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/service/DMNClientServicesProxy.java
index 92a5c959517..b7185273b16 100644
---
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/service/DMNClientServicesProxy.java
+++
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/java/org/kie/workbench/common/dmn/client/service/DMNClientServicesProxy.java
@@ -46,7 +46,7 @@ public interface DMNClientServicesProxy {
// ------------------------------------
default void logWarning(final ClientRuntimeError error) {
- warn(error.getMessage());
+ warn(error.getErrorMessage());
}
default void warn(final String message) {
diff --git
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/resources/org/kie/workbench/common/dmn/client/resources/i18n/DMNClientConstants.properties
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/resources/org/kie/workbench/common/dmn/client/resources/i18n/DMNClientConstants.properties
index 6e8b590e781..f5d534daca2 100644
---
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/resources/org/kie/workbench/common/dmn/client/resources/i18n/DMNClientConstants.properties
+++
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-client/src/main/resources/org/kie/workbench/common/dmn/client/resources/i18n/DMNClientConstants.properties
@@ -315,3 +315,5 @@ ExpressionEditorViewImpl.Beta=New
ExpressionEditorViewImpl.Stable=Legacy
AutomaticLayout.Label=Automatic Layout
AutomaticLayout.DiagramDoesNotHaveLayout=This diagram does not have layout
information. Click 'Yes' to compute optimal layout, it takes time according to
the diagram size. Click 'No' to proceed without layout. Please save the layout
changes once diagram is opened.
+DMNMarshaller.UnsupportedMessageTitle=Unsupported DMN version
+DMNMarshaller.UnsupportedMessage=You opened a {0} DMN file version that is
higher than supported. The latest version supported on the legacy DMN Editor is
1.2. This editor will be replaced by the new DMN editor that supports up to 1.5
version in a future release.
\ No newline at end of file
diff --git
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-webapp-kogito-common/src/test/java/org/kie/workbench/common/dmn/webapp/kogito/common/client/services/DMNClientServicesProxyImplTest.java
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-webapp-kogito-common/src/test/java/org/kie/workbench/common/dmn/webapp/kogito/common/client/services/DMNClientServicesProxyImplTest.java
index 69d688fa7ce..4261b7d5d0d 100644
---
a/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-webapp-kogito-common/src/test/java/org/kie/workbench/common/dmn/webapp/kogito/common/client/services/DMNClientServicesProxyImplTest.java
+++
b/packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-webapp-kogito-common/src/test/java/org/kie/workbench/common/dmn/webapp/kogito/common/client/services/DMNClientServicesProxyImplTest.java
@@ -169,7 +169,7 @@ public class DMNClientServicesProxyImplTest {
@Override
public void onError(final ClientRuntimeError error) {
- fail(error.getMessage());
+ fail(error.getErrorMessage());
}
};
}
diff --git
a/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-client/kie-wb-common-stunner-widgets/src/main/java/org/kie/workbench/common/stunner/client/widgets/editor/StunnerEditor.java
b/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-client/kie-wb-common-stunner-widgets/src/main/java/org/kie/workbench/common/stunner/client/widgets/editor/StunnerEditor.java
index 3fd41b01faa..2fde897e89c 100644
---
a/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-client/kie-wb-common-stunner-widgets/src/main/java/org/kie/workbench/common/stunner/client/widgets/editor/StunnerEditor.java
+++
b/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-client/kie-wb-common-stunner-widgets/src/main/java/org/kie/workbench/common/stunner/client/widgets/editor/StunnerEditor.java
@@ -158,7 +158,9 @@ public class StunnerEditor {
final DiagramParsingException dpe = (DiagramParsingException) e;
close();
parsingExceptionProcessor.accept(dpe);
- errorPage.setErrorContent(error.getMessage());
+ errorPage.setTitle(error.getErrorTitle());
+ errorPage.setContent(error.getErrorContent());
+ errorPage.setErrorContent(error.getErrorMessage());
view.setWidget(errorPage);
} else {
String message = null;
@@ -168,7 +170,7 @@ public class StunnerEditor {
dnfe.getDefinitionId());
} else {
message = error.getThrowable() != null ?
- error.getThrowable().getMessage() : error.getMessage();
+ error.getThrowable().getMessage() :
error.getErrorMessage();
}
showError(message);
exceptionProcessor.accept(error.getThrowable());
diff --git
a/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-client/kie-wb-common-stunner-widgets/src/main/java/org/kie/workbench/common/stunner/client/widgets/presenters/session/impl/AbstractSessionPresenter.java
b/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-client/kie-wb-common-stunner-widgets/src/main/java/org/kie/workbench/common/stunner/client/widgets/presenters/session/impl/AbstractSessionPresenter.java
index 4dc3170ec1d..bd351272279 100644
---
a/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-client/kie-wb-common-stunner-widgets/src/main/java/org/kie/workbench/common/stunner/client/widgets/presenters/session/impl/AbstractSessionPresenter.java
+++
b/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-client/kie-wb-common-stunner-widgets/src/main/java/org/kie/workbench/common/stunner/client/widgets/presenters/session/impl/AbstractSessionPresenter.java
@@ -302,10 +302,10 @@ public abstract class AbstractSessionPresenter<D extends
Diagram, H extends Abst
private void showError(final ClientRuntimeError error) {
if (isDisplayErrors()) {
- getView().showError(error.getMessage());
+ getView().showError(error.getErrorMessage());
}
- log(error.getMessage(), error.getThrowable());
+ log(error.getErrorMessage(), error.getThrowable());
}
@SuppressWarnings("unchecked")
diff --git
a/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-core/kie-wb-common-stunner-api/kie-wb-common-stunner-client-api/src/main/java/org/kie/workbench/common/stunner/core/client/service/ClientRuntimeError.java
b/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-core/kie-wb-common-stunner-api/kie-wb-common-stunner-client-api/src/main/java/org/kie/workbench/common/stunner/core/client/service/ClientRuntimeError.java
index 387df2fdd15..0283ff6485a 100644
---
a/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-core/kie-wb-common-stunner-api/kie-wb-common-stunner-client-api/src/main/java/org/kie/workbench/common/stunner/core/client/service/ClientRuntimeError.java
+++
b/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-core/kie-wb-common-stunner-api/kie-wb-common-stunner-client-api/src/main/java/org/kie/workbench/common/stunner/core/client/service/ClientRuntimeError.java
@@ -24,22 +24,38 @@ package
org.kie.workbench.common.stunner.core.client.service;
*/
public class ClientRuntimeError {
- private String message;
- private Throwable throwable;
+ private final String errorTitle;
+ private final String errorContent;
+ private final String errorMessage;
+ private final Throwable throwable;
- public ClientRuntimeError(final String message) {
- this(message,
+ public ClientRuntimeError(final String errorMessage) {
+ this(null, null, errorMessage,
null);
}
public ClientRuntimeError(final Throwable e) {
this(null,
+ null,
+ null,
e);
}
- public ClientRuntimeError(final String message,
+ public ClientRuntimeError(final String errorMessage,
final Throwable e) {
- this.message = message;
+ this(null,
+ null,
+ errorMessage,
+ e);
+ }
+
+ public ClientRuntimeError(final String errorTitle,
+ final String errorContent,
+ final String errorMessage,
+ final Throwable e) {
+ this.errorTitle = errorTitle;
+ this.errorContent = errorContent;
+ this.errorMessage = errorMessage;
this.throwable = e;
}
@@ -47,17 +63,25 @@ public class ClientRuntimeError {
return throwable;
}
- public String getMessage() {
- if (null != message && message.trim().length() > 0) {
- return message;
+ public String getErrorMessage() {
+ if (null != errorMessage && !errorMessage.trim().isEmpty()) {
+ return errorMessage;
}
Throwable root = getRootCause();
return root.toString();
}
+ public String getErrorTitle() {
+ return errorTitle;
+ }
+
+ public String getErrorContent() {
+ return errorContent;
+ }
+
public String getCause() {
Throwable root = getRootCause();
- if (root == null || getMessage().equals(root.toString())) {
+ if (root == null || getErrorMessage().equals(root.toString())) {
return null;
} else {
return root.getMessage();
@@ -77,6 +101,6 @@ public class ClientRuntimeError {
public String toString() {
String cause = getCause();
- return getMessage() + (cause != null ? " (cause: " + cause + ")" : "");
+ return getErrorMessage() + (cause != null ? " (cause: " + cause + ")"
: "");
}
}
diff --git
a/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-core/kie-wb-common-stunner-commons/kie-wb-common-stunner-client-common/src/main/java/org/kie/workbench/common/stunner/core/client/canvas/BaseCanvasHandler.java
b/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-core/kie-wb-common-stunner-commons/kie-wb-common-stunner-client-common/src/main/java/org/kie/workbench/common/stunner/core/client/canvas/BaseCanvasHandler.java
index 8542c338d18..7c72bb000ad 100644
---
a/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-core/kie-wb-common-stunner-commons/kie-wb-common-stunner-client-common/src/main/java/org/kie/workbench/common/stunner/core/client/canvas/BaseCanvasHandler.java
+++
b/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-core/kie-wb-common-stunner-commons/kie-wb-common-stunner-client-common/src/main/java/org/kie/workbench/common/stunner/core/client/canvas/BaseCanvasHandler.java
@@ -426,7 +426,7 @@ public abstract class BaseCanvasHandler<D extends Diagram,
C extends AbstractCan
protected void showError(final ClientRuntimeError error) {
final String message = error.getThrowable() != null ?
- error.getThrowable().getMessage() : error.getMessage();
+ error.getThrowable().getMessage() : error.getErrorMessage();
log(Level.SEVERE,
message);
}
diff --git
a/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-core/kie-wb-common-stunner-commons/kie-wb-common-stunner-client-common/src/main/java/org/kie/workbench/common/stunner/core/client/util/StunnerClientLogger.java
b/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-core/kie-wb-common-stunner-commons/kie-wb-common-stunner-client-common/src/main/java/org/kie/workbench/common/stunner/core/client/util/StunnerClientLogger.java
index bcc4c4e8508..9c753d11518 100644
---
a/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-core/kie-wb-common-stunner-commons/kie-wb-common-stunner-client-common/src/main/java/org/kie/workbench/common/stunner/core/client/util/StunnerClientLogger.java
+++
b/packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-core/kie-wb-common-stunner-commons/kie-wb-common-stunner-client-common/src/main/java/org/kie/workbench/common/stunner/core/client/util/StunnerClientLogger.java
@@ -53,7 +53,7 @@ public class StunnerClientLogger {
private static Logger LOGGER =
Logger.getLogger(StunnerClientLogger.class.getName());
public static String getErrorMessage(final ClientRuntimeError error) {
- final String message = error.getMessage();
+ final String message = error.getErrorMessage();
final Throwable t1 = error.getThrowable();
final Throwable t2 = t1 != null ? t1.getCause() : null;
if (null != t2) {
diff --git
a/packages/stunner-editors/kie-wb-common-widgets/kie-wb-common-ui/src/main/java/org/kie/workbench/common/widgets/client/errorpage/ErrorPage.java
b/packages/stunner-editors/kie-wb-common-widgets/kie-wb-common-ui/src/main/java/org/kie/workbench/common/widgets/client/errorpage/ErrorPage.java
index 225fd748bc7..1b833b3e1b8 100644
---
a/packages/stunner-editors/kie-wb-common-widgets/kie-wb-common-ui/src/main/java/org/kie/workbench/common/widgets/client/errorpage/ErrorPage.java
+++
b/packages/stunner-editors/kie-wb-common-widgets/kie-wb-common-ui/src/main/java/org/kie/workbench/common/widgets/client/errorpage/ErrorPage.java
@@ -48,11 +48,15 @@ public class ErrorPage extends Composite {
private HTMLParagraphElement errorContent;
public void setTitle(final String titleMessage) {
- this.title.textContent = titleMessage;
+ if (titleMessage != null) {
+ this.title.textContent = titleMessage;
+ }
}
public void setContent(final String message) {
- this.content.textContent = message;
+ if (message != null) {
+ this.content.textContent = message;
+ }
}
public void setErrorContent(final String errorMessage) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]