From e8b25a5f0ce39c3333dda6e1adb58e10b9dd3d22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Mart=C3=ADn=20Sotuyo=20Dodero?= Date: Tue, 7 May 2024 19:58:01 -0300 Subject: [PATCH] Properly stringify collection attributes - Show them as proper XPath sequences --- .../pmd/util/fxdesigner/util/DesignerUtil.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/DesignerUtil.java b/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/DesignerUtil.java index 01d5948b..9eba00a1 100644 --- a/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/DesignerUtil.java +++ b/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/DesignerUtil.java @@ -8,6 +8,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; @@ -411,14 +412,21 @@ public static BuilderFactory customBuilderFactory(@NonNull DesignerRoot owner) { public static String attrToXpathString(Attribute attr) { - String stringValue = attr.getStringValue(); - Object v = attr.getValue(); + return valueToXPathString(attr.getValue(), attr.getStringValue()); + } + + private static String valueToXPathString(Object v, String stringValue) { if (v instanceof String || v instanceof Enum) { - stringValue = "\"" + StringEscapeUtils.escapeJava(stringValue) + "\""; + return "\"" + StringEscapeUtils.escapeJava(stringValue) + "\""; } else if (v instanceof Boolean) { - stringValue = v + "()"; + return v + "()"; + } else if (v instanceof Collection) { + return ((Collection) v).stream() + .map(o -> valueToXPathString(o, String.valueOf(o))) + .collect(Collectors.joining(", ", "(", ")")); } - return String.valueOf(stringValue); + + return String.valueOf(v); }