|
8 | 8 | import java.net.URL; |
9 | 9 | import java.util.ArrayList; |
10 | 10 | import java.util.Arrays; |
| 11 | +import java.util.Collection; |
11 | 12 | import java.util.Collections; |
12 | 13 | import java.util.HashSet; |
13 | 14 | import java.util.LinkedHashSet; |
@@ -411,14 +412,21 @@ public static BuilderFactory customBuilderFactory(@NonNull DesignerRoot owner) { |
411 | 412 |
|
412 | 413 |
|
413 | 414 | public static String attrToXpathString(Attribute attr) { |
414 | | - String stringValue = attr.getStringValue(); |
415 | | - Object v = attr.getValue(); |
| 415 | + return valueToXPathString(attr.getValue(), attr.getStringValue()); |
| 416 | + } |
| 417 | + |
| 418 | + private static String valueToXPathString(Object v, String stringValue) { |
416 | 419 | if (v instanceof String || v instanceof Enum) { |
417 | | - stringValue = "\"" + StringEscapeUtils.escapeJava(stringValue) + "\""; |
| 420 | + return "\"" + StringEscapeUtils.escapeJava(stringValue) + "\""; |
418 | 421 | } else if (v instanceof Boolean) { |
419 | | - stringValue = v + "()"; |
| 422 | + return v + "()"; |
| 423 | + } else if (v instanceof Collection) { |
| 424 | + return ((Collection<?>) v).stream() |
| 425 | + .map(o -> valueToXPathString(o, String.valueOf(o))) |
| 426 | + .collect(Collectors.joining(", ", "(", ")")); |
420 | 427 | } |
421 | | - return String.valueOf(stringValue); |
| 428 | + |
| 429 | + return String.valueOf(v); |
422 | 430 | } |
423 | 431 |
|
424 | 432 |
|
|
0 commit comments