Skip to content
This repository was archived by the owner on Dec 25, 2024. It is now read-only.

Commit e13a2f9

Browse files
committed
Adds query and header serializers
1 parent 833ec6e commit e13a2f9

File tree

36 files changed

+359
-266
lines changed

36 files changed

+359
-266
lines changed

samples/client/petstore/java/.openapi-generator/FILES

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,10 +558,12 @@ src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java
558558
src/main/java/org/openapijsonschematools/client/mediatype/Encoding.java
559559
src/main/java/org/openapijsonschematools/client/mediatype/MediaType.java
560560
src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java
561+
src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java
561562
src/main/java/org/openapijsonschematools/client/parameter/Parameter.java
562563
src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java
563564
src/main/java/org/openapijsonschematools/client/parameter/ParameterInType.java
564565
src/main/java/org/openapijsonschematools/client/parameter/ParameterStyle.java
566+
src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java
565567
src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java
566568
src/main/java/org/openapijsonschematools/client/paths/anotherfakedummy/patch/RequestBody.java
567569
src/main/java/org/openapijsonschematools/client/paths/anotherfakedummy/patch/Responses.java

samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ public ContentParameter(String name, ParameterInType inType, boolean required, @
1717
this.content = content;
1818
}
1919

20-
public AbstractMap.SimpleEntry<String, String> serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) {
20+
public AbstractMap.SimpleEntry<String, String> serialize(@Nullable Object inData) {
2121
for (Map.Entry<String, MediaType<?, ?>> entry: content.entrySet()) {
22-
var castInData = validate ? entry.getValue().schema().validate(inData, configuration) : inData ;
2322
String contentType = entry.getKey();
2423
if (ContentTypeDetector.contentTypeIsJson(contentType)) {
25-
var value = ContentTypeSerializer.toJson(castInData);
24+
var value = ContentTypeSerializer.toJson(inData);
2625
return new AbstractMap.SimpleEntry<>(name, value);
2726
} else {
2827
throw new RuntimeException("Serialization of "+contentType+" has not yet been implemented");
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package org.openapijsonschematools.client.parameter;
2+
3+
import org.checkerframework.checker.nullness.qual.Nullable;
4+
5+
import java.util.AbstractMap;
6+
import java.util.LinkedHashMap;
7+
import java.util.Map;
8+
9+
public abstract class QuerySerializer {
10+
private final Map<String, Parameter> parameters;
11+
12+
protected QuerySerializer(Map<String, Parameter> parameters) {
13+
this.parameters = parameters;
14+
}
15+
16+
public Map<String, String> getQueryMap(Map<String, ?> inData) {
17+
Map<String, String> results = new LinkedHashMap<>();
18+
for (Map.Entry<String, ?> entry: inData.entrySet()) {
19+
String mapKey = entry.getKey();
20+
@Nullable Object value = entry.getValue();
21+
@Nullable Parameter parameter = parameters.get(mapKey);
22+
if (parameter == null) {
23+
throw new RuntimeException("Invalid state, a parameter must exist for every key");
24+
}
25+
AbstractMap.SimpleEntry<String, String> serialized = parameter.serialize(inData);
26+
results.put(serialized.getKey(), serialized.getValue());
27+
}
28+
return results;
29+
}
30+
31+
public String serialize(Map<String, String> queryMap) {
32+
if (queryMap.isEmpty()) {
33+
return "";
34+
}
35+
String result = "?";
36+
for (String serializedValue: queryMap.values()) {
37+
if (result.length() == 1) {
38+
result = result + serializedValue;
39+
} else {
40+
result = result + "&" + serializedValue;
41+
}
42+
}
43+
// TODO what if the style is not FORM?
44+
return result;
45+
}
46+
}

samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,30 +26,29 @@ private ParameterStyle getStyle() {
2626
return ParameterStyle.SIMPLE;
2727
}
2828

29-
public AbstractMap.SimpleEntry<String, String> serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) {
30-
var castInData = validate ? schema.validate(inData, configuration) : inData;
29+
public AbstractMap.SimpleEntry<String, String> serialize(@Nullable Object inData) {
3130
ParameterStyle usedStyle = getStyle();
3231
boolean percentEncode = inType == ParameterInType.QUERY || inType == ParameterInType.PATH;
3332
String value;
3433
boolean usedExplode = explode == null ? usedStyle == ParameterStyle.FORM : explode;
3534
if (usedStyle == ParameterStyle.SIMPLE) {
3635
// header OR path
37-
value = StyleSerializer.serializeSimple(castInData, name, usedExplode, percentEncode);
36+
value = StyleSerializer.serializeSimple(inData, name, usedExplode, percentEncode);
3837
} else if (usedStyle == ParameterStyle.FORM) {
3938
// query OR cookie
40-
value = StyleSerializer.serializeForm(castInData, name, usedExplode, percentEncode);
39+
value = StyleSerializer.serializeForm(inData, name, usedExplode, percentEncode);
4140
} else if (usedStyle == ParameterStyle.LABEL) {
4241
// path
43-
value = StyleSerializer.serializeLabel(castInData, name, usedExplode);
42+
value = StyleSerializer.serializeLabel(inData, name, usedExplode);
4443
} else if (usedStyle == ParameterStyle.MATRIX) {
4544
// path
46-
value = StyleSerializer.serializeMatrix(castInData, name, usedExplode);
45+
value = StyleSerializer.serializeMatrix(inData, name, usedExplode);
4746
} else if (usedStyle == ParameterStyle.SPACE_DELIMITED) {
4847
// query
49-
value = StyleSerializer.serializeSpaceDelimited(castInData, name, usedExplode);
48+
value = StyleSerializer.serializeSpaceDelimited(inData, name, usedExplode);
5049
} else if (usedStyle == ParameterStyle.PIPE_DELIMITED) {
5150
// query
52-
value = StyleSerializer.serializePipeDelimited(castInData, name, usedExplode);
51+
value = StyleSerializer.serializePipeDelimited(inData, name, usedExplode);
5352
} else {
5453
// usedStyle == ParameterStyle.DEEP_OBJECT
5554
// query

samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/Parameters.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,19 @@
22

33
import org.openapijsonschematools.client.paths.commonparamsubdir.delete.parameters.Parameter0;
44
import org.openapijsonschematools.client.paths.commonparamsubdir.delete.parameters.Parameter1;
5+
import org.openapijsonschematools.client.parameter.HeadersSerializer;
6+
57
import org.openapijsonschematools.client.parameter.Parameter;
68

79
import java.util.Map;
810
import java.util.AbstractMap;
911

1012
public class Parameters {
1113

12-
public static class PathParametersDeserializer {
14+
public static class PathParametersSerializer {
1315
Map<String, Parameter> parameters;
1416

15-
public PathParametersDeserializer() {
17+
public PathParametersSerializer() {
1618
parameters = Map.ofEntries(
1719
new AbstractMap.SimpleEntry<>("subDir", new Parameter1.Parameter11())
1820
);
@@ -21,15 +23,13 @@ public PathParametersDeserializer() {
2123
// deserialize PathParameters
2224
}
2325

24-
public static class HeaderParametersDeserializer {
25-
Map<String, Parameter> parameters;
26-
27-
public HeaderParametersDeserializer() {
28-
parameters = Map.ofEntries(
29-
new AbstractMap.SimpleEntry<>("someHeader", new Parameter0.Parameter01())
26+
public static class HeaderParametersSerializer extends HeadersSerializer {
27+
public HeaderParametersSerializer() {
28+
super(
29+
Map.ofEntries(
30+
new AbstractMap.SimpleEntry<>("someHeader", new Parameter0.Parameter01())
31+
)
3032
);
3133
}
32-
33-
// HeaderParameters
3434
}
3535
}

samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/Parameters.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,19 @@
22

33
import org.openapijsonschematools.client.paths.commonparamsubdir.parameters.RouteParameter0;
44
import org.openapijsonschematools.client.paths.commonparamsubdir.get.parameters.Parameter0;
5+
import org.openapijsonschematools.client.parameter.QuerySerializer;
6+
57
import org.openapijsonschematools.client.parameter.Parameter;
68

79
import java.util.Map;
810
import java.util.AbstractMap;
911

1012
public class Parameters {
1113

12-
public static class PathParametersDeserializer {
14+
public static class PathParametersSerializer {
1315
Map<String, Parameter> parameters;
1416

15-
public PathParametersDeserializer() {
17+
public PathParametersSerializer() {
1618
parameters = Map.ofEntries(
1719
new AbstractMap.SimpleEntry<>("subDir", new RouteParameter0.RouteParameter01())
1820
);
@@ -21,15 +23,13 @@ public PathParametersDeserializer() {
2123
// deserialize PathParameters
2224
}
2325

24-
public static class QueryParametersDeserializer {
25-
Map<String, Parameter> parameters;
26-
27-
public QueryParametersDeserializer() {
28-
parameters = Map.ofEntries(
29-
new AbstractMap.SimpleEntry<>("searchStr", new Parameter0.Parameter01())
26+
public static class QueryParametersSerializer extends QuerySerializer {
27+
public QueryParametersSerializer() {
28+
super(
29+
Map.ofEntries(
30+
new AbstractMap.SimpleEntry<>("searchStr", new Parameter0.Parameter01())
31+
)
3032
);
3133
}
32-
33-
// QueryParameters
3434
}
3535
}

samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/Parameters.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,19 @@
22

33
import org.openapijsonschematools.client.paths.commonparamsubdir.parameters.RouteParameter0;
44
import org.openapijsonschematools.client.paths.commonparamsubdir.post.parameters.Parameter0;
5+
import org.openapijsonschematools.client.parameter.HeadersSerializer;
6+
57
import org.openapijsonschematools.client.parameter.Parameter;
68

79
import java.util.Map;
810
import java.util.AbstractMap;
911

1012
public class Parameters {
1113

12-
public static class PathParametersDeserializer {
14+
public static class PathParametersSerializer {
1315
Map<String, Parameter> parameters;
1416

15-
public PathParametersDeserializer() {
17+
public PathParametersSerializer() {
1618
parameters = Map.ofEntries(
1719
new AbstractMap.SimpleEntry<>("subDir", new RouteParameter0.RouteParameter01())
1820
);
@@ -21,15 +23,13 @@ public PathParametersDeserializer() {
2123
// deserialize PathParameters
2224
}
2325

24-
public static class HeaderParametersDeserializer {
25-
Map<String, Parameter> parameters;
26-
27-
public HeaderParametersDeserializer() {
28-
parameters = Map.ofEntries(
29-
new AbstractMap.SimpleEntry<>("someHeader", new Parameter0.Parameter01())
26+
public static class HeaderParametersSerializer extends HeadersSerializer {
27+
public HeaderParametersSerializer() {
28+
super(
29+
Map.ofEntries(
30+
new AbstractMap.SimpleEntry<>("someHeader", new Parameter0.Parameter01())
31+
)
3032
);
3133
}
32-
33-
// HeaderParameters
3434
}
3535
}

samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/Parameters.java

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,37 @@
66
import org.openapijsonschematools.client.paths.fake.delete.parameters.Parameter3;
77
import org.openapijsonschematools.client.paths.fake.delete.parameters.Parameter4;
88
import org.openapijsonschematools.client.paths.fake.delete.parameters.Parameter5;
9+
import org.openapijsonschematools.client.parameter.HeadersSerializer;
10+
import org.openapijsonschematools.client.parameter.QuerySerializer;
11+
912
import org.openapijsonschematools.client.parameter.Parameter;
1013

1114
import java.util.Map;
1215
import java.util.AbstractMap;
1316

1417
public class Parameters {
1518

16-
public static class QueryParametersDeserializer {
17-
Map<String, Parameter> parameters;
18-
19-
public QueryParametersDeserializer() {
20-
parameters = Map.ofEntries(
21-
new AbstractMap.SimpleEntry<>("required_string_group", new Parameter0.Parameter01()),
22-
new AbstractMap.SimpleEntry<>("required_int64_group", new Parameter2.Parameter21()),
23-
new AbstractMap.SimpleEntry<>("string_group", new Parameter3.Parameter31()),
24-
new AbstractMap.SimpleEntry<>("int64_group", new Parameter5.Parameter51())
19+
public static class QueryParametersSerializer extends QuerySerializer {
20+
public QueryParametersSerializer() {
21+
super(
22+
Map.ofEntries(
23+
new AbstractMap.SimpleEntry<>("required_string_group", new Parameter0.Parameter01()),
24+
new AbstractMap.SimpleEntry<>("required_int64_group", new Parameter2.Parameter21()),
25+
new AbstractMap.SimpleEntry<>("string_group", new Parameter3.Parameter31()),
26+
new AbstractMap.SimpleEntry<>("int64_group", new Parameter5.Parameter51())
27+
)
2528
);
2629
}
27-
28-
// QueryParameters
2930
}
3031

31-
public static class HeaderParametersDeserializer {
32-
Map<String, Parameter> parameters;
33-
34-
public HeaderParametersDeserializer() {
35-
parameters = Map.ofEntries(
36-
new AbstractMap.SimpleEntry<>("required_boolean_group", new Parameter1.Parameter11()),
37-
new AbstractMap.SimpleEntry<>("boolean_group", new Parameter4.Parameter41())
32+
public static class HeaderParametersSerializer extends HeadersSerializer {
33+
public HeaderParametersSerializer() {
34+
super(
35+
Map.ofEntries(
36+
new AbstractMap.SimpleEntry<>("required_boolean_group", new Parameter1.Parameter11()),
37+
new AbstractMap.SimpleEntry<>("boolean_group", new Parameter4.Parameter41())
38+
)
3839
);
3940
}
40-
41-
// HeaderParameters
4241
}
4342
}

samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/Parameters.java

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,37 @@
66
import org.openapijsonschematools.client.paths.fake.get.parameters.Parameter3;
77
import org.openapijsonschematools.client.paths.fake.get.parameters.Parameter4;
88
import org.openapijsonschematools.client.paths.fake.get.parameters.Parameter5;
9+
import org.openapijsonschematools.client.parameter.HeadersSerializer;
10+
import org.openapijsonschematools.client.parameter.QuerySerializer;
11+
912
import org.openapijsonschematools.client.parameter.Parameter;
1013

1114
import java.util.Map;
1215
import java.util.AbstractMap;
1316

1417
public class Parameters {
1518

16-
public static class QueryParametersDeserializer {
17-
Map<String, Parameter> parameters;
18-
19-
public QueryParametersDeserializer() {
20-
parameters = Map.ofEntries(
21-
new AbstractMap.SimpleEntry<>("enum_query_string_array", new Parameter2.Parameter21()),
22-
new AbstractMap.SimpleEntry<>("enum_query_string", new Parameter3.Parameter31()),
23-
new AbstractMap.SimpleEntry<>("enum_query_integer", new Parameter4.Parameter41()),
24-
new AbstractMap.SimpleEntry<>("enum_query_double", new Parameter5.Parameter51())
19+
public static class QueryParametersSerializer extends QuerySerializer {
20+
public QueryParametersSerializer() {
21+
super(
22+
Map.ofEntries(
23+
new AbstractMap.SimpleEntry<>("enum_query_string_array", new Parameter2.Parameter21()),
24+
new AbstractMap.SimpleEntry<>("enum_query_string", new Parameter3.Parameter31()),
25+
new AbstractMap.SimpleEntry<>("enum_query_integer", new Parameter4.Parameter41()),
26+
new AbstractMap.SimpleEntry<>("enum_query_double", new Parameter5.Parameter51())
27+
)
2528
);
2629
}
27-
28-
// QueryParameters
2930
}
3031

31-
public static class HeaderParametersDeserializer {
32-
Map<String, Parameter> parameters;
33-
34-
public HeaderParametersDeserializer() {
35-
parameters = Map.ofEntries(
36-
new AbstractMap.SimpleEntry<>("enum_header_string_array", new Parameter0.Parameter01()),
37-
new AbstractMap.SimpleEntry<>("enum_header_string", new Parameter1.Parameter11())
32+
public static class HeaderParametersSerializer extends HeadersSerializer {
33+
public HeaderParametersSerializer() {
34+
super(
35+
Map.ofEntries(
36+
new AbstractMap.SimpleEntry<>("enum_header_string_array", new Parameter0.Parameter01()),
37+
new AbstractMap.SimpleEntry<>("enum_header_string", new Parameter1.Parameter11())
38+
)
3839
);
3940
}
40-
41-
// HeaderParameters
4241
}
4342
}
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
package org.openapijsonschematools.client.paths.fakebodywithqueryparams.put;
22

33
import org.openapijsonschematools.client.paths.fakebodywithqueryparams.put.parameters.Parameter0;
4+
import org.openapijsonschematools.client.parameter.QuerySerializer;
5+
46
import org.openapijsonschematools.client.parameter.Parameter;
57

68
import java.util.Map;
79
import java.util.AbstractMap;
810

911
public class Parameters {
1012

11-
public static class QueryParametersDeserializer {
12-
Map<String, Parameter> parameters;
13-
14-
public QueryParametersDeserializer() {
15-
parameters = Map.ofEntries(
16-
new AbstractMap.SimpleEntry<>("query", new Parameter0.Parameter01())
13+
public static class QueryParametersSerializer extends QuerySerializer {
14+
public QueryParametersSerializer() {
15+
super(
16+
Map.ofEntries(
17+
new AbstractMap.SimpleEntry<>("query", new Parameter0.Parameter01())
18+
)
1719
);
1820
}
19-
20-
// QueryParameters
2121
}
2222
}

0 commit comments

Comments
 (0)