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); }