From 9fdcad573fdcedabb7c47fd9945f8370dbb15c25 Mon Sep 17 00:00:00 2001 From: Christian Menard Date: Thu, 26 Jan 2023 11:02:34 +0100 Subject: [PATCH] Fix validation of icon paths Fixes https://github.com/lf-lang/lingua-franca/issues/1569 --- .../src/org/lflang/validation/LFValidator.java | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/org.lflang/src/org/lflang/validation/LFValidator.java b/org.lflang/src/org/lflang/validation/LFValidator.java index 8af7159115..f53987e2b5 100644 --- a/org.lflang/src/org/lflang/validation/LFValidator.java +++ b/org.lflang/src/org/lflang/validation/LFValidator.java @@ -1227,31 +1227,26 @@ public void checkWidthSpec(WidthSpec widthSpec) { @Check(CheckType.FAST) public void checkReactorIconAttribute(Reactor reactor) { - var attrs = AttributeUtils.getAttributes(reactor); - var iconAttr = attrs.stream() - .filter(it -> it.getAttrName().equalsIgnoreCase("icon")) - .findFirst() - .orElse(null); - if (iconAttr != null) { - var path = iconAttr.getAttrParms().get(0).getValue(); - + var path = AttributeUtils.getIconPath(reactor); + if (path != null) { + var param = AttributeUtils.findAttributeByName(reactor, "icon").getAttrParms().get(0); // Check file extension var validExtensions = Set.of("bmp", "png", "gif", "ico", "jpeg"); var extensionStrart = path.lastIndexOf("."); var extension = extensionStrart != -1 ? path.substring(extensionStrart + 1) : ""; if (!validExtensions.contains(extension.toLowerCase())) { warning("File extension '" + extension + "' is not supported. Provide any of: " + String.join(", ", validExtensions), - iconAttr.getAttrParms().get(0), Literals.ATTR_PARM__VALUE); + param, Literals.ATTR_PARM__VALUE); return; } // Check file location var iconLocation = FileUtil.locateFile(path, reactor.eResource()); if (iconLocation == null) { - warning("Cannot locate icon file.", iconAttr.getAttrParms().get(0), Literals.ATTR_PARM__VALUE); + warning("Cannot locate icon file.", param, Literals.ATTR_PARM__VALUE); } if (("file".equals(iconLocation.getScheme()) || iconLocation.getScheme() == null) && !(new File(iconLocation.getPath()).exists())) { - warning("Icon does not exist.", iconAttr.getAttrParms().get(0), Literals.ATTR_PARM__VALUE); + warning("Icon does not exist.", param, Literals.ATTR_PARM__VALUE); } } }