diff --git a/samples/client/3_0_3_unit_test/java/.openapi-generator/FILES b/samples/client/3_0_3_unit_test/java/.openapi-generator/FILES index 8a0f8021eb3..c2a45666698 100644 --- a/samples/client/3_0_3_unit_test/java/.openapi-generator/FILES +++ b/samples/client/3_0_3_unit_test/java/.openapi-generator/FILES @@ -197,17 +197,16 @@ src/main/java/org/openapijsonschematools/client/header/SchemaHeader.java src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java src/main/java/org/openapijsonschematools/client/mediatype/Encoding.java src/main/java/org/openapijsonschematools/client/mediatype/MediaType.java -src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java -src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java -src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java +src/main/java/org/openapijsonschematools/client/parameter/CookieSerializer.java +src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java +src/main/java/org/openapijsonschematools/client/parameter/Parameter.java src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java src/main/java/org/openapijsonschematools/client/parameter/ParameterInType.java src/main/java/org/openapijsonschematools/client/parameter/ParameterStyle.java -src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java -src/main/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameter.java +src/main/java/org/openapijsonschematools/client/parameter/PathSerializer.java +src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java -src/main/java/org/openapijsonschematools/client/parameter/SchemaQueryParameter.java src/main/java/org/openapijsonschematools/client/requestbody/GenericRequestBody.java src/main/java/org/openapijsonschematools/client/requestbody/RequestBodySerializer.java src/main/java/org/openapijsonschematools/client/requestbody/SerializedRequestBody.java @@ -319,6 +318,10 @@ src/main/java/org/openapijsonschematools/client/servers/ServerWithoutVariables.j src/test/java/org/openapijsonschematools/client/configurations/JsonSchemaKeywordFlagsTest.java src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java src/test/java/org/openapijsonschematools/client/header/SchemaHeaderTest.java +src/test/java/org/openapijsonschematools/client/parameter/CookieSerializerTest.java +src/test/java/org/openapijsonschematools/client/parameter/HeadersSerializerTest.java +src/test/java/org/openapijsonschematools/client/parameter/PathSerializerTest.java +src/test/java/org/openapijsonschematools/client/parameter/QuerySerializerTest.java src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java src/test/java/org/openapijsonschematools/client/requestbody/RequestBodySerializerTest.java diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java index 088a1daf02b..d18be288684 100644 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java @@ -23,19 +23,16 @@ public static String serializeForm( @Nullable Object inData, String name, boolean explode, - boolean percentEncode, - @Nullable PrefixSeparatorIterator iterator, - boolean isCookie + boolean percentEncode ) { // todo check that the prefix and suffix matches this one - String prefix = isCookie ? "" : "?"; - PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator(prefix, "&") : iterator; + PrefixSeparatorIterator iterator = new PrefixSeparatorIterator("", "&"); return rfc6570Expansion( name, inData, explode, percentEncode, - usedIterator + iterator ); } @@ -72,10 +69,9 @@ public static String serializeLabel( public static String serializeSpaceDelimited( @Nullable Object inData, String name, - boolean explode, - @Nullable PrefixSeparatorIterator iterator + boolean explode ) { - PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator("", "%20") : iterator; + PrefixSeparatorIterator usedIterator = new PrefixSeparatorIterator("", "%20"); return rfc6570Expansion( name, inData, @@ -88,10 +84,9 @@ public static String serializeSpaceDelimited( public static String serializePipeDelimited( @Nullable Object inData, String name, - boolean explode, - @Nullable PrefixSeparatorIterator iterator + boolean explode ) { - PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator("", "|") : iterator; + PrefixSeparatorIterator usedIterator = new PrefixSeparatorIterator("", "|"); return rfc6570Expansion( name, inData, diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSimpleSerializer.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSimpleSerializer.java deleted file mode 100644 index 1c8d5d7a27d..00000000000 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSimpleSerializer.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.openapijsonschematools.client.header; - -import org.checkerframework.checker.nullness.qual.Nullable; - -public class StyleSimpleSerializer extends Rfc6570Serializer { - public static String serializeSimple( - @Nullable Object inData, - String name, - boolean explode, - boolean percentEncode - ) { - var prefixSeparatorIterator = new PrefixSeparatorIterator("", ","); - return rfc6570Expansion( - name, - inData, - explode, - percentEncode, - prefixSeparatorIterator - ); - } -} diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java deleted file mode 100644 index e3cecc7753f..00000000000 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.mediatype.MediaType; - -import java.util.Map; - -public class ContentNonQueryParameter extends ContentParameter implements NonQueryParameter { - - public ContentNonQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, Map> content) { - super(name, inType, required, style, explode, allowReserved, content); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) { - return super.serialize(inData, validate, configuration); - } -} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java index c9da00c8ad7..79a3e781051 100644 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java @@ -1,14 +1,14 @@ package org.openapijsonschematools.client.parameter; import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.contenttype.ContentTypeDetector; import org.openapijsonschematools.client.contenttype.ContentTypeSerializer; import org.openapijsonschematools.client.mediatype.MediaType; import java.util.Map; +import java.util.AbstractMap; -public class ContentParameter extends ParameterBase { +public class ContentParameter extends ParameterBase implements Parameter { public final Map> content; public ContentParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, Map> content) { @@ -16,13 +16,13 @@ public ContentParameter(String name, ParameterInType inType, boolean required, @ this.content = content; } - protected Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) { + @Override + public AbstractMap.SimpleEntry serialize(@Nullable Object inData) { for (Map.Entry> entry: content.entrySet()) { - var castInData = validate ? entry.getValue().schema().validate(inData, configuration) : inData ; String contentType = entry.getKey(); if (ContentTypeDetector.contentTypeIsJson(contentType)) { - var value = ContentTypeSerializer.toJson(castInData); - return Map.of(name, value); + var value = ContentTypeSerializer.toJson(inData); + return new AbstractMap.SimpleEntry<>(name, value); } else { throw new RuntimeException("Serialization of "+contentType+" has not yet been implemented"); } diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java deleted file mode 100644 index 5d8239dc356..00000000000 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; -import org.openapijsonschematools.client.mediatype.MediaType; - -import java.util.Map; - -public class ContentQueryParameter extends ContentParameter implements QueryParameter { - - public ContentQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, Map> content) { - super(name, inType, required, style, explode, allowReserved, content); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, PrefixSeparatorIterator iterator) { - return super.serialize(inData, validate, configuration); - } -} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/CookieSerializer.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/CookieSerializer.java new file mode 100644 index 00000000000..b04b2ca1754 --- /dev/null +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/CookieSerializer.java @@ -0,0 +1,35 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.Map; +import java.util.TreeMap; + +public abstract class CookieSerializer { + private final Map parameters; + + protected CookieSerializer(Map parameters) { + this.parameters = parameters; + } + + public String serialize(Map inData) { + String result = ""; + Map sortedData = new TreeMap<>(inData); + for (Map.Entry entry: sortedData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + if (result.isEmpty()) { + result = serialized.getValue(); + } else { + result = result + "; " + serialized.getValue(); + } + } + return result; + } +} diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java new file mode 100644 index 00000000000..b4a23229944 --- /dev/null +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java @@ -0,0 +1,31 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.List; + +public abstract class HeadersSerializer { + private final Map parameters; + + protected HeadersSerializer(Map parameters) { + this.parameters = parameters; + } + + public Map> serialize(Map inData) { + Map> results = new LinkedHashMap<>(); + for (Map.Entry entry: inData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + results.put(serialized.getKey(), List.of(serialized.getValue())); + } + return results; + } +} diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java deleted file mode 100644 index de5d7451c57..00000000000 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; - -import java.util.Map; - -public interface NonQueryParameter { - Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration); -} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/Parameter.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/Parameter.java new file mode 100644 index 00000000000..9fe0745417c --- /dev/null +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/Parameter.java @@ -0,0 +1,9 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; + +public interface Parameter { + AbstractMap.SimpleEntry serialize(@Nullable Object inData); +} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java index 742792cdb40..8d79129b765 100644 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java @@ -2,7 +2,6 @@ import org.checkerframework.checker.nullness.qual.Nullable; import org.openapijsonschematools.client.header.HeaderBase; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; public class ParameterBase extends HeaderBase { public final String name; @@ -13,27 +12,4 @@ public ParameterBase(String name, ParameterInType inType, boolean required, @Nul this.name = name; this.inType = inType; } - - protected ParameterStyle getStyle() { - if (style != null) { - return style; - } - if (inType == ParameterInType.QUERY || inType == ParameterInType.COOKIE) { - return ParameterStyle.FORM; - } - // ParameterInType.HEADER || ParameterInType.PATH - return ParameterStyle.SIMPLE; - } - - public PrefixSeparatorIterator getPrefixSeparatorIterator() { - ParameterStyle usedStyle = getStyle(); - if (usedStyle == ParameterStyle.FORM) { - return new PrefixSeparatorIterator("?", "&"); - } else if (usedStyle == ParameterStyle.SPACE_DELIMITED) { - return new PrefixSeparatorIterator("", "%20"); - } else if (usedStyle == ParameterStyle.PIPE_DELIMITED) { - return new PrefixSeparatorIterator("", "|"); - } - throw new RuntimeException("No iterator possible for style="+usedStyle); - } } \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/PathSerializer.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/PathSerializer.java new file mode 100644 index 00000000000..5864f89c901 --- /dev/null +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/PathSerializer.java @@ -0,0 +1,29 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.Map; + +public abstract class PathSerializer { + private final Map parameters; + + protected PathSerializer(Map parameters) { + this.parameters = parameters; + } + + public String serialize(Map inData, String pathWithPlaceholders) { + String result = pathWithPlaceholders; + for (Map.Entry entry: inData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + result = result.replace("{" + mapKey + "}", serialized.getValue()); + } + return result; + } +} diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java deleted file mode 100644 index 0dbced20599..00000000000 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; - -import java.util.Map; - -public interface QueryParameter { - Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, PrefixSeparatorIterator iterator); - PrefixSeparatorIterator getPrefixSeparatorIterator(); -} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java new file mode 100644 index 00000000000..91ea0b041bb --- /dev/null +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java @@ -0,0 +1,47 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; + +public abstract class QuerySerializer { + private final Map parameters; + + protected QuerySerializer(Map parameters) { + this.parameters = parameters; + } + + public Map getQueryMap(Map inData) { + Map results = new HashMap<>(); + for (Map.Entry entry: inData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + results.put(serialized.getKey(), serialized.getValue()); + } + return new TreeMap<>(results); + } + + public String serialize(Map queryMap) { + if (queryMap.isEmpty()) { + return ""; + } + String result = "?"; + for (String serializedValue: queryMap.values()) { + if (result.length() == 1) { + result = result + serializedValue; + } else { + result = result + "&" + serializedValue; + } + } + // TODO what if the style is not FORM? + return result; + } +} diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameter.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameter.java deleted file mode 100644 index 80976ec5d85..00000000000 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameter.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; -import org.openapijsonschematools.client.schemas.validation.JsonSchema; - -import java.util.Map; - -public class SchemaNonQueryParameter extends SchemaParameter implements NonQueryParameter { - - public SchemaNonQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, JsonSchema schema) { - super(name, inType, required, style, explode, allowReserved, schema); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) { - return super.serialize(inData, validate, configuration, null); - } -} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java index 597916bbdfc..8acfdafcc8a 100644 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java @@ -1,17 +1,12 @@ package org.openapijsonschematools.client.parameter; import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; import org.openapijsonschematools.client.header.StyleSerializer; import org.openapijsonschematools.client.schemas.validation.JsonSchema; -import org.openapijsonschematools.client.header.HeaderBase; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; -import org.openapijsonschematools.client.header.StyleSerializer; -import org.openapijsonschematools.client.schemas.validation.JsonSchema; -import java.util.Map; -public class SchemaParameter extends ParameterBase { +import java.util.AbstractMap; + +public class SchemaParameter extends ParameterBase implements Parameter { public final JsonSchema schema; public SchemaParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, JsonSchema schema) { @@ -19,36 +14,46 @@ public SchemaParameter(String name, ParameterInType inType, boolean required, @N this.schema = schema; } - protected Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, @Nullable PrefixSeparatorIterator iterator) { - var castInData = validate ? schema.validate(inData, configuration) : inData; + private ParameterStyle getStyle() { + if (style != null) { + return style; + } + if (inType == ParameterInType.QUERY || inType == ParameterInType.COOKIE) { + return ParameterStyle.FORM; + } + // ParameterInType.HEADER || ParameterInType.PATH + return ParameterStyle.SIMPLE; + } + + @Override + public AbstractMap.SimpleEntry serialize(@Nullable Object inData) { ParameterStyle usedStyle = getStyle(); boolean percentEncode = inType == ParameterInType.QUERY || inType == ParameterInType.PATH; String value; boolean usedExplode = explode == null ? usedStyle == ParameterStyle.FORM : explode; if (usedStyle == ParameterStyle.SIMPLE) { // header OR path - value = StyleSerializer.serializeSimple(castInData, name, usedExplode, percentEncode); + value = StyleSerializer.serializeSimple(inData, name, usedExplode, percentEncode); } else if (usedStyle == ParameterStyle.FORM) { // query OR cookie - boolean isCookie = inType == ParameterInType.COOKIE; - value = StyleSerializer.serializeForm(castInData, name, usedExplode, percentEncode, iterator, isCookie); + value = StyleSerializer.serializeForm(inData, name, usedExplode, percentEncode); } else if (usedStyle == ParameterStyle.LABEL) { // path - value = StyleSerializer.serializeLabel(castInData, name, usedExplode); + value = StyleSerializer.serializeLabel(inData, name, usedExplode); } else if (usedStyle == ParameterStyle.MATRIX) { // path - value = StyleSerializer.serializeMatrix(castInData, name, usedExplode); + value = StyleSerializer.serializeMatrix(inData, name, usedExplode); } else if (usedStyle == ParameterStyle.SPACE_DELIMITED) { // query - value = StyleSerializer.serializeSpaceDelimited(castInData, name, usedExplode, iterator); + value = StyleSerializer.serializeSpaceDelimited(inData, name, usedExplode); } else if (usedStyle == ParameterStyle.PIPE_DELIMITED) { // query - value = StyleSerializer.serializePipeDelimited(castInData, name, usedExplode, iterator); + value = StyleSerializer.serializePipeDelimited(inData, name, usedExplode); } else { // usedStyle == ParameterStyle.DEEP_OBJECT // query throw new RuntimeException("Style deep object serialization has not yet been implemented."); } - return Map.of(name, value); + return new AbstractMap.SimpleEntry<>(name, value); } } \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaQueryParameter.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaQueryParameter.java deleted file mode 100644 index e85794b4a6d..00000000000 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaQueryParameter.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; -import org.openapijsonschematools.client.schemas.validation.JsonSchema; - -import java.util.Map; - -public class SchemaQueryParameter extends SchemaParameter implements QueryParameter { - - public SchemaQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, JsonSchema schema) { - super(name, inType, required, style, explode, allowReserved, schema); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, PrefixSeparatorIterator iterator) { - return super.serialize(inData, validate, configuration, iterator); - } -} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java index 30347681cbf..990f21a1148 100644 --- a/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java +++ b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java @@ -27,7 +27,7 @@ public void testSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, Map.of("color", List.of("null")) diff --git a/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/CookieSerializerTest.java b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/CookieSerializerTest.java new file mode 100644 index 00000000000..a19ea8c1007 --- /dev/null +++ b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/CookieSerializerTest.java @@ -0,0 +1,44 @@ +package org.openapijsonschematools.client.parameter; + +import org.junit.Assert; +import org.junit.Test; +import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; + +public class CookieSerializerTest { + public static class Parameter1 extends SchemaParameter { + public Parameter1() { + super("param1", ParameterInType.COOKIE, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Parameter2 extends SchemaParameter { + public Parameter2() { + super("param2", ParameterInType.COOKIE, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class CookieParametersSerializer extends CookieSerializer { + protected CookieParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Parameter1()), + new AbstractMap.SimpleEntry<>("param2", new Parameter2()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + String cookie = new CookieParametersSerializer().serialize(inData); + String expectedCookie = "param1=a; param2=3.14"; + Assert.assertEquals(expectedCookie, cookie); + } +} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/HeadersSerializerTest.java b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/HeadersSerializerTest.java new file mode 100644 index 00000000000..63f3159bf0a --- /dev/null +++ b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/HeadersSerializerTest.java @@ -0,0 +1,48 @@ +package org.openapijsonschematools.client.parameter; + +import org.junit.Assert; +import org.junit.Test; +import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; +import java.util.List; + +public class HeadersSerializerTest { + public static class Param1HeaderParameter extends SchemaParameter { + public Param1HeaderParameter() { + super("param1", ParameterInType.HEADER, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Param2HeaderParameter extends SchemaParameter { + public Param2HeaderParameter() { + super("param2", ParameterInType.HEADER, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class HeaderParametersSerializer extends HeadersSerializer { + protected HeaderParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Param1HeaderParameter()), + new AbstractMap.SimpleEntry<>("param2", new Param2HeaderParameter()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + Map> expectedHeaders = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", List.of("a")), + new AbstractMap.SimpleEntry<>("param2", List.of("3.14")) + ); + Map> headers = new HeaderParametersSerializer().serialize(inData); + Assert.assertEquals(expectedHeaders, headers); + } +} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/PathSerializerTest.java b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/PathSerializerTest.java new file mode 100644 index 00000000000..bef110af08d --- /dev/null +++ b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/PathSerializerTest.java @@ -0,0 +1,45 @@ +package org.openapijsonschematools.client.parameter; + +import org.junit.Assert; +import org.junit.Test; +import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; + +public class PathSerializerTest { + public static class Parameter1 extends SchemaParameter { + public Parameter1() { + super("param1", ParameterInType.PATH, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Parameter2 extends SchemaParameter { + public Parameter2() { + super("param2", ParameterInType.PATH, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class PathParametersSerializer extends PathSerializer { + protected PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Parameter1()), + new AbstractMap.SimpleEntry<>("param2", new Parameter2()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + String pathWithPlaceholders = "/{param1}/{param2}"; + String path = new PathParametersSerializer().serialize(inData, pathWithPlaceholders); + String expectedPath = "/a/3.14"; + Assert.assertEquals(expectedPath, path); + } +} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/QuerySerializerTest.java b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/QuerySerializerTest.java new file mode 100644 index 00000000000..ed5aae7e580 --- /dev/null +++ b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/QuerySerializerTest.java @@ -0,0 +1,51 @@ +package org.openapijsonschematools.client.parameter; + +import org.junit.Assert; +import org.junit.Test; +import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; + +public class QuerySerializerTest { + public static class Param1QueryParameter extends SchemaParameter { + public Param1QueryParameter() { + super("param1", ParameterInType.QUERY, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Param2QueryParameter extends SchemaParameter { + public Param2QueryParameter() { + super("param2", ParameterInType.QUERY, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class QueryParametersSerializer extends QuerySerializer { + protected QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Param1QueryParameter()), + new AbstractMap.SimpleEntry<>("param2", new Param2QueryParameter()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + var serializer = new QueryParametersSerializer(); + var queryMap = serializer.getQueryMap(inData); + Map expectedQueryMap = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "param1=a"), + new AbstractMap.SimpleEntry<>("param2", "param2=3.14") + ); + Assert.assertEquals(expectedQueryMap, queryMap); + String query = serializer.serialize(queryMap); + String expectedQuery = "?param1=a¶m2=3.14"; + Assert.assertEquals(expectedQuery, query); + } +} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java index cc681934e5e..871d4f073f3 100644 --- a/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java +++ b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java @@ -3,24 +3,23 @@ import org.checkerframework.checker.nullness.qual.Nullable; import org.junit.Assert; import org.junit.Test; -import org.openapijsonschematools.client.configurations.JsonSchemaKeywordFlags; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.exceptions.InvalidTypeException; import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.AbstractMap; import java.util.Set; public class SchemaNonQueryParameterTest { - public record ParamTestCase(@Nullable Object payload, Map expectedSerialization, @Nullable Boolean explode) { - public ParamTestCase(@Nullable Object payload, Map expectedSerialization) { + public record ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization, @Nullable Boolean explode) { + public ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization) { this(payload, expectedSerialization, null); } } - public static class HeaderParameter extends SchemaNonQueryParameter { + public static class HeaderParameter extends SchemaParameter { public HeaderParameter(@Nullable Boolean explode) { super("color", ParameterInType.HEADER, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -32,74 +31,73 @@ public void testHeaderSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "1") + new AbstractMap.SimpleEntry<>("color", "1") ), new ParamTestCase( 3.14, - Map.of("color","3.14") + new AbstractMap.SimpleEntry<>("color","3.14") ), new ParamTestCase( "blue", - Map.of("color", "blue") + new AbstractMap.SimpleEntry<>("color", "blue") ), new ParamTestCase( "hello world", - Map.of("color", "hello world") + new AbstractMap.SimpleEntry<>("color", "hello world") ), new ParamTestCase( "", - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown") + new AbstractMap.SimpleEntry<>("color", "blue,black,brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown"), + new AbstractMap.SimpleEntry<>("color", "blue,black,brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R,100,G,200,B,150") + new AbstractMap.SimpleEntry<>("color", "R,100,G,200,B,150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100,G=200,B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100,G=200,B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var header = new HeaderParameter(testCase.explode); - var serialization = header.serialize(testCase.payload, false, configuration); + var serialization = header.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var boolHeader = new HeaderParameter(false); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> boolHeader.serialize(value, false, configuration) + () -> boolHeader.serialize(value) ); } } - public static class PathParameter extends SchemaNonQueryParameter { + public static class PathParameter extends SchemaParameter { public PathParameter(@Nullable Boolean explode) { super("color", ParameterInType.PATH, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -111,74 +109,73 @@ public void testPathSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "1") + new AbstractMap.SimpleEntry<>("color", "1") ), new ParamTestCase( 3.14, - Map.of("color","3.14") + new AbstractMap.SimpleEntry<>("color","3.14") ), new ParamTestCase( "blue", - Map.of("color", "blue") + new AbstractMap.SimpleEntry<>("color", "blue") ), new ParamTestCase( "hello world", - Map.of("color", "hello%20world") + new AbstractMap.SimpleEntry<>("color", "hello%20world") ), new ParamTestCase( "", - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown") + new AbstractMap.SimpleEntry<>("color", "blue,black,brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown"), + new AbstractMap.SimpleEntry<>("color", "blue,black,brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R,100,G,200,B,150") + new AbstractMap.SimpleEntry<>("color", "R,100,G,200,B,150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100,G=200,B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100,G=200,B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var pathParameter = new PathParameter(testCase.explode); - var serialization = pathParameter.serialize(testCase.payload, false, configuration); + var serialization = pathParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var pathParameter = new PathParameter(false); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> pathParameter.serialize(value, false, configuration) + () -> pathParameter.serialize(value) ); } } - public static class CookieParameter extends SchemaNonQueryParameter { + public static class CookieParameter extends SchemaParameter { public CookieParameter(@Nullable Boolean explode) { super("color", ParameterInType.COOKIE, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -190,74 +187,73 @@ public void testCookieSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "color=1") + new AbstractMap.SimpleEntry<>("color", "color=1") ), new ParamTestCase( 3.14, - Map.of("color","color=3.14") + new AbstractMap.SimpleEntry<>("color","color=3.14") ), new ParamTestCase( "blue", - Map.of("color", "color=blue") + new AbstractMap.SimpleEntry<>("color", "color=blue") ), new ParamTestCase( "hello world", - Map.of("color", "color=hello world") + new AbstractMap.SimpleEntry<>("color", "color=hello world") ), new ParamTestCase( "", - Map.of("color", "color=") + new AbstractMap.SimpleEntry<>("color", "color=") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "color=blue&color=black&color=brown") + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "color=blue&color=black&color=brown"), + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100&G=200&B=150") + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100&G=200&B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var cookieParameter = new CookieParameter(testCase.explode); - var serialization = cookieParameter.serialize(testCase.payload, false, configuration); + var serialization = cookieParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var cookieParameter = new CookieParameter(false); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> cookieParameter.serialize(value, false, configuration) + () -> cookieParameter.serialize(value) ); } } - public static class PathMatrixParameter extends SchemaNonQueryParameter { + public static class PathMatrixParameter extends SchemaParameter { public PathMatrixParameter(@Nullable Boolean explode) { super("color", ParameterInType.PATH, true, ParameterStyle.MATRIX, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -269,67 +265,66 @@ public void testPathMatrixSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", ";color=1") + new AbstractMap.SimpleEntry<>("color", ";color=1") ), new ParamTestCase( 3.14, - Map.of("color",";color=3.14") + new AbstractMap.SimpleEntry<>("color",";color=3.14") ), new ParamTestCase( "blue", - Map.of("color", ";color=blue") + new AbstractMap.SimpleEntry<>("color", ";color=blue") ), new ParamTestCase( "hello world", - Map.of("color", ";color=hello%20world") + new AbstractMap.SimpleEntry<>("color", ";color=hello%20world") ), new ParamTestCase( "", - Map.of("color", ";color") + new AbstractMap.SimpleEntry<>("color", ";color") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ";color=blue,black,brown") + new AbstractMap.SimpleEntry<>("color", ";color=blue,black,brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ";color=blue;color=black;color=brown"), + new AbstractMap.SimpleEntry<>("color", ";color=blue;color=black;color=brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", ";color=R,100,G,200,B,150") + new AbstractMap.SimpleEntry<>("color", ";color=R,100,G,200,B,150") ), new ParamTestCase( mapPayload, - Map.of("color", ";R=100;G=200;B=150"), + new AbstractMap.SimpleEntry<>("color", ";R=100;G=200;B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var pathParameter = new PathMatrixParameter(testCase.explode); - var serialization = pathParameter.serialize(testCase.payload, false, configuration); + var serialization = pathParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } - public static class PathLabelParameter extends SchemaNonQueryParameter { + public static class PathLabelParameter extends SchemaParameter { public PathLabelParameter(@Nullable Boolean explode) { super("color", ParameterInType.PATH, true, ParameterStyle.LABEL, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -341,62 +336,61 @@ public void testPathLabelSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", ".1") + new AbstractMap.SimpleEntry<>("color", ".1") ), new ParamTestCase( 3.14, - Map.of("color",".3.14") + new AbstractMap.SimpleEntry<>("color",".3.14") ), new ParamTestCase( "blue", - Map.of("color", ".blue") + new AbstractMap.SimpleEntry<>("color", ".blue") ), new ParamTestCase( "hello world", - Map.of("color", ".hello%20world") + new AbstractMap.SimpleEntry<>("color", ".hello%20world") ), new ParamTestCase( "", - Map.of("color", ".") + new AbstractMap.SimpleEntry<>("color", ".") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ".blue.black.brown") + new AbstractMap.SimpleEntry<>("color", ".blue.black.brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ".blue.black.brown"), + new AbstractMap.SimpleEntry<>("color", ".blue.black.brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", ".R.100.G.200.B.150") + new AbstractMap.SimpleEntry<>("color", ".R.100.G.200.B.150") ), new ParamTestCase( mapPayload, - Map.of("color", ".R=100.G=200.B=150"), + new AbstractMap.SimpleEntry<>("color", ".R=100.G=200.B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var pathParameter = new PathLabelParameter(testCase.explode); - var serialization = pathParameter.serialize(testCase.payload, false, configuration); + var serialization = pathParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } diff --git a/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java index b36fc740804..f4ea29fccb3 100644 --- a/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java +++ b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java @@ -3,24 +3,23 @@ import org.checkerframework.checker.nullness.qual.Nullable; import org.junit.Assert; import org.junit.Test; -import org.openapijsonschematools.client.configurations.JsonSchemaKeywordFlags; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.exceptions.InvalidTypeException; import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; import java.util.LinkedHashMap; import java.util.List; +import java.util.AbstractMap; import java.util.Map; import java.util.Set; public class SchemaQueryParameterTest { - public record ParamTestCase(@Nullable Object payload, Map expectedSerialization, @Nullable Boolean explode) { - public ParamTestCase(@Nullable Object payload, Map expectedSerialization) { + public record ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization, @Nullable Boolean explode) { + public ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization) { this(payload, expectedSerialization, null); } } - public static class QueryParameterNoStyle extends SchemaQueryParameter { + public static class QueryParameterNoStyle extends SchemaParameter { public QueryParameterNoStyle(@Nullable Boolean explode) { super("color", ParameterInType.QUERY, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -32,76 +31,73 @@ public void testQueryParameterNoStyleSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "?color=1") + new AbstractMap.SimpleEntry<>("color", "color=1") ), new ParamTestCase( 3.14, - Map.of("color","?color=3.14") + new AbstractMap.SimpleEntry<>("color","color=3.14") ), new ParamTestCase( "blue", - Map.of("color", "?color=blue") + new AbstractMap.SimpleEntry<>("color", "color=blue") ), new ParamTestCase( "hello world", - Map.of("color", "?color=hello%20world") + new AbstractMap.SimpleEntry<>("color", "color=hello%20world") ), new ParamTestCase( "", - Map.of("color", "?color=") + new AbstractMap.SimpleEntry<>("color", "color=") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "?color=blue&color=black&color=brown") + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "?color=blue&color=black&color=brown"), + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "?R=100&G=200&B=150") + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150") ), new ParamTestCase( mapPayload, - Map.of("color", "?R=100&G=200&B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var parameter = new QueryParameterNoStyle(testCase.explode); - var iterator = parameter.getPrefixSeparatorIterator(); - var serialization = parameter.serialize(testCase.payload, false, configuration, iterator); + var serialization = parameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var parameter = new QueryParameterNoStyle(false); - var iterator = parameter.getPrefixSeparatorIterator(); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> parameter.serialize(value, false, configuration, iterator) + () -> parameter.serialize(value) ); } } - public static class QueryParameterSpaceDelimited extends SchemaQueryParameter { + public static class QueryParameterSpaceDelimited extends SchemaParameter { public QueryParameterSpaceDelimited(@Nullable Boolean explode) { super("color", ParameterInType.QUERY, true, ParameterStyle.SPACE_DELIMITED, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -113,44 +109,42 @@ public void testQueryParameterSpaceDelimitedSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue%20black%20brown") + new AbstractMap.SimpleEntry<>("color", "blue%20black%20brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue%20black%20brown"), + new AbstractMap.SimpleEntry<>("color", "blue%20black%20brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R%20100%20G%20200%20B%20150") + new AbstractMap.SimpleEntry<>("color", "R%20100%20G%20200%20B%20150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100%20G=200%20B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100%20G=200%20B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var parameter = new QueryParameterSpaceDelimited(testCase.explode); - var iterator = parameter.getPrefixSeparatorIterator(); - var serialization = parameter.serialize(testCase.payload, false, configuration, iterator); + var serialization = parameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } - public static class QueryParameterPipeDelimited extends SchemaQueryParameter { + public static class QueryParameterPipeDelimited extends SchemaParameter { public QueryParameterPipeDelimited(@Nullable Boolean explode) { super("color", ParameterInType.QUERY, true, ParameterStyle.PIPE_DELIMITED, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -162,39 +156,37 @@ public void testQueryParameterPipeDelimitedSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue|black|brown") + new AbstractMap.SimpleEntry<>("color", "blue|black|brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue|black|brown"), + new AbstractMap.SimpleEntry<>("color", "blue|black|brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R|100|G|200|B|150") + new AbstractMap.SimpleEntry<>("color", "R|100|G|200|B|150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100|G=200|B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100|G=200|B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var parameter = new QueryParameterPipeDelimited(testCase.explode); - var iterator = parameter.getPrefixSeparatorIterator(); - var serialization = parameter.serialize(testCase.payload, false, configuration, iterator); + var serialization = parameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } diff --git a/samples/client/3_1_0_unit_test/java/.openapi-generator/FILES b/samples/client/3_1_0_unit_test/java/.openapi-generator/FILES index 63ad4391657..7f1a38b0586 100644 --- a/samples/client/3_1_0_unit_test/java/.openapi-generator/FILES +++ b/samples/client/3_1_0_unit_test/java/.openapi-generator/FILES @@ -309,17 +309,16 @@ src/main/java/org/openapijsonschematools/client/header/SchemaHeader.java src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java src/main/java/org/openapijsonschematools/client/mediatype/Encoding.java src/main/java/org/openapijsonschematools/client/mediatype/MediaType.java -src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java -src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java -src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java +src/main/java/org/openapijsonschematools/client/parameter/CookieSerializer.java +src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java +src/main/java/org/openapijsonschematools/client/parameter/Parameter.java src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java src/main/java/org/openapijsonschematools/client/parameter/ParameterInType.java src/main/java/org/openapijsonschematools/client/parameter/ParameterStyle.java -src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java -src/main/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameter.java +src/main/java/org/openapijsonschematools/client/parameter/PathSerializer.java +src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java -src/main/java/org/openapijsonschematools/client/parameter/SchemaQueryParameter.java src/main/java/org/openapijsonschematools/client/requestbody/GenericRequestBody.java src/main/java/org/openapijsonschematools/client/requestbody/RequestBodySerializer.java src/main/java/org/openapijsonschematools/client/requestbody/SerializedRequestBody.java @@ -431,6 +430,10 @@ src/main/java/org/openapijsonschematools/client/servers/ServerWithoutVariables.j src/test/java/org/openapijsonschematools/client/configurations/JsonSchemaKeywordFlagsTest.java src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java src/test/java/org/openapijsonschematools/client/header/SchemaHeaderTest.java +src/test/java/org/openapijsonschematools/client/parameter/CookieSerializerTest.java +src/test/java/org/openapijsonschematools/client/parameter/HeadersSerializerTest.java +src/test/java/org/openapijsonschematools/client/parameter/PathSerializerTest.java +src/test/java/org/openapijsonschematools/client/parameter/QuerySerializerTest.java src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java src/test/java/org/openapijsonschematools/client/requestbody/RequestBodySerializerTest.java diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java index 088a1daf02b..d18be288684 100644 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java @@ -23,19 +23,16 @@ public static String serializeForm( @Nullable Object inData, String name, boolean explode, - boolean percentEncode, - @Nullable PrefixSeparatorIterator iterator, - boolean isCookie + boolean percentEncode ) { // todo check that the prefix and suffix matches this one - String prefix = isCookie ? "" : "?"; - PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator(prefix, "&") : iterator; + PrefixSeparatorIterator iterator = new PrefixSeparatorIterator("", "&"); return rfc6570Expansion( name, inData, explode, percentEncode, - usedIterator + iterator ); } @@ -72,10 +69,9 @@ public static String serializeLabel( public static String serializeSpaceDelimited( @Nullable Object inData, String name, - boolean explode, - @Nullable PrefixSeparatorIterator iterator + boolean explode ) { - PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator("", "%20") : iterator; + PrefixSeparatorIterator usedIterator = new PrefixSeparatorIterator("", "%20"); return rfc6570Expansion( name, inData, @@ -88,10 +84,9 @@ public static String serializeSpaceDelimited( public static String serializePipeDelimited( @Nullable Object inData, String name, - boolean explode, - @Nullable PrefixSeparatorIterator iterator + boolean explode ) { - PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator("", "|") : iterator; + PrefixSeparatorIterator usedIterator = new PrefixSeparatorIterator("", "|"); return rfc6570Expansion( name, inData, diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSimpleSerializer.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSimpleSerializer.java deleted file mode 100644 index 1c8d5d7a27d..00000000000 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/header/StyleSimpleSerializer.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.openapijsonschematools.client.header; - -import org.checkerframework.checker.nullness.qual.Nullable; - -public class StyleSimpleSerializer extends Rfc6570Serializer { - public static String serializeSimple( - @Nullable Object inData, - String name, - boolean explode, - boolean percentEncode - ) { - var prefixSeparatorIterator = new PrefixSeparatorIterator("", ","); - return rfc6570Expansion( - name, - inData, - explode, - percentEncode, - prefixSeparatorIterator - ); - } -} diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java deleted file mode 100644 index e3cecc7753f..00000000000 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.mediatype.MediaType; - -import java.util.Map; - -public class ContentNonQueryParameter extends ContentParameter implements NonQueryParameter { - - public ContentNonQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, Map> content) { - super(name, inType, required, style, explode, allowReserved, content); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) { - return super.serialize(inData, validate, configuration); - } -} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java index c9da00c8ad7..79a3e781051 100644 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java @@ -1,14 +1,14 @@ package org.openapijsonschematools.client.parameter; import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.contenttype.ContentTypeDetector; import org.openapijsonschematools.client.contenttype.ContentTypeSerializer; import org.openapijsonschematools.client.mediatype.MediaType; import java.util.Map; +import java.util.AbstractMap; -public class ContentParameter extends ParameterBase { +public class ContentParameter extends ParameterBase implements Parameter { public final Map> content; public ContentParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, Map> content) { @@ -16,13 +16,13 @@ public ContentParameter(String name, ParameterInType inType, boolean required, @ this.content = content; } - protected Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) { + @Override + public AbstractMap.SimpleEntry serialize(@Nullable Object inData) { for (Map.Entry> entry: content.entrySet()) { - var castInData = validate ? entry.getValue().schema().validate(inData, configuration) : inData ; String contentType = entry.getKey(); if (ContentTypeDetector.contentTypeIsJson(contentType)) { - var value = ContentTypeSerializer.toJson(castInData); - return Map.of(name, value); + var value = ContentTypeSerializer.toJson(inData); + return new AbstractMap.SimpleEntry<>(name, value); } else { throw new RuntimeException("Serialization of "+contentType+" has not yet been implemented"); } diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java deleted file mode 100644 index 5d8239dc356..00000000000 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; -import org.openapijsonschematools.client.mediatype.MediaType; - -import java.util.Map; - -public class ContentQueryParameter extends ContentParameter implements QueryParameter { - - public ContentQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, Map> content) { - super(name, inType, required, style, explode, allowReserved, content); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, PrefixSeparatorIterator iterator) { - return super.serialize(inData, validate, configuration); - } -} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/CookieSerializer.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/CookieSerializer.java new file mode 100644 index 00000000000..b04b2ca1754 --- /dev/null +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/CookieSerializer.java @@ -0,0 +1,35 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.Map; +import java.util.TreeMap; + +public abstract class CookieSerializer { + private final Map parameters; + + protected CookieSerializer(Map parameters) { + this.parameters = parameters; + } + + public String serialize(Map inData) { + String result = ""; + Map sortedData = new TreeMap<>(inData); + for (Map.Entry entry: sortedData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + if (result.isEmpty()) { + result = serialized.getValue(); + } else { + result = result + "; " + serialized.getValue(); + } + } + return result; + } +} diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java new file mode 100644 index 00000000000..b4a23229944 --- /dev/null +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java @@ -0,0 +1,31 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.List; + +public abstract class HeadersSerializer { + private final Map parameters; + + protected HeadersSerializer(Map parameters) { + this.parameters = parameters; + } + + public Map> serialize(Map inData) { + Map> results = new LinkedHashMap<>(); + for (Map.Entry entry: inData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + results.put(serialized.getKey(), List.of(serialized.getValue())); + } + return results; + } +} diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java deleted file mode 100644 index de5d7451c57..00000000000 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; - -import java.util.Map; - -public interface NonQueryParameter { - Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration); -} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/Parameter.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/Parameter.java new file mode 100644 index 00000000000..9fe0745417c --- /dev/null +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/Parameter.java @@ -0,0 +1,9 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; + +public interface Parameter { + AbstractMap.SimpleEntry serialize(@Nullable Object inData); +} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java index 742792cdb40..8d79129b765 100644 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java @@ -2,7 +2,6 @@ import org.checkerframework.checker.nullness.qual.Nullable; import org.openapijsonschematools.client.header.HeaderBase; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; public class ParameterBase extends HeaderBase { public final String name; @@ -13,27 +12,4 @@ public ParameterBase(String name, ParameterInType inType, boolean required, @Nul this.name = name; this.inType = inType; } - - protected ParameterStyle getStyle() { - if (style != null) { - return style; - } - if (inType == ParameterInType.QUERY || inType == ParameterInType.COOKIE) { - return ParameterStyle.FORM; - } - // ParameterInType.HEADER || ParameterInType.PATH - return ParameterStyle.SIMPLE; - } - - public PrefixSeparatorIterator getPrefixSeparatorIterator() { - ParameterStyle usedStyle = getStyle(); - if (usedStyle == ParameterStyle.FORM) { - return new PrefixSeparatorIterator("?", "&"); - } else if (usedStyle == ParameterStyle.SPACE_DELIMITED) { - return new PrefixSeparatorIterator("", "%20"); - } else if (usedStyle == ParameterStyle.PIPE_DELIMITED) { - return new PrefixSeparatorIterator("", "|"); - } - throw new RuntimeException("No iterator possible for style="+usedStyle); - } } \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/PathSerializer.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/PathSerializer.java new file mode 100644 index 00000000000..5864f89c901 --- /dev/null +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/PathSerializer.java @@ -0,0 +1,29 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.Map; + +public abstract class PathSerializer { + private final Map parameters; + + protected PathSerializer(Map parameters) { + this.parameters = parameters; + } + + public String serialize(Map inData, String pathWithPlaceholders) { + String result = pathWithPlaceholders; + for (Map.Entry entry: inData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + result = result.replace("{" + mapKey + "}", serialized.getValue()); + } + return result; + } +} diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java deleted file mode 100644 index 0dbced20599..00000000000 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; - -import java.util.Map; - -public interface QueryParameter { - Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, PrefixSeparatorIterator iterator); - PrefixSeparatorIterator getPrefixSeparatorIterator(); -} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java new file mode 100644 index 00000000000..91ea0b041bb --- /dev/null +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java @@ -0,0 +1,47 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; + +public abstract class QuerySerializer { + private final Map parameters; + + protected QuerySerializer(Map parameters) { + this.parameters = parameters; + } + + public Map getQueryMap(Map inData) { + Map results = new HashMap<>(); + for (Map.Entry entry: inData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + results.put(serialized.getKey(), serialized.getValue()); + } + return new TreeMap<>(results); + } + + public String serialize(Map queryMap) { + if (queryMap.isEmpty()) { + return ""; + } + String result = "?"; + for (String serializedValue: queryMap.values()) { + if (result.length() == 1) { + result = result + serializedValue; + } else { + result = result + "&" + serializedValue; + } + } + // TODO what if the style is not FORM? + return result; + } +} diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameter.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameter.java deleted file mode 100644 index 80976ec5d85..00000000000 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameter.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; -import org.openapijsonschematools.client.schemas.validation.JsonSchema; - -import java.util.Map; - -public class SchemaNonQueryParameter extends SchemaParameter implements NonQueryParameter { - - public SchemaNonQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, JsonSchema schema) { - super(name, inType, required, style, explode, allowReserved, schema); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) { - return super.serialize(inData, validate, configuration, null); - } -} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java index 597916bbdfc..8acfdafcc8a 100644 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java @@ -1,17 +1,12 @@ package org.openapijsonschematools.client.parameter; import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; import org.openapijsonschematools.client.header.StyleSerializer; import org.openapijsonschematools.client.schemas.validation.JsonSchema; -import org.openapijsonschematools.client.header.HeaderBase; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; -import org.openapijsonschematools.client.header.StyleSerializer; -import org.openapijsonschematools.client.schemas.validation.JsonSchema; -import java.util.Map; -public class SchemaParameter extends ParameterBase { +import java.util.AbstractMap; + +public class SchemaParameter extends ParameterBase implements Parameter { public final JsonSchema schema; public SchemaParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, JsonSchema schema) { @@ -19,36 +14,46 @@ public SchemaParameter(String name, ParameterInType inType, boolean required, @N this.schema = schema; } - protected Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, @Nullable PrefixSeparatorIterator iterator) { - var castInData = validate ? schema.validate(inData, configuration) : inData; + private ParameterStyle getStyle() { + if (style != null) { + return style; + } + if (inType == ParameterInType.QUERY || inType == ParameterInType.COOKIE) { + return ParameterStyle.FORM; + } + // ParameterInType.HEADER || ParameterInType.PATH + return ParameterStyle.SIMPLE; + } + + @Override + public AbstractMap.SimpleEntry serialize(@Nullable Object inData) { ParameterStyle usedStyle = getStyle(); boolean percentEncode = inType == ParameterInType.QUERY || inType == ParameterInType.PATH; String value; boolean usedExplode = explode == null ? usedStyle == ParameterStyle.FORM : explode; if (usedStyle == ParameterStyle.SIMPLE) { // header OR path - value = StyleSerializer.serializeSimple(castInData, name, usedExplode, percentEncode); + value = StyleSerializer.serializeSimple(inData, name, usedExplode, percentEncode); } else if (usedStyle == ParameterStyle.FORM) { // query OR cookie - boolean isCookie = inType == ParameterInType.COOKIE; - value = StyleSerializer.serializeForm(castInData, name, usedExplode, percentEncode, iterator, isCookie); + value = StyleSerializer.serializeForm(inData, name, usedExplode, percentEncode); } else if (usedStyle == ParameterStyle.LABEL) { // path - value = StyleSerializer.serializeLabel(castInData, name, usedExplode); + value = StyleSerializer.serializeLabel(inData, name, usedExplode); } else if (usedStyle == ParameterStyle.MATRIX) { // path - value = StyleSerializer.serializeMatrix(castInData, name, usedExplode); + value = StyleSerializer.serializeMatrix(inData, name, usedExplode); } else if (usedStyle == ParameterStyle.SPACE_DELIMITED) { // query - value = StyleSerializer.serializeSpaceDelimited(castInData, name, usedExplode, iterator); + value = StyleSerializer.serializeSpaceDelimited(inData, name, usedExplode); } else if (usedStyle == ParameterStyle.PIPE_DELIMITED) { // query - value = StyleSerializer.serializePipeDelimited(castInData, name, usedExplode, iterator); + value = StyleSerializer.serializePipeDelimited(inData, name, usedExplode); } else { // usedStyle == ParameterStyle.DEEP_OBJECT // query throw new RuntimeException("Style deep object serialization has not yet been implemented."); } - return Map.of(name, value); + return new AbstractMap.SimpleEntry<>(name, value); } } \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaQueryParameter.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaQueryParameter.java deleted file mode 100644 index e85794b4a6d..00000000000 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaQueryParameter.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; -import org.openapijsonschematools.client.schemas.validation.JsonSchema; - -import java.util.Map; - -public class SchemaQueryParameter extends SchemaParameter implements QueryParameter { - - public SchemaQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, JsonSchema schema) { - super(name, inType, required, style, explode, allowReserved, schema); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, PrefixSeparatorIterator iterator) { - return super.serialize(inData, validate, configuration, iterator); - } -} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java index 30347681cbf..990f21a1148 100644 --- a/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java +++ b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java @@ -27,7 +27,7 @@ public void testSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, Map.of("color", List.of("null")) diff --git a/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/CookieSerializerTest.java b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/CookieSerializerTest.java new file mode 100644 index 00000000000..a19ea8c1007 --- /dev/null +++ b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/CookieSerializerTest.java @@ -0,0 +1,44 @@ +package org.openapijsonschematools.client.parameter; + +import org.junit.Assert; +import org.junit.Test; +import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; + +public class CookieSerializerTest { + public static class Parameter1 extends SchemaParameter { + public Parameter1() { + super("param1", ParameterInType.COOKIE, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Parameter2 extends SchemaParameter { + public Parameter2() { + super("param2", ParameterInType.COOKIE, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class CookieParametersSerializer extends CookieSerializer { + protected CookieParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Parameter1()), + new AbstractMap.SimpleEntry<>("param2", new Parameter2()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + String cookie = new CookieParametersSerializer().serialize(inData); + String expectedCookie = "param1=a; param2=3.14"; + Assert.assertEquals(expectedCookie, cookie); + } +} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/HeadersSerializerTest.java b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/HeadersSerializerTest.java new file mode 100644 index 00000000000..63f3159bf0a --- /dev/null +++ b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/HeadersSerializerTest.java @@ -0,0 +1,48 @@ +package org.openapijsonschematools.client.parameter; + +import org.junit.Assert; +import org.junit.Test; +import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; +import java.util.List; + +public class HeadersSerializerTest { + public static class Param1HeaderParameter extends SchemaParameter { + public Param1HeaderParameter() { + super("param1", ParameterInType.HEADER, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Param2HeaderParameter extends SchemaParameter { + public Param2HeaderParameter() { + super("param2", ParameterInType.HEADER, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class HeaderParametersSerializer extends HeadersSerializer { + protected HeaderParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Param1HeaderParameter()), + new AbstractMap.SimpleEntry<>("param2", new Param2HeaderParameter()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + Map> expectedHeaders = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", List.of("a")), + new AbstractMap.SimpleEntry<>("param2", List.of("3.14")) + ); + Map> headers = new HeaderParametersSerializer().serialize(inData); + Assert.assertEquals(expectedHeaders, headers); + } +} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/PathSerializerTest.java b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/PathSerializerTest.java new file mode 100644 index 00000000000..bef110af08d --- /dev/null +++ b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/PathSerializerTest.java @@ -0,0 +1,45 @@ +package org.openapijsonschematools.client.parameter; + +import org.junit.Assert; +import org.junit.Test; +import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; + +public class PathSerializerTest { + public static class Parameter1 extends SchemaParameter { + public Parameter1() { + super("param1", ParameterInType.PATH, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Parameter2 extends SchemaParameter { + public Parameter2() { + super("param2", ParameterInType.PATH, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class PathParametersSerializer extends PathSerializer { + protected PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Parameter1()), + new AbstractMap.SimpleEntry<>("param2", new Parameter2()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + String pathWithPlaceholders = "/{param1}/{param2}"; + String path = new PathParametersSerializer().serialize(inData, pathWithPlaceholders); + String expectedPath = "/a/3.14"; + Assert.assertEquals(expectedPath, path); + } +} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/QuerySerializerTest.java b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/QuerySerializerTest.java new file mode 100644 index 00000000000..ed5aae7e580 --- /dev/null +++ b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/QuerySerializerTest.java @@ -0,0 +1,51 @@ +package org.openapijsonschematools.client.parameter; + +import org.junit.Assert; +import org.junit.Test; +import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; + +public class QuerySerializerTest { + public static class Param1QueryParameter extends SchemaParameter { + public Param1QueryParameter() { + super("param1", ParameterInType.QUERY, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Param2QueryParameter extends SchemaParameter { + public Param2QueryParameter() { + super("param2", ParameterInType.QUERY, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class QueryParametersSerializer extends QuerySerializer { + protected QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Param1QueryParameter()), + new AbstractMap.SimpleEntry<>("param2", new Param2QueryParameter()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + var serializer = new QueryParametersSerializer(); + var queryMap = serializer.getQueryMap(inData); + Map expectedQueryMap = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "param1=a"), + new AbstractMap.SimpleEntry<>("param2", "param2=3.14") + ); + Assert.assertEquals(expectedQueryMap, queryMap); + String query = serializer.serialize(queryMap); + String expectedQuery = "?param1=a¶m2=3.14"; + Assert.assertEquals(expectedQuery, query); + } +} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java index cc681934e5e..871d4f073f3 100644 --- a/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java +++ b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java @@ -3,24 +3,23 @@ import org.checkerframework.checker.nullness.qual.Nullable; import org.junit.Assert; import org.junit.Test; -import org.openapijsonschematools.client.configurations.JsonSchemaKeywordFlags; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.exceptions.InvalidTypeException; import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.AbstractMap; import java.util.Set; public class SchemaNonQueryParameterTest { - public record ParamTestCase(@Nullable Object payload, Map expectedSerialization, @Nullable Boolean explode) { - public ParamTestCase(@Nullable Object payload, Map expectedSerialization) { + public record ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization, @Nullable Boolean explode) { + public ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization) { this(payload, expectedSerialization, null); } } - public static class HeaderParameter extends SchemaNonQueryParameter { + public static class HeaderParameter extends SchemaParameter { public HeaderParameter(@Nullable Boolean explode) { super("color", ParameterInType.HEADER, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -32,74 +31,73 @@ public void testHeaderSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "1") + new AbstractMap.SimpleEntry<>("color", "1") ), new ParamTestCase( 3.14, - Map.of("color","3.14") + new AbstractMap.SimpleEntry<>("color","3.14") ), new ParamTestCase( "blue", - Map.of("color", "blue") + new AbstractMap.SimpleEntry<>("color", "blue") ), new ParamTestCase( "hello world", - Map.of("color", "hello world") + new AbstractMap.SimpleEntry<>("color", "hello world") ), new ParamTestCase( "", - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown") + new AbstractMap.SimpleEntry<>("color", "blue,black,brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown"), + new AbstractMap.SimpleEntry<>("color", "blue,black,brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R,100,G,200,B,150") + new AbstractMap.SimpleEntry<>("color", "R,100,G,200,B,150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100,G=200,B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100,G=200,B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var header = new HeaderParameter(testCase.explode); - var serialization = header.serialize(testCase.payload, false, configuration); + var serialization = header.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var boolHeader = new HeaderParameter(false); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> boolHeader.serialize(value, false, configuration) + () -> boolHeader.serialize(value) ); } } - public static class PathParameter extends SchemaNonQueryParameter { + public static class PathParameter extends SchemaParameter { public PathParameter(@Nullable Boolean explode) { super("color", ParameterInType.PATH, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -111,74 +109,73 @@ public void testPathSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "1") + new AbstractMap.SimpleEntry<>("color", "1") ), new ParamTestCase( 3.14, - Map.of("color","3.14") + new AbstractMap.SimpleEntry<>("color","3.14") ), new ParamTestCase( "blue", - Map.of("color", "blue") + new AbstractMap.SimpleEntry<>("color", "blue") ), new ParamTestCase( "hello world", - Map.of("color", "hello%20world") + new AbstractMap.SimpleEntry<>("color", "hello%20world") ), new ParamTestCase( "", - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown") + new AbstractMap.SimpleEntry<>("color", "blue,black,brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown"), + new AbstractMap.SimpleEntry<>("color", "blue,black,brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R,100,G,200,B,150") + new AbstractMap.SimpleEntry<>("color", "R,100,G,200,B,150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100,G=200,B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100,G=200,B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var pathParameter = new PathParameter(testCase.explode); - var serialization = pathParameter.serialize(testCase.payload, false, configuration); + var serialization = pathParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var pathParameter = new PathParameter(false); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> pathParameter.serialize(value, false, configuration) + () -> pathParameter.serialize(value) ); } } - public static class CookieParameter extends SchemaNonQueryParameter { + public static class CookieParameter extends SchemaParameter { public CookieParameter(@Nullable Boolean explode) { super("color", ParameterInType.COOKIE, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -190,74 +187,73 @@ public void testCookieSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "color=1") + new AbstractMap.SimpleEntry<>("color", "color=1") ), new ParamTestCase( 3.14, - Map.of("color","color=3.14") + new AbstractMap.SimpleEntry<>("color","color=3.14") ), new ParamTestCase( "blue", - Map.of("color", "color=blue") + new AbstractMap.SimpleEntry<>("color", "color=blue") ), new ParamTestCase( "hello world", - Map.of("color", "color=hello world") + new AbstractMap.SimpleEntry<>("color", "color=hello world") ), new ParamTestCase( "", - Map.of("color", "color=") + new AbstractMap.SimpleEntry<>("color", "color=") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "color=blue&color=black&color=brown") + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "color=blue&color=black&color=brown"), + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100&G=200&B=150") + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100&G=200&B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var cookieParameter = new CookieParameter(testCase.explode); - var serialization = cookieParameter.serialize(testCase.payload, false, configuration); + var serialization = cookieParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var cookieParameter = new CookieParameter(false); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> cookieParameter.serialize(value, false, configuration) + () -> cookieParameter.serialize(value) ); } } - public static class PathMatrixParameter extends SchemaNonQueryParameter { + public static class PathMatrixParameter extends SchemaParameter { public PathMatrixParameter(@Nullable Boolean explode) { super("color", ParameterInType.PATH, true, ParameterStyle.MATRIX, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -269,67 +265,66 @@ public void testPathMatrixSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", ";color=1") + new AbstractMap.SimpleEntry<>("color", ";color=1") ), new ParamTestCase( 3.14, - Map.of("color",";color=3.14") + new AbstractMap.SimpleEntry<>("color",";color=3.14") ), new ParamTestCase( "blue", - Map.of("color", ";color=blue") + new AbstractMap.SimpleEntry<>("color", ";color=blue") ), new ParamTestCase( "hello world", - Map.of("color", ";color=hello%20world") + new AbstractMap.SimpleEntry<>("color", ";color=hello%20world") ), new ParamTestCase( "", - Map.of("color", ";color") + new AbstractMap.SimpleEntry<>("color", ";color") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ";color=blue,black,brown") + new AbstractMap.SimpleEntry<>("color", ";color=blue,black,brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ";color=blue;color=black;color=brown"), + new AbstractMap.SimpleEntry<>("color", ";color=blue;color=black;color=brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", ";color=R,100,G,200,B,150") + new AbstractMap.SimpleEntry<>("color", ";color=R,100,G,200,B,150") ), new ParamTestCase( mapPayload, - Map.of("color", ";R=100;G=200;B=150"), + new AbstractMap.SimpleEntry<>("color", ";R=100;G=200;B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var pathParameter = new PathMatrixParameter(testCase.explode); - var serialization = pathParameter.serialize(testCase.payload, false, configuration); + var serialization = pathParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } - public static class PathLabelParameter extends SchemaNonQueryParameter { + public static class PathLabelParameter extends SchemaParameter { public PathLabelParameter(@Nullable Boolean explode) { super("color", ParameterInType.PATH, true, ParameterStyle.LABEL, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -341,62 +336,61 @@ public void testPathLabelSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", ".1") + new AbstractMap.SimpleEntry<>("color", ".1") ), new ParamTestCase( 3.14, - Map.of("color",".3.14") + new AbstractMap.SimpleEntry<>("color",".3.14") ), new ParamTestCase( "blue", - Map.of("color", ".blue") + new AbstractMap.SimpleEntry<>("color", ".blue") ), new ParamTestCase( "hello world", - Map.of("color", ".hello%20world") + new AbstractMap.SimpleEntry<>("color", ".hello%20world") ), new ParamTestCase( "", - Map.of("color", ".") + new AbstractMap.SimpleEntry<>("color", ".") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ".blue.black.brown") + new AbstractMap.SimpleEntry<>("color", ".blue.black.brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ".blue.black.brown"), + new AbstractMap.SimpleEntry<>("color", ".blue.black.brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", ".R.100.G.200.B.150") + new AbstractMap.SimpleEntry<>("color", ".R.100.G.200.B.150") ), new ParamTestCase( mapPayload, - Map.of("color", ".R=100.G=200.B=150"), + new AbstractMap.SimpleEntry<>("color", ".R=100.G=200.B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var pathParameter = new PathLabelParameter(testCase.explode); - var serialization = pathParameter.serialize(testCase.payload, false, configuration); + var serialization = pathParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } diff --git a/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java index b36fc740804..f4ea29fccb3 100644 --- a/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java +++ b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java @@ -3,24 +3,23 @@ import org.checkerframework.checker.nullness.qual.Nullable; import org.junit.Assert; import org.junit.Test; -import org.openapijsonschematools.client.configurations.JsonSchemaKeywordFlags; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.exceptions.InvalidTypeException; import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; import java.util.LinkedHashMap; import java.util.List; +import java.util.AbstractMap; import java.util.Map; import java.util.Set; public class SchemaQueryParameterTest { - public record ParamTestCase(@Nullable Object payload, Map expectedSerialization, @Nullable Boolean explode) { - public ParamTestCase(@Nullable Object payload, Map expectedSerialization) { + public record ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization, @Nullable Boolean explode) { + public ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization) { this(payload, expectedSerialization, null); } } - public static class QueryParameterNoStyle extends SchemaQueryParameter { + public static class QueryParameterNoStyle extends SchemaParameter { public QueryParameterNoStyle(@Nullable Boolean explode) { super("color", ParameterInType.QUERY, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -32,76 +31,73 @@ public void testQueryParameterNoStyleSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "?color=1") + new AbstractMap.SimpleEntry<>("color", "color=1") ), new ParamTestCase( 3.14, - Map.of("color","?color=3.14") + new AbstractMap.SimpleEntry<>("color","color=3.14") ), new ParamTestCase( "blue", - Map.of("color", "?color=blue") + new AbstractMap.SimpleEntry<>("color", "color=blue") ), new ParamTestCase( "hello world", - Map.of("color", "?color=hello%20world") + new AbstractMap.SimpleEntry<>("color", "color=hello%20world") ), new ParamTestCase( "", - Map.of("color", "?color=") + new AbstractMap.SimpleEntry<>("color", "color=") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "?color=blue&color=black&color=brown") + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "?color=blue&color=black&color=brown"), + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "?R=100&G=200&B=150") + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150") ), new ParamTestCase( mapPayload, - Map.of("color", "?R=100&G=200&B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var parameter = new QueryParameterNoStyle(testCase.explode); - var iterator = parameter.getPrefixSeparatorIterator(); - var serialization = parameter.serialize(testCase.payload, false, configuration, iterator); + var serialization = parameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var parameter = new QueryParameterNoStyle(false); - var iterator = parameter.getPrefixSeparatorIterator(); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> parameter.serialize(value, false, configuration, iterator) + () -> parameter.serialize(value) ); } } - public static class QueryParameterSpaceDelimited extends SchemaQueryParameter { + public static class QueryParameterSpaceDelimited extends SchemaParameter { public QueryParameterSpaceDelimited(@Nullable Boolean explode) { super("color", ParameterInType.QUERY, true, ParameterStyle.SPACE_DELIMITED, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -113,44 +109,42 @@ public void testQueryParameterSpaceDelimitedSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue%20black%20brown") + new AbstractMap.SimpleEntry<>("color", "blue%20black%20brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue%20black%20brown"), + new AbstractMap.SimpleEntry<>("color", "blue%20black%20brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R%20100%20G%20200%20B%20150") + new AbstractMap.SimpleEntry<>("color", "R%20100%20G%20200%20B%20150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100%20G=200%20B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100%20G=200%20B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var parameter = new QueryParameterSpaceDelimited(testCase.explode); - var iterator = parameter.getPrefixSeparatorIterator(); - var serialization = parameter.serialize(testCase.payload, false, configuration, iterator); + var serialization = parameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } - public static class QueryParameterPipeDelimited extends SchemaQueryParameter { + public static class QueryParameterPipeDelimited extends SchemaParameter { public QueryParameterPipeDelimited(@Nullable Boolean explode) { super("color", ParameterInType.QUERY, true, ParameterStyle.PIPE_DELIMITED, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -162,39 +156,37 @@ public void testQueryParameterPipeDelimitedSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue|black|brown") + new AbstractMap.SimpleEntry<>("color", "blue|black|brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue|black|brown"), + new AbstractMap.SimpleEntry<>("color", "blue|black|brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R|100|G|200|B|150") + new AbstractMap.SimpleEntry<>("color", "R|100|G|200|B|150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100|G=200|B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100|G=200|B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var parameter = new QueryParameterPipeDelimited(testCase.explode); - var iterator = parameter.getPrefixSeparatorIterator(); - var serialization = parameter.serialize(testCase.payload, false, configuration, iterator); + var serialization = parameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } diff --git a/samples/client/petstore/java/.openapi-generator/FILES b/samples/client/petstore/java/.openapi-generator/FILES index b83f4c06c88..7db84ab644e 100644 --- a/samples/client/petstore/java/.openapi-generator/FILES +++ b/samples/client/petstore/java/.openapi-generator/FILES @@ -191,7 +191,7 @@ docs/paths/anotherfakedummy/patch/responses/code200response/content/applicationj docs/paths/commonparamsubdir/delete/parameters/parameter0/Schema0.md docs/paths/commonparamsubdir/delete/parameters/parameter1/Schema1.md docs/paths/commonparamsubdir/get/parameters/parameter0/Schema0.md -docs/paths/commonparamsubdir/parameters/parameter0/PathParamSchema0.md +docs/paths/commonparamsubdir/parameters/routeparameter0/RouteParamSchema0.md docs/paths/commonparamsubdir/post/parameters/parameter0/Schema0.md docs/paths/fake/delete/parameters/parameter0/Schema0.md docs/paths/fake/delete/parameters/parameter1/Schema1.md @@ -557,22 +557,22 @@ src/main/java/org/openapijsonschematools/client/header/SchemaHeader.java src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java src/main/java/org/openapijsonschematools/client/mediatype/Encoding.java src/main/java/org/openapijsonschematools/client/mediatype/MediaType.java -src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java -src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java -src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java +src/main/java/org/openapijsonschematools/client/parameter/CookieSerializer.java +src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java +src/main/java/org/openapijsonschematools/client/parameter/Parameter.java src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java src/main/java/org/openapijsonschematools/client/parameter/ParameterInType.java src/main/java/org/openapijsonschematools/client/parameter/ParameterStyle.java -src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java -src/main/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameter.java +src/main/java/org/openapijsonschematools/client/parameter/PathSerializer.java +src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java -src/main/java/org/openapijsonschematools/client/parameter/SchemaQueryParameter.java src/main/java/org/openapijsonschematools/client/paths/anotherfakedummy/patch/RequestBody.java src/main/java/org/openapijsonschematools/client/paths/anotherfakedummy/patch/Responses.java src/main/java/org/openapijsonschematools/client/paths/anotherfakedummy/patch/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/anotherfakedummy/patch/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/HeaderParameters.java +src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/Parameters.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/Responses.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/parameters/Parameter0.java @@ -580,15 +580,17 @@ src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/p src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/parameters/parameter1/Schema1.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/responses/Code200Response.java +src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/Parameters.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/parameters/Parameter0.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/responses/Code200Response.java -src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/Parameter0.java -src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/parameter0/PathParamSchema0.java +src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/RouteParameter0.java +src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/routeparameter0/RouteParamSchema0.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/HeaderParameters.java +src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/Parameters.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/parameters/Parameter0.java @@ -596,6 +598,7 @@ src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/par src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fake/delete/FakeDeleteSecurityInfo.java src/main/java/org/openapijsonschematools/client/paths/fake/delete/HeaderParameters.java +src/main/java/org/openapijsonschematools/client/paths/fake/delete/Parameters.java src/main/java/org/openapijsonschematools/client/paths/fake/delete/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/fake/delete/Responses.java src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter0.java @@ -613,6 +616,7 @@ src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/par src/main/java/org/openapijsonschematools/client/paths/fake/delete/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fake/delete/security/FakeDeleteSecurityRequirementObject0.java src/main/java/org/openapijsonschematools/client/paths/fake/get/HeaderParameters.java +src/main/java/org/openapijsonschematools/client/paths/fake/get/Parameters.java src/main/java/org/openapijsonschematools/client/paths/fake/get/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/fake/get/RequestBody.java src/main/java/org/openapijsonschematools/client/paths/fake/get/Responses.java @@ -652,6 +656,7 @@ src/main/java/org/openapijsonschematools/client/paths/fakebodywithfileschema/put src/main/java/org/openapijsonschematools/client/paths/fakebodywithfileschema/put/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakebodywithfileschema/put/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakebodywithfileschema/put/responses/Code200Response.java +src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/Parameters.java src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/RequestBody.java src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/Responses.java @@ -659,6 +664,7 @@ src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/pu src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/responses/Code200Response.java +src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/Parameters.java src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/Parameter0.java @@ -674,6 +680,7 @@ src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/Re src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/security/FakeclassnametestPatchSecurityRequirementObject0.java +src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/Parameters.java src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/parameters/Parameter0.java @@ -687,6 +694,7 @@ src/main/java/org/openapijsonschematools/client/paths/fakeinlineadditionalproper src/main/java/org/openapijsonschematools/client/paths/fakeinlineadditionalproperties/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakeinlineadditionalproperties/post/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakeinlineadditionalproperties/post/responses/Code200Response.java +src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/Parameters.java src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/RequestBody.java src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/Responses.java @@ -730,6 +738,7 @@ src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/security/FakemultiplesecuritiesGetSecurityRequirementObject0.java src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/security/FakemultiplesecuritiesGetSecurityRequirementObject1.java src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/security/FakemultiplesecuritiesGetSecurityRequirementObject2.java +src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/Parameters.java src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/parameters/Parameter0.java @@ -737,6 +746,7 @@ src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/paramet src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/CookieParameters.java src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/HeaderParameters.java +src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/Parameters.java src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/RequestBody.java @@ -788,6 +798,7 @@ src/main/java/org/openapijsonschematools/client/paths/fakepemcontenttype/get/req src/main/java/org/openapijsonschematools/client/paths/fakepemcontenttype/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakepemcontenttype/get/responses/code200response/content/applicationxpemfile/ApplicationxpemfileSchema.java src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/FakepetiduploadimagewithrequiredfilePostSecurityInfo.java +src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/Parameters.java src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/RequestBody.java src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/Responses.java @@ -797,6 +808,7 @@ src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithre src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/security/FakepetiduploadimagewithrequiredfilePostSecurityRequirementObject0.java +src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/Parameters.java src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/parameters/Parameter0.java @@ -806,6 +818,7 @@ src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncont src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/responses/Code303Response.java src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/responses/Code3XXResponse.java +src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/Parameters.java src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/parameters/Parameter0.java @@ -858,6 +871,7 @@ src/main/java/org/openapijsonschematools/client/paths/fakerefsstring/post/respon src/main/java/org/openapijsonschematools/client/paths/fakerefsstring/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakeresponsewithoutschema/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakeresponsewithoutschema/get/responses/Code200Response.java +src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/Parameters.java src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/Responses.java src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter0.java @@ -925,6 +939,7 @@ src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code405R src/main/java/org/openapijsonschematools/client/paths/pet/put/security/PetPutSecurityRequirementObject0.java src/main/java/org/openapijsonschematools/client/paths/pet/put/security/PetPutSecurityRequirementObject1.java src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/PetfindbystatusServerInfo.java +src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/Parameters.java src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/PetfindbystatusGetSecurityInfo.java src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/Responses.java @@ -938,6 +953,7 @@ src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/securi src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/servers/PetfindbystatusServer0.java src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/servers/PetfindbystatusServer1.java src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/servers/server1/Variables.java +src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/Parameters.java src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/PetfindbytagsGetSecurityInfo.java src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/Responses.java @@ -948,6 +964,7 @@ src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/response src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/security/PetfindbytagsGetSecurityRequirementObject0.java src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/security/PetfindbytagsGetSecurityRequirementObject1.java src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/HeaderParameters.java +src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/Parameters.java src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/PetpetidDeleteSecurityInfo.java src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/Responses.java @@ -958,6 +975,7 @@ src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/parameters src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/responses/Code400Response.java src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/security/PetpetidDeleteSecurityRequirementObject0.java src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/security/PetpetidDeleteSecurityRequirementObject1.java +src/main/java/org/openapijsonschematools/client/paths/petpetid/get/Parameters.java src/main/java/org/openapijsonschematools/client/paths/petpetid/get/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/petpetid/get/PetpetidGetSecurityInfo.java src/main/java/org/openapijsonschematools/client/paths/petpetid/get/Responses.java @@ -969,6 +987,7 @@ src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Cod src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/code200response/content/applicationxml/ApplicationxmlSchema.java src/main/java/org/openapijsonschematools/client/paths/petpetid/get/security/PetpetidGetSecurityRequirementObject0.java +src/main/java/org/openapijsonschematools/client/paths/petpetid/post/Parameters.java src/main/java/org/openapijsonschematools/client/paths/petpetid/post/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/petpetid/post/PetpetidPostSecurityInfo.java src/main/java/org/openapijsonschematools/client/paths/petpetid/post/RequestBody.java @@ -979,6 +998,7 @@ src/main/java/org/openapijsonschematools/client/paths/petpetid/post/requestbody/ src/main/java/org/openapijsonschematools/client/paths/petpetid/post/responses/Code405Response.java src/main/java/org/openapijsonschematools/client/paths/petpetid/post/security/PetpetidPostSecurityRequirementObject0.java src/main/java/org/openapijsonschematools/client/paths/petpetid/post/security/PetpetidPostSecurityRequirementObject1.java +src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/Parameters.java src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/PetpetiduploadimagePostSecurityInfo.java src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/RequestBody.java @@ -1001,12 +1021,14 @@ src/main/java/org/openapijsonschematools/client/paths/storeorder/post/responses/ src/main/java/org/openapijsonschematools/client/paths/storeorder/post/responses/Code400Response.java src/main/java/org/openapijsonschematools/client/paths/storeorder/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/storeorder/post/responses/code200response/content/applicationxml/ApplicationxmlSchema.java +src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/Parameters.java src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/Responses.java src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/parameters/Parameter0.java src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/responses/Code400Response.java src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/responses/Code404Response.java +src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/Parameters.java src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/parameters/Parameter0.java @@ -1026,6 +1048,7 @@ src/main/java/org/openapijsonschematools/client/paths/usercreatewitharray/post/r src/main/java/org/openapijsonschematools/client/paths/usercreatewithlist/post/RequestBody.java src/main/java/org/openapijsonschematools/client/paths/usercreatewithlist/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/usercreatewithlist/post/responses/CodedefaultResponse.java +src/main/java/org/openapijsonschematools/client/paths/userlogin/get/Parameters.java src/main/java/org/openapijsonschematools/client/paths/userlogin/get/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/userlogin/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/userlogin/get/parameters/Parameter0.java @@ -1047,11 +1070,13 @@ src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/co src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/code200response/headers/xratelimit/content/applicationjson/XRateLimitSchema.java src/main/java/org/openapijsonschematools/client/paths/userlogout/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/userlogout/get/responses/CodedefaultResponse.java +src/main/java/org/openapijsonschematools/client/paths/userusername/delete/Parameters.java src/main/java/org/openapijsonschematools/client/paths/userusername/delete/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/userusername/delete/Responses.java src/main/java/org/openapijsonschematools/client/paths/userusername/delete/parameters/Parameter0.java src/main/java/org/openapijsonschematools/client/paths/userusername/delete/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/userusername/delete/responses/Code404Response.java +src/main/java/org/openapijsonschematools/client/paths/userusername/get/Parameters.java src/main/java/org/openapijsonschematools/client/paths/userusername/get/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/userusername/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/userusername/get/parameters/Parameter0.java @@ -1060,6 +1085,7 @@ src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code404Response.java src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/code200response/content/applicationxml/ApplicationxmlSchema.java +src/main/java/org/openapijsonschematools/client/paths/userusername/put/Parameters.java src/main/java/org/openapijsonschematools/client/paths/userusername/put/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/userusername/put/RequestBody.java src/main/java/org/openapijsonschematools/client/paths/userusername/put/Responses.java @@ -1196,6 +1222,10 @@ src/main/java/org/openapijsonschematools/client/servers/server1/Variables.java src/test/java/org/openapijsonschematools/client/configurations/JsonSchemaKeywordFlagsTest.java src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java src/test/java/org/openapijsonschematools/client/header/SchemaHeaderTest.java +src/test/java/org/openapijsonschematools/client/parameter/CookieSerializerTest.java +src/test/java/org/openapijsonschematools/client/parameter/HeadersSerializerTest.java +src/test/java/org/openapijsonschematools/client/parameter/PathSerializerTest.java +src/test/java/org/openapijsonschematools/client/parameter/QuerySerializerTest.java src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java src/test/java/org/openapijsonschematools/client/requestbody/RequestBodySerializerTest.java diff --git a/samples/client/petstore/java/docs/components/parameters/ComponentRefSchemaStringWithValidation.md b/samples/client/petstore/java/docs/components/parameters/ComponentRefSchemaStringWithValidation.md index 328cb199cb6..882379fc131 100644 --- a/samples/client/petstore/java/docs/components/parameters/ComponentRefSchemaStringWithValidation.md +++ b/samples/client/petstore/java/docs/components/parameters/ComponentRefSchemaStringWithValidation.md @@ -32,7 +32,7 @@ class storing schema info for a specific contentType | Void | encoding()
the encoding info | ## ComponentRefSchemaStringWithValidation1 -public static class ComponentRefSchemaStringWithValidation1 extends ContentNonQueryParameter
+public static class ComponentRefSchemaStringWithValidation1 extends ContentParameter
a class that deserializes a parameter value diff --git a/samples/client/petstore/java/docs/components/parameters/PathUserName.md b/samples/client/petstore/java/docs/components/parameters/PathUserName.md index c669211d43d..01289864ea2 100644 --- a/samples/client/petstore/java/docs/components/parameters/PathUserName.md +++ b/samples/client/petstore/java/docs/components/parameters/PathUserName.md @@ -13,7 +13,7 @@ A class that contains necessary nested parameter classes ## PathUserName1 -public static class PathUserName1 extends SchemaNonQueryParameter
+public static class PathUserName1 extends SchemaParameter
a class that deserializes a parameter value diff --git a/samples/client/petstore/java/docs/components/parameters/RefSchemaStringWithValidation.md b/samples/client/petstore/java/docs/components/parameters/RefSchemaStringWithValidation.md index b5bbb344332..bd17acf394a 100644 --- a/samples/client/petstore/java/docs/components/parameters/RefSchemaStringWithValidation.md +++ b/samples/client/petstore/java/docs/components/parameters/RefSchemaStringWithValidation.md @@ -13,7 +13,7 @@ A class that contains necessary nested parameter classes ## RefSchemaStringWithValidation1 -public static class RefSchemaStringWithValidation1 extends SchemaNonQueryParameter
+public static class RefSchemaStringWithValidation1 extends SchemaParameter
a class that deserializes a parameter value diff --git a/samples/client/petstore/java/docs/paths/commonparamsubdir/parameters/routeparameter0/RouteParamSchema0.md b/samples/client/petstore/java/docs/paths/commonparamsubdir/parameters/routeparameter0/RouteParamSchema0.md new file mode 100644 index 00000000000..f298271d6d5 --- /dev/null +++ b/samples/client/petstore/java/docs/paths/commonparamsubdir/parameters/routeparameter0/RouteParamSchema0.md @@ -0,0 +1,96 @@ +# RouteParamSchema0 +public class RouteParamSchema0
+ +A class that contains necessary nested +- schema classes (which validate payloads), extends JsonSchema +- sealed interfaces which store validated payloads, java version of a sum type +- boxed classes which store validated payloads, sealed permits class implementations +- enum classes + +## Nested Class Summary +| Modifier and Type | Class and Description | +| ----------------- | ---------------------- | +| sealed interface | [RouteParamSchema0.RouteParamSchema01Boxed](#routeparamschema01boxed)
sealed interface for validated payloads | +| record | [RouteParamSchema0.RouteParamSchema01BoxedString](#routeparamschema01boxedstring)
boxed class to store validated String payloads | +| static class | [RouteParamSchema0.RouteParamSchema01](#routeparamschema01)
schema class | +| enum | [RouteParamSchema0.StringRouteParamSchemaEnums0](#stringrouteparamschemaenums0)
String enum | + +## RouteParamSchema01Boxed +public sealed interface RouteParamSchema01Boxed
+permits
+[RouteParamSchema01BoxedString](#routeparamschema01boxedstring) + +sealed interface that stores validated payloads using boxed classes + +## RouteParamSchema01BoxedString +public record RouteParamSchema01BoxedString
+implements [RouteParamSchema01Boxed](#routeparamschema01boxed) + +record that stores validated String payloads, sealed permits implementation + +### Constructor Summary +| Constructor and Description | +| --------------------------- | +| RouteParamSchema01BoxedString(String data)
Creates an instance, private visibility | + +### Method Summary +| Modifier and Type | Method and Description | +| ----------------- | ---------------------- | +| String | data()
validated payload | +| @Nullable Object | getData()
validated payload | + +## RouteParamSchema01 +public static class RouteParamSchema01
+extends JsonSchema + +A schema class that validates payloads + +### Code Sample +``` +import org.openapijsonschematools.client.configurations.JsonSchemaKeywordFlags; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.openapijsonschematools.client.exceptions.ValidationException; +import org.openapijsonschematools.client.schemas.validation.MapUtils; +import org.openapijsonschematools.client.schemas.validation.FrozenList; +import org.openapijsonschematools.client.schemas.validation.FrozenMap; +import org.openapijsonschematools.client.paths.commonparamsubdir.parameters.routeparameter0.RouteParamSchema0; + +import java.util.Arrays; +import java.util.List; +import java.util.AbstractMap; + +static final SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); + +// String validation +String validatedPayload = RouteParamSchema0.RouteParamSchema01.validate( + "a", + configuration +); +``` + +### Field Summary +| Modifier and Type | Field and Description | +| ----------------- | ---------------------- | +| Set> | type = Set.of(
    String.class
)
| +| Set | enumValues = SetMaker.makeSet(
    "a",
    "b"
)
| + +### Method Summary +| Modifier and Type | Method and Description | +| ----------------- | ---------------------- | +| String | validate(String arg, SchemaConfiguration configuration) | +| String | validate([StringRouteParamSchemaEnums0](#stringrouteparamschemaenums0) arg, SchemaConfiguration configuration) | +| [RouteParamSchema01BoxedString](#routeparamschema01boxedstring) | validateAndBox(String arg, SchemaConfiguration configuration) | +| [RouteParamSchema01Boxed](#routeparamschema01boxed) | validateAndBox(@Nullable Object arg, SchemaConfiguration configuration) | +| @Nullable Object | validate(@Nullable Object arg, SchemaConfiguration configuration) | + +## StringRouteParamSchemaEnums0 +public enum StringRouteParamSchemaEnums0
+extends `Enum` + +A class that stores String enum values + +### Enum Constant Summary +| Enum Constant | Description | +| ------------- | ----------- | +| A | value = "a" | +| B | value = "b" | diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/parameters/ComponentRefSchemaStringWithValidation.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/parameters/ComponentRefSchemaStringWithValidation.java index 0b6048ce0f5..be499256cb1 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/parameters/ComponentRefSchemaStringWithValidation.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/parameters/ComponentRefSchemaStringWithValidation.java @@ -1,7 +1,6 @@ package org.openapijsonschematools.client.components.parameters; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.ContentNonQueryParameter; import org.openapijsonschematools.client.parameter.ContentParameter; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.components.parameters.componentrefschemastringwithvalidation.content.applicationjson.ApplicationjsonSchema; @@ -21,7 +20,7 @@ public Void encoding() { } } - public static class ComponentRefSchemaStringWithValidation1 extends ContentNonQueryParameter { + public static class ComponentRefSchemaStringWithValidation1 extends ContentParameter { public ComponentRefSchemaStringWithValidation1() { super( "CRSstringWithValidation", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/parameters/PathUserName.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/parameters/PathUserName.java index 554c6794532..4fb19f6d4a7 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/parameters/PathUserName.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/parameters/PathUserName.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.components.parameters.pathusername.Schema; public class PathUserName { - public static class PathUserName1 extends SchemaNonQueryParameter { + public static class PathUserName1 extends SchemaParameter { public PathUserName1() { super( "username", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/parameters/RefSchemaStringWithValidation.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/parameters/RefSchemaStringWithValidation.java index 61897e2d3d2..20939147771 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/parameters/RefSchemaStringWithValidation.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/parameters/RefSchemaStringWithValidation.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.components.parameters.refschemastringwithvalidation.Schema; public class RefSchemaStringWithValidation { - public static class RefSchemaStringWithValidation1 extends SchemaNonQueryParameter { + public static class RefSchemaStringWithValidation1 extends SchemaParameter { public RefSchemaStringWithValidation1() { super( "RSstringWithValidation", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java index 088a1daf02b..d18be288684 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/header/StyleSerializer.java @@ -23,19 +23,16 @@ public static String serializeForm( @Nullable Object inData, String name, boolean explode, - boolean percentEncode, - @Nullable PrefixSeparatorIterator iterator, - boolean isCookie + boolean percentEncode ) { // todo check that the prefix and suffix matches this one - String prefix = isCookie ? "" : "?"; - PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator(prefix, "&") : iterator; + PrefixSeparatorIterator iterator = new PrefixSeparatorIterator("", "&"); return rfc6570Expansion( name, inData, explode, percentEncode, - usedIterator + iterator ); } @@ -72,10 +69,9 @@ public static String serializeLabel( public static String serializeSpaceDelimited( @Nullable Object inData, String name, - boolean explode, - @Nullable PrefixSeparatorIterator iterator + boolean explode ) { - PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator("", "%20") : iterator; + PrefixSeparatorIterator usedIterator = new PrefixSeparatorIterator("", "%20"); return rfc6570Expansion( name, inData, @@ -88,10 +84,9 @@ public static String serializeSpaceDelimited( public static String serializePipeDelimited( @Nullable Object inData, String name, - boolean explode, - @Nullable PrefixSeparatorIterator iterator + boolean explode ) { - PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator("", "|") : iterator; + PrefixSeparatorIterator usedIterator = new PrefixSeparatorIterator("", "|"); return rfc6570Expansion( name, inData, diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/header/StyleSimpleSerializer.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/header/StyleSimpleSerializer.java deleted file mode 100644 index 1c8d5d7a27d..00000000000 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/header/StyleSimpleSerializer.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.openapijsonschematools.client.header; - -import org.checkerframework.checker.nullness.qual.Nullable; - -public class StyleSimpleSerializer extends Rfc6570Serializer { - public static String serializeSimple( - @Nullable Object inData, - String name, - boolean explode, - boolean percentEncode - ) { - var prefixSeparatorIterator = new PrefixSeparatorIterator("", ","); - return rfc6570Expansion( - name, - inData, - explode, - percentEncode, - prefixSeparatorIterator - ); - } -} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java deleted file mode 100644 index e3cecc7753f..00000000000 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ContentNonQueryParameter.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.mediatype.MediaType; - -import java.util.Map; - -public class ContentNonQueryParameter extends ContentParameter implements NonQueryParameter { - - public ContentNonQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, Map> content) { - super(name, inType, required, style, explode, allowReserved, content); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) { - return super.serialize(inData, validate, configuration); - } -} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java index c9da00c8ad7..79a3e781051 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ContentParameter.java @@ -1,14 +1,14 @@ package org.openapijsonschematools.client.parameter; import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.contenttype.ContentTypeDetector; import org.openapijsonschematools.client.contenttype.ContentTypeSerializer; import org.openapijsonschematools.client.mediatype.MediaType; import java.util.Map; +import java.util.AbstractMap; -public class ContentParameter extends ParameterBase { +public class ContentParameter extends ParameterBase implements Parameter { public final Map> content; public ContentParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, Map> content) { @@ -16,13 +16,13 @@ public ContentParameter(String name, ParameterInType inType, boolean required, @ this.content = content; } - protected Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) { + @Override + public AbstractMap.SimpleEntry serialize(@Nullable Object inData) { for (Map.Entry> entry: content.entrySet()) { - var castInData = validate ? entry.getValue().schema().validate(inData, configuration) : inData ; String contentType = entry.getKey(); if (ContentTypeDetector.contentTypeIsJson(contentType)) { - var value = ContentTypeSerializer.toJson(castInData); - return Map.of(name, value); + var value = ContentTypeSerializer.toJson(inData); + return new AbstractMap.SimpleEntry<>(name, value); } else { throw new RuntimeException("Serialization of "+contentType+" has not yet been implemented"); } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java deleted file mode 100644 index 5d8239dc356..00000000000 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ContentQueryParameter.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; -import org.openapijsonschematools.client.mediatype.MediaType; - -import java.util.Map; - -public class ContentQueryParameter extends ContentParameter implements QueryParameter { - - public ContentQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, Map> content) { - super(name, inType, required, style, explode, allowReserved, content); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, PrefixSeparatorIterator iterator) { - return super.serialize(inData, validate, configuration); - } -} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/CookieSerializer.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/CookieSerializer.java new file mode 100644 index 00000000000..b04b2ca1754 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/CookieSerializer.java @@ -0,0 +1,35 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.Map; +import java.util.TreeMap; + +public abstract class CookieSerializer { + private final Map parameters; + + protected CookieSerializer(Map parameters) { + this.parameters = parameters; + } + + public String serialize(Map inData) { + String result = ""; + Map sortedData = new TreeMap<>(inData); + for (Map.Entry entry: sortedData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + if (result.isEmpty()) { + result = serialized.getValue(); + } else { + result = result + "; " + serialized.getValue(); + } + } + return result; + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java new file mode 100644 index 00000000000..b4a23229944 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/HeadersSerializer.java @@ -0,0 +1,31 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.List; + +public abstract class HeadersSerializer { + private final Map parameters; + + protected HeadersSerializer(Map parameters) { + this.parameters = parameters; + } + + public Map> serialize(Map inData) { + Map> results = new LinkedHashMap<>(); + for (Map.Entry entry: inData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + results.put(serialized.getKey(), List.of(serialized.getValue())); + } + return results; + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java deleted file mode 100644 index de5d7451c57..00000000000 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/NonQueryParameter.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; - -import java.util.Map; - -public interface NonQueryParameter { - Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration); -} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/Parameter.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/Parameter.java new file mode 100644 index 00000000000..9fe0745417c --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/Parameter.java @@ -0,0 +1,9 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; + +public interface Parameter { + AbstractMap.SimpleEntry serialize(@Nullable Object inData); +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java index 742792cdb40..8d79129b765 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/ParameterBase.java @@ -2,7 +2,6 @@ import org.checkerframework.checker.nullness.qual.Nullable; import org.openapijsonschematools.client.header.HeaderBase; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; public class ParameterBase extends HeaderBase { public final String name; @@ -13,27 +12,4 @@ public ParameterBase(String name, ParameterInType inType, boolean required, @Nul this.name = name; this.inType = inType; } - - protected ParameterStyle getStyle() { - if (style != null) { - return style; - } - if (inType == ParameterInType.QUERY || inType == ParameterInType.COOKIE) { - return ParameterStyle.FORM; - } - // ParameterInType.HEADER || ParameterInType.PATH - return ParameterStyle.SIMPLE; - } - - public PrefixSeparatorIterator getPrefixSeparatorIterator() { - ParameterStyle usedStyle = getStyle(); - if (usedStyle == ParameterStyle.FORM) { - return new PrefixSeparatorIterator("?", "&"); - } else if (usedStyle == ParameterStyle.SPACE_DELIMITED) { - return new PrefixSeparatorIterator("", "%20"); - } else if (usedStyle == ParameterStyle.PIPE_DELIMITED) { - return new PrefixSeparatorIterator("", "|"); - } - throw new RuntimeException("No iterator possible for style="+usedStyle); - } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/PathSerializer.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/PathSerializer.java new file mode 100644 index 00000000000..5864f89c901 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/PathSerializer.java @@ -0,0 +1,29 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.Map; + +public abstract class PathSerializer { + private final Map parameters; + + protected PathSerializer(Map parameters) { + this.parameters = parameters; + } + + public String serialize(Map inData, String pathWithPlaceholders) { + String result = pathWithPlaceholders; + for (Map.Entry entry: inData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + result = result.replace("{" + mapKey + "}", serialized.getValue()); + } + return result; + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java deleted file mode 100644 index 0dbced20599..00000000000 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/QueryParameter.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; - -import java.util.Map; - -public interface QueryParameter { - Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, PrefixSeparatorIterator iterator); - PrefixSeparatorIterator getPrefixSeparatorIterator(); -} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java new file mode 100644 index 00000000000..91ea0b041bb --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/QuerySerializer.java @@ -0,0 +1,47 @@ +package org.openapijsonschematools.client.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; + +public abstract class QuerySerializer { + private final Map parameters; + + protected QuerySerializer(Map parameters) { + this.parameters = parameters; + } + + public Map getQueryMap(Map inData) { + Map results = new HashMap<>(); + for (Map.Entry entry: inData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + results.put(serialized.getKey(), serialized.getValue()); + } + return new TreeMap<>(results); + } + + public String serialize(Map queryMap) { + if (queryMap.isEmpty()) { + return ""; + } + String result = "?"; + for (String serializedValue: queryMap.values()) { + if (result.length() == 1) { + result = result + serializedValue; + } else { + result = result + "&" + serializedValue; + } + } + // TODO what if the style is not FORM? + return result; + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameter.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameter.java deleted file mode 100644 index 80976ec5d85..00000000000 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameter.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; -import org.openapijsonschematools.client.schemas.validation.JsonSchema; - -import java.util.Map; - -public class SchemaNonQueryParameter extends SchemaParameter implements NonQueryParameter { - - public SchemaNonQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, JsonSchema schema) { - super(name, inType, required, style, explode, allowReserved, schema); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) { - return super.serialize(inData, validate, configuration, null); - } -} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java index 597916bbdfc..8acfdafcc8a 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaParameter.java @@ -1,17 +1,12 @@ package org.openapijsonschematools.client.parameter; import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; import org.openapijsonschematools.client.header.StyleSerializer; import org.openapijsonschematools.client.schemas.validation.JsonSchema; -import org.openapijsonschematools.client.header.HeaderBase; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; -import org.openapijsonschematools.client.header.StyleSerializer; -import org.openapijsonschematools.client.schemas.validation.JsonSchema; -import java.util.Map; -public class SchemaParameter extends ParameterBase { +import java.util.AbstractMap; + +public class SchemaParameter extends ParameterBase implements Parameter { public final JsonSchema schema; public SchemaParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, JsonSchema schema) { @@ -19,36 +14,46 @@ public SchemaParameter(String name, ParameterInType inType, boolean required, @N this.schema = schema; } - protected Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, @Nullable PrefixSeparatorIterator iterator) { - var castInData = validate ? schema.validate(inData, configuration) : inData; + private ParameterStyle getStyle() { + if (style != null) { + return style; + } + if (inType == ParameterInType.QUERY || inType == ParameterInType.COOKIE) { + return ParameterStyle.FORM; + } + // ParameterInType.HEADER || ParameterInType.PATH + return ParameterStyle.SIMPLE; + } + + @Override + public AbstractMap.SimpleEntry serialize(@Nullable Object inData) { ParameterStyle usedStyle = getStyle(); boolean percentEncode = inType == ParameterInType.QUERY || inType == ParameterInType.PATH; String value; boolean usedExplode = explode == null ? usedStyle == ParameterStyle.FORM : explode; if (usedStyle == ParameterStyle.SIMPLE) { // header OR path - value = StyleSerializer.serializeSimple(castInData, name, usedExplode, percentEncode); + value = StyleSerializer.serializeSimple(inData, name, usedExplode, percentEncode); } else if (usedStyle == ParameterStyle.FORM) { // query OR cookie - boolean isCookie = inType == ParameterInType.COOKIE; - value = StyleSerializer.serializeForm(castInData, name, usedExplode, percentEncode, iterator, isCookie); + value = StyleSerializer.serializeForm(inData, name, usedExplode, percentEncode); } else if (usedStyle == ParameterStyle.LABEL) { // path - value = StyleSerializer.serializeLabel(castInData, name, usedExplode); + value = StyleSerializer.serializeLabel(inData, name, usedExplode); } else if (usedStyle == ParameterStyle.MATRIX) { // path - value = StyleSerializer.serializeMatrix(castInData, name, usedExplode); + value = StyleSerializer.serializeMatrix(inData, name, usedExplode); } else if (usedStyle == ParameterStyle.SPACE_DELIMITED) { // query - value = StyleSerializer.serializeSpaceDelimited(castInData, name, usedExplode, iterator); + value = StyleSerializer.serializeSpaceDelimited(inData, name, usedExplode); } else if (usedStyle == ParameterStyle.PIPE_DELIMITED) { // query - value = StyleSerializer.serializePipeDelimited(castInData, name, usedExplode, iterator); + value = StyleSerializer.serializePipeDelimited(inData, name, usedExplode); } else { // usedStyle == ParameterStyle.DEEP_OBJECT // query throw new RuntimeException("Style deep object serialization has not yet been implemented."); } - return Map.of(name, value); + return new AbstractMap.SimpleEntry<>(name, value); } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaQueryParameter.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaQueryParameter.java deleted file mode 100644 index e85794b4a6d..00000000000 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/parameter/SchemaQueryParameter.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.openapijsonschematools.client.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; -import org.openapijsonschematools.client.schemas.validation.JsonSchema; - -import java.util.Map; - -public class SchemaQueryParameter extends SchemaParameter implements QueryParameter { - - public SchemaQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, JsonSchema schema) { - super(name, inType, required, style, explode, allowReserved, schema); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, PrefixSeparatorIterator iterator) { - return super.serialize(inData, validate, configuration, iterator); - } -} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/Parameters.java new file mode 100644 index 00000000000..361ce042d3a --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/Parameters.java @@ -0,0 +1,32 @@ +package org.openapijsonschematools.client.paths.commonparamsubdir.delete; + +import org.openapijsonschematools.client.paths.commonparamsubdir.delete.parameters.Parameter0; +import org.openapijsonschematools.client.paths.commonparamsubdir.delete.parameters.Parameter1; +import org.openapijsonschematools.client.parameter.PathSerializer; +import org.openapijsonschematools.client.parameter.HeadersSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("subDir", new Parameter1.Parameter11()) + ) + ); + } + } + + public static class HeaderParametersSerializer extends HeadersSerializer { + public HeaderParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("someHeader", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/parameters/Parameter0.java index ee8b94ae4af..1385ce8e488 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.commonparamsubdir.delete.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaNonQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "someHeader", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/parameters/Parameter1.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/parameters/Parameter1.java index 28dca4167dd..13efa3b6c1d 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/parameters/Parameter1.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/parameters/Parameter1.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.commonparamsubdir.delete.parameters.parameter1.Schema1; public class Parameter1 { - public static class Parameter11 extends SchemaNonQueryParameter { + public static class Parameter11 extends SchemaParameter { public Parameter11() { super( "subDir", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/Parameters.java new file mode 100644 index 00000000000..a06b3e8445a --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/Parameters.java @@ -0,0 +1,32 @@ +package org.openapijsonschematools.client.paths.commonparamsubdir.get; + +import org.openapijsonschematools.client.paths.commonparamsubdir.parameters.RouteParameter0; +import org.openapijsonschematools.client.paths.commonparamsubdir.get.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.PathSerializer; +import org.openapijsonschematools.client.parameter.QuerySerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("subDir", new RouteParameter0.RouteParameter01()) + ) + ); + } + } + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("searchStr", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/PathParameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/PathParameters.java index 255e522a255..662156732d6 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/PathParameters.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/PathParameters.java @@ -13,7 +13,7 @@ import org.openapijsonschematools.client.exceptions.InvalidTypeException; import org.openapijsonschematools.client.exceptions.UnsetPropertyException; import org.openapijsonschematools.client.exceptions.ValidationException; -import org.openapijsonschematools.client.paths.commonparamsubdir.parameters.parameter0.PathParamSchema0; +import org.openapijsonschematools.client.paths.commonparamsubdir.parameters.routeparameter0.RouteParamSchema0; import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; import org.openapijsonschematools.client.schemas.GenericBuilder; import org.openapijsonschematools.client.schemas.NotAnyTypeJsonSchema; @@ -69,7 +69,7 @@ default T subDir(String value) { return getBuilderAfterSubDir(instance); } - default T subDir(PathParamSchema0.StringPathParamSchemaEnums0 value) { + default T subDir(RouteParamSchema0.StringRouteParamSchemaEnums0 value) { var instance = getInstance(); instance.put("subDir", value.value()); return getBuilderAfterSubDir(instance); @@ -125,7 +125,7 @@ protected PathParameters1() { super(new JsonSchemaInfo() .type(Set.of(Map.class)) .properties(Map.ofEntries( - new PropertyEntry("subDir", PathParamSchema0.PathParamSchema01.class) + new PropertyEntry("subDir", RouteParamSchema0.RouteParamSchema01.class) )) .required(Set.of( "subDir" diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/parameters/Parameter0.java index 399bde0b7b0..0559a9deb6e 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.commonparamsubdir.get.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "searchStr", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/RouteParameter0.java similarity index 61% rename from samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/Parameter0.java rename to samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/RouteParameter0.java index 4ae8ad7e2b6..ad645a82164 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/RouteParameter0.java @@ -2,13 +2,13 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; -import org.openapijsonschematools.client.paths.commonparamsubdir.parameters.parameter0.PathParamSchema0; +import org.openapijsonschematools.client.parameter.SchemaParameter; +import org.openapijsonschematools.client.paths.commonparamsubdir.parameters.routeparameter0.RouteParamSchema0; -public class Parameter0 { +public class RouteParameter0 { - public static class Parameter01 extends SchemaNonQueryParameter { - public Parameter01() { + public static class RouteParameter01 extends SchemaParameter { + public RouteParameter01() { super( "subDir", ParameterInType.PATH, @@ -16,7 +16,7 @@ public Parameter01() { ParameterStyle.SIMPLE, false, false, - PathParamSchema0.PathParamSchema01.getInstance() + RouteParamSchema0.RouteParamSchema01.getInstance() ); } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/parameter0/PathParamSchema0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/routeparameter0/RouteParamSchema0.java similarity index 74% rename from samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/parameter0/PathParamSchema0.java rename to samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/routeparameter0/RouteParamSchema0.java index ab34e28c0a1..d8f4f419e84 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/parameter0/PathParamSchema0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/routeparameter0/RouteParamSchema0.java @@ -1,4 +1,4 @@ -package org.openapijsonschematools.client.paths.commonparamsubdir.parameters.parameter0; +package org.openapijsonschematools.client.paths.commonparamsubdir.parameters.routeparameter0; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; @@ -18,15 +18,15 @@ import org.openapijsonschematools.client.schemas.validation.StringValueMethod; import org.openapijsonschematools.client.schemas.validation.ValidationMetadata; -public class PathParamSchema0 { +public class RouteParamSchema0 { // nest classes so all schemas and input/output classes can be public - public enum StringPathParamSchemaEnums0 implements StringValueMethod { + public enum StringRouteParamSchemaEnums0 implements StringValueMethod { A("a"), B("b"); private final String value; - StringPathParamSchemaEnums0(String value) { + StringRouteParamSchemaEnums0(String value) { this.value = value; } public String value() { @@ -35,11 +35,11 @@ public String value() { } - public sealed interface PathParamSchema01Boxed permits PathParamSchema01BoxedString { + public sealed interface RouteParamSchema01Boxed permits RouteParamSchema01BoxedString { @Nullable Object getData(); } - public record PathParamSchema01BoxedString(String data) implements PathParamSchema01Boxed { + public record RouteParamSchema01BoxedString(String data) implements RouteParamSchema01Boxed { @Override public @Nullable Object getData() { return data; @@ -48,10 +48,10 @@ public record PathParamSchema01BoxedString(String data) implements PathParamSche - public static class PathParamSchema01 extends JsonSchema implements StringSchemaValidator, StringEnumValidator { - private static @Nullable PathParamSchema01 instance = null; + public static class RouteParamSchema01 extends JsonSchema implements StringSchemaValidator, StringEnumValidator { + private static @Nullable RouteParamSchema01 instance = null; - protected PathParamSchema01() { + protected RouteParamSchema01() { super(new JsonSchemaInfo() .type(Set.of( String.class @@ -63,9 +63,9 @@ protected PathParamSchema01() { ); } - public static PathParamSchema01 getInstance() { + public static RouteParamSchema01 getInstance() { if (instance == null) { - instance = new PathParamSchema01(); + instance = new RouteParamSchema01(); } return instance; } @@ -82,7 +82,7 @@ public String validate(String arg, SchemaConfiguration configuration) throws Val } @Override - public String validate(StringPathParamSchemaEnums0 arg,SchemaConfiguration configuration) throws ValidationException { + public String validate(StringRouteParamSchemaEnums0 arg,SchemaConfiguration configuration) throws ValidationException { return validate(arg.value(), configuration); } @@ -101,11 +101,11 @@ public String validate(StringPathParamSchemaEnums0 arg,SchemaConfiguration confi throw new InvalidTypeException("Invalid input type="+getClass(arg)+". It can't be instantiated by this schema"); } @Override - public PathParamSchema01BoxedString validateAndBox(String arg, SchemaConfiguration configuration) throws ValidationException, InvalidTypeException { - return new PathParamSchema01BoxedString(validate(arg, configuration)); + public RouteParamSchema01BoxedString validateAndBox(String arg, SchemaConfiguration configuration) throws ValidationException, InvalidTypeException { + return new RouteParamSchema01BoxedString(validate(arg, configuration)); } @Override - public PathParamSchema01Boxed validateAndBox(@Nullable Object arg, SchemaConfiguration configuration) throws ValidationException, InvalidTypeException { + public RouteParamSchema01Boxed validateAndBox(@Nullable Object arg, SchemaConfiguration configuration) throws ValidationException, InvalidTypeException { if (arg instanceof String castArg) { return validateAndBox(castArg, configuration); } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/Parameters.java new file mode 100644 index 00000000000..22e2acd3b26 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/Parameters.java @@ -0,0 +1,32 @@ +package org.openapijsonschematools.client.paths.commonparamsubdir.post; + +import org.openapijsonschematools.client.paths.commonparamsubdir.parameters.RouteParameter0; +import org.openapijsonschematools.client.paths.commonparamsubdir.post.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.PathSerializer; +import org.openapijsonschematools.client.parameter.HeadersSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("subDir", new RouteParameter0.RouteParameter01()) + ) + ); + } + } + + public static class HeaderParametersSerializer extends HeadersSerializer { + public HeaderParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("someHeader", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/PathParameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/PathParameters.java index 951db208ba2..a37a27cda32 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/PathParameters.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/PathParameters.java @@ -13,7 +13,7 @@ import org.openapijsonschematools.client.exceptions.InvalidTypeException; import org.openapijsonschematools.client.exceptions.UnsetPropertyException; import org.openapijsonschematools.client.exceptions.ValidationException; -import org.openapijsonschematools.client.paths.commonparamsubdir.parameters.parameter0.PathParamSchema0; +import org.openapijsonschematools.client.paths.commonparamsubdir.parameters.routeparameter0.RouteParamSchema0; import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; import org.openapijsonschematools.client.schemas.GenericBuilder; import org.openapijsonschematools.client.schemas.NotAnyTypeJsonSchema; @@ -69,7 +69,7 @@ default T subDir(String value) { return getBuilderAfterSubDir(instance); } - default T subDir(PathParamSchema0.StringPathParamSchemaEnums0 value) { + default T subDir(RouteParamSchema0.StringRouteParamSchemaEnums0 value) { var instance = getInstance(); instance.put("subDir", value.value()); return getBuilderAfterSubDir(instance); @@ -125,7 +125,7 @@ protected PathParameters1() { super(new JsonSchemaInfo() .type(Set.of(Map.class)) .properties(Map.ofEntries( - new PropertyEntry("subDir", PathParamSchema0.PathParamSchema01.class) + new PropertyEntry("subDir", RouteParamSchema0.RouteParamSchema01.class) )) .required(Set.of( "subDir" diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/parameters/Parameter0.java index 6d7a44bd5a9..48a0d5b37bb 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.commonparamsubdir.post.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaNonQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "someHeader", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/Parameters.java new file mode 100644 index 00000000000..ba70280cca5 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/Parameters.java @@ -0,0 +1,40 @@ +package org.openapijsonschematools.client.paths.fake.delete; + +import org.openapijsonschematools.client.paths.fake.delete.parameters.Parameter0; +import org.openapijsonschematools.client.paths.fake.delete.parameters.Parameter1; +import org.openapijsonschematools.client.paths.fake.delete.parameters.Parameter2; +import org.openapijsonschematools.client.paths.fake.delete.parameters.Parameter3; +import org.openapijsonschematools.client.paths.fake.delete.parameters.Parameter4; +import org.openapijsonschematools.client.paths.fake.delete.parameters.Parameter5; +import org.openapijsonschematools.client.parameter.HeadersSerializer; +import org.openapijsonschematools.client.parameter.QuerySerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("required_string_group", new Parameter0.Parameter01()), + new AbstractMap.SimpleEntry<>("required_int64_group", new Parameter2.Parameter21()), + new AbstractMap.SimpleEntry<>("string_group", new Parameter3.Parameter31()), + new AbstractMap.SimpleEntry<>("int64_group", new Parameter5.Parameter51()) + ) + ); + } + } + + public static class HeaderParametersSerializer extends HeadersSerializer { + public HeaderParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("required_boolean_group", new Parameter1.Parameter11()), + new AbstractMap.SimpleEntry<>("boolean_group", new Parameter4.Parameter41()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter0.java index 6a9aa1e00e6..5872e87f523 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fake.delete.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "required_string_group", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter1.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter1.java index 91f20954e40..d74937b4fc9 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter1.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter1.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fake.delete.parameters.parameter1.Schema1; public class Parameter1 { - public static class Parameter11 extends SchemaNonQueryParameter { + public static class Parameter11 extends SchemaParameter { public Parameter11() { super( "required_boolean_group", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter2.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter2.java index fa2154af675..9453ce7bcb3 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter2.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter2.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fake.delete.parameters.parameter2.Schema2; public class Parameter2 { - public static class Parameter21 extends SchemaQueryParameter { + public static class Parameter21 extends SchemaParameter { public Parameter21() { super( "required_int64_group", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter3.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter3.java index 4a2d6796943..c2121467a18 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter3.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter3.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fake.delete.parameters.parameter3.Schema3; public class Parameter3 { - public static class Parameter31 extends SchemaQueryParameter { + public static class Parameter31 extends SchemaParameter { public Parameter31() { super( "string_group", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter4.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter4.java index 3743568bf2b..c755206ddac 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter4.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter4.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fake.delete.parameters.parameter4.Schema4; public class Parameter4 { - public static class Parameter41 extends SchemaNonQueryParameter { + public static class Parameter41 extends SchemaParameter { public Parameter41() { super( "boolean_group", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter5.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter5.java index 1ee3113cd6d..91ea65b5be7 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter5.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/Parameter5.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fake.delete.parameters.parameter5.Schema5; public class Parameter5 { - public static class Parameter51 extends SchemaQueryParameter { + public static class Parameter51 extends SchemaParameter { public Parameter51() { super( "int64_group", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/Parameters.java new file mode 100644 index 00000000000..c5b3e142015 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/Parameters.java @@ -0,0 +1,40 @@ +package org.openapijsonschematools.client.paths.fake.get; + +import org.openapijsonschematools.client.paths.fake.get.parameters.Parameter0; +import org.openapijsonschematools.client.paths.fake.get.parameters.Parameter1; +import org.openapijsonschematools.client.paths.fake.get.parameters.Parameter2; +import org.openapijsonschematools.client.paths.fake.get.parameters.Parameter3; +import org.openapijsonschematools.client.paths.fake.get.parameters.Parameter4; +import org.openapijsonschematools.client.paths.fake.get.parameters.Parameter5; +import org.openapijsonschematools.client.parameter.HeadersSerializer; +import org.openapijsonschematools.client.parameter.QuerySerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("enum_query_string_array", new Parameter2.Parameter21()), + new AbstractMap.SimpleEntry<>("enum_query_string", new Parameter3.Parameter31()), + new AbstractMap.SimpleEntry<>("enum_query_integer", new Parameter4.Parameter41()), + new AbstractMap.SimpleEntry<>("enum_query_double", new Parameter5.Parameter51()) + ) + ); + } + } + + public static class HeaderParametersSerializer extends HeadersSerializer { + public HeaderParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("enum_header_string_array", new Parameter0.Parameter01()), + new AbstractMap.SimpleEntry<>("enum_header_string", new Parameter1.Parameter11()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter0.java index f4564390d60..3a8537f7fd1 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fake.get.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaNonQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "enum_header_string_array", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter1.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter1.java index 3a4605d5fff..49e947d6399 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter1.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter1.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fake.get.parameters.parameter1.Schema1; public class Parameter1 { - public static class Parameter11 extends SchemaNonQueryParameter { + public static class Parameter11 extends SchemaParameter { public Parameter11() { super( "enum_header_string", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter2.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter2.java index 4c9365345a5..71e3f589257 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter2.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter2.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fake.get.parameters.parameter2.Schema2; public class Parameter2 { - public static class Parameter21 extends SchemaQueryParameter { + public static class Parameter21 extends SchemaParameter { public Parameter21() { super( "enum_query_string_array", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter3.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter3.java index 4e2da7a8b0e..9903092e80d 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter3.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter3.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fake.get.parameters.parameter3.Schema3; public class Parameter3 { - public static class Parameter31 extends SchemaQueryParameter { + public static class Parameter31 extends SchemaParameter { public Parameter31() { super( "enum_query_string", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter4.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter4.java index e8ce1faa153..21bf1787d8a 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter4.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter4.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fake.get.parameters.parameter4.Schema4; public class Parameter4 { - public static class Parameter41 extends SchemaQueryParameter { + public static class Parameter41 extends SchemaParameter { public Parameter41() { super( "enum_query_integer", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter5.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter5.java index 773b7862b8e..7fb91fb88f0 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter5.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/Parameter5.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fake.get.parameters.parameter5.Schema5; public class Parameter5 { - public static class Parameter51 extends SchemaQueryParameter { + public static class Parameter51 extends SchemaParameter { public Parameter51() { super( "enum_query_double", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/Parameters.java new file mode 100644 index 00000000000..d796a88eb1d --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.fakebodywithqueryparams.put; + +import org.openapijsonschematools.client.paths.fakebodywithqueryparams.put.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.QuerySerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("query", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/parameters/Parameter0.java index a0df32ee830..b89f34112a4 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakebodywithqueryparams.put.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "query", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/Parameters.java new file mode 100644 index 00000000000..e153b47414a --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/Parameters.java @@ -0,0 +1,24 @@ +package org.openapijsonschematools.client.paths.fakecasesensitiveparams.put; + +import org.openapijsonschematools.client.paths.fakecasesensitiveparams.put.parameters.Parameter0; +import org.openapijsonschematools.client.paths.fakecasesensitiveparams.put.parameters.Parameter1; +import org.openapijsonschematools.client.paths.fakecasesensitiveparams.put.parameters.Parameter2; +import org.openapijsonschematools.client.parameter.QuerySerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("someVar", new Parameter0.Parameter01()), + new AbstractMap.SimpleEntry<>("SomeVar", new Parameter1.Parameter11()), + new AbstractMap.SimpleEntry<>("some_var", new Parameter2.Parameter21()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/Parameter0.java index d3bd6dc5c0c..96db6d8662c 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakecasesensitiveparams.put.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "someVar", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/Parameter1.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/Parameter1.java index 5850f710ad2..9923c6e1aee 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/Parameter1.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/Parameter1.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakecasesensitiveparams.put.parameters.parameter1.Schema1; public class Parameter1 { - public static class Parameter11 extends SchemaQueryParameter { + public static class Parameter11 extends SchemaParameter { public Parameter11() { super( "SomeVar", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/Parameter2.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/Parameter2.java index 8491c847601..c3b8320db0f 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/Parameter2.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/Parameter2.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakecasesensitiveparams.put.parameters.parameter2.Schema2; public class Parameter2 { - public static class Parameter21 extends SchemaQueryParameter { + public static class Parameter21 extends SchemaParameter { public Parameter21() { super( "some_var", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/Parameters.java new file mode 100644 index 00000000000..6e068eebfbc --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.fakedeletecoffeeid.delete; + +import org.openapijsonschematools.client.paths.fakedeletecoffeeid.delete.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.PathSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("id", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/parameters/Parameter0.java index 6e1e10fe734..d16f6b00036 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakedeletecoffeeid.delete.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaNonQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "id", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/Parameters.java new file mode 100644 index 00000000000..358e05fde21 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/Parameters.java @@ -0,0 +1,22 @@ +package org.openapijsonschematools.client.paths.fakeinlinecomposition.post; + +import org.openapijsonschematools.client.paths.fakeinlinecomposition.post.parameters.Parameter0; +import org.openapijsonschematools.client.paths.fakeinlinecomposition.post.parameters.Parameter1; +import org.openapijsonschematools.client.parameter.QuerySerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("compositionAtRoot", new Parameter0.Parameter01()), + new AbstractMap.SimpleEntry<>("compositionInProperty", new Parameter1.Parameter11()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/parameters/Parameter0.java index 0e0d1f550ac..020d186ab95 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeinlinecomposition.post.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "compositionAtRoot", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/parameters/Parameter1.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/parameters/Parameter1.java index 719e3b4cda9..94e5c75ccf6 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/parameters/Parameter1.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/parameters/Parameter1.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeinlinecomposition.post.parameters.parameter1.Schema1; public class Parameter1 { - public static class Parameter11 extends SchemaQueryParameter { + public static class Parameter11 extends SchemaParameter { public Parameter11() { super( "compositionInProperty", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/Parameters.java new file mode 100644 index 00000000000..58e787df688 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.fakeobjinquery.get; + +import org.openapijsonschematools.client.paths.fakeobjinquery.get.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.QuerySerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("mapBean", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/parameters/Parameter0.java index 2a7c0372825..75d3713a0bb 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeobjinquery.get.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "mapBean", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/Parameters.java new file mode 100644 index 00000000000..6b1d6be5242 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/Parameters.java @@ -0,0 +1,86 @@ +package org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post; + +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter0; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter1; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter2; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter3; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter4; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter5; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter6; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter7; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter8; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter9; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter10; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter11; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter12; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter13; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter14; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter15; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter16; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter17; +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.Parameter18; +import org.openapijsonschematools.client.parameter.PathSerializer; +import org.openapijsonschematools.client.parameter.HeadersSerializer; +import org.openapijsonschematools.client.parameter.QuerySerializer; +import org.openapijsonschematools.client.parameter.CookieSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("1", new Parameter9.Parameter91()), + new AbstractMap.SimpleEntry<>("aB", new Parameter10.Parameter101()), + new AbstractMap.SimpleEntry<>("Ab", new Parameter11.Parameter111()), + new AbstractMap.SimpleEntry<>("self", new Parameter12.Parameter121()), + new AbstractMap.SimpleEntry<>("A-B", new Parameter13.Parameter131()) + ) + ); + } + } + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("1", new Parameter0.Parameter01()), + new AbstractMap.SimpleEntry<>("aB", new Parameter1.Parameter11()), + new AbstractMap.SimpleEntry<>("Ab", new Parameter2.Parameter21()), + new AbstractMap.SimpleEntry<>("self", new Parameter3.Parameter31()), + new AbstractMap.SimpleEntry<>("A-B", new Parameter4.Parameter41()) + ) + ); + } + } + + public static class HeaderParametersSerializer extends HeadersSerializer { + public HeaderParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("1", new Parameter5.Parameter51()), + new AbstractMap.SimpleEntry<>("aB", new Parameter6.Parameter61()), + new AbstractMap.SimpleEntry<>("self", new Parameter7.Parameter71()), + new AbstractMap.SimpleEntry<>("A-B", new Parameter8.Parameter81()) + ) + ); + } + } + + public static class CookieParametersSerializer extends CookieSerializer { + public CookieParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("1", new Parameter14.Parameter141()), + new AbstractMap.SimpleEntry<>("aB", new Parameter15.Parameter151()), + new AbstractMap.SimpleEntry<>("Ab", new Parameter16.Parameter161()), + new AbstractMap.SimpleEntry<>("self", new Parameter17.Parameter171()), + new AbstractMap.SimpleEntry<>("A-B", new Parameter18.Parameter181()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter0.java index ec3b1616bfd..a92fdc8a8c2 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "1", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter1.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter1.java index e7583fd338e..f630ae29b8f 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter1.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter1.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter1.Schema1; public class Parameter1 { - public static class Parameter11 extends SchemaQueryParameter { + public static class Parameter11 extends SchemaParameter { public Parameter11() { super( "aB", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter10.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter10.java index 4405261b5d5..0aa44d3eda8 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter10.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter10.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter10.Schema10; public class Parameter10 { - public static class Parameter101 extends SchemaNonQueryParameter { + public static class Parameter101 extends SchemaParameter { public Parameter101() { super( "aB", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter11.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter11.java index 43a773c6c0f..a86856ac32b 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter11.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter11.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter11.Schema11; public class Parameter11 { - public static class Parameter111 extends SchemaNonQueryParameter { + public static class Parameter111 extends SchemaParameter { public Parameter111() { super( "Ab", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter12.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter12.java index b66687e315b..ee76bac70af 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter12.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter12.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter12.Schema12; public class Parameter12 { - public static class Parameter121 extends SchemaNonQueryParameter { + public static class Parameter121 extends SchemaParameter { public Parameter121() { super( "self", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter13.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter13.java index de1c809185e..de212f1563d 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter13.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter13.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter13.Schema13; public class Parameter13 { - public static class Parameter131 extends SchemaNonQueryParameter { + public static class Parameter131 extends SchemaParameter { public Parameter131() { super( "A-B", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter14.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter14.java index 46b670b9b77..a29010916ac 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter14.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter14.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter14.Schema14; public class Parameter14 { - public static class Parameter141 extends SchemaNonQueryParameter { + public static class Parameter141 extends SchemaParameter { public Parameter141() { super( "1", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter15.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter15.java index ab6f4391312..54bf5140899 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter15.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter15.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter15.Schema15; public class Parameter15 { - public static class Parameter151 extends SchemaNonQueryParameter { + public static class Parameter151 extends SchemaParameter { public Parameter151() { super( "aB", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter16.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter16.java index 24fa8a1983a..f1b8e71d686 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter16.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter16.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter16.Schema16; public class Parameter16 { - public static class Parameter161 extends SchemaNonQueryParameter { + public static class Parameter161 extends SchemaParameter { public Parameter161() { super( "Ab", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter17.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter17.java index 017bcd23ca3..b856a27eb1e 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter17.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter17.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter17.Schema17; public class Parameter17 { - public static class Parameter171 extends SchemaNonQueryParameter { + public static class Parameter171 extends SchemaParameter { public Parameter171() { super( "self", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter18.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter18.java index 96e183a2cf7..b43ebbe5664 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter18.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter18.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter18.Schema18; public class Parameter18 { - public static class Parameter181 extends SchemaNonQueryParameter { + public static class Parameter181 extends SchemaParameter { public Parameter181() { super( "A-B", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter2.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter2.java index 01bd1b51dd7..bb193d95ba3 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter2.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter2.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter2.Schema2; public class Parameter2 { - public static class Parameter21 extends SchemaQueryParameter { + public static class Parameter21 extends SchemaParameter { public Parameter21() { super( "Ab", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter3.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter3.java index 518a6987279..b4233c96a02 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter3.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter3.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter3.Schema3; public class Parameter3 { - public static class Parameter31 extends SchemaQueryParameter { + public static class Parameter31 extends SchemaParameter { public Parameter31() { super( "self", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter4.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter4.java index edc22a057be..459cdc6a234 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter4.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter4.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter4.Schema4; public class Parameter4 { - public static class Parameter41 extends SchemaQueryParameter { + public static class Parameter41 extends SchemaParameter { public Parameter41() { super( "A-B", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter5.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter5.java index a8e1130fe2d..a589c0c385b 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter5.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter5.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter5.Schema5; public class Parameter5 { - public static class Parameter51 extends SchemaNonQueryParameter { + public static class Parameter51 extends SchemaParameter { public Parameter51() { super( "1", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter6.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter6.java index f8f23bab143..dafa85cb493 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter6.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter6.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter6.Schema6; public class Parameter6 { - public static class Parameter61 extends SchemaNonQueryParameter { + public static class Parameter61 extends SchemaParameter { public Parameter61() { super( "aB", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter7.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter7.java index 85a7151b2b5..9d5589c95e6 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter7.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter7.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter7.Schema7; public class Parameter7 { - public static class Parameter71 extends SchemaNonQueryParameter { + public static class Parameter71 extends SchemaParameter { public Parameter71() { super( "self", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter8.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter8.java index 5b821bbfdef..259cab30459 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter8.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter8.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter8.Schema8; public class Parameter8 { - public static class Parameter81 extends SchemaNonQueryParameter { + public static class Parameter81 extends SchemaParameter { public Parameter81() { super( "A-B", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter9.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter9.java index ac94eeea56c..450bbdbfc8d 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter9.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/Parameter9.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.parameters.parameter9.Schema9; public class Parameter9 { - public static class Parameter91 extends SchemaNonQueryParameter { + public static class Parameter91 extends SchemaParameter { public Parameter91() { super( "1", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/Parameters.java new file mode 100644 index 00000000000..69a6d736bc6 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.fakepetiduploadimagewithrequiredfile.post; + +import org.openapijsonschematools.client.paths.fakepetiduploadimagewithrequiredfile.post.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.PathSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("petId", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/parameters/Parameter0.java index ad83df56670..58b60c686b2 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakepetiduploadimagewithrequiredfile.post.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaNonQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "petId", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/Parameters.java new file mode 100644 index 00000000000..713b9540cea --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.fakequeryparamwithjsoncontenttype.get; + +import org.openapijsonschematools.client.paths.fakequeryparamwithjsoncontenttype.get.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.QuerySerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("someParam", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/parameters/Parameter0.java index 18aacc0289c..0195dc24e67 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/parameters/Parameter0.java @@ -1,7 +1,6 @@ package org.openapijsonschematools.client.paths.fakequeryparamwithjsoncontenttype.get.parameters; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.ContentQueryParameter; import org.openapijsonschematools.client.parameter.ContentParameter; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakequeryparamwithjsoncontenttype.get.parameters.parameter0.content.applicationjson.Schema0; @@ -21,7 +20,7 @@ public Void encoding() { } } - public static class Parameter01 extends ContentQueryParameter { + public static class Parameter01 extends ContentParameter { public Parameter01() { super( "someParam", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/Parameters.java new file mode 100644 index 00000000000..c237004cd7e --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.fakerefobjinquery.get; + +import org.openapijsonschematools.client.paths.fakerefobjinquery.get.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.QuerySerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("mapBean", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/parameters/Parameter0.java index 137bc74b804..f1b8a6d8720 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.fakerefobjinquery.get.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "mapBean", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/Parameters.java new file mode 100644 index 00000000000..447f578a330 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/Parameters.java @@ -0,0 +1,30 @@ +package org.openapijsonschematools.client.paths.faketestqueryparamters.put; + +import org.openapijsonschematools.client.paths.faketestqueryparamters.put.parameters.Parameter0; +import org.openapijsonschematools.client.paths.faketestqueryparamters.put.parameters.Parameter1; +import org.openapijsonschematools.client.paths.faketestqueryparamters.put.parameters.Parameter2; +import org.openapijsonschematools.client.paths.faketestqueryparamters.put.parameters.Parameter3; +import org.openapijsonschematools.client.paths.faketestqueryparamters.put.parameters.Parameter4; +import org.openapijsonschematools.client.paths.faketestqueryparamters.put.parameters.Parameter5; +import org.openapijsonschematools.client.parameter.QuerySerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("pipe", new Parameter0.Parameter01()), + new AbstractMap.SimpleEntry<>("ioutil", new Parameter1.Parameter11()), + new AbstractMap.SimpleEntry<>("http", new Parameter2.Parameter21()), + new AbstractMap.SimpleEntry<>("url", new Parameter3.Parameter31()), + new AbstractMap.SimpleEntry<>("context", new Parameter4.Parameter41()), + new AbstractMap.SimpleEntry<>("refParam", new Parameter5.Parameter51()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter0.java index c989c5983cb..fb818182444 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.faketestqueryparamters.put.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "pipe", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter1.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter1.java index c16f6d6de28..c835f8982f0 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter1.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter1.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.faketestqueryparamters.put.parameters.parameter1.Schema1; public class Parameter1 { - public static class Parameter11 extends SchemaQueryParameter { + public static class Parameter11 extends SchemaParameter { public Parameter11() { super( "ioutil", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter2.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter2.java index 2fd143bb906..a4718b73134 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter2.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter2.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.faketestqueryparamters.put.parameters.parameter2.Schema2; public class Parameter2 { - public static class Parameter21 extends SchemaQueryParameter { + public static class Parameter21 extends SchemaParameter { public Parameter21() { super( "http", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter3.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter3.java index 480e2c48f81..243be0b3e0f 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter3.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter3.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.faketestqueryparamters.put.parameters.parameter3.Schema3; public class Parameter3 { - public static class Parameter31 extends SchemaQueryParameter { + public static class Parameter31 extends SchemaParameter { public Parameter31() { super( "url", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter4.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter4.java index eeb191446a1..449ae175083 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter4.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter4.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.faketestqueryparamters.put.parameters.parameter4.Schema4; public class Parameter4 { - public static class Parameter41 extends SchemaQueryParameter { + public static class Parameter41 extends SchemaParameter { public Parameter41() { super( "context", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter5.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter5.java index 02b20731da4..1575ac4c084 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter5.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/Parameter5.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.faketestqueryparamters.put.parameters.parameter5.Schema5; public class Parameter5 { - public static class Parameter51 extends SchemaQueryParameter { + public static class Parameter51 extends SchemaParameter { public Parameter51() { super( "refParam", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/Parameters.java new file mode 100644 index 00000000000..e1ac9de45c5 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.petfindbystatus.get; + +import org.openapijsonschematools.client.paths.petfindbystatus.get.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.QuerySerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("status", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/parameters/Parameter0.java index da19a087ca9..b77d3c07561 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.petfindbystatus.get.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "status", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/Parameters.java new file mode 100644 index 00000000000..5974cc73733 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.petfindbytags.get; + +import org.openapijsonschematools.client.paths.petfindbytags.get.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.QuerySerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("tags", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/parameters/Parameter0.java index edc13c725ae..43633e1742d 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.petfindbytags.get.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "tags", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/Parameters.java new file mode 100644 index 00000000000..d8775b677aa --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/Parameters.java @@ -0,0 +1,32 @@ +package org.openapijsonschematools.client.paths.petpetid.delete; + +import org.openapijsonschematools.client.paths.petpetid.delete.parameters.Parameter0; +import org.openapijsonschematools.client.paths.petpetid.delete.parameters.Parameter1; +import org.openapijsonschematools.client.parameter.PathSerializer; +import org.openapijsonschematools.client.parameter.HeadersSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("petId", new Parameter1.Parameter11()) + ) + ); + } + } + + public static class HeaderParametersSerializer extends HeadersSerializer { + public HeaderParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("api_key", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/parameters/Parameter0.java index b43b8e975fa..48e40ea5596 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.petpetid.delete.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaNonQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "api_key", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/parameters/Parameter1.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/parameters/Parameter1.java index b3a4da99d38..c40da80fec8 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/parameters/Parameter1.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/parameters/Parameter1.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.petpetid.delete.parameters.parameter1.Schema1; public class Parameter1 { - public static class Parameter11 extends SchemaNonQueryParameter { + public static class Parameter11 extends SchemaParameter { public Parameter11() { super( "petId", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/Parameters.java new file mode 100644 index 00000000000..f5e28725665 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.petpetid.get; + +import org.openapijsonschematools.client.paths.petpetid.get.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.PathSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("petId", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/parameters/Parameter0.java index 5adf6297dd5..7b03160b9a4 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.petpetid.get.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaNonQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "petId", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/Parameters.java new file mode 100644 index 00000000000..04772587103 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.petpetid.post; + +import org.openapijsonschematools.client.paths.petpetid.post.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.PathSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("petId", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/parameters/Parameter0.java index ec696571f52..13a19320b60 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.petpetid.post.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaNonQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "petId", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/Parameters.java new file mode 100644 index 00000000000..739ed320360 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.petpetiduploadimage.post; + +import org.openapijsonschematools.client.paths.petpetiduploadimage.post.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.PathSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("petId", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/parameters/Parameter0.java index eedbc3c3a58..e6002b4ec9d 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.petpetiduploadimage.post.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaNonQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "petId", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/Parameters.java new file mode 100644 index 00000000000..be0db492e8e --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.storeorderorderid.delete; + +import org.openapijsonschematools.client.paths.storeorderorderid.delete.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.PathSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("order_id", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/parameters/Parameter0.java index 12f5b4ad5b6..3f27fb09e43 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.storeorderorderid.delete.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaNonQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "order_id", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/Parameters.java new file mode 100644 index 00000000000..5e6d9bb0b5d --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.storeorderorderid.get; + +import org.openapijsonschematools.client.paths.storeorderorderid.get.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.PathSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("order_id", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/parameters/Parameter0.java index 3736b803d37..e1ad2e999a1 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaNonQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.storeorderorderid.get.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaNonQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "order_id", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/Parameters.java new file mode 100644 index 00000000000..0e29f41858d --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/Parameters.java @@ -0,0 +1,22 @@ +package org.openapijsonschematools.client.paths.userlogin.get; + +import org.openapijsonschematools.client.paths.userlogin.get.parameters.Parameter0; +import org.openapijsonschematools.client.paths.userlogin.get.parameters.Parameter1; +import org.openapijsonschematools.client.parameter.QuerySerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("username", new Parameter0.Parameter01()), + new AbstractMap.SimpleEntry<>("password", new Parameter1.Parameter11()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/parameters/Parameter0.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/parameters/Parameter0.java index 77fc0b28bc5..db4b2c26b2e 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/parameters/Parameter0.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/parameters/Parameter0.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.userlogin.get.parameters.parameter0.Schema0; public class Parameter0 { - public static class Parameter01 extends SchemaQueryParameter { + public static class Parameter01 extends SchemaParameter { public Parameter01() { super( "username", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/parameters/Parameter1.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/parameters/Parameter1.java index 69baecf02a7..958cf010fab 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/parameters/Parameter1.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/parameters/Parameter1.java @@ -2,12 +2,12 @@ import org.openapijsonschematools.client.parameter.ParameterStyle; import org.openapijsonschematools.client.parameter.ParameterInType; -import org.openapijsonschematools.client.parameter.SchemaQueryParameter; +import org.openapijsonschematools.client.parameter.SchemaParameter; import org.openapijsonschematools.client.paths.userlogin.get.parameters.parameter1.Schema1; public class Parameter1 { - public static class Parameter11 extends SchemaQueryParameter { + public static class Parameter11 extends SchemaParameter { public Parameter11() { super( "password", diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/delete/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/delete/Parameters.java new file mode 100644 index 00000000000..82077485af4 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/delete/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.userusername.delete; + +import org.openapijsonschematools.client.paths.userusername.delete.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.PathSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/Parameters.java new file mode 100644 index 00000000000..a8b83ba76ec --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.userusername.get; + +import org.openapijsonschematools.client.paths.userusername.get.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.PathSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/Parameters.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/Parameters.java new file mode 100644 index 00000000000..8ccb7ecf8e6 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/Parameters.java @@ -0,0 +1,20 @@ +package org.openapijsonschematools.client.paths.userusername.put; + +import org.openapijsonschematools.client.paths.userusername.put.parameters.Parameter0; +import org.openapijsonschematools.client.parameter.PathSerializer; + +import java.util.Map; +import java.util.AbstractMap; + +public class Parameters { + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("", new Parameter0.Parameter01()) + ) + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyCookieSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyCookieSecurityScheme.java index 47924f48779..720b41714e1 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyCookieSecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyCookieSecurityScheme.java @@ -9,14 +9,21 @@ public class ApiKeyCookieSecurityScheme implements SecurityScheme { private final String apiKey; + private final String name; - protected ApiKeyCookieSecurityScheme(String apiKey) { + protected ApiKeyCookieSecurityScheme(String apiKey, String name) { this.apiKey = apiKey; + this.name = name; } @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { - List cookieValue = headers.getOrDefault("Cookie", new ArrayList<>()); - cookieValue.add(apiKey); + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { + List cookieHeaderValues = headers.getOrDefault("Cookie", new ArrayList<>()); + String cookieValue = name + "=" + apiKey; + if (cookieHeaderValues.isEmpty()) { + cookieHeaderValues.add(cookieValue); + } else { + cookieHeaderValues.set(0, cookieHeaderValues.get(0)+ "; " + cookieValue); + } } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyHeaderSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyHeaderSecurityScheme.java index b8108586788..a19e3051a5f 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyHeaderSecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyHeaderSecurityScheme.java @@ -17,7 +17,7 @@ protected ApiKeyHeaderSecurityScheme(String apiKey, String name) { } @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { List headerValue = headers.getOrDefault(name, new ArrayList<>()); headerValue.add(apiKey); } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyQuerySecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyQuerySecurityScheme.java index 638271f9eaf..7612f75fc2f 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyQuerySecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyQuerySecurityScheme.java @@ -17,7 +17,7 @@ protected ApiKeyQuerySecurityScheme(String apiKey, String name) { } @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { - throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { + queryMap.put(name, apiKey); } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBasicSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBasicSecurityScheme.java index 58ca37133e0..7a22f86c495 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBasicSecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBasicSecurityScheme.java @@ -23,7 +23,7 @@ public HttpBasicSecurityScheme(String userId, String password) { } @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { String userPass = userId + ":" + password; String b64UserPass = Base64.getEncoder().encodeToString(userPass.getBytes(StandardCharsets.UTF_8)); List headerValue = headers.getOrDefault("Authorization", new ArrayList<>()); diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java index 17ff7f595a9..94618ff92a0 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java @@ -27,7 +27,7 @@ protected HttpBearerSecurityScheme(String accessToken) { } @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { List headerValue = headers.getOrDefault("Authorization", new ArrayList<>()); headerValue.add("Bearer " + accessToken); } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpDigestSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpDigestSecurityScheme.java index 8e96ab0a0c0..21aefd864e3 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpDigestSecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpDigestSecurityScheme.java @@ -8,7 +8,7 @@ public class HttpDigestSecurityScheme implements SecurityScheme { @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpSignatureSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpSignatureSecurityScheme.java index 39374217373..647e0190f49 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpSignatureSecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpSignatureSecurityScheme.java @@ -8,7 +8,7 @@ public class HttpSignatureSecurityScheme implements SecurityScheme { @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/MutualTlsSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/MutualTlsSecurityScheme.java index c5de4857e43..b7d77aa1c02 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/MutualTlsSecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/MutualTlsSecurityScheme.java @@ -8,7 +8,7 @@ public class MutualTlsSecurityScheme implements SecurityScheme { @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OAuth2SecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OAuth2SecurityScheme.java index 331a2de41d3..22bf13ba13c 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OAuth2SecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OAuth2SecurityScheme.java @@ -8,7 +8,7 @@ public class OAuth2SecurityScheme implements SecurityScheme { @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OpenIdConnectSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OpenIdConnectSecurityScheme.java index 40d20af483b..3594dc116ab 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OpenIdConnectSecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OpenIdConnectSecurityScheme.java @@ -8,7 +8,7 @@ public class OpenIdConnectSecurityScheme implements SecurityScheme { @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/SecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/SecurityScheme.java index a10949dd0f6..1540c19cef3 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/SecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/SecurityScheme.java @@ -12,7 +12,7 @@ void applyAuth( String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, - @Nullable String queryParamsSuffix, + Map queryMap, List scopeNames ); } diff --git a/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java index 30347681cbf..990f21a1148 100644 --- a/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java +++ b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/header/ContentHeaderTest.java @@ -27,7 +27,7 @@ public void testSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, Map.of("color", List.of("null")) diff --git a/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/CookieSerializerTest.java b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/CookieSerializerTest.java new file mode 100644 index 00000000000..a19ea8c1007 --- /dev/null +++ b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/CookieSerializerTest.java @@ -0,0 +1,44 @@ +package org.openapijsonschematools.client.parameter; + +import org.junit.Assert; +import org.junit.Test; +import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; + +public class CookieSerializerTest { + public static class Parameter1 extends SchemaParameter { + public Parameter1() { + super("param1", ParameterInType.COOKIE, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Parameter2 extends SchemaParameter { + public Parameter2() { + super("param2", ParameterInType.COOKIE, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class CookieParametersSerializer extends CookieSerializer { + protected CookieParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Parameter1()), + new AbstractMap.SimpleEntry<>("param2", new Parameter2()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + String cookie = new CookieParametersSerializer().serialize(inData); + String expectedCookie = "param1=a; param2=3.14"; + Assert.assertEquals(expectedCookie, cookie); + } +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/HeadersSerializerTest.java b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/HeadersSerializerTest.java new file mode 100644 index 00000000000..63f3159bf0a --- /dev/null +++ b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/HeadersSerializerTest.java @@ -0,0 +1,48 @@ +package org.openapijsonschematools.client.parameter; + +import org.junit.Assert; +import org.junit.Test; +import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; +import java.util.List; + +public class HeadersSerializerTest { + public static class Param1HeaderParameter extends SchemaParameter { + public Param1HeaderParameter() { + super("param1", ParameterInType.HEADER, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Param2HeaderParameter extends SchemaParameter { + public Param2HeaderParameter() { + super("param2", ParameterInType.HEADER, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class HeaderParametersSerializer extends HeadersSerializer { + protected HeaderParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Param1HeaderParameter()), + new AbstractMap.SimpleEntry<>("param2", new Param2HeaderParameter()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + Map> expectedHeaders = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", List.of("a")), + new AbstractMap.SimpleEntry<>("param2", List.of("3.14")) + ); + Map> headers = new HeaderParametersSerializer().serialize(inData); + Assert.assertEquals(expectedHeaders, headers); + } +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/PathSerializerTest.java b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/PathSerializerTest.java new file mode 100644 index 00000000000..bef110af08d --- /dev/null +++ b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/PathSerializerTest.java @@ -0,0 +1,45 @@ +package org.openapijsonschematools.client.parameter; + +import org.junit.Assert; +import org.junit.Test; +import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; + +public class PathSerializerTest { + public static class Parameter1 extends SchemaParameter { + public Parameter1() { + super("param1", ParameterInType.PATH, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Parameter2 extends SchemaParameter { + public Parameter2() { + super("param2", ParameterInType.PATH, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class PathParametersSerializer extends PathSerializer { + protected PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Parameter1()), + new AbstractMap.SimpleEntry<>("param2", new Parameter2()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + String pathWithPlaceholders = "/{param1}/{param2}"; + String path = new PathParametersSerializer().serialize(inData, pathWithPlaceholders); + String expectedPath = "/a/3.14"; + Assert.assertEquals(expectedPath, path); + } +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/QuerySerializerTest.java b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/QuerySerializerTest.java new file mode 100644 index 00000000000..ed5aae7e580 --- /dev/null +++ b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/QuerySerializerTest.java @@ -0,0 +1,51 @@ +package org.openapijsonschematools.client.parameter; + +import org.junit.Assert; +import org.junit.Test; +import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; + +public class QuerySerializerTest { + public static class Param1QueryParameter extends SchemaParameter { + public Param1QueryParameter() { + super("param1", ParameterInType.QUERY, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Param2QueryParameter extends SchemaParameter { + public Param2QueryParameter() { + super("param2", ParameterInType.QUERY, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class QueryParametersSerializer extends QuerySerializer { + protected QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Param1QueryParameter()), + new AbstractMap.SimpleEntry<>("param2", new Param2QueryParameter()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + var serializer = new QueryParametersSerializer(); + var queryMap = serializer.getQueryMap(inData); + Map expectedQueryMap = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "param1=a"), + new AbstractMap.SimpleEntry<>("param2", "param2=3.14") + ); + Assert.assertEquals(expectedQueryMap, queryMap); + String query = serializer.serialize(queryMap); + String expectedQuery = "?param1=a¶m2=3.14"; + Assert.assertEquals(expectedQuery, query); + } +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java index cc681934e5e..871d4f073f3 100644 --- a/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java +++ b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaNonQueryParameterTest.java @@ -3,24 +3,23 @@ import org.checkerframework.checker.nullness.qual.Nullable; import org.junit.Assert; import org.junit.Test; -import org.openapijsonschematools.client.configurations.JsonSchemaKeywordFlags; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.exceptions.InvalidTypeException; import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.AbstractMap; import java.util.Set; public class SchemaNonQueryParameterTest { - public record ParamTestCase(@Nullable Object payload, Map expectedSerialization, @Nullable Boolean explode) { - public ParamTestCase(@Nullable Object payload, Map expectedSerialization) { + public record ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization, @Nullable Boolean explode) { + public ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization) { this(payload, expectedSerialization, null); } } - public static class HeaderParameter extends SchemaNonQueryParameter { + public static class HeaderParameter extends SchemaParameter { public HeaderParameter(@Nullable Boolean explode) { super("color", ParameterInType.HEADER, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -32,74 +31,73 @@ public void testHeaderSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "1") + new AbstractMap.SimpleEntry<>("color", "1") ), new ParamTestCase( 3.14, - Map.of("color","3.14") + new AbstractMap.SimpleEntry<>("color","3.14") ), new ParamTestCase( "blue", - Map.of("color", "blue") + new AbstractMap.SimpleEntry<>("color", "blue") ), new ParamTestCase( "hello world", - Map.of("color", "hello world") + new AbstractMap.SimpleEntry<>("color", "hello world") ), new ParamTestCase( "", - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown") + new AbstractMap.SimpleEntry<>("color", "blue,black,brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown"), + new AbstractMap.SimpleEntry<>("color", "blue,black,brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R,100,G,200,B,150") + new AbstractMap.SimpleEntry<>("color", "R,100,G,200,B,150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100,G=200,B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100,G=200,B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var header = new HeaderParameter(testCase.explode); - var serialization = header.serialize(testCase.payload, false, configuration); + var serialization = header.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var boolHeader = new HeaderParameter(false); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> boolHeader.serialize(value, false, configuration) + () -> boolHeader.serialize(value) ); } } - public static class PathParameter extends SchemaNonQueryParameter { + public static class PathParameter extends SchemaParameter { public PathParameter(@Nullable Boolean explode) { super("color", ParameterInType.PATH, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -111,74 +109,73 @@ public void testPathSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "1") + new AbstractMap.SimpleEntry<>("color", "1") ), new ParamTestCase( 3.14, - Map.of("color","3.14") + new AbstractMap.SimpleEntry<>("color","3.14") ), new ParamTestCase( "blue", - Map.of("color", "blue") + new AbstractMap.SimpleEntry<>("color", "blue") ), new ParamTestCase( "hello world", - Map.of("color", "hello%20world") + new AbstractMap.SimpleEntry<>("color", "hello%20world") ), new ParamTestCase( "", - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown") + new AbstractMap.SimpleEntry<>("color", "blue,black,brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown"), + new AbstractMap.SimpleEntry<>("color", "blue,black,brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R,100,G,200,B,150") + new AbstractMap.SimpleEntry<>("color", "R,100,G,200,B,150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100,G=200,B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100,G=200,B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var pathParameter = new PathParameter(testCase.explode); - var serialization = pathParameter.serialize(testCase.payload, false, configuration); + var serialization = pathParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var pathParameter = new PathParameter(false); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> pathParameter.serialize(value, false, configuration) + () -> pathParameter.serialize(value) ); } } - public static class CookieParameter extends SchemaNonQueryParameter { + public static class CookieParameter extends SchemaParameter { public CookieParameter(@Nullable Boolean explode) { super("color", ParameterInType.COOKIE, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -190,74 +187,73 @@ public void testCookieSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "color=1") + new AbstractMap.SimpleEntry<>("color", "color=1") ), new ParamTestCase( 3.14, - Map.of("color","color=3.14") + new AbstractMap.SimpleEntry<>("color","color=3.14") ), new ParamTestCase( "blue", - Map.of("color", "color=blue") + new AbstractMap.SimpleEntry<>("color", "color=blue") ), new ParamTestCase( "hello world", - Map.of("color", "color=hello world") + new AbstractMap.SimpleEntry<>("color", "color=hello world") ), new ParamTestCase( "", - Map.of("color", "color=") + new AbstractMap.SimpleEntry<>("color", "color=") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "color=blue&color=black&color=brown") + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "color=blue&color=black&color=brown"), + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100&G=200&B=150") + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100&G=200&B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var cookieParameter = new CookieParameter(testCase.explode); - var serialization = cookieParameter.serialize(testCase.payload, false, configuration); + var serialization = cookieParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var cookieParameter = new CookieParameter(false); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> cookieParameter.serialize(value, false, configuration) + () -> cookieParameter.serialize(value) ); } } - public static class PathMatrixParameter extends SchemaNonQueryParameter { + public static class PathMatrixParameter extends SchemaParameter { public PathMatrixParameter(@Nullable Boolean explode) { super("color", ParameterInType.PATH, true, ParameterStyle.MATRIX, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -269,67 +265,66 @@ public void testPathMatrixSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", ";color=1") + new AbstractMap.SimpleEntry<>("color", ";color=1") ), new ParamTestCase( 3.14, - Map.of("color",";color=3.14") + new AbstractMap.SimpleEntry<>("color",";color=3.14") ), new ParamTestCase( "blue", - Map.of("color", ";color=blue") + new AbstractMap.SimpleEntry<>("color", ";color=blue") ), new ParamTestCase( "hello world", - Map.of("color", ";color=hello%20world") + new AbstractMap.SimpleEntry<>("color", ";color=hello%20world") ), new ParamTestCase( "", - Map.of("color", ";color") + new AbstractMap.SimpleEntry<>("color", ";color") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ";color=blue,black,brown") + new AbstractMap.SimpleEntry<>("color", ";color=blue,black,brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ";color=blue;color=black;color=brown"), + new AbstractMap.SimpleEntry<>("color", ";color=blue;color=black;color=brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", ";color=R,100,G,200,B,150") + new AbstractMap.SimpleEntry<>("color", ";color=R,100,G,200,B,150") ), new ParamTestCase( mapPayload, - Map.of("color", ";R=100;G=200;B=150"), + new AbstractMap.SimpleEntry<>("color", ";R=100;G=200;B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var pathParameter = new PathMatrixParameter(testCase.explode); - var serialization = pathParameter.serialize(testCase.payload, false, configuration); + var serialization = pathParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } - public static class PathLabelParameter extends SchemaNonQueryParameter { + public static class PathLabelParameter extends SchemaParameter { public PathLabelParameter(@Nullable Boolean explode) { super("color", ParameterInType.PATH, true, ParameterStyle.LABEL, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -341,62 +336,61 @@ public void testPathLabelSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", ".1") + new AbstractMap.SimpleEntry<>("color", ".1") ), new ParamTestCase( 3.14, - Map.of("color",".3.14") + new AbstractMap.SimpleEntry<>("color",".3.14") ), new ParamTestCase( "blue", - Map.of("color", ".blue") + new AbstractMap.SimpleEntry<>("color", ".blue") ), new ParamTestCase( "hello world", - Map.of("color", ".hello%20world") + new AbstractMap.SimpleEntry<>("color", ".hello%20world") ), new ParamTestCase( "", - Map.of("color", ".") + new AbstractMap.SimpleEntry<>("color", ".") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ".blue.black.brown") + new AbstractMap.SimpleEntry<>("color", ".blue.black.brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ".blue.black.brown"), + new AbstractMap.SimpleEntry<>("color", ".blue.black.brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", ".R.100.G.200.B.150") + new AbstractMap.SimpleEntry<>("color", ".R.100.G.200.B.150") ), new ParamTestCase( mapPayload, - Map.of("color", ".R=100.G=200.B=150"), + new AbstractMap.SimpleEntry<>("color", ".R=100.G=200.B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var pathParameter = new PathLabelParameter(testCase.explode); - var serialization = pathParameter.serialize(testCase.payload, false, configuration); + var serialization = pathParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } diff --git a/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java index b36fc740804..f4ea29fccb3 100644 --- a/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java +++ b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/parameter/SchemaQueryParameterTest.java @@ -3,24 +3,23 @@ import org.checkerframework.checker.nullness.qual.Nullable; import org.junit.Assert; import org.junit.Test; -import org.openapijsonschematools.client.configurations.JsonSchemaKeywordFlags; -import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.exceptions.InvalidTypeException; import org.openapijsonschematools.client.schemas.AnyTypeJsonSchema; import java.util.LinkedHashMap; import java.util.List; +import java.util.AbstractMap; import java.util.Map; import java.util.Set; public class SchemaQueryParameterTest { - public record ParamTestCase(@Nullable Object payload, Map expectedSerialization, @Nullable Boolean explode) { - public ParamTestCase(@Nullable Object payload, Map expectedSerialization) { + public record ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization, @Nullable Boolean explode) { + public ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization) { this(payload, expectedSerialization, null); } } - public static class QueryParameterNoStyle extends SchemaQueryParameter { + public static class QueryParameterNoStyle extends SchemaParameter { public QueryParameterNoStyle(@Nullable Boolean explode) { super("color", ParameterInType.QUERY, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -32,76 +31,73 @@ public void testQueryParameterNoStyleSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "?color=1") + new AbstractMap.SimpleEntry<>("color", "color=1") ), new ParamTestCase( 3.14, - Map.of("color","?color=3.14") + new AbstractMap.SimpleEntry<>("color","color=3.14") ), new ParamTestCase( "blue", - Map.of("color", "?color=blue") + new AbstractMap.SimpleEntry<>("color", "color=blue") ), new ParamTestCase( "hello world", - Map.of("color", "?color=hello%20world") + new AbstractMap.SimpleEntry<>("color", "color=hello%20world") ), new ParamTestCase( "", - Map.of("color", "?color=") + new AbstractMap.SimpleEntry<>("color", "color=") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "?color=blue&color=black&color=brown") + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "?color=blue&color=black&color=brown"), + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "?R=100&G=200&B=150") + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150") ), new ParamTestCase( mapPayload, - Map.of("color", "?R=100&G=200&B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var parameter = new QueryParameterNoStyle(testCase.explode); - var iterator = parameter.getPrefixSeparatorIterator(); - var serialization = parameter.serialize(testCase.payload, false, configuration, iterator); + var serialization = parameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var parameter = new QueryParameterNoStyle(false); - var iterator = parameter.getPrefixSeparatorIterator(); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> parameter.serialize(value, false, configuration, iterator) + () -> parameter.serialize(value) ); } } - public static class QueryParameterSpaceDelimited extends SchemaQueryParameter { + public static class QueryParameterSpaceDelimited extends SchemaParameter { public QueryParameterSpaceDelimited(@Nullable Boolean explode) { super("color", ParameterInType.QUERY, true, ParameterStyle.SPACE_DELIMITED, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -113,44 +109,42 @@ public void testQueryParameterSpaceDelimitedSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue%20black%20brown") + new AbstractMap.SimpleEntry<>("color", "blue%20black%20brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue%20black%20brown"), + new AbstractMap.SimpleEntry<>("color", "blue%20black%20brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R%20100%20G%20200%20B%20150") + new AbstractMap.SimpleEntry<>("color", "R%20100%20G%20200%20B%20150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100%20G=200%20B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100%20G=200%20B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var parameter = new QueryParameterSpaceDelimited(testCase.explode); - var iterator = parameter.getPrefixSeparatorIterator(); - var serialization = parameter.serialize(testCase.payload, false, configuration, iterator); + var serialization = parameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } - public static class QueryParameterPipeDelimited extends SchemaQueryParameter { + public static class QueryParameterPipeDelimited extends SchemaParameter { public QueryParameterPipeDelimited(@Nullable Boolean explode) { super("color", ParameterInType.QUERY, true, ParameterStyle.PIPE_DELIMITED, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -162,39 +156,37 @@ public void testQueryParameterPipeDelimitedSerialization() { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue|black|brown") + new AbstractMap.SimpleEntry<>("color", "blue|black|brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue|black|brown"), + new AbstractMap.SimpleEntry<>("color", "blue|black|brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R|100|G|200|B|150") + new AbstractMap.SimpleEntry<>("color", "R|100|G|200|B|150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100|G=200|B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100|G=200|B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var parameter = new QueryParameterPipeDelimited(testCase.explode); - var iterator = parameter.getPrefixSeparatorIterator(); - var serialization = parameter.serialize(testCase.payload, false, configuration, iterator); + var serialization = parameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } diff --git a/samples/client/petstore/python/docs/paths/common_param_sub_dir/get.md b/samples/client/petstore/python/docs/paths/common_param_sub_dir/get.md index 216f86e9782..c7693de1576 100644 --- a/samples/client/petstore/python/docs/paths/common_param_sub_dir/get.md +++ b/samples/client/petstore/python/docs/paths/common_param_sub_dir/get.md @@ -143,6 +143,21 @@ with petstore_api.ApiClient(used_configuration) as api_client: # Create an instance of the API class api_instance = fake_api.FakeApi(api_client) + # example passing only required values which don't have defaults set + path_params: operation.PathParametersDictInput = { + 'subDir': "a", + } + query_params: operation.QueryParametersDictInput = { + } + try: + api_response = api_instance.get_common_param( + path_params=path_params, + query_params=query_params, + ) + pprint(api_response) + except petstore_api.ApiException as e: + print("Exception when calling FakeApi->get_common_param: %s\n" % e) + # example passing only optional values path_params = { 'subDir': "a", diff --git a/samples/client/petstore/python/docs/paths/common_param_sub_dir/post.md b/samples/client/petstore/python/docs/paths/common_param_sub_dir/post.md index b6520c1c030..0aca46efb67 100644 --- a/samples/client/petstore/python/docs/paths/common_param_sub_dir/post.md +++ b/samples/client/petstore/python/docs/paths/common_param_sub_dir/post.md @@ -143,6 +143,21 @@ with petstore_api.ApiClient(used_configuration) as api_client: # Create an instance of the API class api_instance = fake_api.FakeApi(api_client) + # example passing only required values which don't have defaults set + path_params: operation.PathParametersDictInput = { + 'subDir': "a", + } + header_params: operation.HeaderParametersDictInput = { + } + try: + api_response = api_instance.post_common_param( + path_params=path_params, + header_params=header_params, + ) + pprint(api_response) + except petstore_api.ApiException as e: + print("Exception when calling FakeApi->post_common_param: %s\n" % e) + # example passing only optional values path_params = { 'subDir': "a", diff --git a/src/main/java/org/openapijsonschematools/codegen/generatorrunner/DefaultGeneratorRunner.java b/src/main/java/org/openapijsonschematools/codegen/generatorrunner/DefaultGeneratorRunner.java index ce9b0c265da..c283f01a410 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generatorrunner/DefaultGeneratorRunner.java +++ b/src/main/java/org/openapijsonschematools/codegen/generatorrunner/DefaultGeneratorRunner.java @@ -430,10 +430,11 @@ private void generatePathItem(List files, CodegenKey pathKey, CodegenPathI } if (pathItem.parameters != null) { - generateXs(files, jsonPath + "/parameters", CodegenConstants.JSON_PATH_LOCATION_TYPE.PARAMETERS, CodegenConstants.PARAMETERS, null, true); + String parametersJsonPath = jsonPath + "/parameters"; + generateXs(files, parametersJsonPath, CodegenConstants.JSON_PATH_LOCATION_TYPE.PARAMETERS, CodegenConstants.PARAMETERS, null, generator.shouldGenerateFile(parametersJsonPath)); int i = 0; for (CodegenParameter param: pathItem.parameters) { - generateParameter(files, param, jsonPath + "/parameters/" + i); + generateParameter(files, param, parametersJsonPath + "/" + i); i += 1; } } @@ -454,21 +455,23 @@ private void generatePathItem(List files, CodegenKey pathKey, CodegenPathI endpointMap.put("security", security); endpointMap.put("path", pathKey); generateXs(files, operationJsonPath, CodegenConstants.JSON_PATH_LOCATION_TYPE.OPERATION, CodegenConstants.APIS, endpointMap, true); - if (operation.pathParametersSchema != null) { - String objectJsonPath = operationJsonPath + "/" + "PathParameters"; - generateSchema(files, operation.pathParametersSchema, objectJsonPath); - } - if (operation.queryParametersSchema != null) { - String objectJsonPath = operationJsonPath + "/" + "QueryParameters"; - generateSchema(files, operation.queryParametersSchema, objectJsonPath); - } - if (operation.headerParametersSchema != null) { - String objectJsonPath = operationJsonPath + "/" + "HeaderParameters"; - generateSchema(files, operation.headerParametersSchema, objectJsonPath); - } - if (operation.cookieParametersSchema != null) { - String objectJsonPath = operationJsonPath + "/" + "CookieParameters"; - generateSchema(files, operation.cookieParametersSchema, objectJsonPath); + if (operation.parametersInfo != null) { + if (operation.parametersInfo.pathParametersSchema != null) { + String objectJsonPath = operationJsonPath + "/" + "PathParameters"; + generateSchema(files, operation.parametersInfo.pathParametersSchema, objectJsonPath); + } + if (operation.parametersInfo.queryParametersSchema != null) { + String objectJsonPath = operationJsonPath + "/" + "QueryParameters"; + generateSchema(files, operation.parametersInfo.queryParametersSchema, objectJsonPath); + } + if (operation.parametersInfo.headerParametersSchema != null) { + String objectJsonPath = operationJsonPath + "/" + "HeaderParameters"; + generateSchema(files, operation.parametersInfo.headerParametersSchema, objectJsonPath); + } + if (operation.parametersInfo.cookieParametersSchema != null) { + String objectJsonPath = operationJsonPath + "/" + "CookieParameters"; + generateSchema(files, operation.parametersInfo.cookieParametersSchema, objectJsonPath); + } } // operation docs @@ -503,14 +506,18 @@ private void generatePathItem(List files, CodegenKey pathKey, CodegenPathI } // paths.some_path.post.parameters.parameter_0.py - if (operation.parameters != null && !operation.parameters.allParameters.isEmpty()) { - String parametersJsonPath = operationJsonPath + "/parameters"; - generateXs(files, parametersJsonPath, CodegenConstants.JSON_PATH_LOCATION_TYPE.PARAMETERS, CodegenConstants.PARAMETERS, null, true); - Integer i = 0; - for (CodegenParameter cp: operation.parameters.allParameters) { - String parameterJsonPath = parametersJsonPath + "/" + i.toString(); - generateParameter(files, cp, parameterJsonPath); - i++; + if (operation.parametersInfo != null) { + if (operation.parametersInfo.parameters != null && !operation.parametersInfo.parameters.allParameters.isEmpty()) { + String parametersJsonPath = operationJsonPath + "/parameters"; + Map parametersTemplateInfo = new HashMap<>(); + parametersTemplateInfo.put("parametersInfo", operation.parametersInfo); + generateXs(files, parametersJsonPath, CodegenConstants.JSON_PATH_LOCATION_TYPE.PARAMETERS, CodegenConstants.PARAMETERS, parametersTemplateInfo, true); + Integer i = 0; + for (CodegenParameter cp: operation.parametersInfo.parameters.allParameters) { + String parameterJsonPath = parametersJsonPath + "/" + i.toString(); + generateParameter(files, cp, parameterJsonPath); + i++; + } } } @@ -835,7 +842,7 @@ private TreeMap generateParameters(List files) { } TreeMap parameters = new TreeMap<>(); String parametersJsonPath = "#/components/parameters"; - generateXs(files, parametersJsonPath, CodegenConstants.JSON_PATH_LOCATION_TYPE.PARAMETERS, CodegenConstants.PARAMETERS, null, true); + generateXs(files, parametersJsonPath, CodegenConstants.JSON_PATH_LOCATION_TYPE.PARAMETERS, CodegenConstants.PARAMETERS, null, generator.shouldGenerateFile(parametersJsonPath)); for (Map.Entry entry: specParameters.entrySet()) { String componentName = entry.getKey(); Parameter specParameter = entry.getValue(); diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/DefaultGenerator.java b/src/main/java/org/openapijsonschematools/codegen/generators/DefaultGenerator.java index 5af15d7239b..ef44359a3ee 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/DefaultGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/DefaultGenerator.java @@ -59,6 +59,7 @@ import org.openapijsonschematools.codegen.generators.openapimodels.CodegenOauthFlow; import org.openapijsonschematools.codegen.generators.openapimodels.CodegenOauthFlows; import org.openapijsonschematools.codegen.generators.openapimodels.CodegenOperation; +import org.openapijsonschematools.codegen.generators.openapimodels.CodegenParametersInfo; import org.openapijsonschematools.codegen.generators.openapimodels.CodegenParameter; import org.openapijsonschematools.codegen.generators.openapimodels.CodegenPathItem; import org.openapijsonschematools.codegen.generators.openapimodels.CodegenPatternInfo; @@ -154,6 +155,7 @@ public class DefaultGenerator implements Generator { protected String templateEngineName; protected String headersSchemaFragment = "Headers"; + protected static final Set operationVerbs = Set.of("get", "put", "post", "delete", "options", "head", "patch", "trace"); static { DefaultFeatureSet = FeatureSet.newBuilder() @@ -2639,6 +2641,110 @@ private void updateXParameters( xParametersProperties.put(derefParam.name, parameterSchema); } + private CodegenParametersInfo getParametersInfo(LinkedHashMap, CodegenParameter> pathItemParameters, List parameters, String operationJsonPath) { + if ((pathItemParameters == null || pathItemParameters.isEmpty()) && (parameters == null || parameters.isEmpty())) { + return null; + } + List allParams = new ArrayList<>(); + List pathParams = new ArrayList<>(); + List queryParams = new ArrayList<>(); + List headerParams = new ArrayList<>(); + List cookieParams = new ArrayList<>(); + HashMap pathParametersProperties = new HashMap<>(); + List pathParametersRequired = new ArrayList<>(); + HashMap queryParametersProperties = new HashMap<>(); + List queryParametersRequired = new ArrayList<>(); + HashMap headerParametersProperties = new HashMap<>(); + List headerParametersRequired = new ArrayList<>(); + HashMap cookieParametersProperties = new HashMap<>(); + List cookieParametersRequired = new ArrayList<>(); + ArrayList usedPathItemParams = null; + LinkedHashMap, CodegenParameter> usedPathItemParameters = new LinkedHashMap<>(); + if (pathItemParameters != null) { + usedPathItemParameters.putAll(pathItemParameters); + } + ParameterCollection operationParameters = null; + if (parameters != null) { + int i = 0; + for (Parameter param : parameters) { + String usedSourceJsonPath = operationJsonPath + "/parameters/" + i; + CodegenParameter p = fromParameter(param, usedSourceJsonPath); + allParams.add(p); + i++; + + CodegenParameter derefParam = p.getSelfOrDeepestRef(); + Pair inName = Pair.of(derefParam.in, derefParam.name); + if (pathItemParameters != null && usedPathItemParameters.containsKey(inName)) { + // do not use a path item parameter if it is overridden by an operation parameter + usedPathItemParameters.remove(inName); + } + + switch (derefParam.in) { + case "query": + updateXParameters(derefParam, p, queryParams, queryParametersRequired, queryParametersProperties); + break; + case "path": + updateXParameters(derefParam, p, pathParams, pathParametersRequired, pathParametersProperties); + break; + case "header": + updateXParameters(derefParam, p, headerParams, headerParametersRequired, headerParametersProperties); + break; + case "cookie": + updateXParameters(derefParam, p, cookieParams, cookieParametersRequired, cookieParametersProperties); + break; + default: + LOGGER.warn("Unknown parameter type for {}", derefParam.name); + break; + } + } + operationParameters = new ParameterCollection(allParams, pathParams, queryParams, headerParams, cookieParams); + } + ArrayList pathItemQueryParams; + ArrayList pathItemPathParams; + ArrayList pathItemHeaderParams; + ArrayList pathItemCookieParams; + ParameterCollection pathItemParams = null; + if (!usedPathItemParameters.isEmpty()) { + pathItemQueryParams = new ArrayList<>(); + pathItemPathParams = new ArrayList<>(); + pathItemHeaderParams = new ArrayList<>(); + pathItemCookieParams = new ArrayList<>(); + if (!usedPathItemParameters.isEmpty()) { + usedPathItemParams = new ArrayList<>(); + } + for (CodegenParameter pathItemParam: usedPathItemParameters.values()) { + usedPathItemParams.add(pathItemParam); + CodegenParameter derefParam = pathItemParam.getSelfOrDeepestRef(); + switch (derefParam.in) { + case "query": + updateXParameters(derefParam, pathItemParam, pathItemQueryParams, queryParametersRequired, queryParametersProperties); + break; + case "path": + updateXParameters(derefParam, pathItemParam, pathItemPathParams, pathParametersRequired, pathParametersProperties); + break; + case "header": + updateXParameters(derefParam, pathItemParam, pathItemHeaderParams, headerParametersRequired, headerParametersProperties); + break; + case "cookie": + updateXParameters(derefParam, pathItemParam, pathItemCookieParams, cookieParametersRequired, cookieParametersProperties); + break; + default: + LOGGER.warn("Unknown parameter type for {}", derefParam.name); + break; + } + } + pathItemParams = new ParameterCollection(usedPathItemParams, pathItemPathParams, pathItemQueryParams, pathItemHeaderParams, pathItemCookieParams); + } + String parametersJsonPath = operationJsonPath + "/parameters"; + CodegenKey jsonPathPiece = getKey("parameters", "parameters", parametersJsonPath); + String subpackage = getSubpackage(parametersJsonPath); + CodegenSchema pathParametersSchema = getXParametersSchema(pathParametersProperties, pathParametersRequired, operationJsonPath + "/" + "PathParameters", operationJsonPath + "/" + "PathParameters"); + CodegenSchema queryParametersSchema = getXParametersSchema(queryParametersProperties, queryParametersRequired, operationJsonPath + "/" + "QueryParameters", operationJsonPath + "/" + "QueryParameters"); + CodegenSchema headerParametersSchema = getXParametersSchema(headerParametersProperties, headerParametersRequired, operationJsonPath + "/" + "HeaderParameters", operationJsonPath + "/" + "HeaderParameters"); + CodegenSchema cookieParametersSchema = getXParametersSchema(cookieParametersProperties, cookieParametersRequired, operationJsonPath + "/" + "CookieParameters", operationJsonPath + "/" + "CookieParameters"); + return new CodegenParametersInfo(jsonPathPiece, subpackage, operationParameters, pathParametersSchema, queryParametersSchema, headerParametersSchema, cookieParametersSchema, pathItemParams); + } + /** * Convert OAS Operation object to Codegen Operation object * @@ -2791,12 +2897,6 @@ public CodegenOperation fromOperation(Operation operation, String jsonPath, Link // callbacks = foundCallbacks; // } - List parameters = operation.getParameters(); - List allParams = new ArrayList<>(); - List pathParams = new ArrayList<>(); - List queryParams = new ArrayList<>(); - List headerParams = new ArrayList<>(); - List cookieParams = new ArrayList<>(); boolean hasRequiredParamOrBody = false; boolean hasOptionalParamOrBody = false; @@ -2828,114 +2928,19 @@ public CodegenOperation fromOperation(Operation operation, String jsonPath, Link requestBodySchema = getXParametersSchema(requestBodySchemaProperties, new ArrayList<>(), jsonPath, jsonPath); } - HashMap pathParametersProperties = new HashMap<>(); - List pathParametersRequired = new ArrayList<>(); - HashMap queryParametersProperties = new HashMap<>(); - List queryParametersRequired = new ArrayList<>(); - HashMap headerParametersProperties = new HashMap<>(); - List headerParametersRequired = new ArrayList<>(); - HashMap cookieParametersProperties = new HashMap<>(); - List cookieParametersRequired = new ArrayList<>(); - ArrayList usedPathItemParams = null; - LinkedHashMap, CodegenParameter> usedPathItemParameters = new LinkedHashMap<>(); - if (pathItemParameters != null) { - usedPathItemParameters.putAll(pathItemParameters); - } - ParameterCollection operationParameters = null; - if (parameters != null) { - int i = 0; - for (Parameter param : parameters) { - String usedSourceJsonPath = jsonPath + "/parameters/" + i; - CodegenParameter p = fromParameter(param, usedSourceJsonPath); - allParams.add(p); - i++; - - CodegenParameter derefParam = p.getSelfOrDeepestRef(); - Pair inName = Pair.of(derefParam.in, derefParam.name); - if (pathItemParameters != null && usedPathItemParameters.containsKey(inName)) { - usedPathItemParameters.remove(inName); - } - - switch (derefParam.in) { - case "query": - updateXParameters(derefParam, p, queryParams, queryParametersRequired, queryParametersProperties); - break; - case "path": - updateXParameters(derefParam, p, pathParams, pathParametersRequired, pathParametersProperties); - break; - case "header": - updateXParameters(derefParam, p, headerParams, headerParametersRequired, headerParametersProperties); - break; - case "cookie": - updateXParameters(derefParam, p, cookieParams, cookieParametersRequired, cookieParametersProperties); - break; - default: - LOGGER.warn("Unknown parameter type for {}", derefParam.name); - break; - } - } - operationParameters = new ParameterCollection(allParams, pathParams, queryParams, headerParams, cookieParams); - } - ArrayList pathItemQueryParams; - ArrayList pathItemPathParams; - ArrayList pathItemHeaderParams; - ArrayList pathItemCookieParams; - ParameterCollection pathItemParams = null; - if (!usedPathItemParameters.isEmpty()) { - pathItemQueryParams = new ArrayList<>(); - pathItemPathParams = new ArrayList<>(); - pathItemHeaderParams = new ArrayList<>(); - pathItemCookieParams = new ArrayList<>(); - if (!usedPathItemParameters.isEmpty()) { - usedPathItemParams = new ArrayList<>(); - } - for (CodegenParameter pathItemParam: usedPathItemParameters.values()) { - usedPathItemParams.add(pathItemParam); - CodegenParameter derefParam = pathItemParam.getSelfOrDeepestRef(); - switch (derefParam.in) { - case "query": - updateXParameters(derefParam, pathItemParam, pathItemQueryParams, queryParametersRequired, queryParametersProperties); - break; - case "path": - updateXParameters(derefParam, pathItemParam, pathItemPathParams, pathParametersRequired, pathParametersProperties); - break; - case "header": - updateXParameters(derefParam, pathItemParam, pathItemHeaderParams, headerParametersRequired, headerParametersProperties); - break; - case "cookie": - updateXParameters(derefParam, pathItemParam, pathItemCookieParams, cookieParametersRequired, cookieParametersProperties); - break; - default: - LOGGER.warn("Unknown parameter type for {}", derefParam.name); - break; - } - } - pathItemParams = new ParameterCollection(usedPathItemParams, pathItemPathParams, pathItemQueryParams, pathItemHeaderParams, pathItemCookieParams); - } - + CodegenParametersInfo parametersInfo = getParametersInfo(pathItemParameters, operation.getParameters(), jsonPath); // create optional, required parameters - for (CodegenParameter cp : allParams) { - if (cp.refInfo != null) { - if (Boolean.TRUE.equals(cp.getDeepestRef().required)) { //required parameters - hasRequiredParamOrBody = true; - } else { // optional parameters - hasOptionalParamOrBody = true; - } - } else { - if (Boolean.TRUE.equals(cp.required)) { //required parameters - hasRequiredParamOrBody = true; - } else { // optional parameters - hasOptionalParamOrBody = true; - } + if (parametersInfo != null) { + if (parametersInfo.hasRequired) { + hasRequiredParamOrBody = true; + } + if (parametersInfo.hasOptional) { + hasOptionalParamOrBody = true; } } CodegenList security = fromSecurity(operation.getSecurity(), jsonPath + "/security"); ExternalDocumentation externalDocs = operation.getExternalDocs(); CodegenKey jsonPathPiece = getKey(pathPieces[pathPieces.length-1], "verb"); - CodegenSchema pathParametersSchema = getXParametersSchema(pathParametersProperties, pathParametersRequired, jsonPath + "/" + "PathParameters", jsonPath + "/" + "PathParameters"); - CodegenSchema queryParametersSchema = getXParametersSchema(queryParametersProperties, queryParametersRequired, jsonPath + "/" + "QueryParameters", jsonPath + "/" + "QueryParameters"); - CodegenSchema headerParametersSchema = getXParametersSchema(headerParametersProperties, headerParametersRequired, jsonPath + "/" + "HeaderParameters", jsonPath + "/" + "HeaderParameters"); - CodegenSchema cookieParametersSchema = getXParametersSchema(cookieParametersProperties, cookieParametersRequired, jsonPath + "/" + "CookieParameters", jsonPath + "/" + "CookieParameters"); return new CodegenOperation( deprecated, @@ -2948,11 +2953,7 @@ public CodegenOperation fromOperation(Operation operation, String jsonPath, Link produces, codegenList, requestBody, - operationParameters, - pathParametersSchema, - queryParametersSchema, - headerParametersSchema, - cookieParametersSchema, + parametersInfo, hasRequiredParamOrBody, hasOptionalParamOrBody, security, @@ -2967,8 +2968,8 @@ public CodegenOperation fromOperation(Operation operation, String jsonPath, Link vendorExtensions, operationId, jsonPathPiece, - requestBodySchema, - pathItemParams); + requestBodySchema + ); } private CodegenSchema getXParametersSchema(HashMap xParametersProperties, List xParametersRequired, String sourceJsonPath, String currentJsonPath) { @@ -3975,6 +3976,8 @@ private void updatePathsFilepath(String[] pathPieces) { } } else if (pathPieces[4].equals("parameters")) { if (pathPieces.length == 5) { + // #/paths/somePath/get/parameters -> length 5 + pathPieces[4] = toParameterFilename(pathPieces[4], jsonPath); return; } // #/paths/somePath/get/parameters/0 -> length 6 diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java index 662f473dc2d..cc7489cc3f3 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java @@ -829,26 +829,26 @@ public void processOpts() { "ContentHeaderTest.java")); // parameter - supportingFiles.add(new SupportingFile( - "src/main/java/packagename/parameter/ContentNonQueryParameter.hbs", - packagePath() + File.separatorChar + "parameter", - "ContentNonQueryParameter.java")); supportingFiles.add(new SupportingFile( "src/main/java/packagename/parameter/ContentParameter.hbs", packagePath() + File.separatorChar + "parameter", "ContentParameter.java")); supportingFiles.add(new SupportingFile( - "src/main/java/packagename/parameter/ContentQueryParameter.hbs", + "src/main/java/packagename/parameter/CookieSerializer.hbs", packagePath() + File.separatorChar + "parameter", - "ContentQueryParameter.java")); + "CookieSerializer.java")); supportingFiles.add(new SupportingFile( - "src/main/java/packagename/parameter/ParameterBase.hbs", + "src/main/java/packagename/parameter/HeadersSerializer.hbs", packagePath() + File.separatorChar + "parameter", - "ParameterBase.java")); + "HeadersSerializer.java")); supportingFiles.add(new SupportingFile( - "src/main/java/packagename/parameter/NonQueryParameter.hbs", + "src/main/java/packagename/parameter/Parameter.hbs", + packagePath() + File.separatorChar + "parameter", + "Parameter.java")); + supportingFiles.add(new SupportingFile( + "src/main/java/packagename/parameter/ParameterBase.hbs", packagePath() + File.separatorChar + "parameter", - "NonQueryParameter.java")); + "ParameterBase.java")); supportingFiles.add(new SupportingFile( "src/main/java/packagename/parameter/ParameterInType.hbs", packagePath() + File.separatorChar + "parameter", @@ -858,21 +858,33 @@ public void processOpts() { packagePath() + File.separatorChar + "parameter", "ParameterStyle.java")); supportingFiles.add(new SupportingFile( - "src/main/java/packagename/parameter/QueryParameter.hbs", + "src/main/java/packagename/parameter/PathSerializer.hbs", packagePath() + File.separatorChar + "parameter", - "QueryParameter.java")); + "PathSerializer.java")); supportingFiles.add(new SupportingFile( - "src/main/java/packagename/parameter/SchemaNonQueryParameter.hbs", + "src/main/java/packagename/parameter/QuerySerializer.hbs", packagePath() + File.separatorChar + "parameter", - "SchemaNonQueryParameter.java")); + "QuerySerializer.java")); supportingFiles.add(new SupportingFile( "src/main/java/packagename/parameter/SchemaParameter.hbs", packagePath() + File.separatorChar + "parameter", "SchemaParameter.java")); supportingFiles.add(new SupportingFile( - "src/main/java/packagename/parameter/SchemaQueryParameter.hbs", - packagePath() + File.separatorChar + "parameter", - "SchemaQueryParameter.java")); + "src/test/java/packagename/parameter/CookieSerializerTest.hbs", + testPackagePath() + File.separatorChar + "parameter", + "CookieSerializerTest.java")); + supportingFiles.add(new SupportingFile( + "src/test/java/packagename/parameter/HeadersSerializerTest.hbs", + testPackagePath() + File.separatorChar + "parameter", + "HeadersSerializerTest.java")); + supportingFiles.add(new SupportingFile( + "src/test/java/packagename/parameter/PathSerializerTest.hbs", + testPackagePath() + File.separatorChar + "parameter", + "PathSerializerTest.java")); + supportingFiles.add(new SupportingFile( + "src/test/java/packagename/parameter/QuerySerializerTest.hbs", + testPackagePath() + File.separatorChar + "parameter", + "QuerySerializerTest.java")); supportingFiles.add(new SupportingFile( "src/test/java/packagename/parameter/SchemaNonQueryParameterTest.hbs", testPackagePath() + File.separatorChar + "parameter", @@ -942,6 +954,12 @@ public void processOpts() { put("src/main/java/packagename/components/parameter/Parameter.hbs", ".java"); }} ); + jsonPathTemplateFiles.put( + CodegenConstants.JSON_PATH_LOCATION_TYPE.PARAMETERS, + new HashMap<>() {{ + put("src/main/java/packagename/paths/path/verb/Parameters.hbs", ".java"); + }} + ); jsonPathDocTemplateFiles.put( CodegenConstants.JSON_PATH_LOCATION_TYPE.PARAMETER, new HashMap<>() {{ @@ -958,7 +976,7 @@ public void processOpts() { jsonPathTemplateFiles.put( CodegenConstants.JSON_PATH_LOCATION_TYPE.RESPONSES, new HashMap<>() {{ - put("src/main/java/packagename/components/responses/Responses.hbs", ".java"); + put("src/main/java/packagename/paths/path/verb/Responses.hbs", ".java"); }} ); jsonPathDocTemplateFiles.put( @@ -1200,7 +1218,7 @@ private String getSchemaPascalCaseName(String name, @NotNull String sourceJsonPa if (sourceJsonPath.startsWith("#/paths") && sourceJsonPath.contains("/parameters/")) { if (pathPieces[3].equals("parameters")) { // #/paths/path/parameters/0/Schema -> PathParamSchema0 - usedKey = "PathParam" + camelize(usedKey) + pathPieces[4]; // PathParamSchema0 + usedKey = "RouteParam" + camelize(usedKey) + pathPieces[4]; // RouteParamSchema0 } else { // #/paths/path/get/parameters/0/Schema -> Schema0 usedKey = camelize(usedKey) + pathPieces[5]; // Schema0 @@ -1339,12 +1357,22 @@ public String toParameterFilename(String name, String jsonPath) { } return toModuleFilename(name, jsonPath); } - if (pathPieces[pathPieces.length-2].equals("parameters") && isInteger(name) && (pathPieces.length == 5 || pathPieces.length == 6)) { + if (operationVerbs.contains(pathPieces[3])) { + if (pathPieces.length == 5) { + // #/paths/somePath/verb/parameters + return "Parameters"; + } + if (pathPieces[pathPieces.length-2].equals("parameters") && isInteger(name) && pathPieces.length == 6) { + // #/paths/somePath/verb/parameters/0 + return "Parameter" + name; + } + return "parameter" + name; + } + if (pathPieces[pathPieces.length-2].equals("parameters") && isInteger(name) && pathPieces.length == 5) { // #/paths/somePath/parameters/0 - // #/paths/somePath/verb/parameters/0 - return "Parameter" + name; + return "RouteParameter" + name; } - return "parameter" + name; + return "routeparameter" + name; } private String toSchemaRefClass(String ref, String sourceJsonPath) { @@ -3276,8 +3304,14 @@ public CodegenSchema fromSchema(Schema p, String sourceJsonPath, String currentJ public boolean shouldGenerateFile(String jsonPath) { if (jsonPath.equals("#/components/responses")) { return false; + } else if (jsonPath.equals("#/components/headers")) { + return false; + } else if (jsonPath.equals("#/components/parameters")) { + return false; } - if (jsonPath.equals("#/components/headers")) { + String[] pathPieces = jsonPath.split("/"); + if (pathPieces.length == 4 && jsonPath.endsWith("/parameters")) { + // #/paths/path/parameters return false; } return true; diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/PythonClientGenerator.java b/src/main/java/org/openapijsonschematools/codegen/generators/PythonClientGenerator.java index d9fc8dd5482..d52b3dacc04 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/PythonClientGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/PythonClientGenerator.java @@ -1864,6 +1864,11 @@ protected String getRefClassWithModule(String ref, String sourceJsonPath) { @Override public String toParameterFilename(String name, String jsonPath) { + String[] pathPieces = jsonPath.split("/"); + if (operationVerbs.contains(pathPieces[3]) && pathPieces.length == 5) { + // #/paths/somePath/verb/parameters + return "parameters"; + } // adds prefix parameter_ onto the result so modules do not start with _ try { Integer.parseInt(name); diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenOperation.java b/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenOperation.java index 8475d36f2d3..531543abfe0 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenOperation.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenOperation.java @@ -33,13 +33,8 @@ public class CodegenOperation { public final CodegenRequestBody requestBody; // properties where key is contentType, value is a ref schema, encapsulates imports public final CodegenSchema requestBodySchema; - public final ParameterCollection parameters; - public final CodegenSchema pathParametersSchema; - public final CodegenSchema queryParametersSchema; - public final CodegenSchema headerParametersSchema; - public final CodegenSchema cookieParametersSchema; - public final ParameterCollection pathItemParameters; + public final CodegenParametersInfo parametersInfo; public final boolean hasRequiredParamOrBody; public final boolean hasOptionalParamOrBody; public final CodegenList security; @@ -67,11 +62,7 @@ public CodegenOperation( LinkedHashSet produces, CodegenList servers, CodegenRequestBody requestBody, - ParameterCollection parameters, - CodegenSchema pathParametersSchema, - CodegenSchema queryParametersSchema, - CodegenSchema headerParametersSchema, - CodegenSchema cookieParametersSchema, + CodegenParametersInfo parametersInfo, boolean hasRequiredParamOrBody, boolean hasOptionalParamOrBody, CodegenList security, @@ -86,8 +77,7 @@ public CodegenOperation( Map vendorExtensions, CodegenKey operationId, CodegenKey jsonPathPiece, - CodegenSchema requestBodySchema, - ParameterCollection pathItemParameters + CodegenSchema requestBodySchema ) { this.deprecated = deprecated; this.nonErrorStatusCodes = nonErrorStatusCodes; @@ -99,11 +89,7 @@ public CodegenOperation( this.produces = produces; this.servers = servers; this.requestBody = requestBody; - this.parameters = parameters; - this.pathParametersSchema = pathParametersSchema; - this.queryParametersSchema = queryParametersSchema; - this.headerParametersSchema = headerParametersSchema; - this.cookieParametersSchema = cookieParametersSchema; + this.parametersInfo = parametersInfo; this.hasRequiredParamOrBody = hasRequiredParamOrBody; this.hasOptionalParamOrBody = hasOptionalParamOrBody; this.security = security; @@ -119,7 +105,6 @@ public CodegenOperation( this.operationId = operationId; this.jsonPathPiece = jsonPathPiece; this.requestBodySchema = requestBodySchema; - this.pathItemParameters = pathItemParameters; TreeMap nonErrorResponsesMap = new TreeMap<>(); if (statusCodeResponses != null) { for (Map.Entry entry: statusCodeResponses.entrySet()) { @@ -155,6 +140,54 @@ public CodegenOperation( } } + @Deprecated + public ParameterCollection parameters() { + if (parametersInfo == null) { + return null; + } + return parametersInfo.parameters; + } + + @Deprecated + public ParameterCollection pathItemParameters() { + if (parametersInfo == null) { + return null; + } + return parametersInfo.pathItemParameters; + } + + @Deprecated + public CodegenSchema pathParametersSchema() { + if (parametersInfo == null) { + return null; + } + return parametersInfo.pathParametersSchema; + } + + @Deprecated + public CodegenSchema queryParametersSchema() { + if (parametersInfo == null) { + return null; + } + return parametersInfo.queryParametersSchema; + } + + @Deprecated + public CodegenSchema headerParametersSchema() { + if (parametersInfo == null) { + return null; + } + return parametersInfo.headerParametersSchema; + } + + @Deprecated + public CodegenSchema cookieParametersSchema() { + if (parametersInfo == null) { + return null; + } + return parametersInfo.cookieParametersSchema; + } + // used by operation templates @Deprecated public Map getNonErrorResponses() { @@ -221,7 +254,7 @@ public String toString() { sb.append(", produces=").append(produces); sb.append(", servers=").append(servers); sb.append(", requestBody=").append(requestBody); - sb.append(", parameters=").append(parameters); + sb.append(", parametersInfo=").append(parametersInfo); sb.append(", hasRequiredParamOrBody=").append(hasRequiredParamOrBody); sb.append(", hasOptionalParamOrBody=").append(hasOptionalParamOrBody); sb.append(", security=").append(security); @@ -251,7 +284,7 @@ public boolean equals(Object o) { Objects.equals(produces, that.produces) && Objects.equals(servers, that.servers) && Objects.equals(requestBody, that.requestBody) && - Objects.equals(parameters, that.parameters) && + Objects.equals(parametersInfo, that.parametersInfo) && Objects.equals(hasRequiredParamOrBody, that.hasRequiredParamOrBody) && Objects.equals(hasOptionalParamOrBody, that.hasOptionalParamOrBody) && Objects.equals(security, that.security) && @@ -271,7 +304,7 @@ public int hashCode() { return Objects.hash(deprecated, operationId, summary, description, defaultResponse, - produces, servers, requestBody, parameters, + produces, servers, requestBody, parametersInfo, hasRequiredParamOrBody, hasOptionalParamOrBody, security, tags, responses, callbacks, externalDocs, vendorExtensions, statusCodeResponses, wildcardCodeResponses, diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenParametersInfo.java b/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenParametersInfo.java new file mode 100644 index 00000000000..743b9cc2593 --- /dev/null +++ b/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenParametersInfo.java @@ -0,0 +1,122 @@ +package org.openapijsonschematools.codegen.generators.openapimodels; + +import java.util.ArrayList; +import java.util.List; + +public class CodegenParametersInfo { + public final CodegenKey jsonPathPiece; + public final String subpackage; + public final ParameterCollection parameters; + public final ParameterCollection pathItemParameters; + public final CodegenSchema pathParametersSchema; + public final CodegenSchema queryParametersSchema; + public final CodegenSchema headerParametersSchema; + public final CodegenSchema cookieParametersSchema; + public final boolean hasRequired; + public final boolean hasOptional; + + public List pathParameters() { + List params = new ArrayList<>(); + if (parameters != null && parameters.pathParameters != null) { + for (CodegenParameter p: parameters.pathParameters) { + params.add(p); + } + } + if (pathItemParameters != null && pathItemParameters.pathParameters != null) { + for (CodegenParameter p: pathItemParameters.pathParameters) { + params.add(p); + } + } + if (params.isEmpty()) { + return null; + } + return params; + } + + public List queryParameters() { + List params = new ArrayList<>(); + if (parameters != null && parameters.queryParameters != null) { + for (CodegenParameter p: parameters.queryParameters) { + params.add(p); + } + } + if (pathItemParameters != null && pathItemParameters.queryParameters != null) { + for (CodegenParameter p: pathItemParameters.queryParameters) { + params.add(p); + } + } + if (params.isEmpty()) { + return null; + } + return params; + } + + public List headerParameters() { + List params = new ArrayList<>(); + if (parameters != null && parameters.headerParameters != null) { + for (CodegenParameter p: parameters.headerParameters) { + params.add(p); + } + } + if (pathItemParameters != null && pathItemParameters.headerParameters != null) { + for (CodegenParameter p: pathItemParameters.headerParameters) { + params.add(p); + } + } + if (params.isEmpty()) { + return null; + } + return params; + } + + public List cookieParameters() { + List params = new ArrayList<>(); + if (parameters != null && parameters.cookieParameters != null) { + for (CodegenParameter p: parameters.cookieParameters) { + params.add(p); + } + } + if (pathItemParameters != null && pathItemParameters.cookieParameters != null) { + for (CodegenParameter p: pathItemParameters.cookieParameters) { + params.add(p); + } + } + if (params.isEmpty()) { + return null; + } + return params; + } + + public CodegenParametersInfo(CodegenKey jsonPathPiece, String subpackage, ParameterCollection parameters, CodegenSchema pathParametersSchema, CodegenSchema queryParametersSchema, CodegenSchema headerParametersSchema, CodegenSchema cookieParametersSchema, ParameterCollection pathItemParameters) { + this.jsonPathPiece = jsonPathPiece; + this.subpackage = subpackage; + this.parameters = parameters; + this.pathParametersSchema = pathParametersSchema; + this.queryParametersSchema = queryParametersSchema; + this.headerParametersSchema = headerParametersSchema; + this.cookieParametersSchema = cookieParametersSchema; + this.pathItemParameters = pathItemParameters; + boolean hasRequired = false; + boolean hasOptional = false; + if (parameters != null) { + for (CodegenParameter param: parameters.allParameters) { + if (Boolean.TRUE.equals(param.getSelfOrDeepestRef().required)) { + hasRequired = true; + } else { + hasOptional = true; + } + } + } + if (!hasRequired && pathItemParameters != null) { + for (CodegenParameter param : pathItemParameters.allParameters) { + if (Boolean.TRUE.equals(param.getSelfOrDeepestRef().required)) { + hasRequired = true; + } else { + hasOptional = true; + } + } + } + this.hasRequired = hasRequired; + this.hasOptional = hasOptional; + } +} diff --git a/src/main/resources/java/src/main/java/packagename/components/parameter/Parameter.hbs b/src/main/resources/java/src/main/java/packagename/components/parameter/Parameter.hbs index 36ebf766afb..690e0bb9160 100644 --- a/src/main/resources/java/src/main/java/packagename/components/parameter/Parameter.hbs +++ b/src/main/resources/java/src/main/java/packagename/components/parameter/Parameter.hbs @@ -23,21 +23,12 @@ import {{packageName}}.parameter.ParameterStyle; {{/neq}} import {{packageName}}.parameter.ParameterInType; {{#if schema}} - {{#eq in "query"}} -import {{packageName}}.parameter.SchemaQueryParameter; - {{else}} -import {{packageName}}.parameter.SchemaNonQueryParameter; - {{/eq}} +import {{packageName}}.parameter.SchemaParameter; {{#with schema}} import {{{packageName}}}.{{subpackage}}.{{containerJsonPathPiece.pascalCase}}; {{/with}} {{/if}} {{#if content}} - {{#eq in "query"}} -import {{packageName}}.parameter.ContentQueryParameter; - {{else}} -import {{packageName}}.parameter.ContentNonQueryParameter; - {{/eq}} import {{packageName}}.parameter.ContentParameter; import {{packageName}}.mediatype.MediaType; {{#each content}} @@ -64,7 +55,7 @@ public class {{jsonPathPiece.pascalCase}} { } {{/each}} - public static class {{jsonPathPiece.pascalCase}}1 extends {{#if schema}}Schema{{else}}Content{{/if}}{{#eq in "query"}}QueryParameter{{else}}NonQueryParameter{{/eq}} { + public static class {{jsonPathPiece.pascalCase}}1 extends {{#if schema}}Schema{{else}}Content{{/if}}Parameter { public {{jsonPathPiece.pascalCase}}1() { super( "{{{name}}}", diff --git a/src/main/resources/java/src/main/java/packagename/components/parameter/ParameterDoc.hbs b/src/main/resources/java/src/main/java/packagename/components/parameter/ParameterDoc.hbs index 0325822a4f1..96dd8f01983 100644 --- a/src/main/resources/java/src/main/java/packagename/components/parameter/ParameterDoc.hbs +++ b/src/main/resources/java/src/main/java/packagename/components/parameter/ParameterDoc.hbs @@ -62,7 +62,7 @@ class storing schema info for a specific contentType {{/each}} {{> src/main/java/packagename/components/_helper_header_from_identifier_pieces headerSize=(join headerSize "#" "") identifierPieces=(append identifierPieces (join jsonPathPiece.pascalCase "1" "")) }} -public static class {{jsonPathPiece.pascalCase}}1 extends {{#if schema}}Schema{{else}}Content{{/if}}{{#eq in "query"}}QueryParameter{{else}}NonQueryParameter{{/eq}}
+public static class {{jsonPathPiece.pascalCase}}1 extends {{#if schema}}Schema{{else}}Content{{/if}}Parameter
a class that deserializes a parameter value diff --git a/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs index 39a8f075179..2e1175d980c 100644 --- a/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs @@ -65,7 +65,7 @@ public class {{jsonPathPiece.pascalCase}} extends ApiKeyQuerySecurityScheme { {{/if}} {{#eq in "cookie"}} public {{jsonPathPiece.pascalCase}}(String apiKey) { - super(apiKey); + super(apiKey, "{{{name}}}"); } {{else}} {{#eq in "header"}} diff --git a/src/main/resources/java/src/main/java/packagename/header/StyleSerializer.hbs b/src/main/resources/java/src/main/java/packagename/header/StyleSerializer.hbs index dab4f9ff968..fac1bc0b57c 100644 --- a/src/main/resources/java/src/main/java/packagename/header/StyleSerializer.hbs +++ b/src/main/resources/java/src/main/java/packagename/header/StyleSerializer.hbs @@ -23,19 +23,16 @@ public class StyleSerializer extends Rfc6570Serializer { @Nullable Object inData, String name, boolean explode, - boolean percentEncode, - @Nullable PrefixSeparatorIterator iterator, - boolean isCookie + boolean percentEncode ) { // todo check that the prefix and suffix matches this one - String prefix = isCookie ? "" : "?"; - PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator(prefix, "&") : iterator; + PrefixSeparatorIterator iterator = new PrefixSeparatorIterator("", "&"); return rfc6570Expansion( name, inData, explode, percentEncode, - usedIterator + iterator ); } @@ -72,10 +69,9 @@ public class StyleSerializer extends Rfc6570Serializer { public static String serializeSpaceDelimited( @Nullable Object inData, String name, - boolean explode, - @Nullable PrefixSeparatorIterator iterator + boolean explode ) { - PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator("", "%20") : iterator; + PrefixSeparatorIterator usedIterator = new PrefixSeparatorIterator("", "%20"); return rfc6570Expansion( name, inData, @@ -88,10 +84,9 @@ public class StyleSerializer extends Rfc6570Serializer { public static String serializePipeDelimited( @Nullable Object inData, String name, - boolean explode, - @Nullable PrefixSeparatorIterator iterator + boolean explode ) { - PrefixSeparatorIterator usedIterator = iterator == null ? new PrefixSeparatorIterator("", "|") : iterator; + PrefixSeparatorIterator usedIterator = new PrefixSeparatorIterator("", "|"); return rfc6570Expansion( name, inData, diff --git a/src/main/resources/java/src/main/java/packagename/parameter/ContentNonQueryParameter.hbs b/src/main/resources/java/src/main/java/packagename/parameter/ContentNonQueryParameter.hbs deleted file mode 100644 index 4a826a93f23..00000000000 --- a/src/main/resources/java/src/main/java/packagename/parameter/ContentNonQueryParameter.hbs +++ /dev/null @@ -1,19 +0,0 @@ -package {{{packageName}}}.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import {{{packageName}}}.configurations.SchemaConfiguration; -import {{{packageName}}}.mediatype.MediaType; - -import java.util.Map; - -public class ContentNonQueryParameter extends ContentParameter implements NonQueryParameter { - - public ContentNonQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, Map> content) { - super(name, inType, required, style, explode, allowReserved, content); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) { - return super.serialize(inData, validate, configuration); - } -} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/parameter/ContentParameter.hbs b/src/main/resources/java/src/main/java/packagename/parameter/ContentParameter.hbs index 27176db6fae..7c59ecc53b0 100644 --- a/src/main/resources/java/src/main/java/packagename/parameter/ContentParameter.hbs +++ b/src/main/resources/java/src/main/java/packagename/parameter/ContentParameter.hbs @@ -1,14 +1,14 @@ package {{{packageName}}}.parameter; import org.checkerframework.checker.nullness.qual.Nullable; -import {{{packageName}}}.configurations.SchemaConfiguration; import {{{packageName}}}.contenttype.ContentTypeDetector; import {{{packageName}}}.contenttype.ContentTypeSerializer; import {{{packageName}}}.mediatype.MediaType; import java.util.Map; +import java.util.AbstractMap; -public class ContentParameter extends ParameterBase { +public class ContentParameter extends ParameterBase implements Parameter { public final Map> content; public ContentParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, Map> content) { @@ -16,13 +16,13 @@ public class ContentParameter extends ParameterBase { this.content = content; } - protected Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) { + @Override + public AbstractMap.SimpleEntry serialize(@Nullable Object inData) { for (Map.Entry> entry: content.entrySet()) { - var castInData = validate ? entry.getValue().schema().validate(inData, configuration) : inData ; String contentType = entry.getKey(); if (ContentTypeDetector.contentTypeIsJson(contentType)) { - var value = ContentTypeSerializer.toJson(castInData); - return Map.of(name, value); + var value = ContentTypeSerializer.toJson(inData); + return new AbstractMap.SimpleEntry<>(name, value); } else { throw new RuntimeException("Serialization of "+contentType+" has not yet been implemented"); } diff --git a/src/main/resources/java/src/main/java/packagename/parameter/ContentQueryParameter.hbs b/src/main/resources/java/src/main/java/packagename/parameter/ContentQueryParameter.hbs deleted file mode 100644 index 0f86f1de06a..00000000000 --- a/src/main/resources/java/src/main/java/packagename/parameter/ContentQueryParameter.hbs +++ /dev/null @@ -1,20 +0,0 @@ -package {{{packageName}}}.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import {{{packageName}}}.configurations.SchemaConfiguration; -import {{{packageName}}}.header.PrefixSeparatorIterator; -import {{{packageName}}}.mediatype.MediaType; - -import java.util.Map; - -public class ContentQueryParameter extends ContentParameter implements QueryParameter { - - public ContentQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, Map> content) { - super(name, inType, required, style, explode, allowReserved, content); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, PrefixSeparatorIterator iterator) { - return super.serialize(inData, validate, configuration); - } -} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/parameter/CookieSerializer.hbs b/src/main/resources/java/src/main/java/packagename/parameter/CookieSerializer.hbs new file mode 100644 index 00000000000..74e8e2d6465 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/parameter/CookieSerializer.hbs @@ -0,0 +1,35 @@ +package {{{packageName}}}.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.Map; +import java.util.TreeMap; + +public abstract class CookieSerializer { + private final Map parameters; + + protected CookieSerializer(Map parameters) { + this.parameters = parameters; + } + + public String serialize(Map inData) { + String result = ""; + Map sortedData = new TreeMap<>(inData); + for (Map.Entry entry: sortedData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + if (result.isEmpty()) { + result = serialized.getValue(); + } else { + result = result + "; " + serialized.getValue(); + } + } + return result; + } +} diff --git a/src/main/resources/java/src/main/java/packagename/parameter/HeadersSerializer.hbs b/src/main/resources/java/src/main/java/packagename/parameter/HeadersSerializer.hbs new file mode 100644 index 00000000000..78b184bef5e --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/parameter/HeadersSerializer.hbs @@ -0,0 +1,31 @@ +package {{{packageName}}}.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.List; + +public abstract class HeadersSerializer { + private final Map parameters; + + protected HeadersSerializer(Map parameters) { + this.parameters = parameters; + } + + public Map> serialize(Map inData) { + Map> results = new LinkedHashMap<>(); + for (Map.Entry entry: inData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + results.put(serialized.getKey(), List.of(serialized.getValue())); + } + return results; + } +} diff --git a/src/main/resources/java/src/main/java/packagename/parameter/NonQueryParameter.hbs b/src/main/resources/java/src/main/java/packagename/parameter/NonQueryParameter.hbs deleted file mode 100644 index 666ee87ce77..00000000000 --- a/src/main/resources/java/src/main/java/packagename/parameter/NonQueryParameter.hbs +++ /dev/null @@ -1,10 +0,0 @@ -package {{{packageName}}}.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import {{{packageName}}}.configurations.SchemaConfiguration; - -import java.util.Map; - -public interface NonQueryParameter { - Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration); -} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/parameter/Parameter.hbs b/src/main/resources/java/src/main/java/packagename/parameter/Parameter.hbs new file mode 100644 index 00000000000..d188c0babf0 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/parameter/Parameter.hbs @@ -0,0 +1,9 @@ +package {{{packageName}}}.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; + +public interface Parameter { + AbstractMap.SimpleEntry serialize(@Nullable Object inData); +} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/parameter/ParameterBase.hbs b/src/main/resources/java/src/main/java/packagename/parameter/ParameterBase.hbs index 95e55de49af..65f1feafa18 100644 --- a/src/main/resources/java/src/main/java/packagename/parameter/ParameterBase.hbs +++ b/src/main/resources/java/src/main/java/packagename/parameter/ParameterBase.hbs @@ -2,7 +2,6 @@ package {{{packageName}}}.parameter; import org.checkerframework.checker.nullness.qual.Nullable; import {{{packageName}}}.header.HeaderBase; -import {{{packageName}}}.header.PrefixSeparatorIterator; public class ParameterBase extends HeaderBase { public final String name; @@ -13,27 +12,4 @@ public class ParameterBase extends HeaderBase { this.name = name; this.inType = inType; } - - protected ParameterStyle getStyle() { - if (style != null) { - return style; - } - if (inType == ParameterInType.QUERY || inType == ParameterInType.COOKIE) { - return ParameterStyle.FORM; - } - // ParameterInType.HEADER || ParameterInType.PATH - return ParameterStyle.SIMPLE; - } - - public PrefixSeparatorIterator getPrefixSeparatorIterator() { - ParameterStyle usedStyle = getStyle(); - if (usedStyle == ParameterStyle.FORM) { - return new PrefixSeparatorIterator("?", "&"); - } else if (usedStyle == ParameterStyle.SPACE_DELIMITED) { - return new PrefixSeparatorIterator("", "%20"); - } else if (usedStyle == ParameterStyle.PIPE_DELIMITED) { - return new PrefixSeparatorIterator("", "|"); - } - throw new RuntimeException("No iterator possible for style="+usedStyle); - } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/parameter/PathSerializer.hbs b/src/main/resources/java/src/main/java/packagename/parameter/PathSerializer.hbs new file mode 100644 index 00000000000..690665a90bf --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/parameter/PathSerializer.hbs @@ -0,0 +1,29 @@ +package {{{packageName}}}.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.Map; + +public abstract class PathSerializer { + private final Map parameters; + + protected PathSerializer(Map parameters) { + this.parameters = parameters; + } + + public String serialize(Map inData, String pathWithPlaceholders) { + String result = pathWithPlaceholders; + for (Map.Entry entry: inData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + result = result.replace("{" + mapKey + "}", serialized.getValue()); + } + return result; + } +} diff --git a/src/main/resources/java/src/main/java/packagename/parameter/QueryParameter.hbs b/src/main/resources/java/src/main/java/packagename/parameter/QueryParameter.hbs deleted file mode 100644 index 18489466d31..00000000000 --- a/src/main/resources/java/src/main/java/packagename/parameter/QueryParameter.hbs +++ /dev/null @@ -1,12 +0,0 @@ -package {{{packageName}}}.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import {{{packageName}}}.configurations.SchemaConfiguration; -import {{{packageName}}}.header.PrefixSeparatorIterator; - -import java.util.Map; - -public interface QueryParameter { - Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, PrefixSeparatorIterator iterator); - PrefixSeparatorIterator getPrefixSeparatorIterator(); -} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/parameter/QuerySerializer.hbs b/src/main/resources/java/src/main/java/packagename/parameter/QuerySerializer.hbs new file mode 100644 index 00000000000..870a79804b6 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/parameter/QuerySerializer.hbs @@ -0,0 +1,47 @@ +package {{{packageName}}}.parameter; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.AbstractMap; +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; + +public abstract class QuerySerializer { + private final Map parameters; + + protected QuerySerializer(Map parameters) { + this.parameters = parameters; + } + + public Map getQueryMap(Map inData) { + Map results = new HashMap<>(); + for (Map.Entry entry: inData.entrySet()) { + String mapKey = entry.getKey(); + @Nullable Parameter parameter = parameters.get(mapKey); + if (parameter == null) { + throw new RuntimeException("Invalid state, a parameter must exist for every key"); + } + @Nullable Object value = entry.getValue(); + AbstractMap.SimpleEntry serialized = parameter.serialize(value); + results.put(serialized.getKey(), serialized.getValue()); + } + return new TreeMap<>(results); + } + + public String serialize(Map queryMap) { + if (queryMap.isEmpty()) { + return ""; + } + String result = "?"; + for (String serializedValue: queryMap.values()) { + if (result.length() == 1) { + result = result + serializedValue; + } else { + result = result + "&" + serializedValue; + } + } + // TODO what if the style is not FORM? + return result; + } +} diff --git a/src/main/resources/java/src/main/java/packagename/parameter/SchemaNonQueryParameter.hbs b/src/main/resources/java/src/main/java/packagename/parameter/SchemaNonQueryParameter.hbs deleted file mode 100644 index b124a2d69ea..00000000000 --- a/src/main/resources/java/src/main/java/packagename/parameter/SchemaNonQueryParameter.hbs +++ /dev/null @@ -1,20 +0,0 @@ -package {{{packageName}}}.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import {{{packageName}}}.configurations.SchemaConfiguration; -import {{{packageName}}}.header.PrefixSeparatorIterator; -import {{{packageName}}}.schemas.validation.JsonSchema; - -import java.util.Map; - -public class SchemaNonQueryParameter extends SchemaParameter implements NonQueryParameter { - - public SchemaNonQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, JsonSchema schema) { - super(name, inType, required, style, explode, allowReserved, schema); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) { - return super.serialize(inData, validate, configuration, null); - } -} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/parameter/SchemaParameter.hbs b/src/main/resources/java/src/main/java/packagename/parameter/SchemaParameter.hbs index 8df79fdba08..210d5a7909b 100644 --- a/src/main/resources/java/src/main/java/packagename/parameter/SchemaParameter.hbs +++ b/src/main/resources/java/src/main/java/packagename/parameter/SchemaParameter.hbs @@ -1,17 +1,12 @@ package {{{packageName}}}.parameter; import org.checkerframework.checker.nullness.qual.Nullable; -import {{{packageName}}}.configurations.SchemaConfiguration; -import {{{packageName}}}.header.PrefixSeparatorIterator; import {{{packageName}}}.header.StyleSerializer; import {{{packageName}}}.schemas.validation.JsonSchema; -import org.openapijsonschematools.client.header.HeaderBase; -import org.openapijsonschematools.client.header.PrefixSeparatorIterator; -import org.openapijsonschematools.client.header.StyleSerializer; -import org.openapijsonschematools.client.schemas.validation.JsonSchema; -import java.util.Map; -public class SchemaParameter extends ParameterBase { +import java.util.AbstractMap; + +public class SchemaParameter extends ParameterBase implements Parameter { public final JsonSchema schema; public SchemaParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, JsonSchema schema) { @@ -19,36 +14,46 @@ public class SchemaParameter extends ParameterBase { this.schema = schema; } - protected Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, @Nullable PrefixSeparatorIterator iterator) { - var castInData = validate ? schema.validate(inData, configuration) : inData; + private ParameterStyle getStyle() { + if (style != null) { + return style; + } + if (inType == ParameterInType.QUERY || inType == ParameterInType.COOKIE) { + return ParameterStyle.FORM; + } + // ParameterInType.HEADER || ParameterInType.PATH + return ParameterStyle.SIMPLE; + } + + @Override + public AbstractMap.SimpleEntry serialize(@Nullable Object inData) { ParameterStyle usedStyle = getStyle(); boolean percentEncode = inType == ParameterInType.QUERY || inType == ParameterInType.PATH; String value; boolean usedExplode = explode == null ? usedStyle == ParameterStyle.FORM : explode; if (usedStyle == ParameterStyle.SIMPLE) { // header OR path - value = StyleSerializer.serializeSimple(castInData, name, usedExplode, percentEncode); + value = StyleSerializer.serializeSimple(inData, name, usedExplode, percentEncode); } else if (usedStyle == ParameterStyle.FORM) { // query OR cookie - boolean isCookie = inType == ParameterInType.COOKIE; - value = StyleSerializer.serializeForm(castInData, name, usedExplode, percentEncode, iterator, isCookie); + value = StyleSerializer.serializeForm(inData, name, usedExplode, percentEncode); } else if (usedStyle == ParameterStyle.LABEL) { // path - value = StyleSerializer.serializeLabel(castInData, name, usedExplode); + value = StyleSerializer.serializeLabel(inData, name, usedExplode); } else if (usedStyle == ParameterStyle.MATRIX) { // path - value = StyleSerializer.serializeMatrix(castInData, name, usedExplode); + value = StyleSerializer.serializeMatrix(inData, name, usedExplode); } else if (usedStyle == ParameterStyle.SPACE_DELIMITED) { // query - value = StyleSerializer.serializeSpaceDelimited(castInData, name, usedExplode, iterator); + value = StyleSerializer.serializeSpaceDelimited(inData, name, usedExplode); } else if (usedStyle == ParameterStyle.PIPE_DELIMITED) { // query - value = StyleSerializer.serializePipeDelimited(castInData, name, usedExplode, iterator); + value = StyleSerializer.serializePipeDelimited(inData, name, usedExplode); } else { // usedStyle == ParameterStyle.DEEP_OBJECT // query throw new RuntimeException("Style deep object serialization has not yet been implemented."); } - return Map.of(name, value); + return new AbstractMap.SimpleEntry<>(name, value); } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/parameter/SchemaQueryParameter.hbs b/src/main/resources/java/src/main/java/packagename/parameter/SchemaQueryParameter.hbs deleted file mode 100644 index ed7fde8c022..00000000000 --- a/src/main/resources/java/src/main/java/packagename/parameter/SchemaQueryParameter.hbs +++ /dev/null @@ -1,20 +0,0 @@ -package {{{packageName}}}.parameter; - -import org.checkerframework.checker.nullness.qual.Nullable; -import {{{packageName}}}.configurations.SchemaConfiguration; -import {{{packageName}}}.header.PrefixSeparatorIterator; -import {{{packageName}}}.schemas.validation.JsonSchema; - -import java.util.Map; - -public class SchemaQueryParameter extends SchemaParameter implements QueryParameter { - - public SchemaQueryParameter(String name, ParameterInType inType, boolean required, @Nullable ParameterStyle style, @Nullable Boolean explode, @Nullable Boolean allowReserved, JsonSchema schema) { - super(name, inType, required, style, explode, allowReserved, schema); - } - - @Override - public Map serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration, PrefixSeparatorIterator iterator) { - return super.serialize(inData, validate, configuration, iterator); - } -} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/paths/path/verb/Parameters.hbs b/src/main/resources/java/src/main/java/packagename/paths/path/verb/Parameters.hbs new file mode 100644 index 00000000000..19321b15ea4 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/paths/path/verb/Parameters.hbs @@ -0,0 +1,88 @@ +{{#with parametersInfo}} +package {{packageName}}.{{subpackage}}; + + {{#with pathItemParameters}} + {{#each allParameters}} +import {{packageName}}.{{subpackage}}.{{jsonPathPiece.pascalCase}}; + {{/each}} + {{/with}} + {{#with parameters}} + {{#each allParameters}} +import {{packageName}}.{{subpackage}}.{{jsonPathPiece.pascalCase}}; + {{/each}} + {{/with}} + {{#if pathParametersSchema}} +import {{packageName}}.parameter.PathSerializer; + {{/if}} + {{#if headerParametersSchema}} +import {{packageName}}.parameter.HeadersSerializer; + {{/if}} + {{#if queryParametersSchema}} +import {{packageName}}.parameter.QuerySerializer; + {{/if}} + {{#if cookieParametersSchema}} +import {{packageName}}.parameter.CookieSerializer; + {{/if}} + +import java.util.Map; +import java.util.AbstractMap; + +public class {{jsonPathPiece.pascalCase}} { + {{#if pathParametersSchema}} + + public static class PathParametersSerializer extends PathSerializer { + public PathParametersSerializer() { + super( + Map.ofEntries( + {{#each pathParameters}} + new AbstractMap.SimpleEntry<>("{{{name}}}", new {{jsonPathPiece.pascalCase}}.{{jsonPathPiece.pascalCase}}1()){{#unless @last}},{{/unless}} + {{/each}} + ) + ); + } + } + {{/if}} + {{#if queryParametersSchema}} + + public static class QueryParametersSerializer extends QuerySerializer { + public QueryParametersSerializer() { + super( + Map.ofEntries( + {{#each queryParameters}} + new AbstractMap.SimpleEntry<>("{{{name}}}", new {{jsonPathPiece.pascalCase}}.{{jsonPathPiece.pascalCase}}1()){{#unless @last}},{{/unless}} + {{/each}} + ) + ); + } + } + {{/if}} + {{#if headerParametersSchema}} + + public static class HeaderParametersSerializer extends HeadersSerializer { + public HeaderParametersSerializer() { + super( + Map.ofEntries( + {{#each headerParameters}} + new AbstractMap.SimpleEntry<>("{{{name}}}", new {{jsonPathPiece.pascalCase}}.{{jsonPathPiece.pascalCase}}1()){{#unless @last}},{{/unless}} + {{/each}} + ) + ); + } + } + {{/if}} + {{#if cookieParametersSchema}} + + public static class CookieParametersSerializer extends CookieSerializer { + public CookieParametersSerializer() { + super( + Map.ofEntries( + {{#each cookieParameters}} + new AbstractMap.SimpleEntry<>("{{{name}}}", new {{jsonPathPiece.pascalCase}}.{{jsonPathPiece.pascalCase}}1()){{#unless @last}},{{/unless}} + {{/each}} + ) + ); + } + } + {{/if}} +} +{{/with}} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/components/responses/Responses.hbs b/src/main/resources/java/src/main/java/packagename/paths/path/verb/Responses.hbs similarity index 92% rename from src/main/resources/java/src/main/java/packagename/components/responses/Responses.hbs rename to src/main/resources/java/src/main/java/packagename/paths/path/verb/Responses.hbs index 84089cf9d0f..02100fba445 100644 --- a/src/main/resources/java/src/main/java/packagename/components/responses/Responses.hbs +++ b/src/main/resources/java/src/main/java/packagename/paths/path/verb/Responses.hbs @@ -87,7 +87,7 @@ public class {{responses.jsonPathPiece.pascalCase}} { {{#and statusCodeResponses wildcardCodeResponses }} @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); if (statusCodeDeserializer != null) { - {{> src/main/java/packagename/components/responses/_statusCodeDeserialization }} + {{> src/main/java/packagename/paths/path/verb/_statusCodeDeserialization }} } @Nullable WildcardCodeResponseDeserializer wildcardCodeDeserializer = wildcardCodeToResponseDeserializer.get(statusCode); if (wildcardCodeDeserializer == null) { @@ -96,7 +96,7 @@ public class {{responses.jsonPathPiece.pascalCase}} { response ); } - {{> src/main/java/packagename/components/responses/_wildcardCodeDeserialization }} + {{> src/main/java/packagename/paths/path/verb/_wildcardCodeDeserialization }} {{else}} {{#or statusCodeResponses wildcardCodeResponses }} {{#if statusCodeResponses }} @@ -107,7 +107,7 @@ public class {{responses.jsonPathPiece.pascalCase}} { response ); } - {{> src/main/java/packagename/components/responses/_statusCodeDeserialization }} + {{> src/main/java/packagename/paths/path/verb/_statusCodeDeserialization }} {{else}} @Nullable WildcardCodeResponseDeserializer wildcardCodeDeserializer = wildcardCodeToResponseDeserializer.get(statusCode); if (wildcardCodeDeserializer == null) { @@ -116,7 +116,7 @@ public class {{responses.jsonPathPiece.pascalCase}} { response ); } - {{> src/main/java/packagename/components/responses/_wildcardCodeDeserialization }} + {{> src/main/java/packagename/paths/path/verb/_wildcardCodeDeserialization }} {{/if}} {{/or}} {{/and}} @@ -129,12 +129,12 @@ public class {{responses.jsonPathPiece.pascalCase}} { {{#if statusCodeResponses}} @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); if (statusCodeDeserializer != null) { - {{> src/main/java/packagename/components/responses/_statusCodeDeserialization }} + {{> src/main/java/packagename/paths/path/verb/_statusCodeDeserialization }} } {{else}} @Nullable WildcardCodeResponseDeserializer wildcardCodeDeserializer = wildcardCodeToResponseDeserializer.get(statusCode); if (wildcardCodeDeserializer != null) { - {{> src/main/java/packagename/components/responses/_wildcardCodeDeserialization }} + {{> src/main/java/packagename/paths/path/verb/_wildcardCodeDeserialization }} } {{/if}} var deserializedResponse = defaultResponseDeserializer.deserialize(response, configuration); diff --git a/src/main/resources/java/src/main/java/packagename/components/responses/_returnOrThrow.hbs b/src/main/resources/java/src/main/java/packagename/paths/path/verb/_returnOrThrow.hbs similarity index 100% rename from src/main/resources/java/src/main/java/packagename/components/responses/_returnOrThrow.hbs rename to src/main/resources/java/src/main/java/packagename/paths/path/verb/_returnOrThrow.hbs diff --git a/src/main/resources/java/src/main/java/packagename/components/responses/_statusCodeDeserialization.hbs b/src/main/resources/java/src/main/java/packagename/paths/path/verb/_statusCodeDeserialization.hbs similarity index 86% rename from src/main/resources/java/src/main/java/packagename/components/responses/_statusCodeDeserialization.hbs rename to src/main/resources/java/src/main/java/packagename/paths/path/verb/_statusCodeDeserialization.hbs index 70ff8d84eea..3c96f251864 100644 --- a/src/main/resources/java/src/main/java/packagename/components/responses/_statusCodeDeserialization.hbs +++ b/src/main/resources/java/src/main/java/packagename/paths/path/verb/_statusCodeDeserialization.hbs @@ -2,7 +2,7 @@ {{#each statusCodeResponses}} Status{{jsonPathPiece.pascalCase}}Deserializer castDeserializer = (Status{{jsonPathPiece.pascalCase}}Deserializer) statusCodeDeserializer; var deserializedResponse = castDeserializer.deserialize(response, configuration); -{{> src/main/java/packagename/components/responses/_returnOrThrow }} +{{> src/main/java/packagename/paths/path/verb/_returnOrThrow }} {{/each}} {{else}} {{#each statusCodeResponses}} @@ -17,7 +17,7 @@ if (statusCodeDeserializer instanceof Status{{jsonPathPiece.pascalCase}}Deserial {{/if}} {{/if}} var deserializedResponse = castDeserializer.deserialize(response, configuration); - {{> src/main/java/packagename/components/responses/_returnOrThrow }} + {{> src/main/java/packagename/paths/path/verb/_returnOrThrow }} {{/each}} } {{/eq}} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/components/responses/_wildcardCodeDeserialization.hbs b/src/main/resources/java/src/main/java/packagename/paths/path/verb/_wildcardCodeDeserialization.hbs similarity index 87% rename from src/main/resources/java/src/main/java/packagename/components/responses/_wildcardCodeDeserialization.hbs rename to src/main/resources/java/src/main/java/packagename/paths/path/verb/_wildcardCodeDeserialization.hbs index 040f0e31e62..38ebf7b0dc5 100644 --- a/src/main/resources/java/src/main/java/packagename/components/responses/_wildcardCodeDeserialization.hbs +++ b/src/main/resources/java/src/main/java/packagename/paths/path/verb/_wildcardCodeDeserialization.hbs @@ -2,7 +2,7 @@ {{#each wildcardCodeResponses}} Wildcard{{jsonPathPiece.pascalCase}}Deserializer castDeserializer = (Wildcard{{jsonPathPiece.pascalCase}}Deserializer) wildcardCodeDeserializer; var deserializedResponse = castDeserializer.deserialize(response, configuration); -{{> src/main/java/packagename/components/responses/_returnOrThrow }} +{{> src/main/java/packagename/paths/path/verb/_returnOrThrow }} {{/each}} {{else}} {{#each wildcardCodeResponses}} @@ -17,7 +17,7 @@ if (wildcardCodeDeserializer instanceof Wildcard{{jsonPathPiece.pascalCase}}Dese {{/if}} {{/if}} var deserializedResponse = castDeserializer.deserialize(response, configuration); - {{> src/main/java/packagename/components/responses/_returnOrThrow }} + {{> src/main/java/packagename/paths/path/verb/_returnOrThrow }} {{/each}} } {{/eq}} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyCookieSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyCookieSecurityScheme.hbs index 1e499184644..8865e124737 100644 --- a/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyCookieSecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyCookieSecurityScheme.hbs @@ -9,14 +9,21 @@ import java.util.Map; public class ApiKeyCookieSecurityScheme implements SecurityScheme { private final String apiKey; + private final String name; - protected ApiKeyCookieSecurityScheme(String apiKey) { + protected ApiKeyCookieSecurityScheme(String apiKey, String name) { this.apiKey = apiKey; + this.name = name; } @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { - List cookieValue = headers.getOrDefault("Cookie", new ArrayList<>()); - cookieValue.add(apiKey); + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { + List cookieHeaderValues = headers.getOrDefault("Cookie", new ArrayList<>()); + String cookieValue = name + "=" + apiKey; + if (cookieHeaderValues.isEmpty()) { + cookieHeaderValues.add(cookieValue); + } else { + cookieHeaderValues.set(0, cookieHeaderValues.get(0)+ "; " + cookieValue); + } } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyHeaderSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyHeaderSecurityScheme.hbs index 850955855d3..a08b1379316 100644 --- a/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyHeaderSecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyHeaderSecurityScheme.hbs @@ -17,7 +17,7 @@ public class ApiKeyHeaderSecurityScheme implements SecurityScheme { } @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { List headerValue = headers.getOrDefault(name, new ArrayList<>()); headerValue.add(apiKey); } diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyQuerySecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyQuerySecurityScheme.hbs index fc056de76f9..5eec16a9f9e 100644 --- a/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyQuerySecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyQuerySecurityScheme.hbs @@ -17,7 +17,7 @@ public class ApiKeyQuerySecurityScheme implements SecurityScheme { } @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { - throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { + queryMap.put(name, apiKey); } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBasicSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBasicSecurityScheme.hbs index d8c4ca8c5e5..6ecbe9ad4ae 100644 --- a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBasicSecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBasicSecurityScheme.hbs @@ -23,7 +23,7 @@ public class HttpBasicSecurityScheme implements SecurityScheme { } @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { String userPass = userId + ":" + password; String b64UserPass = Base64.getEncoder().encodeToString(userPass.getBytes(StandardCharsets.UTF_8)); List headerValue = headers.getOrDefault("Authorization", new ArrayList<>()); diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs index 1144b5d2a91..c46865cf123 100644 --- a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs @@ -27,7 +27,7 @@ public class HttpBearerSecurityScheme implements SecurityScheme { } @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { List headerValue = headers.getOrDefault("Authorization", new ArrayList<>()); headerValue.add("Bearer " + accessToken); } diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpDigestSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpDigestSecurityScheme.hbs index 9eb3fa4738e..617e26150ff 100644 --- a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpDigestSecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpDigestSecurityScheme.hbs @@ -8,7 +8,7 @@ import java.util.Map; public class HttpDigestSecurityScheme implements SecurityScheme { @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpSignatureSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpSignatureSecurityScheme.hbs index 3df20315d38..e14f960a1a4 100644 --- a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpSignatureSecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpSignatureSecurityScheme.hbs @@ -8,7 +8,7 @@ import java.util.Map; public class HttpSignatureSecurityScheme implements SecurityScheme { @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/MutualTlsSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/MutualTlsSecurityScheme.hbs index 6d864807363..d06410fef80 100644 --- a/src/main/resources/java/src/main/java/packagename/securityschemes/MutualTlsSecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/MutualTlsSecurityScheme.hbs @@ -8,7 +8,7 @@ import java.util.Map; public class MutualTlsSecurityScheme implements SecurityScheme { @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/OAuth2SecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/OAuth2SecurityScheme.hbs index 9b4c4501648..5d98f87021b 100644 --- a/src/main/resources/java/src/main/java/packagename/securityschemes/OAuth2SecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/OAuth2SecurityScheme.hbs @@ -8,7 +8,7 @@ import java.util.Map; public class OAuth2SecurityScheme implements SecurityScheme { @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/OpenIdConnectSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/OpenIdConnectSecurityScheme.hbs index 9eca2e03703..b4b9d5680d5 100644 --- a/src/main/resources/java/src/main/java/packagename/securityschemes/OpenIdConnectSecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/OpenIdConnectSecurityScheme.hbs @@ -8,7 +8,7 @@ import java.util.Map; public class OpenIdConnectSecurityScheme implements SecurityScheme { @Override - public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, Map queryMap, List scopeNames) { throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/SecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/SecurityScheme.hbs index 78d57c6ce85..10d8b73bf6c 100644 --- a/src/main/resources/java/src/main/java/packagename/securityschemes/SecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/SecurityScheme.hbs @@ -12,7 +12,7 @@ public interface SecurityScheme { String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, - @Nullable String queryParamsSuffix, + Map queryMap, List scopeNames ); } diff --git a/src/main/resources/java/src/test/java/packagename/header/ContentHeaderTest.hbs b/src/main/resources/java/src/test/java/packagename/header/ContentHeaderTest.hbs index 7bf8424a65a..465de3766b8 100644 --- a/src/main/resources/java/src/test/java/packagename/header/ContentHeaderTest.hbs +++ b/src/main/resources/java/src/test/java/packagename/header/ContentHeaderTest.hbs @@ -27,7 +27,7 @@ public class ContentHeaderTest { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, Map.of("color", List.of("null")) diff --git a/src/main/resources/java/src/test/java/packagename/parameter/CookieSerializerTest.hbs b/src/main/resources/java/src/test/java/packagename/parameter/CookieSerializerTest.hbs new file mode 100644 index 00000000000..519c675002c --- /dev/null +++ b/src/main/resources/java/src/test/java/packagename/parameter/CookieSerializerTest.hbs @@ -0,0 +1,44 @@ +package {{{packageName}}}.parameter; + +import org.junit.Assert; +import org.junit.Test; +import {{{packageName}}}.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; + +public class CookieSerializerTest { + public static class Parameter1 extends SchemaParameter { + public Parameter1() { + super("param1", ParameterInType.COOKIE, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Parameter2 extends SchemaParameter { + public Parameter2() { + super("param2", ParameterInType.COOKIE, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class CookieParametersSerializer extends CookieSerializer { + protected CookieParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Parameter1()), + new AbstractMap.SimpleEntry<>("param2", new Parameter2()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + String cookie = new CookieParametersSerializer().serialize(inData); + String expectedCookie = "param1=a; param2=3.14"; + Assert.assertEquals(expectedCookie, cookie); + } +} \ No newline at end of file diff --git a/src/main/resources/java/src/test/java/packagename/parameter/HeadersSerializerTest.hbs b/src/main/resources/java/src/test/java/packagename/parameter/HeadersSerializerTest.hbs new file mode 100644 index 00000000000..c1ee270e699 --- /dev/null +++ b/src/main/resources/java/src/test/java/packagename/parameter/HeadersSerializerTest.hbs @@ -0,0 +1,48 @@ +package {{{packageName}}}.parameter; + +import org.junit.Assert; +import org.junit.Test; +import {{{packageName}}}.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; +import java.util.List; + +public class HeadersSerializerTest { + public static class Param1HeaderParameter extends SchemaParameter { + public Param1HeaderParameter() { + super("param1", ParameterInType.HEADER, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Param2HeaderParameter extends SchemaParameter { + public Param2HeaderParameter() { + super("param2", ParameterInType.HEADER, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class HeaderParametersSerializer extends HeadersSerializer { + protected HeaderParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Param1HeaderParameter()), + new AbstractMap.SimpleEntry<>("param2", new Param2HeaderParameter()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + Map> expectedHeaders = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", List.of("a")), + new AbstractMap.SimpleEntry<>("param2", List.of("3.14")) + ); + Map> headers = new HeaderParametersSerializer().serialize(inData); + Assert.assertEquals(expectedHeaders, headers); + } +} \ No newline at end of file diff --git a/src/main/resources/java/src/test/java/packagename/parameter/PathSerializerTest.hbs b/src/main/resources/java/src/test/java/packagename/parameter/PathSerializerTest.hbs new file mode 100644 index 00000000000..75182fcb905 --- /dev/null +++ b/src/main/resources/java/src/test/java/packagename/parameter/PathSerializerTest.hbs @@ -0,0 +1,45 @@ +package {{{packageName}}}.parameter; + +import org.junit.Assert; +import org.junit.Test; +import {{{packageName}}}.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; + +public class PathSerializerTest { + public static class Parameter1 extends SchemaParameter { + public Parameter1() { + super("param1", ParameterInType.PATH, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Parameter2 extends SchemaParameter { + public Parameter2() { + super("param2", ParameterInType.PATH, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class PathParametersSerializer extends PathSerializer { + protected PathParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Parameter1()), + new AbstractMap.SimpleEntry<>("param2", new Parameter2()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + String pathWithPlaceholders = "/{param1}/{param2}"; + String path = new PathParametersSerializer().serialize(inData, pathWithPlaceholders); + String expectedPath = "/a/3.14"; + Assert.assertEquals(expectedPath, path); + } +} \ No newline at end of file diff --git a/src/main/resources/java/src/test/java/packagename/parameter/QuerySerializerTest.hbs b/src/main/resources/java/src/test/java/packagename/parameter/QuerySerializerTest.hbs new file mode 100644 index 00000000000..6fe0d72fa94 --- /dev/null +++ b/src/main/resources/java/src/test/java/packagename/parameter/QuerySerializerTest.hbs @@ -0,0 +1,51 @@ +package {{{packageName}}}.parameter; + +import org.junit.Assert; +import org.junit.Test; +import {{{packageName}}}.schemas.AnyTypeJsonSchema; + +import java.util.AbstractMap; +import java.util.Map; + +public class QuerySerializerTest { + public static class Param1QueryParameter extends SchemaParameter { + public Param1QueryParameter() { + super("param1", ParameterInType.QUERY, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class Param2QueryParameter extends SchemaParameter { + public Param2QueryParameter() { + super("param2", ParameterInType.QUERY, true, null, null, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); + } + } + + public static class QueryParametersSerializer extends QuerySerializer { + protected QueryParametersSerializer() { + super( + Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", new Param1QueryParameter()), + new AbstractMap.SimpleEntry<>("param2", new Param2QueryParameter()) + ) + ); + } + } + + @Test + public void testSerialization() { + Map inData = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "a"), + new AbstractMap.SimpleEntry<>("param2", 3.14d) + ); + var serializer = new QueryParametersSerializer(); + var queryMap = serializer.getQueryMap(inData); + Map expectedQueryMap = Map.ofEntries( + new AbstractMap.SimpleEntry<>("param1", "param1=a"), + new AbstractMap.SimpleEntry<>("param2", "param2=3.14") + ); + Assert.assertEquals(expectedQueryMap, queryMap); + String query = serializer.serialize(queryMap); + String expectedQuery = "?param1=a¶m2=3.14"; + Assert.assertEquals(expectedQuery, query); + } +} \ No newline at end of file diff --git a/src/main/resources/java/src/test/java/packagename/parameter/SchemaNonQueryParameterTest.hbs b/src/main/resources/java/src/test/java/packagename/parameter/SchemaNonQueryParameterTest.hbs index 585e2e2e73d..d12b67bd2e3 100644 --- a/src/main/resources/java/src/test/java/packagename/parameter/SchemaNonQueryParameterTest.hbs +++ b/src/main/resources/java/src/test/java/packagename/parameter/SchemaNonQueryParameterTest.hbs @@ -3,24 +3,23 @@ package {{{packageName}}}.parameter; import org.checkerframework.checker.nullness.qual.Nullable; import org.junit.Assert; import org.junit.Test; -import {{{packageName}}}.configurations.JsonSchemaKeywordFlags; -import {{{packageName}}}.configurations.SchemaConfiguration; import {{{packageName}}}.exceptions.InvalidTypeException; import {{{packageName}}}.schemas.AnyTypeJsonSchema; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.AbstractMap; import java.util.Set; public class SchemaNonQueryParameterTest { - public record ParamTestCase(@Nullable Object payload, Map expectedSerialization, @Nullable Boolean explode) { - public ParamTestCase(@Nullable Object payload, Map expectedSerialization) { + public record ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization, @Nullable Boolean explode) { + public ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization) { this(payload, expectedSerialization, null); } } - public static class HeaderParameter extends SchemaNonQueryParameter { + public static class HeaderParameter extends SchemaParameter { public HeaderParameter(@Nullable Boolean explode) { super("color", ParameterInType.HEADER, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -32,74 +31,73 @@ public class SchemaNonQueryParameterTest { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "1") + new AbstractMap.SimpleEntry<>("color", "1") ), new ParamTestCase( 3.14, - Map.of("color","3.14") + new AbstractMap.SimpleEntry<>("color","3.14") ), new ParamTestCase( "blue", - Map.of("color", "blue") + new AbstractMap.SimpleEntry<>("color", "blue") ), new ParamTestCase( "hello world", - Map.of("color", "hello world") + new AbstractMap.SimpleEntry<>("color", "hello world") ), new ParamTestCase( "", - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown") + new AbstractMap.SimpleEntry<>("color", "blue,black,brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown"), + new AbstractMap.SimpleEntry<>("color", "blue,black,brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R,100,G,200,B,150") + new AbstractMap.SimpleEntry<>("color", "R,100,G,200,B,150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100,G=200,B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100,G=200,B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var header = new HeaderParameter(testCase.explode); - var serialization = header.serialize(testCase.payload, false, configuration); + var serialization = header.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var boolHeader = new HeaderParameter(false); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> boolHeader.serialize(value, false, configuration) + () -> boolHeader.serialize(value) ); } } - public static class PathParameter extends SchemaNonQueryParameter { + public static class PathParameter extends SchemaParameter { public PathParameter(@Nullable Boolean explode) { super("color", ParameterInType.PATH, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -111,74 +109,73 @@ public class SchemaNonQueryParameterTest { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "1") + new AbstractMap.SimpleEntry<>("color", "1") ), new ParamTestCase( 3.14, - Map.of("color","3.14") + new AbstractMap.SimpleEntry<>("color","3.14") ), new ParamTestCase( "blue", - Map.of("color", "blue") + new AbstractMap.SimpleEntry<>("color", "blue") ), new ParamTestCase( "hello world", - Map.of("color", "hello%20world") + new AbstractMap.SimpleEntry<>("color", "hello%20world") ), new ParamTestCase( "", - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown") + new AbstractMap.SimpleEntry<>("color", "blue,black,brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue,black,brown"), + new AbstractMap.SimpleEntry<>("color", "blue,black,brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R,100,G,200,B,150") + new AbstractMap.SimpleEntry<>("color", "R,100,G,200,B,150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100,G=200,B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100,G=200,B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var pathParameter = new PathParameter(testCase.explode); - var serialization = pathParameter.serialize(testCase.payload, false, configuration); + var serialization = pathParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var pathParameter = new PathParameter(false); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> pathParameter.serialize(value, false, configuration) + () -> pathParameter.serialize(value) ); } } - public static class CookieParameter extends SchemaNonQueryParameter { + public static class CookieParameter extends SchemaParameter { public CookieParameter(@Nullable Boolean explode) { super("color", ParameterInType.COOKIE, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -190,74 +187,73 @@ public class SchemaNonQueryParameterTest { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "color=1") + new AbstractMap.SimpleEntry<>("color", "color=1") ), new ParamTestCase( 3.14, - Map.of("color","color=3.14") + new AbstractMap.SimpleEntry<>("color","color=3.14") ), new ParamTestCase( "blue", - Map.of("color", "color=blue") + new AbstractMap.SimpleEntry<>("color", "color=blue") ), new ParamTestCase( "hello world", - Map.of("color", "color=hello world") + new AbstractMap.SimpleEntry<>("color", "color=hello world") ), new ParamTestCase( "", - Map.of("color", "color=") + new AbstractMap.SimpleEntry<>("color", "color=") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "color=blue&color=black&color=brown") + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "color=blue&color=black&color=brown"), + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100&G=200&B=150") + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100&G=200&B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var cookieParameter = new CookieParameter(testCase.explode); - var serialization = cookieParameter.serialize(testCase.payload, false, configuration); + var serialization = cookieParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var cookieParameter = new CookieParameter(false); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> cookieParameter.serialize(value, false, configuration) + () -> cookieParameter.serialize(value) ); } } - public static class PathMatrixParameter extends SchemaNonQueryParameter { + public static class PathMatrixParameter extends SchemaParameter { public PathMatrixParameter(@Nullable Boolean explode) { super("color", ParameterInType.PATH, true, ParameterStyle.MATRIX, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -269,67 +265,66 @@ public class SchemaNonQueryParameterTest { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", ";color=1") + new AbstractMap.SimpleEntry<>("color", ";color=1") ), new ParamTestCase( 3.14, - Map.of("color",";color=3.14") + new AbstractMap.SimpleEntry<>("color",";color=3.14") ), new ParamTestCase( "blue", - Map.of("color", ";color=blue") + new AbstractMap.SimpleEntry<>("color", ";color=blue") ), new ParamTestCase( "hello world", - Map.of("color", ";color=hello%20world") + new AbstractMap.SimpleEntry<>("color", ";color=hello%20world") ), new ParamTestCase( "", - Map.of("color", ";color") + new AbstractMap.SimpleEntry<>("color", ";color") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ";color=blue,black,brown") + new AbstractMap.SimpleEntry<>("color", ";color=blue,black,brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ";color=blue;color=black;color=brown"), + new AbstractMap.SimpleEntry<>("color", ";color=blue;color=black;color=brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", ";color=R,100,G,200,B,150") + new AbstractMap.SimpleEntry<>("color", ";color=R,100,G,200,B,150") ), new ParamTestCase( mapPayload, - Map.of("color", ";R=100;G=200;B=150"), + new AbstractMap.SimpleEntry<>("color", ";R=100;G=200;B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var pathParameter = new PathMatrixParameter(testCase.explode); - var serialization = pathParameter.serialize(testCase.payload, false, configuration); + var serialization = pathParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } - public static class PathLabelParameter extends SchemaNonQueryParameter { + public static class PathLabelParameter extends SchemaParameter { public PathLabelParameter(@Nullable Boolean explode) { super("color", ParameterInType.PATH, true, ParameterStyle.LABEL, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -341,62 +336,61 @@ public class SchemaNonQueryParameterTest { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", ".1") + new AbstractMap.SimpleEntry<>("color", ".1") ), new ParamTestCase( 3.14, - Map.of("color",".3.14") + new AbstractMap.SimpleEntry<>("color",".3.14") ), new ParamTestCase( "blue", - Map.of("color", ".blue") + new AbstractMap.SimpleEntry<>("color", ".blue") ), new ParamTestCase( "hello world", - Map.of("color", ".hello%20world") + new AbstractMap.SimpleEntry<>("color", ".hello%20world") ), new ParamTestCase( "", - Map.of("color", ".") + new AbstractMap.SimpleEntry<>("color", ".") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ".blue.black.brown") + new AbstractMap.SimpleEntry<>("color", ".blue.black.brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", ".blue.black.brown"), + new AbstractMap.SimpleEntry<>("color", ".blue.black.brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", ".R.100.G.200.B.150") + new AbstractMap.SimpleEntry<>("color", ".R.100.G.200.B.150") ), new ParamTestCase( mapPayload, - Map.of("color", ".R=100.G=200.B=150"), + new AbstractMap.SimpleEntry<>("color", ".R=100.G=200.B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var pathParameter = new PathLabelParameter(testCase.explode); - var serialization = pathParameter.serialize(testCase.payload, false, configuration); + var serialization = pathParameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } diff --git a/src/main/resources/java/src/test/java/packagename/parameter/SchemaQueryParameterTest.hbs b/src/main/resources/java/src/test/java/packagename/parameter/SchemaQueryParameterTest.hbs index 35c1410b28f..46532281884 100644 --- a/src/main/resources/java/src/test/java/packagename/parameter/SchemaQueryParameterTest.hbs +++ b/src/main/resources/java/src/test/java/packagename/parameter/SchemaQueryParameterTest.hbs @@ -3,24 +3,23 @@ package {{{packageName}}}.parameter; import org.checkerframework.checker.nullness.qual.Nullable; import org.junit.Assert; import org.junit.Test; -import {{{packageName}}}.configurations.JsonSchemaKeywordFlags; -import {{{packageName}}}.configurations.SchemaConfiguration; import {{{packageName}}}.exceptions.InvalidTypeException; import {{{packageName}}}.schemas.AnyTypeJsonSchema; import java.util.LinkedHashMap; import java.util.List; +import java.util.AbstractMap; import java.util.Map; import java.util.Set; public class SchemaQueryParameterTest { - public record ParamTestCase(@Nullable Object payload, Map expectedSerialization, @Nullable Boolean explode) { - public ParamTestCase(@Nullable Object payload, Map expectedSerialization) { + public record ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization, @Nullable Boolean explode) { + public ParamTestCase(@Nullable Object payload, AbstractMap.SimpleEntry expectedSerialization) { this(payload, expectedSerialization, null); } } - public static class QueryParameterNoStyle extends SchemaQueryParameter { + public static class QueryParameterNoStyle extends SchemaParameter { public QueryParameterNoStyle(@Nullable Boolean explode) { super("color", ParameterInType.QUERY, true, null, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -32,76 +31,73 @@ public class SchemaQueryParameterTest { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( null, - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( 1, - Map.of("color", "?color=1") + new AbstractMap.SimpleEntry<>("color", "color=1") ), new ParamTestCase( 3.14, - Map.of("color","?color=3.14") + new AbstractMap.SimpleEntry<>("color","color=3.14") ), new ParamTestCase( "blue", - Map.of("color", "?color=blue") + new AbstractMap.SimpleEntry<>("color", "color=blue") ), new ParamTestCase( "hello world", - Map.of("color", "?color=hello%20world") + new AbstractMap.SimpleEntry<>("color", "color=hello%20world") ), new ParamTestCase( "", - Map.of("color", "?color=") + new AbstractMap.SimpleEntry<>("color", "color=") ), new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "?color=blue&color=black&color=brown") + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "?color=blue&color=black&color=brown"), + new AbstractMap.SimpleEntry<>("color", "color=blue&color=black&color=brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "?R=100&G=200&B=150") + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150") ), new ParamTestCase( mapPayload, - Map.of("color", "?R=100&G=200&B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100&G=200&B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var parameter = new QueryParameterNoStyle(testCase.explode); - var iterator = parameter.getPrefixSeparatorIterator(); - var serialization = parameter.serialize(testCase.payload, false, configuration, iterator); + var serialization = parameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } var parameter = new QueryParameterNoStyle(false); - var iterator = parameter.getPrefixSeparatorIterator(); for (boolean value: Set.of(true, false)) { Assert.assertThrows( InvalidTypeException.class, - () -> parameter.serialize(value, false, configuration, iterator) + () -> parameter.serialize(value) ); } } - public static class QueryParameterSpaceDelimited extends SchemaQueryParameter { + public static class QueryParameterSpaceDelimited extends SchemaParameter { public QueryParameterSpaceDelimited(@Nullable Boolean explode) { super("color", ParameterInType.QUERY, true, ParameterStyle.SPACE_DELIMITED, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -113,44 +109,42 @@ public class SchemaQueryParameterTest { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue%20black%20brown") + new AbstractMap.SimpleEntry<>("color", "blue%20black%20brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue%20black%20brown"), + new AbstractMap.SimpleEntry<>("color", "blue%20black%20brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R%20100%20G%20200%20B%20150") + new AbstractMap.SimpleEntry<>("color", "R%20100%20G%20200%20B%20150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100%20G=200%20B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100%20G=200%20B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var parameter = new QueryParameterSpaceDelimited(testCase.explode); - var iterator = parameter.getPrefixSeparatorIterator(); - var serialization = parameter.serialize(testCase.payload, false, configuration, iterator); + var serialization = parameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } - public static class QueryParameterPipeDelimited extends SchemaQueryParameter { + public static class QueryParameterPipeDelimited extends SchemaParameter { public QueryParameterPipeDelimited(@Nullable Boolean explode) { super("color", ParameterInType.QUERY, true, ParameterStyle.PIPE_DELIMITED, explode, null, AnyTypeJsonSchema.AnyTypeJsonSchema1.getInstance()); } @@ -162,39 +156,37 @@ public class SchemaQueryParameterTest { mapPayload.put("R", 100); mapPayload.put("G", 200); mapPayload.put("B", 150); - var testCases = List.of( + List testCases = List.of( new ParamTestCase( List.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue|black|brown") + new AbstractMap.SimpleEntry<>("color", "blue|black|brown") ), new ParamTestCase( List.of("blue", "black", "brown"), - Map.of("color", "blue|black|brown"), + new AbstractMap.SimpleEntry<>("color", "blue|black|brown"), true ), new ParamTestCase( Map.of(), - Map.of("color", "") + new AbstractMap.SimpleEntry<>("color", "") ), new ParamTestCase( mapPayload, - Map.of("color", "R|100|G|200|B|150") + new AbstractMap.SimpleEntry<>("color", "R|100|G|200|B|150") ), new ParamTestCase( mapPayload, - Map.of("color", "R=100|G=200|B=150"), + new AbstractMap.SimpleEntry<>("color", "R=100|G=200|B=150"), true ) ); - SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); for (ParamTestCase testCase: testCases) { var parameter = new QueryParameterPipeDelimited(testCase.explode); - var iterator = parameter.getPrefixSeparatorIterator(); - var serialization = parameter.serialize(testCase.payload, false, configuration, iterator); + var serialization = parameter.serialize(testCase.payload); Assert.assertEquals(testCase.expectedSerialization, serialization); } } diff --git a/src/test/java/org/openapijsonschematools/codegen/generatorrunner/DefaultGeneratorRunnerTest.java b/src/test/java/org/openapijsonschematools/codegen/generatorrunner/DefaultGeneratorRunnerTest.java index 8719d5d1fa5..7a82aaf827b 100644 --- a/src/test/java/org/openapijsonschematools/codegen/generatorrunner/DefaultGeneratorRunnerTest.java +++ b/src/test/java/org/openapijsonschematools/codegen/generatorrunner/DefaultGeneratorRunnerTest.java @@ -294,10 +294,10 @@ public void testNonStrictFromPaths() throws Exception { CodegenKey firstPathKey = config.getKey("path1/", "paths"); CodegenKey getKey = config.getKey("get", "verb"); Assert.assertEquals(firstPathKey.original, "path1/"); - Assert.assertNull(paths.get(firstPathKey).operations.get(getKey).parameters); + Assert.assertNull(paths.get(firstPathKey).operations.get(getKey).parametersInfo); CodegenKey secondPathKey = config.getKey("path2/", "paths"); Assert.assertEquals(secondPathKey.original, "path2/"); - Assert.assertEquals(paths.get(secondPathKey).operations.get(getKey).parameters.allParameters.size(), 1); + Assert.assertEquals(paths.get(secondPathKey).operations.get(getKey).parametersInfo.parameters.allParameters.size(), 1); } @Test diff --git a/src/test/java/org/openapijsonschematools/codegen/generators/DefaultGeneratorTest.java b/src/test/java/org/openapijsonschematools/codegen/generators/DefaultGeneratorTest.java index 40e0613a522..87ed7533a19 100644 --- a/src/test/java/org/openapijsonschematools/codegen/generators/DefaultGeneratorTest.java +++ b/src/test/java/org/openapijsonschematools/codegen/generators/DefaultGeneratorTest.java @@ -19,7 +19,6 @@ import com.google.common.collect.Sets; import com.samskivert.mustache.Mustache.Lambda; -import io.swagger.parser.OpenAPIParser; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.Operation; @@ -38,8 +37,6 @@ import io.swagger.v3.oas.models.responses.ApiResponse; import io.swagger.v3.oas.models.responses.ApiResponses; import io.swagger.v3.oas.models.security.SecurityScheme; -import io.swagger.v3.parser.core.models.ParseOptions; -import org.openapijsonschematools.codegen.generatorrunner.DefaultGeneratorRunner; import org.openapijsonschematools.codegen.TestUtils; import org.openapijsonschematools.codegen.common.CodegenConstants; import org.openapijsonschematools.codegen.generators.openapimodels.CodegenDiscriminator; @@ -122,9 +119,9 @@ public void testRefedEnumParameter() { "#/components/schemas/PetByType" ); CodegenOperation operation = codegen.fromOperation(path.getGet(), getOperationPath("/pets/petType/{type}", "get"), null); - assertEquals(operation.parameters.pathParameters.get(0).imports, null); - assertEquals(operation.parameters.pathParameters.get(0).schema.imports.size(), 1); - Assert.assertTrue(operation.parameters.pathParameters.get(0).schema.refInfo.ref.enumInfo.valueToName != null); + assertEquals(operation.parametersInfo.parameters.pathParameters.get(0).imports, null); + assertEquals(operation.parametersInfo.parameters.pathParameters.get(0).schema.imports.size(), 1); + Assert.assertTrue(operation.parametersInfo.parameters.pathParameters.get(0).schema.refInfo.ref.enumInfo.valueToName != null); } @Test @@ -585,11 +582,11 @@ public void testExample1() { PathItem path = openAPI.getPaths().get("/example1/singular"); CodegenOperation op = codegen.fromOperation(path.getGet(), getOperationPath("/example1/singular", "get"), null); - assertEquals(op.parameters.queryParameters.get(0).example, "example1 value"); + assertEquals(op.parametersInfo.parameters.queryParameters.get(0).example, "example1 value"); path = openAPI.getPaths().get("/example1/plural"); op = codegen.fromOperation(path.getGet(), getOperationPath("/example1/plural", "get"), null); - assertEquals(op.parameters.queryParameters.get(0).example, "An example1 value"); + assertEquals(op.parametersInfo.parameters.queryParameters.get(0).example, "An example1 value"); } @Test @@ -599,7 +596,7 @@ public void testExample2() { PathItem path = openAPI.getPaths().get("/example2/singular"); CodegenOperation op = codegen.fromOperation(path.getGet(), getOperationPath("/example2/singular", "get"), null); - assertEquals(op.parameters.queryParameters.get(0).example, "example2 value"); + assertEquals(op.parametersInfo.parameters.queryParameters.get(0).example, "example2 value"); } @Test @@ -609,11 +606,11 @@ public void testExample3() { PathItem path = openAPI.getPaths().get("/example3/singular"); CodegenOperation op = codegen.fromOperation(path.getGet(), getOperationPath("/example3/singular", "get"), null); - assertEquals(op.parameters.queryParameters.get(0).example, "example3: parameter value"); + assertEquals(op.parametersInfo.parameters.queryParameters.get(0).example, "example3: parameter value"); path = openAPI.getPaths().get("/example3/plural"); op = codegen.fromOperation(path.getGet(), getOperationPath("/example3/plural", "get"), null); - assertEquals(op.parameters.queryParameters.get(0).example, "An example3 value"); + assertEquals(op.parametersInfo.parameters.queryParameters.get(0).example, "An example3 value"); } @Test @@ -1667,36 +1664,36 @@ public void pathItemParmsCorrectlyCalculated() { CodegenPathItem pathItem = codegen.fromPathItem(docPathItem, "#/paths/~1users~1{UserID}"); CodegenOperation operation = pathItem.operations.get(codegen.getKey("get", "verb")); - Assert.assertEquals(operation.parameters, null); - Assert.assertEquals(operation.pathItemParameters.allParameters.size(), 1); - Assert.assertEquals(operation.pathItemParameters.pathParameters.size(), 1); - Assert.assertEquals(operation.pathItemParameters.queryParameters.size(), 0); - Assert.assertEquals(operation.pathItemParameters.headerParameters.size(), 0); - Assert.assertEquals(operation.pathItemParameters.cookieParameters.size(), 0); - Assert.assertEquals(operation.pathItemParameters.allParameters.get(0).name, "UserID"); + Assert.assertEquals(operation.parametersInfo.parameters, null); + Assert.assertEquals(operation.parametersInfo.pathItemParameters.allParameters.size(), 1); + Assert.assertEquals(operation.parametersInfo.pathItemParameters.pathParameters.size(), 1); + Assert.assertEquals(operation.parametersInfo.pathItemParameters.queryParameters.size(), 0); + Assert.assertEquals(operation.parametersInfo.pathItemParameters.headerParameters.size(), 0); + Assert.assertEquals(operation.parametersInfo.pathItemParameters.cookieParameters.size(), 0); + Assert.assertEquals(operation.parametersInfo.pathItemParameters.allParameters.get(0).name, "UserID"); operation = pathItem.operations.get(codegen.getKey("post", "verb")); - Assert.assertEquals(operation.parameters.allParameters.size(), 1); - Assert.assertEquals(operation.parameters.pathParameters.size(), 0); - Assert.assertEquals(operation.parameters.queryParameters.size(), 0); - Assert.assertEquals(operation.parameters.headerParameters.size(), 1); - Assert.assertEquals(operation.parameters.cookieParameters.size(), 0); - Assert.assertEquals(operation.parameters.allParameters.get(0).name, "someHeader"); - Assert.assertEquals(operation.pathItemParameters.allParameters.size(), 1); - Assert.assertEquals(operation.pathItemParameters.pathParameters.size(), 1); - Assert.assertEquals(operation.pathItemParameters.queryParameters.size(), 0); - Assert.assertEquals(operation.pathItemParameters.headerParameters.size(), 0); - Assert.assertEquals(operation.pathItemParameters.cookieParameters.size(), 0); - Assert.assertEquals(operation.pathItemParameters.allParameters.get(0).name, "UserID"); + Assert.assertEquals(operation.parametersInfo.parameters.allParameters.size(), 1); + Assert.assertEquals(operation.parametersInfo.parameters.pathParameters.size(), 0); + Assert.assertEquals(operation.parametersInfo.parameters.queryParameters.size(), 0); + Assert.assertEquals(operation.parametersInfo.parameters.headerParameters.size(), 1); + Assert.assertEquals(operation.parametersInfo.parameters.cookieParameters.size(), 0); + Assert.assertEquals(operation.parametersInfo.parameters.allParameters.get(0).name, "someHeader"); + Assert.assertEquals(operation.parametersInfo.pathItemParameters.allParameters.size(), 1); + Assert.assertEquals(operation.parametersInfo.pathItemParameters.pathParameters.size(), 1); + Assert.assertEquals(operation.parametersInfo.pathItemParameters.queryParameters.size(), 0); + Assert.assertEquals(operation.parametersInfo.pathItemParameters.headerParameters.size(), 0); + Assert.assertEquals(operation.parametersInfo.pathItemParameters.cookieParameters.size(), 0); + Assert.assertEquals(operation.parametersInfo.pathItemParameters.allParameters.get(0).name, "UserID"); operation = pathItem.operations.get(codegen.getKey("delete", "verb")); - Assert.assertEquals(operation.parameters.allParameters.size(), 1); - Assert.assertEquals(operation.parameters.pathParameters.size(), 1); - Assert.assertEquals(operation.parameters.queryParameters.size(), 0); - Assert.assertEquals(operation.parameters.headerParameters.size(), 0); - Assert.assertEquals(operation.parameters.cookieParameters.size(), 0); - Assert.assertEquals(operation.parameters.allParameters.get(0).name, "UserID"); - Assert.assertEquals(operation.pathItemParameters, null); + Assert.assertEquals(operation.parametersInfo.parameters.allParameters.size(), 1); + Assert.assertEquals(operation.parametersInfo.parameters.pathParameters.size(), 1); + Assert.assertEquals(operation.parametersInfo.parameters.queryParameters.size(), 0); + Assert.assertEquals(operation.parametersInfo.parameters.headerParameters.size(), 0); + Assert.assertEquals(operation.parametersInfo.parameters.cookieParameters.size(), 0); + Assert.assertEquals(operation.parametersInfo.parameters.allParameters.get(0).name, "UserID"); + Assert.assertEquals(operation.parametersInfo.pathItemParameters, null); } @Test @@ -1790,7 +1787,7 @@ public void testFormComposedSchema() { final CodegenOperation operation = cg.fromOperation( path.getPost(), getOperationPath("/users/me", "post"), null); - assertNull(operation.parameters); + assertNull(operation.parametersInfo); assertNotNull(operation.requestBody); } @@ -1894,7 +1891,7 @@ public void testItemsPresent() { path = "/ref_array_with_validations_in_items/{items}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - assertEquals(co.parameters.pathParameters.get(0).schema.refInfo.ref.items.maximum, new BigDecimal(7)); + assertEquals(co.parametersInfo.parameters.pathParameters.get(0).schema.refInfo.ref.items.maximum, new BigDecimal(7)); CodegenKey applicationJson = codegen.getKey("application/json", "misc"); assertEquals(co.requestBody.content.get(applicationJson).schema.refInfo.ref.items.maximum, new BigDecimal(7)); assertEquals(co.responses.get("200").content.get(applicationJson).schema.refInfo.ref.items.maximum, new BigDecimal(7)); @@ -1902,7 +1899,7 @@ public void testItemsPresent() { path = "/array_with_validations_in_items/{items}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - assertEquals(co.parameters.pathParameters.get(0).schema.items.maximum, new BigDecimal(7)); + assertEquals(co.parametersInfo.parameters.pathParameters.get(0).schema.items.maximum, new BigDecimal(7)); assertEquals(co.requestBody.content.get(applicationJson).schema.items.maximum, new BigDecimal(7)); assertEquals(co.responses.get("200").content.get(applicationJson).schema.items.maximum, new BigDecimal(7)); } @@ -2069,27 +2066,27 @@ public void testAdditionalPropertiesPresentInParameters() { path = "/ref_additional_properties/"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - mapWithAddPropsUnset = co.parameters.queryParameters.get(0); + mapWithAddPropsUnset = co.parametersInfo.parameters.queryParameters.get(0); assertEquals(mapWithAddPropsUnset.schema.refInfo.ref.additionalProperties, null); - mapWithAddPropsTrue = co.parameters.queryParameters.get(1); + mapWithAddPropsTrue = co.parametersInfo.parameters.queryParameters.get(1); assertNotNull(mapWithAddPropsTrue.schema.refInfo); assertTrue(mapWithAddPropsTrue.schema.refInfo.ref.additionalProperties.isBooleanSchemaTrue); - mapWithAddPropsFalse = co.parameters.queryParameters.get(2); + mapWithAddPropsFalse = co.parametersInfo.parameters.queryParameters.get(2); assertNotNull(mapWithAddPropsFalse.schema.refInfo.ref.additionalProperties); assertTrue(mapWithAddPropsFalse.schema.refInfo.ref.additionalProperties.isBooleanSchemaFalse); - mapWithAddPropsSchema = co.parameters.queryParameters.get(3); + mapWithAddPropsSchema = co.parametersInfo.parameters.queryParameters.get(3); assertNotNull(mapWithAddPropsSchema.schema.refInfo); path = "/additional_properties/"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - mapWithAddPropsUnset = co.parameters.queryParameters.get(0); + mapWithAddPropsUnset = co.parametersInfo.parameters.queryParameters.get(0); assertEquals(mapWithAddPropsUnset.schema.additionalProperties, null); - mapWithAddPropsTrue = co.parameters.queryParameters.get(1); + mapWithAddPropsTrue = co.parametersInfo.parameters.queryParameters.get(1); assertTrue(mapWithAddPropsTrue.schema.additionalProperties.isBooleanSchemaTrue); - mapWithAddPropsFalse = co.parameters.queryParameters.get(2); + mapWithAddPropsFalse = co.parametersInfo.parameters.queryParameters.get(2); assertTrue(mapWithAddPropsFalse.schema.additionalProperties.isBooleanSchemaFalse); - mapWithAddPropsSchema = co.parameters.queryParameters.get(3); + mapWithAddPropsSchema = co.parametersInfo.parameters.queryParameters.get(3); assertTrue(mapWithAddPropsSchema.schema.additionalProperties.types.contains("string")); } @@ -2264,8 +2261,8 @@ public void testIsXPresence() { path = "/ref_date_with_validation/{date}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - assertTrue(co.parameters.pathParameters.get(0).schema.refInfo.ref.types.contains("string")); - assertEquals(co.parameters.pathParameters.get(0).schema.refInfo.ref.format, "date"); + assertTrue(co.parametersInfo.parameters.pathParameters.get(0).schema.refInfo.ref.types.contains("string")); + assertEquals(co.parametersInfo.parameters.pathParameters.get(0).schema.refInfo.ref.format, "date"); CodegenKey applicationJson = codegen.getKey("application/json", "misc"); assertTrue(co.requestBody.content.get(applicationJson).schema.refInfo.ref.types.contains("string")); assertEquals(co.requestBody.content.get(applicationJson).schema.refInfo.ref.format, "date"); @@ -2275,8 +2272,8 @@ public void testIsXPresence() { path = "/date_with_validation/{date}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - assertTrue(co.parameters.pathParameters.get(0).schema.types.contains("string")); - assertEquals(co.parameters.pathParameters.get(0).schema.format, "date"); + assertTrue(co.parametersInfo.parameters.pathParameters.get(0).schema.types.contains("string")); + assertEquals(co.parametersInfo.parameters.pathParameters.get(0).schema.format, "date"); assertTrue(co.requestBody.content.get(applicationJson).schema.types.contains("string")); assertEquals(co.requestBody.content.get(applicationJson).schema.format, "date"); assertTrue(co.responses.get("200").content.get(applicationJson).schema.types.contains("string")); @@ -2306,8 +2303,8 @@ public void testIsXPresence() { path = "/ref_date_time_with_validation/{dateTime}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - assertTrue(co.parameters.pathParameters.get(0).schema.refInfo.ref.types.contains("string")); - assertEquals(co.parameters.pathParameters.get(0).schema.refInfo.ref.format, "date-time"); + assertTrue(co.parametersInfo.parameters.pathParameters.get(0).schema.refInfo.ref.types.contains("string")); + assertEquals(co.parametersInfo.parameters.pathParameters.get(0).schema.refInfo.ref.format, "date-time"); assertTrue(co.requestBody.content.get(applicationJson).schema.refInfo.ref.types.contains("string")); assertEquals(co.requestBody.content.get(applicationJson).schema.refInfo.ref.format, "date-time"); assertTrue(co.responses.get("200").content.get(applicationJson).schema.refInfo.ref.types.contains("string")); @@ -2316,8 +2313,8 @@ public void testIsXPresence() { path = "/date_time_with_validation/{dateTime}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - assertTrue(co.parameters.pathParameters.get(0).schema.types.contains("string")); - assertEquals(co.parameters.pathParameters.get(0).schema.format, "date-time"); + assertTrue(co.parametersInfo.parameters.pathParameters.get(0).schema.types.contains("string")); + assertEquals(co.parametersInfo.parameters.pathParameters.get(0).schema.format, "date-time"); assertTrue(co.requestBody.content.get(applicationJson).schema.types.contains("string")); assertEquals(co.requestBody.content.get(applicationJson).schema.format, "date-time"); assertTrue(co.responses.get("200").content.get(applicationJson).schema.types.contains("string")); @@ -2326,14 +2323,14 @@ public void testIsXPresence() { path = "/null/{param}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - assertTrue(co.parameters.pathParameters.get(0).schema.types.contains("null")); + assertTrue(co.parametersInfo.parameters.pathParameters.get(0).schema.types.contains("null")); assertTrue(co.requestBody.content.get(applicationJson).schema.types.contains("null")); assertTrue(co.responses.get("200").content.get(applicationJson).schema.types.contains("null")); path = "/ref_null/{param}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - assertTrue(co.parameters.pathParameters.get(0).schema.refInfo.ref.types.contains("null")); + assertTrue(co.parametersInfo.parameters.pathParameters.get(0).schema.refInfo.ref.types.contains("null")); assertTrue(co.requestBody.content.get(applicationJson).schema.refInfo.ref.types.contains("null")); assertTrue(co.responses.get("200").content.get(applicationJson).schema.refInfo.ref.types.contains("null")); } @@ -2440,7 +2437,7 @@ public void testQueryParametersGetHasValidation() { String path = "/queryParametersWithValidation"; Operation operation = openAPI.getPaths().get(path).getPost(); CodegenOperation co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - List params = co.parameters.queryParameters; + List params = co.parametersInfo.parameters.queryParameters; assertEquals(params.size(), 50); for (CodegenParameter param : params) { assertTrue(param.schema.isCustomSchema()); @@ -2456,7 +2453,7 @@ public void testHeaderParametersGetHasValidation() { String path = "/headerParametersWithValidation"; Operation operation = openAPI.getPaths().get(path).getPost(); CodegenOperation co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - List params = co.parameters.headerParameters; + List params = co.parametersInfo.parameters.headerParameters; assertEquals(params.size(), 50); for (CodegenParameter param : params) { assertTrue(param.schema.isCustomSchema()); @@ -2472,7 +2469,7 @@ public void testCookieParametersGetHasValidation() { String path = "/cookieParametersWithValidation"; Operation operation = openAPI.getPaths().get(path).getPost(); CodegenOperation co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - List params = co.parameters.cookieParameters; + List params = co.parametersInfo.parameters.cookieParameters; assertEquals(params.size(), 50); for (CodegenParameter param : params) { assertTrue(param.schema.isCustomSchema()); @@ -2488,7 +2485,7 @@ public void testPathParametersGetHasValidation() { String path = "/pathParametersWithValidation"; Operation operation = openAPI.getPaths().get(path).getPost(); CodegenOperation co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - List params = co.parameters.pathParameters; + List params = co.parametersInfo.parameters.pathParameters; assertEquals(params.size(), 50); for (CodegenParameter param : params) { assertTrue(param.schema.isCustomSchema()); @@ -2595,8 +2592,8 @@ public void testVarsAndRequiredVarsPresent() { operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - assertEquals(co.parameters.pathParameters.get(0).schema.properties.size(), 3); - assertEquals(co.parameters.pathParameters.get(0).schema.requiredProperties.size(), 2); + assertEquals(co.parametersInfo.parameters.pathParameters.get(0).schema.properties.size(), 3); + assertEquals(co.parametersInfo.parameters.pathParameters.get(0).schema.requiredProperties.size(), 2); CodegenKey applicationJson = codegen.getKey("application/json", "misc"); assertEquals(co.requestBody.content.get(applicationJson).schema.properties.size(), 3); assertEquals(co.requestBody.content.get(applicationJson).schema.requiredProperties.size(), 2); @@ -2728,7 +2725,7 @@ public void testHasVarsInParameter() { path = "/array_with_validations_in_items/{items}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - assertTrue(co.parameters.pathParameters.get(0).schema.properties == null); + assertTrue(co.parametersInfo.parameters.pathParameters.get(0).schema.properties == null); CodegenKey ck = codegen.getKey("application/json", "misc"); assertTrue(co.requestBody.content.get(ck).schema.properties == null); @@ -2736,7 +2733,7 @@ public void testHasVarsInParameter() { operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - assertTrue(co.parameters.pathParameters.get(0).schema.properties.size() == 3); + assertTrue(co.parametersInfo.parameters.pathParameters.get(0).schema.properties.size() == 3); assertTrue(co.requestBody.content.get(ck).schema.properties.size() == 3); } @@ -2894,7 +2891,7 @@ public void testHasRequiredInParameters() { "ComposedHasAllofReqPropNoPropertiesHasRequired", // TODO: hasRequired should be true, fix this "ComposedHasAllofReqPropHasPropertiesHasRequired" // TODO: hasRequired should be true, fix this )); - for (CodegenParameter param : co.parameters.pathParameters) { + for (CodegenParameter param : co.parametersInfo.parameters.pathParameters) { if (!modelNamesWithoutRequired.contains(param.name)) { // All variables must be in the above sets fail(); @@ -3012,7 +3009,7 @@ public void testBooleansSetForIntSchemas() { path = "/UnboundedInteger"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - cpa = co.parameters.pathParameters.get(0); + cpa = co.parametersInfo.parameters.pathParameters.get(0); assertTrue(cpa.schema.types.contains("integer")); assertNull(cpa.schema.format); CodegenRequestBody crb = co.requestBody; @@ -3026,7 +3023,7 @@ public void testBooleansSetForIntSchemas() { path = "/Int32"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - cpa = co.parameters.pathParameters.get(0); + cpa = co.parametersInfo.parameters.pathParameters.get(0); assertTrue(cpa.schema.types.contains("integer")); assertEquals(cpa.schema.format, "int32"); crb = co.requestBody; @@ -3039,7 +3036,7 @@ public void testBooleansSetForIntSchemas() { path = "/Int64"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(operation, getOperationPath(path, "post"), null); - cpa = co.parameters.pathParameters.get(0); + cpa = co.parametersInfo.parameters.pathParameters.get(0); assertTrue(cpa.schema.types.contains("integer")); assertEquals(cpa.schema.format, "int64"); crb = co.requestBody; @@ -3327,42 +3324,42 @@ public void testComposedRequestQueryParamTypes() { path = "/ComposedObject"; co = codegen.fromOperation(openAPI.getPaths().get(path).getGet(), getOperationPath(path, "get"), null); - cp = co.parameters.queryParameters.get(0); + cp = co.parametersInfo.parameters.queryParameters.get(0); assertTrue(cp.schema.types.contains("object")); path = "/ComposedNumber"; co = codegen.fromOperation(openAPI.getPaths().get(path).getGet(), getOperationPath(path, "get"), null); - cp = co.parameters.queryParameters.get(0); + cp = co.parametersInfo.parameters.queryParameters.get(0); assertTrue(cp.schema.types.contains("number")); path = "/ComposedInteger"; co = codegen.fromOperation(openAPI.getPaths().get(path).getGet(), getOperationPath(path, "get"), null); - cp = co.parameters.queryParameters.get(0); + cp = co.parametersInfo.parameters.queryParameters.get(0); assertTrue(cp.schema.types.contains("integer")); path = "/ComposedString"; co = codegen.fromOperation(openAPI.getPaths().get(path).getGet(), getOperationPath(path, "get"), null); - cp = co.parameters.queryParameters.get(0); + cp = co.parametersInfo.parameters.queryParameters.get(0); assertTrue(cp.schema.types.contains("string")); path = "/ComposedBool"; co = codegen.fromOperation(openAPI.getPaths().get(path).getGet(), getOperationPath(path, "get"), null); - cp = co.parameters.queryParameters.get(0); + cp = co.parametersInfo.parameters.queryParameters.get(0); assertTrue(cp.schema.types.contains("boolean")); path = "/ComposedArray"; co = codegen.fromOperation(openAPI.getPaths().get(path).getGet(), getOperationPath(path, "get"), null); - cp = co.parameters.queryParameters.get(0); + cp = co.parametersInfo.parameters.queryParameters.get(0); assertTrue(cp.schema.types.contains("array")); path = "/ComposedNone"; co = codegen.fromOperation(openAPI.getPaths().get(path).getGet(), getOperationPath(path, "get"), null); - cp = co.parameters.queryParameters.get(0); + cp = co.parametersInfo.parameters.queryParameters.get(0); assertTrue(cp.schema.types.contains("null")); path = "/ComposedAnyType"; co = codegen.fromOperation(openAPI.getPaths().get(path).getGet(), getOperationPath(path, "get"), null); - cp = co.parameters.queryParameters.get(0); + cp = co.parametersInfo.parameters.queryParameters.get(0); assertTrue(cp.schema.types == null); } @@ -3451,7 +3448,7 @@ public void testRequestParameterContent() { path = "/jsonQueryParams"; co = codegen.fromOperation(openAPI.getPaths().get(path).getGet(), getOperationPath(path, "get"), null); - CodegenParameter coordinatesInlineSchema = co.parameters.queryParameters.get(0); + CodegenParameter coordinatesInlineSchema = co.parametersInfo.parameters.queryParameters.get(0); LinkedHashMap content = coordinatesInlineSchema.content; assertNotNull(content); CodegenKey ck = codegen.getKey("application/json", "misc"); @@ -3463,7 +3460,7 @@ public void testRequestParameterContent() { assertEquals(cp.refInfo, null); assertEquals(cp.jsonPathPiece.original, "schema"); - CodegenParameter coordinatesReferencedSchema = co.parameters.queryParameters.get(1); + CodegenParameter coordinatesReferencedSchema = co.parametersInfo.parameters.queryParameters.get(1); content = coordinatesReferencedSchema.content; mt = content.get(ck); assertNull(mt.encoding); @@ -3559,13 +3556,13 @@ public void testResponseContentAndHeader() { path = "/jsonQueryParams"; co = codegen.fromOperation(openAPI.getPaths().get(path).getGet(), getOperationPath(path, "get"), null); - CodegenParameter coordinatesInlineSchema = co.parameters.queryParameters.get(0); + CodegenParameter coordinatesInlineSchema = co.parametersInfo.parameters.queryParameters.get(0); LinkedHashMap content = coordinatesInlineSchema.content; assertNotNull(content); CodegenKey ck = codegen.getKey("application/json", "misc"); assertEquals(content.keySet(), new HashSet<>(Arrays.asList(ck))); - CodegenParameter schemaParam = co.parameters.queryParameters.get(2); + CodegenParameter schemaParam = co.parametersInfo.parameters.queryParameters.get(2); assertEquals(schemaParam.schema.jsonPathPiece.original, "schema"); CodegenResponse cr = co.responses.get("200");