|
32 | 32 | import java.util.Collections; |
33 | 33 | import java.util.Map; |
34 | 34 | import java.util.Objects; |
| 35 | +import java.util.Set; |
35 | 36 | import java.util.TreeMap; |
36 | 37 | import java.util.function.IntPredicate; |
37 | 38 | import java.util.stream.Collectors; |
@@ -470,28 +471,33 @@ public String canonicalize() { |
470 | 471 | */ |
471 | 472 | private String canonicalize(boolean coordinatesOnly) { |
472 | 473 | final StringBuilder purl = new StringBuilder(); |
473 | | - purl.append(SCHEME_PART).append(type).append("/"); |
| 474 | + purl.append(SCHEME_PART).append(type).append('/'); |
474 | 475 | if (namespace != null) { |
475 | 476 | purl.append(encodePath(namespace)); |
476 | | - purl.append("/"); |
| 477 | + purl.append('/'); |
477 | 478 | } |
478 | 479 | purl.append(percentEncode(name)); |
479 | 480 | if (version != null) { |
480 | | - purl.append("@").append(percentEncode(version)); |
| 481 | + purl.append('@').append(percentEncode(version)); |
481 | 482 | } |
482 | | - if (! coordinatesOnly) { |
| 483 | + |
| 484 | + if (!coordinatesOnly) { |
483 | 485 | if (qualifiers != null) { |
484 | | - purl.append("?"); |
485 | | - qualifiers.forEach((key, value) -> { |
486 | | - purl.append(toLowerCase(key)); |
487 | | - purl.append("="); |
488 | | - purl.append(percentEncode(value)); |
489 | | - purl.append("&"); |
490 | | - }); |
491 | | - purl.setLength(purl.length() - 1); |
| 486 | + purl.append('?'); |
| 487 | + Set<Map.Entry<String, String>> entries = qualifiers.entrySet(); |
| 488 | + boolean separator = false; |
| 489 | + for (Map.Entry<String, String> entry : entries) { |
| 490 | + if (separator) { |
| 491 | + purl.append('&'); |
| 492 | + } |
| 493 | + purl.append(entry.getKey()); |
| 494 | + purl.append('='); |
| 495 | + purl.append(percentEncode(entry.getValue())); |
| 496 | + separator = true; |
| 497 | + } |
492 | 498 | } |
493 | 499 | if (subpath != null) { |
494 | | - purl.append("#").append(encodePath(subpath)); |
| 500 | + purl.append('#').append(encodePath(subpath)); |
495 | 501 | } |
496 | 502 | } |
497 | 503 | return purl.toString(); |
|
0 commit comments