Skip to content

Commit cdeec96

Browse files
committed
Improve passing of resolver options
1 parent 00153db commit cdeec96

File tree

5 files changed

+147
-5
lines changed

5 files changed

+147
-5
lines changed

openapi-godiddy-api/openapi.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2349,10 +2349,16 @@ components:
23492349
schemas:
23502350
ResolveGetQuery:
23512351
oneOf:
2352+
- type: object
2353+
additionalProperties:
2354+
type: object
23522355
- $ref: "#/components/schemas/ResolutionOptions"
23532356
- $ref: "#/components/schemas/DereferencingOptions"
23542357
ResolvePostBody:
23552358
oneOf:
2359+
- type: object
2360+
additionalProperties:
2361+
type: object
23562362
- $ref: "#/components/schemas/ResolutionOptions"
23572363
- $ref: "#/components/schemas/DereferencingOptions"
23582364
ResolutionOptions:

src/main/java/com/godiddy/cli/commands/registrar/UpdateCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public Integer call() throws Exception {
157157
List<DidDocument> didDocument = Collections.singletonList(Api.fromJson(this.didDocument, DidDocument.class));
158158

159159
if (Boolean.TRUE.equals(this.resolve)) {
160-
Object result = Api.execute(() -> Api.universalResolverApi().resolveGetWithHttpInfo(this.did, "application/did+ld+json", new ResolveGetQuery(new ResolutionOptions())));
160+
Object result = Api.execute(() -> Api.universalResolverApi().resolveGetWithHttpInfo(this.did, "application/did+ld+json", new ResolveGetQuery(Collections.emptyMap())));
161161
didDocument = Collections.singletonList(Api.convert(result, DidDocument.class));
162162
}
163163

src/main/java/com/godiddy/cli/commands/resolver/ResolveCommand.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.godiddy.cli.commands.resolver;
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import com.godiddy.api.client.openapi.model.ResolutionOptions;
54
import com.godiddy.api.client.openapi.model.ResolveGetQuery;
65
import com.godiddy.api.client.openapi.model.ResolvePostBody;
76
import com.godiddy.cli.GodiddyAbstractCommand;
@@ -14,6 +13,7 @@
1413
import picocli.CommandLine.Parameters;
1514
import uniresolver.result.ResolveResult;
1615

16+
import java.util.LinkedHashMap;
1717
import java.util.Map;
1818
import java.util.concurrent.Callable;
1919

@@ -61,9 +61,9 @@ public Integer call() throws Exception {
6161
String identifier = this.identifier;
6262
String accept = Boolean.TRUE.equals(this.result) ? ResolveResult.MEDIA_TYPE : Representations.DEFAULT_MEDIA_TYPE;
6363

64-
ResolutionOptions resolutionOptions = new ResolutionOptions();
65-
if (this.post != null && this.post.startsWith("{")) ((Map<String, Object>) objectMapper.readValue(this.post, Map.class)).forEach(resolutionOptions::putAdditionalProperty);
66-
if (this.options != null) this.options.forEach(resolutionOptions::putAdditionalProperty);
64+
Map<String, Object> resolutionOptions = new LinkedHashMap<>();
65+
if (this.post != null && this.post.startsWith("{")) ((Map<String, Object>) objectMapper.readValue(this.post, Map.class)).forEach(resolutionOptions::put);
66+
if (this.options != null) this.options.forEach(resolutionOptions::put);
6767

6868
// execute
6969

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
--- src/main/java/com/godiddy/api/client/openapi/model/ResolveGetQuery.java 2026-01-19 14:00:12.159445907 +0100
2+
+++ src/main/java/com/godiddy/api/client/openapi/model/ResolveGetQuery.java.changed 2026-01-19 14:04:24.063072670 +0100
3+
@@ -125,17 +125,17 @@
4+
try {
5+
boolean attemptParsing = true;
6+
// ensure that we respect type coercion as set on the client ObjectMapper
7+
- if (Map<String, Object>.class.equals(Integer.class) || Map<String, Object>.class.equals(Long.class) || Map<String, Object>.class.equals(Float.class) || Map<String, Object>.class.equals(Double.class) || Map<String, Object>.class.equals(Boolean.class) || Map<String, Object>.class.equals(String.class)) {
8+
+ if (Map.class.equals(Integer.class) || Map.class.equals(Long.class) || Map.class.equals(Float.class) || Map.class.equals(Double.class) || Map.class.equals(Boolean.class) || Map.class.equals(String.class)) {
9+
attemptParsing = typeCoercion;
10+
if (!attemptParsing) {
11+
- attemptParsing |= ((Map<String, Object>.class.equals(Integer.class) || Map<String, Object>.class.equals(Long.class)) && token == JsonToken.VALUE_NUMBER_INT);
12+
- attemptParsing |= ((Map<String, Object>.class.equals(Float.class) || Map<String, Object>.class.equals(Double.class)) && token == JsonToken.VALUE_NUMBER_FLOAT);
13+
- attemptParsing |= (Map<String, Object>.class.equals(Boolean.class) && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
14+
- attemptParsing |= (Map<String, Object>.class.equals(String.class) && token == JsonToken.VALUE_STRING);
15+
+ attemptParsing |= ((Map.class.equals(Integer.class) || Map.class.equals(Long.class)) && token == JsonToken.VALUE_NUMBER_INT);
16+
+ attemptParsing |= ((Map.class.equals(Float.class) || Map.class.equals(Double.class)) && token == JsonToken.VALUE_NUMBER_FLOAT);
17+
+ attemptParsing |= (Map.class.equals(Boolean.class) && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
18+
+ attemptParsing |= (Map.class.equals(String.class) && token == JsonToken.VALUE_STRING);
19+
}
20+
}
21+
if (attemptParsing) {
22+
- deserialized = tree.traverse(jp.getCodec()).readValueAs(Map<String, Object>.class);
23+
+ deserialized = tree.traverse(jp.getCodec()).readValueAs(Map.class);
24+
// TODO: there is no validation against JSON schema constraints
25+
// (min, max, enum, pattern...), this does not perform a strict JSON
26+
// validation, which means the 'match' count may be higher than it should be.
27+
@@ -214,7 +214,7 @@
28+
29+
static {
30+
schemas.put("DereferencingOptions", DereferencingOptions.class);
31+
- schemas.put("Map<String, Object>", Map<String, Object>.class);
32+
+ schemas.put("Map<String, Object>", Map.class);
33+
schemas.put("ResolutionOptions", ResolutionOptions.class);
34+
JSON.registerDescendants(ResolveGetQuery.class, Collections.unmodifiableMap(schemas));
35+
}
36+
@@ -239,7 +239,7 @@
37+
return;
38+
}
39+
40+
- if (JSON.isInstanceOf(Map<String, Object>.class, instance, new HashSet<Class<?>>())) {
41+
+ if (JSON.isInstanceOf(Map.class, instance, new HashSet<Class<?>>())) {
42+
super.setActualInstance(instance);
43+
return;
44+
}
45+
@@ -281,7 +281,7 @@
46+
* @return The actual instance of `Map<String, Object>`
47+
* @throws ClassCastException if the instance is not `Map<String, Object>`
48+
*/
49+
- public Map<String, Object> getMap<String, Object>() throws ClassCastException {
50+
+ public Map<String, Object> getMap() throws ClassCastException {
51+
return (Map<String, Object>)super.getActualInstance();
52+
}
53+
54+
@@ -330,12 +330,12 @@
55+
56+
StringJoiner joiner = new StringJoiner("&");
57+
58+
- if (getActualInstance() instanceof Map<String, Object>) {
59+
+ if (getActualInstance() instanceof Map) {
60+
if (getActualInstance() != null) {
61+
for (String _key : ((Map<String, Object>)getActualInstance()).keySet()) {
62+
joiner.add(String.format(java.util.Locale.ROOT, "%sone_of_0%s%s=%s", prefix, suffix,
63+
"".equals(suffix) ? "" : String.format(java.util.Locale.ROOT, "%s%d%s", containerPrefix, _key, containerSuffix),
64+
- getActualInstance().get(_key), ApiClient.urlEncode(String.valueOf(((Map<String, Object>)getActualInstance()).get(_key)))));
65+
+ ((Map<String, Object>)getActualInstance()).get(_key), ApiClient.urlEncode(String.valueOf(((Map<String, Object>)getActualInstance()).get(_key)))));
66+
}
67+
}
68+
return joiner.toString();
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
--- src/main/java/com/godiddy/api/client/openapi/model/ResolvePostBody.java 2026-01-19 14:00:12.159445907 +0100
2+
+++ src/main/java/com/godiddy/api/client/openapi/model/ResolvePostBody.java.changed 2026-01-19 14:04:24.063072670 +0100
3+
@@ -125,17 +125,17 @@
4+
try {
5+
boolean attemptParsing = true;
6+
// ensure that we respect type coercion as set on the client ObjectMapper
7+
- if (Map<String, Object>.class.equals(Integer.class) || Map<String, Object>.class.equals(Long.class) || Map<String, Object>.class.equals(Float.class) || Map<String, Object>.class.equals(Double.class) || Map<String, Object>.class.equals(Boolean.class) || Map<String, Object>.class.equals(String.class)) {
8+
+ if (Map.class.equals(Integer.class) || Map.class.equals(Long.class) || Map.class.equals(Float.class) || Map.class.equals(Double.class) || Map.class.equals(Boolean.class) || Map.class.equals(String.class)) {
9+
attemptParsing = typeCoercion;
10+
if (!attemptParsing) {
11+
- attemptParsing |= ((Map<String, Object>.class.equals(Integer.class) || Map<String, Object>.class.equals(Long.class)) && token == JsonToken.VALUE_NUMBER_INT);
12+
- attemptParsing |= ((Map<String, Object>.class.equals(Float.class) || Map<String, Object>.class.equals(Double.class)) && token == JsonToken.VALUE_NUMBER_FLOAT);
13+
- attemptParsing |= (Map<String, Object>.class.equals(Boolean.class) && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
14+
- attemptParsing |= (Map<String, Object>.class.equals(String.class) && token == JsonToken.VALUE_STRING);
15+
+ attemptParsing |= ((Map.class.equals(Integer.class) || Map.class.equals(Long.class)) && token == JsonToken.VALUE_NUMBER_INT);
16+
+ attemptParsing |= ((Map.class.equals(Float.class) || Map.class.equals(Double.class)) && token == JsonToken.VALUE_NUMBER_FLOAT);
17+
+ attemptParsing |= (Map.class.equals(Boolean.class) && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
18+
+ attemptParsing |= (Map.class.equals(String.class) && token == JsonToken.VALUE_STRING);
19+
}
20+
}
21+
if (attemptParsing) {
22+
- deserialized = tree.traverse(jp.getCodec()).readValueAs(Map<String, Object>.class);
23+
+ deserialized = tree.traverse(jp.getCodec()).readValueAs(Map.class);
24+
// TODO: there is no validation against JSON schema constraints
25+
// (min, max, enum, pattern...), this does not perform a strict JSON
26+
// validation, which means the 'match' count may be higher than it should be.
27+
@@ -214,7 +214,7 @@
28+
29+
static {
30+
schemas.put("DereferencingOptions", DereferencingOptions.class);
31+
- schemas.put("Map<String, Object>", Map<String, Object>.class);
32+
+ schemas.put("Map<String, Object>", Map.class);
33+
schemas.put("ResolutionOptions", ResolutionOptions.class);
34+
JSON.registerDescendants(ResolvePostBody.class, Collections.unmodifiableMap(schemas));
35+
}
36+
@@ -239,7 +239,7 @@
37+
return;
38+
}
39+
40+
- if (JSON.isInstanceOf(Map<String, Object>.class, instance, new HashSet<Class<?>>())) {
41+
+ if (JSON.isInstanceOf(Map.class, instance, new HashSet<Class<?>>())) {
42+
super.setActualInstance(instance);
43+
return;
44+
}
45+
@@ -281,7 +281,7 @@
46+
* @return The actual instance of `Map<String, Object>`
47+
* @throws ClassCastException if the instance is not `Map<String, Object>`
48+
*/
49+
- public Map<String, Object> getMap<String, Object>() throws ClassCastException {
50+
+ public Map<String, Object> getMap() throws ClassCastException {
51+
return (Map<String, Object>)super.getActualInstance();
52+
}
53+
54+
@@ -330,12 +330,12 @@
55+
56+
StringJoiner joiner = new StringJoiner("&");
57+
58+
- if (getActualInstance() instanceof Map<String, Object>) {
59+
+ if (getActualInstance() instanceof Map) {
60+
if (getActualInstance() != null) {
61+
for (String _key : ((Map<String, Object>)getActualInstance()).keySet()) {
62+
joiner.add(String.format(java.util.Locale.ROOT, "%sone_of_0%s%s=%s", prefix, suffix,
63+
"".equals(suffix) ? "" : String.format(java.util.Locale.ROOT, "%s%d%s", containerPrefix, _key, containerSuffix),
64+
- getActualInstance().get(_key), ApiClient.urlEncode(String.valueOf(((Map<String, Object>)getActualInstance()).get(_key)))));
65+
+ ((Map<String, Object>)getActualInstance()).get(_key), ApiClient.urlEncode(String.valueOf(((Map<String, Object>)getActualInstance()).get(_key)))));
66+
}
67+
}
68+
return joiner.toString();

0 commit comments

Comments
 (0)