Skip to content

Commit

Permalink
Improve DidUrl.toUri() method implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
filip26 committed Jul 11, 2024
1 parent f195fbe commit 37b72c0
Showing 1 changed file with 23 additions and 13 deletions.
36 changes: 23 additions & 13 deletions src/main/java/com/apicatalog/did/DidUrl.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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('/');
Expand All @@ -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
Expand Down

0 comments on commit 37b72c0

Please sign in to comment.