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

Commit 5da69d9

Browse files
authored
Java client, adds Parameters class (#399)
* Renames path item schema in java client to routeschema * Adds parametersInfo property to operation class * Parameters classes generated * Removes unused doc * Sample regen to eliminate extra parameter files * Fixes parameter class filenames * Removes ? from query parameter serialization * Removes query parameter differentiation * Removes lingering NonQueryParameter reference * Parameter serialize returns AbstractMap.SimpleEntry * Adds HeadersSerializer * Adds cookie serializer * Adds query and header serializers * Fixes cookie serializer * Adds path parameters serializer * Adds QuerySerializerTest * Adds headers serializer test * Samples regen * Fixes optional parameter detection * Regenerates samples * Fixes java tests * Sample regen with unused java files deleted * Sample regen to fix type error * Adjsut type signature in cookie serializer to fix error * Sample regen with type fixes * Fixes java typo * Samples regen, adds mising import * Does not use var in testing, fixes type issues * Adds missing CookieSerializer
1 parent 3126ec4 commit 5da69d9

File tree

235 files changed

+3649
-1746
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

235 files changed

+3649
-1746
lines changed

samples/client/3_0_3_unit_test/java/.openapi-generator/FILES

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -197,17 +197,16 @@ src/main/java/org/openapijsonschematools/client/header/SchemaHeader.java
197197
src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java
198198
src/main/java/org/openapijsonschematools/client/mediatype/Encoding.java
199199
src/main/java/org/openapijsonschematools/client/mediatype/MediaType.java
200-
src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java
201200
src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java
202-
src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java
203-
src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java
201+
src/main/java/org/openapijsonschematools/client/parameter/CookieSerializer.java
202+
src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java
203+
src/main/java/org/openapijsonschematools/client/parameter/Parameter.java
204204
src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java
205205
src/main/java/org/openapijsonschematools/client/parameter/ParameterInType.java
206206
src/main/java/org/openapijsonschematools/client/parameter/ParameterStyle.java
207-
src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java
208-
src/main/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameter.java
207+
src/main/java/org/openapijsonschematools/client/parameter/PathSerializer.java
208+
src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java
209209
src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java
210-
src/main/java/org/openapijsonschematools/client/parameter/SchemaQueryParameter.java
211210
src/main/java/org/openapijsonschematools/client/requestbody/GenericRequestBody.java
212211
src/main/java/org/openapijsonschematools/client/requestbody/RequestBodySerializer.java
213212
src/main/java/org/openapijsonschematools/client/requestbody/SerializedRequestBody.java
@@ -319,6 +318,10 @@ src/main/java/org/openapijsonschematools/client/servers/ServerWithoutVariables.j
319318
src/test/java/org/openapijsonschematools/client/configurations/JsonSchemaKeywordFlagsTest.java
320319
src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java
321320
src/test/java/org/openapijsonschematools/client/header/SchemaHeaderTest.java
321+
src/test/java/org/openapijsonschematools/client/parameter/CookieSerializerTest.java
322+
src/test/java/org/openapijsonschematools/client/parameter/HeadersSerializerTest.java
323+
src/test/java/org/openapijsonschematools/client/parameter/PathSerializerTest.java
324+
src/test/java/org/openapijsonschematools/client/parameter/QuerySerializerTest.java
322325
src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java
323326
src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java
324327
src/test/java/org/openapijsonschematools/client/requestbody/RequestBodySerializerTest.java

samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,16 @@ public static String serializeForm(
2323
@Nullable Object inData,
2424
String name,
2525
boolean explode,
26-
boolean percentEncode,
27-
@Nullable PrefixSeparatorIterator iterator,
28-
boolean isCookie
26+
boolean percentEncode
2927
) {
3028
// todo check that the prefix and suffix matches this one
31-
String prefix = isCookie ? "" : "?";
32-
PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator(prefix, "&") : iterator;
29+
PrefixSeparatorIterator iterator = new PrefixSeparatorIterator("", "&");
3330
return rfc6570Expansion(
3431
name,
3532
inData,
3633
explode,
3734
percentEncode,
38-
usedIterator
35+
iterator
3936
);
4037
}
4138

@@ -72,10 +69,9 @@ public static String serializeLabel(
7269
public static String serializeSpaceDelimited(
7370
@Nullable Object inData,
7471
String name,
75-
boolean explode,
76-
@Nullable PrefixSeparatorIterator iterator
72+
boolean explode
7773
) {
78-
PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator("", "%20") : iterator;
74+
PrefixSeparatorIterator usedIterator = new PrefixSeparatorIterator("", "%20");
7975
return rfc6570Expansion(
8076
name,
8177
inData,
@@ -88,10 +84,9 @@ public static String serializeSpaceDelimited(
8884
public static String serializePipeDelimited(
8985
@Nullable Object inData,
9086
String name,
91-
boolean explode,
92-
@Nullable PrefixSeparatorIterator iterator
87+
boolean explode
9388
) {
94-
PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator("", "|") : iterator;
89+
PrefixSeparatorIterator usedIterator = new PrefixSeparatorIterator("", "|");
9590
return rfc6570Expansion(
9691
name,
9792
inData,

samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSimpleSerializer.java

Lines changed: 0 additions & 21 deletions
This file was deleted.

samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
package org.openapijsonschematools.client.parameter;
22

33
import org.checkerframework.checker.nullness.qual.Nullable;
4-
import org.openapijsonschematools.client.configurations.SchemaConfiguration;
54
import org.openapijsonschematools.client.contenttype.ContentTypeDetector;
65
import org.openapijsonschematools.client.contenttype.ContentTypeSerializer;
76
import org.openapijsonschematools.client.mediatype.MediaType;
87

98
import java.util.Map;
9+
import java.util.AbstractMap;
1010

11-
public class ContentParameter extends ParameterBase {
11+
public class ContentParameter extends ParameterBase implements Parameter {
1212
public final Map<String, MediaType<?, ?>> content;
1313

1414
public ContentParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, Map<String, MediaType<?, ?>> content) {
1515
super(name, inType, required, style, explode, allowReserved);
1616
this.content = content;
1717
}
1818

19-
protected Map<String, String> serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) {
19+
@Override
20+
public AbstractMap.SimpleEntry<String, String> serialize(@Nullable Object inData) {
2021
for (Map.Entry<String, MediaType<?, ?>> entry: content.entrySet()) {
21-
var castInData = validate ? entry.getValue().schema().validate(inData, configuration) : inData ;
2222
String contentType = entry.getKey();
2323
if (ContentTypeDetector.contentTypeIsJson(contentType)) {
24-
var value = ContentTypeSerializer.toJson(castInData);
25-
return Map.of(name, value);
24+
var value = ContentTypeSerializer.toJson(inData);
25+
return new AbstractMap.SimpleEntry<>(name, value);
2626
} else {
2727
throw new RuntimeException("Serialization of "+contentType+" has not yet been implemented");
2828
}

samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java

Lines changed: 0 additions & 20 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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.Map;
7+
import java.util.TreeMap;
8+
9+
public abstract class CookieSerializer {
10+
private final Map<String, Parameter> parameters;
11+
12+
protected CookieSerializer(Map<String, Parameter> parameters) {
13+
this.parameters = parameters;
14+
}
15+
16+
public String serialize(Map<String, ?> inData) {
17+
String result = "";
18+
Map<String, ?> sortedData = new TreeMap<>(inData);
19+
for (Map.Entry<String, ?> entry: sortedData.entrySet()) {
20+
String mapKey = entry.getKey();
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+
@Nullable Object value = entry.getValue();
26+
AbstractMap.SimpleEntry<String, String> serialized = parameter.serialize(value);
27+
if (result.isEmpty()) {
28+
result = serialized.getValue();
29+
} else {
30+
result = result + "; " + serialized.getValue();
31+
}
32+
}
33+
return result;
34+
}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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+
import java.util.List;
9+
10+
public abstract class HeadersSerializer {
11+
private final Map<String, Parameter> parameters;
12+
13+
protected HeadersSerializer(Map<String, Parameter> parameters) {
14+
this.parameters = parameters;
15+
}
16+
17+
public Map<String, List<String>> serialize(Map<String, ?> inData) {
18+
Map<String, List<String>> results = new LinkedHashMap<>();
19+
for (Map.Entry<String, ?> entry: inData.entrySet()) {
20+
String mapKey = entry.getKey();
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+
@Nullable Object value = entry.getValue();
26+
AbstractMap.SimpleEntry<String, String> serialized = parameter.serialize(value);
27+
results.put(serialized.getKey(), List.of(serialized.getValue()));
28+
}
29+
return results;
30+
}
31+
}

samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java

Lines changed: 0 additions & 10 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.openapijsonschematools.client.parameter;
2+
3+
import org.checkerframework.checker.nullness.qual.Nullable;
4+
5+
import java.util.AbstractMap;
6+
7+
public interface Parameter {
8+
AbstractMap.SimpleEntry<String, String> serialize(@Nullable Object inData);
9+
}

samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import org.checkerframework.checker.nullness.qual.Nullable;
44
import org.openapijsonschematools.client.header.HeaderBase;
5-
import org.openapijsonschematools.client.header.PrefixSeparatorIterator;
65

76
public class ParameterBase extends HeaderBase {
87
public final String name;
@@ -13,27 +12,4 @@ public ParameterBase(String name, ParameterInType inType, boolean required, @Nul
1312
this.name = name;
1413
this.inType = inType;
1514
}
16-
17-
protected ParameterStyle getStyle() {
18-
if (style != null) {
19-
return style;
20-
}
21-
if (inType == ParameterInType.QUERY || inType == ParameterInType.COOKIE) {
22-
return ParameterStyle.FORM;
23-
}
24-
// ParameterInType.HEADER || ParameterInType.PATH
25-
return ParameterStyle.SIMPLE;
26-
}
27-
28-
public PrefixSeparatorIterator getPrefixSeparatorIterator() {
29-
ParameterStyle usedStyle = getStyle();
30-
if (usedStyle == ParameterStyle.FORM) {
31-
return new PrefixSeparatorIterator("?", "&");
32-
} else if (usedStyle == ParameterStyle.SPACE_DELIMITED) {
33-
return new PrefixSeparatorIterator("", "%20");
34-
} else if (usedStyle == ParameterStyle.PIPE_DELIMITED) {
35-
return new PrefixSeparatorIterator("", "|");
36-
}
37-
throw new RuntimeException("No iterator possible for style="+usedStyle);
38-
}
3915
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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.Map;
7+
8+
public abstract class PathSerializer {
9+
private final Map<String, Parameter> parameters;
10+
11+
protected PathSerializer(Map<String, Parameter> parameters) {
12+
this.parameters = parameters;
13+
}
14+
15+
public String serialize(Map<String, ?> inData, String pathWithPlaceholders) {
16+
String result = pathWithPlaceholders;
17+
for (Map.Entry<String, ?> entry: inData.entrySet()) {
18+
String mapKey = entry.getKey();
19+
@Nullable Parameter parameter = parameters.get(mapKey);
20+
if (parameter == null) {
21+
throw new RuntimeException("Invalid state, a parameter must exist for every key");
22+
}
23+
@Nullable Object value = entry.getValue();
24+
AbstractMap.SimpleEntry<String, String> serialized = parameter.serialize(value);
25+
result = result.replace("{" + mapKey + "}", serialized.getValue());
26+
}
27+
return result;
28+
}
29+
}

samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)