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

Java client, adds Parameters class #399

Merged
merged 29 commits into from
Mar 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
807ee4b
Renames path item schema in java client to routeschema
spacether Mar 5, 2024
40ab73d
Adds parametersInfo property to operation class
spacether Mar 5, 2024
b6ddc7a
Parameters classes generated
spacether Mar 5, 2024
caa565c
Removes unused doc
spacether Mar 5, 2024
d7f437f
Sample regen to eliminate extra parameter files
spacether Mar 5, 2024
db1da4f
Fixes parameter class filenames
spacether Mar 5, 2024
bfe0587
Removes ? from query parameter serialization
spacether Mar 5, 2024
4dd5c0b
Removes query parameter differentiation
spacether Mar 6, 2024
288b476
Removes lingering NonQueryParameter reference
spacether Mar 6, 2024
c17ce79
Parameter serialize returns AbstractMap.SimpleEntry
spacether Mar 6, 2024
62078cc
Adds HeadersSerializer
spacether Mar 6, 2024
0b143d2
Adds cookie serializer
spacether Mar 6, 2024
e690082
Adds query and header serializers
spacether Mar 6, 2024
ef5a3c5
Fixes cookie serializer
spacether Mar 6, 2024
ba1eb09
Adds path parameters serializer
spacether Mar 6, 2024
1cfdba3
Adds QuerySerializerTest
spacether Mar 6, 2024
a4cf7d8
Adds headers serializer test
spacether Mar 6, 2024
f6d4105
Samples regen
spacether Mar 6, 2024
4ca9de9
Fixes optional parameter detection
spacether Mar 6, 2024
f868091
Regenerates samples
spacether Mar 6, 2024
464d3f1
Fixes java tests
spacether Mar 6, 2024
cc73337
Sample regen with unused java files deleted
spacether Mar 6, 2024
99c02df
Sample regen to fix type error
spacether Mar 6, 2024
9ab2604
Adjsut type signature in cookie serializer to fix error
spacether Mar 7, 2024
1c0b098
Sample regen with type fixes
spacether Mar 7, 2024
4ceab94
Fixes java typo
spacether Mar 7, 2024
b698f40
Samples regen, adds mising import
spacether Mar 7, 2024
f95f947
Does not use var in testing, fixes type issues
spacether Mar 7, 2024
c2067ab
Adds missing CookieSerializer
spacether Mar 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions samples/client/3_0_3_unit_test/java/.openapi-generator/FILES
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
);
}

Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
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<String, MediaType<?, ?>> content;

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

protected Map<String, String> serialize(@Nullable Object inData, boolean validate, SchemaConfiguration configuration) {
@Override
public AbstractMap.SimpleEntry<String, String> serialize(@Nullable Object inData) {
for (Map.Entry<String, MediaType<?, ?>> 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");
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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<String, Parameter> parameters;

protected CookieSerializer(Map<String, Parameter> parameters) {
this.parameters = parameters;
}

public String serialize(Map<String, ?> inData) {
String result = "";
Map<String, ?> sortedData = new TreeMap<>(inData);
for (Map.Entry<String, ?> 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<String, String> serialized = parameter.serialize(value);
if (result.isEmpty()) {
result = serialized.getValue();
} else {
result = result + "; " + serialized.getValue();
}
}
return result;
}
}
Original file line number Diff line number Diff line change
@@ -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<String, Parameter> parameters;

protected HeadersSerializer(Map<String, Parameter> parameters) {
this.parameters = parameters;
}

public Map<String, List<String>> serialize(Map<String, ?> inData) {
Map<String, List<String>> results = new LinkedHashMap<>();
for (Map.Entry<String, ?> 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<String, String> serialized = parameter.serialize(value);
results.put(serialized.getKey(), List.of(serialized.getValue()));
}
return results;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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<String, String> serialize(@Nullable Object inData);
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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<String, Parameter> parameters;

protected PathSerializer(Map<String, Parameter> parameters) {
this.parameters = parameters;
}

public String serialize(Map<String, ?> inData, String pathWithPlaceholders) {
String result = pathWithPlaceholders;
for (Map.Entry<String, ?> 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<String, String> serialized = parameter.serialize(value);
result = result.replace("{" + mapKey + "}", serialized.getValue());
}
return result;
}
}

This file was deleted.

Loading