From 2367166126ba07d0d6cd614f2a5ca6f45017f1f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Dinis=20Ferreira?= Date: Sat, 30 May 2026 18:26:53 +0200 Subject: [PATCH] fix: minor robustness/logging cleanups from the inconsistency sweep - ScopeResourceDescriptionStrategy.getSourceText: guard a null parse result before dereferencing getRootNode() (resources without a node model exist, e.g. direct-linking storage), returning "" as for the proxy case. - CustomClassAwareEcoreGenerator: non-OK EMF generation diagnostics were logged at INFO, so warnings/errors were easy to miss; log them at WARN. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../generator/util/CustomClassAwareEcoreGenerator.java | 6 +++--- .../scope/resource/ScopeResourceDescriptionStrategy.java | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/com.avaloq.tools.ddk.xtext.generator/src/com/avaloq/tools/ddk/xtext/generator/util/CustomClassAwareEcoreGenerator.java b/com.avaloq.tools.ddk.xtext.generator/src/com/avaloq/tools/ddk/xtext/generator/util/CustomClassAwareEcoreGenerator.java index b07f7664b..a6ca2b40c 100644 --- a/com.avaloq.tools.ddk.xtext.generator/src/com/avaloq/tools/ddk/xtext/generator/util/CustomClassAwareEcoreGenerator.java +++ b/com.avaloq.tools.ddk.xtext.generator/src/com/avaloq/tools/ddk/xtext/generator/util/CustomClassAwareEcoreGenerator.java @@ -111,21 +111,21 @@ public JControlModel getJControlModel() { Diagnostic diagnostic = generator.generate(model, GenBaseGeneratorAdapter.MODEL_PROJECT_TYPE, new BasicMonitor()); if (diagnostic.getSeverity() != Diagnostic.OK) { - LOGGER.info(diagnostic); + LOGGER.warn(diagnostic); } } if (generateEdit) { Diagnostic editDiag = generator.generate(model, GenBaseGeneratorAdapter.EDIT_PROJECT_TYPE, new BasicMonitor()); if (editDiag.getSeverity() != Diagnostic.OK) { - LOGGER.info(editDiag); + LOGGER.warn(editDiag); } } if (generateEditor) { Diagnostic editorDiag = generator.generate(model, GenBaseGeneratorAdapter.EDITOR_PROJECT_TYPE, new BasicMonitor()); if (editorDiag.getSeverity() != Diagnostic.OK) { - LOGGER.info(editorDiag); + LOGGER.warn(editorDiag); } } } diff --git a/com.avaloq.tools.ddk.xtext.scope/src/com/avaloq/tools/ddk/xtext/scope/resource/ScopeResourceDescriptionStrategy.java b/com.avaloq.tools.ddk.xtext.scope/src/com/avaloq/tools/ddk/xtext/scope/resource/ScopeResourceDescriptionStrategy.java index b01535350..4b64173cb 100644 --- a/com.avaloq.tools.ddk.xtext.scope/src/com/avaloq/tools/ddk/xtext/scope/resource/ScopeResourceDescriptionStrategy.java +++ b/com.avaloq.tools.ddk.xtext.scope/src/com/avaloq/tools/ddk/xtext/scope/resource/ScopeResourceDescriptionStrategy.java @@ -70,6 +70,10 @@ private String getSourceText(final EObject obj) { LOG.warn("Could not resolve scope model " + EcoreUtil.getURI(obj)); return ""; } - return ((XtextResource) obj.eResource()).getParseResult().getRootNode().getText(); + final XtextResource resource = (XtextResource) obj.eResource(); + if (resource.getParseResult() == null) { + return ""; + } + return resource.getParseResult().getRootNode().getText(); } }