Skip to content

Commit bc7e911

Browse files
committed
use jackson
1 parent 1389351 commit bc7e911

File tree

7 files changed

+56
-43
lines changed

7 files changed

+56
-43
lines changed

generators/src/main/java/com/algolia/codegen/AlgoliaCSharpGenerator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import io.swagger.v3.oas.models.Operation;
1010
import io.swagger.v3.oas.models.servers.Server;
1111
import java.io.IOException;
12+
import java.time.temporal.ChronoUnit;
1213
import java.util.*;
1314
import org.openapitools.codegen.*;
1415
import org.openapitools.codegen.languages.CSharpClientCodegen;
@@ -134,7 +135,7 @@ private String escapeGenericForDoc(String type) {
134135
public void processOpenAPI(OpenAPI openAPI) {
135136
super.processOpenAPI(openAPI);
136137
Helpers.generateServers(super.fromServers(openAPI.getServers()), additionalProperties);
137-
Timeouts.enrichBundle((HashMap<String, Object>) openAPI.getExtensions().get("x-timeouts"), additionalProperties, 1000);
138+
Timeouts.enrichBundle(openAPI, additionalProperties, ChronoUnit.SECONDS);
138139
}
139140

140141
@Override

generators/src/main/java/com/algolia/codegen/AlgoliaJavaGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public void processOpts() {
7171
public void processOpenAPI(OpenAPI openAPI) {
7272
super.processOpenAPI(openAPI);
7373
Helpers.generateServers(super.fromServers(openAPI.getServers()), additionalProperties);
74-
Timeouts.enrichBundle((HashMap<String, Object>) openAPI.getExtensions().get("x-timeouts"), additionalProperties);
74+
Timeouts.enrichBundle(openAPI, additionalProperties);
7575
}
7676

7777
@Override

generators/src/main/java/com/algolia/codegen/AlgoliaJavascriptGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ private void setDefaultGeneratorOptions() {
203203
public void processOpenAPI(OpenAPI openAPI) {
204204
super.processOpenAPI(openAPI);
205205
Helpers.generateServers(super.fromServers(openAPI.getServers()), additionalProperties);
206-
Timeouts.enrichBundle((HashMap<String, Object>) openAPI.getExtensions().get("x-timeouts"), additionalProperties);
206+
Timeouts.enrichBundle(openAPI, additionalProperties);
207207
}
208208

209209
@Override

generators/src/main/java/com/algolia/codegen/AlgoliaPhpGenerator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import io.swagger.v3.oas.models.OpenAPI;
66
import io.swagger.v3.oas.models.Operation;
77
import io.swagger.v3.oas.models.servers.Server;
8+
import java.time.temporal.ChronoUnit;
89
import java.util.*;
910
import org.openapitools.codegen.CodegenOperation;
1011
import org.openapitools.codegen.SupportingFile;
@@ -68,7 +69,7 @@ public void processOpts() {
6869
public void processOpenAPI(OpenAPI openAPI) {
6970
super.processOpenAPI(openAPI);
7071
Helpers.generateServers(super.fromServers(openAPI.getServers()), additionalProperties);
71-
Timeouts.enrichBundle((HashMap<String, Object>) openAPI.getExtensions().get("x-timeouts"), additionalProperties, 1000);
72+
Timeouts.enrichBundle(openAPI, additionalProperties, ChronoUnit.SECONDS);
7273
}
7374

7475
@Override

generators/src/main/java/com/algolia/codegen/AlgoliaPythonGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public void processOpts() {
9494
public void processOpenAPI(OpenAPI openAPI) {
9595
super.processOpenAPI(openAPI);
9696
Helpers.generateServers(super.fromServers(openAPI.getServers()), additionalProperties);
97-
Timeouts.enrichBundle((HashMap<String, Object>) openAPI.getExtensions().get("x-timeouts"), additionalProperties);
97+
Timeouts.enrichBundle(openAPI, additionalProperties);
9898
}
9999

100100
@Override

generators/src/main/java/com/algolia/codegen/AlgoliaRubyGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public void processOpts() {
7272
public void processOpenAPI(OpenAPI openAPI) {
7373
super.processOpenAPI(openAPI);
7474
Helpers.generateServers(super.fromServers(openAPI.getServers()), additionalProperties);
75-
Timeouts.enrichBundle((HashMap<String, Object>) openAPI.getExtensions().get("x-timeouts"), additionalProperties);
75+
Timeouts.enrichBundle(openAPI, additionalProperties);
7676
}
7777

7878
@Override

generators/src/main/java/com/algolia/codegen/utils/Timeouts.java

Lines changed: 48 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,58 +2,69 @@
22

33
import com.algolia.codegen.exceptions.*;
44
import com.fasterxml.jackson.databind.*;
5+
import io.swagger.v3.oas.models.OpenAPI;
6+
import java.time.temporal.ChronoUnit;
57
import java.util.*;
68

9+
class TimeoutsValues {
10+
11+
private ChronoUnit unit = ChronoUnit.MILLIS;
12+
public long connect;
13+
public long read;
14+
public long write;
15+
16+
void toUnit(ChronoUnit unit) {
17+
if (this.unit == ChronoUnit.MILLIS && unit == ChronoUnit.SECONDS) {
18+
connect /= 1000;
19+
read /= 1000;
20+
write /= 1000;
21+
}
22+
}
23+
}
24+
25+
class TimeoutsBundle {
26+
27+
public TimeoutsValues browser = new TimeoutsValues();
28+
public TimeoutsValues server = new TimeoutsValues();
29+
}
30+
731
public class Timeouts {
832

9-
public static void enrichBundle(HashMap<String, Object> timeouts, Map<String, Object> bundle) throws ConfigException {
10-
enrichBundle(timeouts, bundle, 1);
33+
public static void enrichBundle(OpenAPI spec, Map<String, Object> bundle) throws ConfigException {
34+
enrichBundle(spec, bundle, ChronoUnit.MILLIS);
1135
}
1236

1337
/**
1438
* Inject timeouts (in miliseconds / divider) into the given bundle, under the x-timeouts property
1539
* *
1640
*/
17-
public static void enrichBundle(HashMap<String, Object> timeouts, Map<String, Object> bundle, int divider) throws ConfigException {
18-
HashMap<String, Object> xtimeouts = new HashMap<>();
41+
public static void enrichBundle(OpenAPI spec, Map<String, Object> bundle, ChronoUnit unit) throws ConfigException {
42+
TimeoutsBundle defaults = new TimeoutsBundle();
43+
// the default below are what the search API expect, which was previously used for any client
44+
defaults.browser.connect = 1000;
45+
defaults.browser.read = 2000;
46+
defaults.browser.write = 30000;
1947

20-
HashMap<String, Object> browser = new HashMap<>();
21-
HashMap<String, Object> server = new HashMap<>();
48+
defaults.server.connect = 2000;
49+
defaults.server.read = 5000;
50+
defaults.server.write = 30000;
2251

23-
if (timeouts != null) {
24-
browser = (HashMap<String, Object>) timeouts.getOrDefault("browser", new HashMap<>());
25-
server = (HashMap<String, Object>) timeouts.getOrDefault("server", new HashMap<>());
52+
TimeoutsBundle specTimeouts = new ObjectMapper().convertValue(spec.getExtensions().get("x-timeouts"), TimeoutsBundle.class);
53+
if (specTimeouts == null) {
54+
specTimeouts = new TimeoutsBundle();
55+
specTimeouts.browser = defaults.browser;
56+
specTimeouts.server = defaults.server;
2657
}
27-
28-
// the default below are what the search API expect, which was previously used for any client
29-
HashMap<String, Object> defaultBrowser = new HashMap<>();
30-
defaultBrowser.put("connect", 1000);
31-
defaultBrowser.put("read", 2000);
32-
defaultBrowser.put("write", 30000);
33-
34-
HashMap<String, Object> defaultServer = new HashMap<>();
35-
defaultServer.put("connect", 2000);
36-
defaultServer.put("read", 5000);
37-
defaultServer.put("write", 30000);
38-
39-
if (browser == null) {
40-
xtimeouts.put("browser", defaultBrowser);
41-
} else {
42-
browser.put("connect", ((int) browser.getOrDefault("connect", defaultBrowser.get("connect"))) / divider);
43-
browser.put("read", ((int) browser.getOrDefault("read", defaultBrowser.get("read"))) / divider);
44-
browser.put("write", ((int) browser.getOrDefault("write", defaultBrowser.get("write"))) / divider);
45-
xtimeouts.put("browser", browser);
58+
if (specTimeouts.browser == null) {
59+
specTimeouts.browser = defaults.browser;
4660
}
47-
48-
if (server == null) {
49-
xtimeouts.put("server", defaultServer);
50-
} else {
51-
server.put("connect", ((int) server.getOrDefault("connect", defaultServer.get("connect"))) / divider);
52-
server.put("read", ((int) server.getOrDefault("read", defaultServer.get("read"))) / divider);
53-
server.put("write", ((int) server.getOrDefault("write", defaultServer.get("write"))) / divider);
54-
xtimeouts.put("server", server);
61+
if (specTimeouts.server == null) {
62+
specTimeouts.server = defaults.server;
5563
}
5664

57-
bundle.put("x-timeouts", xtimeouts);
65+
specTimeouts.browser.toUnit(unit);
66+
specTimeouts.server.toUnit(unit);
67+
68+
bundle.put("x-timeouts", specTimeouts);
5869
}
5970
}

0 commit comments

Comments
 (0)