From 37b72c044abdb4ca5ab0630672f4876336f7e28c Mon Sep 17 00:00:00 2001 From: Filip Date: Thu, 11 Jul 2024 02:27:40 +0200 Subject: [PATCH] Improve DidUrl.toUri() method implementation --- src/main/java/com/apicatalog/did/DidUrl.java | 36 +++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/apicatalog/did/DidUrl.java b/src/main/java/com/apicatalog/did/DidUrl.java index 1cb99f9..c1f4604 100644 --- a/src/main/java/com/apicatalog/did/DidUrl.java +++ b/src/main/java/com/apicatalog/did/DidUrl.java @@ -117,7 +117,12 @@ public static boolean isDidUrl(final String uri) { @Override public URI toUri() { try { - return new URI(SCHEME, method + ":" + specificId, path, query, fragment); + return new URI(SCHEME, + appendPathQuery(new StringBuilder() + .append(method) + .append(':') + .append(specificId)).toString(), + fragment); } catch (URISyntaxException e) { throw new IllegalStateException(e); } @@ -137,6 +142,21 @@ public DidUrl asDidUrl() { public String toString() { final StringBuilder builder = new StringBuilder(super.toString()); + appendPathQuery(builder); + + if (fragment != null) { + if (fragment.length() == 0 || fragment.charAt(0) != '#') { + builder.append('#'); + } + if (fragment.length() > 0) { + builder.append(fragment); + } + } + + return builder.toString(); + } + + protected StringBuilder appendPathQuery(final StringBuilder builder) { if (path != null) { if (path.length() == 0 || path.charAt(0) != '/') { builder.append('/'); @@ -151,20 +171,10 @@ public String toString() { builder.append('?'); } if (query.length() > 0) { - builder.append(query); - } - } - - if (fragment != null) { - if (fragment.length() == 0 || fragment.charAt(0) != '#') { - builder.append('#'); - } - if (fragment.length() > 0) { - builder.append(fragment); + builder.append(query); } } - - return builder.toString(); + return builder; } @Override