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 a10ac39dd60..ee787913b5c 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 @@ -179,6 +179,7 @@ src/main/java/org/openapijsonschematools/client/components/schemas/UriTemplateFo src/main/java/org/openapijsonschematools/client/configurations/ApiConfiguration.java src/main/java/org/openapijsonschematools/client/configurations/JsonSchemaKeywordFlags.java src/main/java/org/openapijsonschematools/client/configurations/SchemaConfiguration.java +src/main/java/org/openapijsonschematools/client/exceptions/ApiException.java src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java @@ -191,8 +192,9 @@ src/main/java/org/openapijsonschematools/client/requestbody/GenericRequestBody.j src/main/java/org/openapijsonschematools/client/requestbody/RequestBodySerializer.java src/main/java/org/openapijsonschematools/client/requestbody/SerializedRequestBody.java src/main/java/org/openapijsonschematools/client/response/ApiResponse.java -src/main/java/org/openapijsonschematools/client/response/DeserializedApiResponse.java +src/main/java/org/openapijsonschematools/client/response/DeserializedHttpResponse.java src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java +src/main/java/org/openapijsonschematools/client/response/ResponsesDeserializer.java src/main/java/org/openapijsonschematools/client/schemas/AnyTypeJsonSchema.java src/main/java/org/openapijsonschematools/client/schemas/BooleanJsonSchema.java src/main/java/org/openapijsonschematools/client/schemas/DateJsonSchema.java diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ApiException.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ApiException.java new file mode 100644 index 00000000000..d308d4b90a1 --- /dev/null +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ApiException.java @@ -0,0 +1,13 @@ +package org.openapijsonschematools.client.exceptions; + +import java.net.http.HttpResponse; + +@SuppressWarnings("serial") +public class ApiException extends BaseException { + public HttpResponse response; + + public ApiException(String s, HttpResponse response) { + super(s); + this.response = response; + } +} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java index 3d7b352080c..3bea6999da1 100644 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java @@ -2,4 +2,7 @@ @SuppressWarnings("serial") public class BaseException extends RuntimeException { + public BaseException(String s) { + super(s); + } } \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java index 7f0805b1be8..424762f3cc9 100644 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java @@ -3,6 +3,6 @@ @SuppressWarnings("serial") public class InvalidAdditionalPropertyException extends BaseException { public InvalidAdditionalPropertyException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java index 73fafa999af..02131fff34d 100644 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java @@ -3,6 +3,6 @@ @SuppressWarnings("serial") public class InvalidTypeException extends BaseException { public InvalidTypeException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/UnsetPropertyException.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/UnsetPropertyException.java index cb743b6a97c..f709a440cb3 100644 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/UnsetPropertyException.java +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/UnsetPropertyException.java @@ -3,6 +3,6 @@ @SuppressWarnings("serial") public class UnsetPropertyException extends BaseException { public UnsetPropertyException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ValidationException.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ValidationException.java index 8c217a9f9dc..bd2e7089700 100644 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ValidationException.java +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ValidationException.java @@ -3,6 +3,6 @@ @SuppressWarnings("serial") public class ValidationException extends BaseException { public ValidationException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/response/DeserializedHttpResponse.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/response/DeserializedHttpResponse.java new file mode 100644 index 00000000000..d9c62c28c70 --- /dev/null +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/response/DeserializedHttpResponse.java @@ -0,0 +1,6 @@ +package org.openapijsonschematools.client.response; + +import java.net.http.HttpResponse; + +public record DeserializedHttpResponse(SealedBodyOutputClass body, HeaderOutputClass headers) { +} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java index 766af80f088..5bc67aaf446 100644 --- a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java @@ -63,7 +63,7 @@ protected T deserializeBody(String contentType, byte[] body, JsonSchema s throw new RuntimeException("Deserialization for contentType="+contentType+" has not yet been implemented."); } - public ApiResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + public DeserializedHttpResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { Optional contentTypeInfo = response.headers().firstValue("Content-Type"); if (contentTypeInfo.isEmpty()) { throw new RuntimeException("Invalid response returned, Content-Type header is missing and it must be included"); @@ -78,6 +78,6 @@ public ApiResponse deserialize(HttpResponse(response, body, headers); + return new DeserializedHttpResponse<>(body, headers); } } \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponsesDeserializer.java b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponsesDeserializer.java new file mode 100644 index 00000000000..20b56db17da --- /dev/null +++ b/samples/client/3_0_3_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponsesDeserializer.java @@ -0,0 +1,8 @@ +package org.openapijsonschematools.client.response; + +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import java.net.http.HttpResponse; + +public interface ResponsesDeserializer { + SealedResponseClass deserialize(HttpResponse response, SchemaConfiguration configuration); +} \ No newline at end of file diff --git a/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/response/ResponseDeserializerTest.java b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/response/ResponseDeserializerTest.java index 50795dc89a9..76dc7f0165f 100644 --- a/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/response/ResponseDeserializerTest.java +++ b/samples/client/3_0_3_unit_test/java/src/test/java/org/openapijsonschematools/client/response/ResponseDeserializerTest.java @@ -157,8 +157,7 @@ public void testDeserializeApplicationJsonNull() { byte[] bodyBytes = toJson(null).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -174,8 +173,7 @@ public void testDeserializeApplicationJsonTrue() { byte[] bodyBytes = toJson(true).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -191,8 +189,7 @@ public void testDeserializeApplicationJsonFalse() { byte[] bodyBytes = toJson(false).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -208,8 +205,7 @@ public void testDeserializeApplicationJsonInt() { byte[] bodyBytes = toJson(1).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -225,8 +221,7 @@ public void testDeserializeApplicationJsonFloat() { byte[] bodyBytes = toJson(3.14).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -242,8 +237,7 @@ public void testDeserializeApplicationJsonString() { byte[] bodyBytes = toJson("a").getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } 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 3de3fb07006..c4948dce9a5 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 @@ -291,6 +291,7 @@ src/main/java/org/openapijsonschematools/client/components/schemas/ValidateAgain src/main/java/org/openapijsonschematools/client/configurations/ApiConfiguration.java src/main/java/org/openapijsonschematools/client/configurations/JsonSchemaKeywordFlags.java src/main/java/org/openapijsonschematools/client/configurations/SchemaConfiguration.java +src/main/java/org/openapijsonschematools/client/exceptions/ApiException.java src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java @@ -303,8 +304,9 @@ src/main/java/org/openapijsonschematools/client/requestbody/GenericRequestBody.j src/main/java/org/openapijsonschematools/client/requestbody/RequestBodySerializer.java src/main/java/org/openapijsonschematools/client/requestbody/SerializedRequestBody.java src/main/java/org/openapijsonschematools/client/response/ApiResponse.java -src/main/java/org/openapijsonschematools/client/response/DeserializedApiResponse.java +src/main/java/org/openapijsonschematools/client/response/DeserializedHttpResponse.java src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java +src/main/java/org/openapijsonschematools/client/response/ResponsesDeserializer.java src/main/java/org/openapijsonschematools/client/schemas/AnyTypeJsonSchema.java src/main/java/org/openapijsonschematools/client/schemas/BooleanJsonSchema.java src/main/java/org/openapijsonschematools/client/schemas/DateJsonSchema.java diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ApiException.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ApiException.java new file mode 100644 index 00000000000..d308d4b90a1 --- /dev/null +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ApiException.java @@ -0,0 +1,13 @@ +package org.openapijsonschematools.client.exceptions; + +import java.net.http.HttpResponse; + +@SuppressWarnings("serial") +public class ApiException extends BaseException { + public HttpResponse response; + + public ApiException(String s, HttpResponse response) { + super(s); + this.response = response; + } +} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java index 3d7b352080c..3bea6999da1 100644 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java @@ -2,4 +2,7 @@ @SuppressWarnings("serial") public class BaseException extends RuntimeException { + public BaseException(String s) { + super(s); + } } \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java index 7f0805b1be8..424762f3cc9 100644 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java @@ -3,6 +3,6 @@ @SuppressWarnings("serial") public class InvalidAdditionalPropertyException extends BaseException { public InvalidAdditionalPropertyException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java index 73fafa999af..02131fff34d 100644 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java @@ -3,6 +3,6 @@ @SuppressWarnings("serial") public class InvalidTypeException extends BaseException { public InvalidTypeException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/UnsetPropertyException.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/UnsetPropertyException.java index cb743b6a97c..f709a440cb3 100644 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/UnsetPropertyException.java +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/UnsetPropertyException.java @@ -3,6 +3,6 @@ @SuppressWarnings("serial") public class UnsetPropertyException extends BaseException { public UnsetPropertyException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ValidationException.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ValidationException.java index 8c217a9f9dc..bd2e7089700 100644 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ValidationException.java +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/exceptions/ValidationException.java @@ -3,6 +3,6 @@ @SuppressWarnings("serial") public class ValidationException extends BaseException { public ValidationException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/response/DeserializedHttpResponse.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/response/DeserializedHttpResponse.java new file mode 100644 index 00000000000..d9c62c28c70 --- /dev/null +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/response/DeserializedHttpResponse.java @@ -0,0 +1,6 @@ +package org.openapijsonschematools.client.response; + +import java.net.http.HttpResponse; + +public record DeserializedHttpResponse(SealedBodyOutputClass body, HeaderOutputClass headers) { +} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java index 766af80f088..5bc67aaf446 100644 --- a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java @@ -63,7 +63,7 @@ protected T deserializeBody(String contentType, byte[] body, JsonSchema s throw new RuntimeException("Deserialization for contentType="+contentType+" has not yet been implemented."); } - public ApiResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + public DeserializedHttpResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { Optional contentTypeInfo = response.headers().firstValue("Content-Type"); if (contentTypeInfo.isEmpty()) { throw new RuntimeException("Invalid response returned, Content-Type header is missing and it must be included"); @@ -78,6 +78,6 @@ public ApiResponse deserialize(HttpResponse(response, body, headers); + return new DeserializedHttpResponse<>(body, headers); } } \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponsesDeserializer.java b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponsesDeserializer.java new file mode 100644 index 00000000000..20b56db17da --- /dev/null +++ b/samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/response/ResponsesDeserializer.java @@ -0,0 +1,8 @@ +package org.openapijsonschematools.client.response; + +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import java.net.http.HttpResponse; + +public interface ResponsesDeserializer { + SealedResponseClass deserialize(HttpResponse response, SchemaConfiguration configuration); +} \ No newline at end of file diff --git a/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/response/ResponseDeserializerTest.java b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/response/ResponseDeserializerTest.java index 50795dc89a9..76dc7f0165f 100644 --- a/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/response/ResponseDeserializerTest.java +++ b/samples/client/3_1_0_unit_test/java/src/test/java/org/openapijsonschematools/client/response/ResponseDeserializerTest.java @@ -157,8 +157,7 @@ public void testDeserializeApplicationJsonNull() { byte[] bodyBytes = toJson(null).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -174,8 +173,7 @@ public void testDeserializeApplicationJsonTrue() { byte[] bodyBytes = toJson(true).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -191,8 +189,7 @@ public void testDeserializeApplicationJsonFalse() { byte[] bodyBytes = toJson(false).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -208,8 +205,7 @@ public void testDeserializeApplicationJsonInt() { byte[] bodyBytes = toJson(1).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -225,8 +221,7 @@ public void testDeserializeApplicationJsonFloat() { byte[] bodyBytes = toJson(3.14).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -242,8 +237,7 @@ public void testDeserializeApplicationJsonString() { byte[] bodyBytes = toJson("a").getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } diff --git a/samples/client/petstore/java/.openapi-generator/FILES b/samples/client/petstore/java/.openapi-generator/FILES index a6fa353c510..cdbb89acbeb 100644 --- a/samples/client/petstore/java/.openapi-generator/FILES +++ b/samples/client/petstore/java/.openapi-generator/FILES @@ -505,6 +505,7 @@ src/main/java/org/openapijsonschematools/client/components/securityschemes/Petst src/main/java/org/openapijsonschematools/client/configurations/ApiConfiguration.java src/main/java/org/openapijsonschematools/client/configurations/JsonSchemaKeywordFlags.java src/main/java/org/openapijsonschematools/client/configurations/SchemaConfiguration.java +src/main/java/org/openapijsonschematools/client/exceptions/ApiException.java src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java @@ -514,25 +515,30 @@ 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/ParameterStyle.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/PathParameters.java +src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/Responses.java 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/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/Schema0.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/parameters/parameter0/PathParamSchema0.java src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/HeaderParameters.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/Schema0.java 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/QueryParameters.java +src/main/java/org/openapijsonschematools/client/paths/fake/delete/Responses.java src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/parameter1/Schema1.java src/main/java/org/openapijsonschematools/client/paths/fake/delete/parameters/parameter2/Schema2.java @@ -544,6 +550,7 @@ src/main/java/org/openapijsonschematools/client/paths/fake/delete/security/FakeD src/main/java/org/openapijsonschematools/client/paths/fake/get/HeaderParameters.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 src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/parameter1/Schema1.java src/main/java/org/openapijsonschematools/client/paths/fake/get/parameters/parameter2/Schema2.java @@ -555,47 +562,58 @@ src/main/java/org/openapijsonschematools/client/paths/fake/get/responses/Code200 src/main/java/org/openapijsonschematools/client/paths/fake/get/responses/Code404Response.java src/main/java/org/openapijsonschematools/client/paths/fake/get/responses/code404response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fake/patch/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fake/patch/Responses.java src/main/java/org/openapijsonschematools/client/paths/fake/patch/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fake/patch/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fake/post/FakePostSecurityInfo.java src/main/java/org/openapijsonschematools/client/paths/fake/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fake/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fake/post/requestbody/content/applicationxwwwformurlencoded/ApplicationxwwwformurlencodedSchema.java src/main/java/org/openapijsonschematools/client/paths/fake/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fake/post/responses/Code404Response.java src/main/java/org/openapijsonschematools/client/paths/fake/post/security/FakePostSecurityRequirementObject0.java src/main/java/org/openapijsonschematools/client/paths/fakeadditionalpropertieswitharrayofenums/get/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakeadditionalpropertieswitharrayofenums/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakeadditionalpropertieswitharrayofenums/get/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakeadditionalpropertieswitharrayofenums/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakeadditionalpropertieswitharrayofenums/get/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakebodywithfileschema/put/RequestBody.java +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/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/Responses.java 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/QueryParameters.java +src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/parameter1/Schema1.java src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/parameters/parameter2/Schema2.java src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/FakeclassnametestPatchSecurityInfo.java src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/Responses.java 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/PathParameters.java +src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/responses/CodedefaultResponse.java +src/main/java/org/openapijsonschematools/client/paths/fakehealth/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakehealth/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakehealth/get/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakeinlineadditionalproperties/post/RequestBody.java +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/QueryParameters.java src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/parameters/parameter1/Schema1.java src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/requestbody/content/applicationjson/ApplicationjsonSchema.java @@ -604,31 +622,38 @@ src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/responses/code200response/content/multipartformdata/MultipartformdataSchema.java src/main/java/org/openapijsonschematools/client/paths/fakejsonformdata/get/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakejsonformdata/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakejsonformdata/get/requestbody/content/applicationxwwwformurlencoded/ApplicationxwwwformurlencodedSchema.java src/main/java/org/openapijsonschematools/client/paths/fakejsonformdata/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakejsonpatch/patch/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakejsonpatch/patch/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakejsonpatch/patch/requestbody/content/applicationjsonpatchjson/ApplicationjsonpatchjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakejsonpatch/patch/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakejsonwithcharset/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakejsonwithcharset/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakejsonwithcharset/post/requestbody/content/applicationjsoncharsetutf8/Applicationjsoncharsetutf8Schema.java src/main/java/org/openapijsonschematools/client/paths/fakejsonwithcharset/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakejsonwithcharset/post/responses/code200response/content/applicationjsoncharsetutf8/Applicationjsoncharsetutf8Schema.java src/main/java/org/openapijsonschematools/client/paths/fakemultiplerequestbodycontenttypes/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakemultiplerequestbodycontenttypes/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakemultiplerequestbodycontenttypes/post/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakemultiplerequestbodycontenttypes/post/requestbody/content/multipartformdata/MultipartformdataSchema.java src/main/java/org/openapijsonschematools/client/paths/fakemultiplerequestbodycontenttypes/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakemultiplerequestbodycontenttypes/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java +src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/responses/Code202Response.java src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/responses/code202response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/FakemultiplesecuritiesGetSecurityInfo.java +src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/responses/code200response/content/applicationjson/ApplicationjsonSchema.java 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/QueryParameters.java +src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/CookieParameters.java @@ -636,6 +661,7 @@ src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ab 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 +src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/parameter1/Schema1.java src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/parameters/parameter10/Schema10.java @@ -659,64 +685,80 @@ src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ab src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakepemcontenttype/get/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakepemcontenttype/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakepemcontenttype/get/requestbody/content/applicationxpemfile/ApplicationxpemfileSchema.java 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/PathParameters.java src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/requestbody/content/multipartformdata/MultipartformdataSchema.java 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/QueryParameters.java +src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/parameters/parameter0/content/applicationjson/Schema0.java src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/responses/code200response/content/applicationjson/ApplicationjsonSchema.java +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/QueryParameters.java +src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakerefsarraymodel/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakerefsarraymodel/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakerefsarraymodel/post/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsarraymodel/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakerefsarraymodel/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsarrayofenums/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakerefsarrayofenums/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakerefsarrayofenums/post/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsarrayofenums/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakerefsarrayofenums/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsboolean/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakerefsboolean/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakerefsboolean/post/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsboolean/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakerefsboolean/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefscomposedoneofnumberwithvalidations/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakerefscomposedoneofnumberwithvalidations/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakerefscomposedoneofnumberwithvalidations/post/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefscomposedoneofnumberwithvalidations/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakerefscomposedoneofnumberwithvalidations/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsenum/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakerefsenum/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakerefsenum/post/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsenum/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakerefsenum/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsmammal/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakerefsmammal/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakerefsmammal/post/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsmammal/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakerefsmammal/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsnumber/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakerefsnumber/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakerefsnumber/post/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsnumber/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakerefsnumber/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsobjectmodelwithrefprops/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakerefsobjectmodelwithrefprops/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakerefsobjectmodelwithrefprops/post/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsobjectmodelwithrefprops/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakerefsobjectmodelwithrefprops/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsstring/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakerefsstring/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakerefsstring/post/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakerefsstring/post/responses/Code200Response.java 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/QueryParameters.java +src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/Responses.java src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/parameter1/Schema1.java src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/parameter2/Schema2.java @@ -725,17 +767,21 @@ src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/parameters/parameter5/Schema5.java src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakeuploaddownloadfile/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakeuploaddownloadfile/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakeuploaddownloadfile/post/requestbody/content/applicationoctetstream/ApplicationoctetstreamSchema.java src/main/java/org/openapijsonschematools/client/paths/fakeuploaddownloadfile/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakeuploaddownloadfile/post/responses/code200response/content/applicationoctetstream/ApplicationoctetstreamSchema.java src/main/java/org/openapijsonschematools/client/paths/fakeuploadfile/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakeuploadfile/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakeuploadfile/post/requestbody/content/multipartformdata/MultipartformdataSchema.java src/main/java/org/openapijsonschematools/client/paths/fakeuploadfile/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakeuploadfile/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakeuploadfiles/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/fakeuploadfiles/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakeuploadfiles/post/requestbody/content/multipartformdata/MultipartformdataSchema.java src/main/java/org/openapijsonschematools/client/paths/fakeuploadfiles/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakeuploadfiles/post/responses/code200response/content/applicationjson/ApplicationjsonSchema.java +src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code1XXResponse.java src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code2XXResponse.java @@ -749,6 +795,7 @@ src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/ src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/code4xxresponse/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/code5xxresponse/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/foo/get/FooGetServerInfo.java +src/main/java/org/openapijsonschematools/client/paths/foo/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/foo/get/responses/CodedefaultResponse.java src/main/java/org/openapijsonschematools/client/paths/foo/get/responses/codedefaultresponse/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/foo/get/servers/FooGetServer0.java @@ -756,6 +803,7 @@ src/main/java/org/openapijsonschematools/client/paths/foo/get/servers/FooGetServ src/main/java/org/openapijsonschematools/client/paths/foo/get/servers/server1/Variables.java src/main/java/org/openapijsonschematools/client/paths/pet/post/PetPostSecurityInfo.java src/main/java/org/openapijsonschematools/client/paths/pet/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/pet/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/pet/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/pet/post/responses/Code405Response.java src/main/java/org/openapijsonschematools/client/paths/pet/post/security/PetPostSecurityRequirementObject0.java @@ -763,6 +811,7 @@ src/main/java/org/openapijsonschematools/client/paths/pet/post/security/PetPostS src/main/java/org/openapijsonschematools/client/paths/pet/post/security/PetPostSecurityRequirementObject2.java src/main/java/org/openapijsonschematools/client/paths/pet/put/PetPutSecurityInfo.java src/main/java/org/openapijsonschematools/client/paths/pet/put/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/pet/put/Responses.java src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code400Response.java src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code404Response.java src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code405Response.java @@ -771,6 +820,7 @@ src/main/java/org/openapijsonschematools/client/paths/pet/put/security/PetPutSec src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/PetfindbystatusServerInfo.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 src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/responses/Code400Response.java @@ -782,6 +832,7 @@ src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/servers/Pe src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/servers/server1/Variables.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 src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/responses/Code400Response.java @@ -790,6 +841,7 @@ src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/security src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/HeaderParameters.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 src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/parameters/parameter1/Schema1.java src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/responses/Code400Response.java @@ -797,6 +849,7 @@ src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/security/P src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/security/PetpetidDeleteSecurityRequirementObject1.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 src/main/java/org/openapijsonschematools/client/paths/petpetid/get/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code400Response.java @@ -807,6 +860,7 @@ src/main/java/org/openapijsonschematools/client/paths/petpetid/get/security/Petp 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 +src/main/java/org/openapijsonschematools/client/paths/petpetid/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/petpetid/post/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/petpetid/post/requestbody/content/applicationxwwwformurlencoded/ApplicationxwwwformurlencodedSchema.java src/main/java/org/openapijsonschematools/client/paths/petpetid/post/responses/Code405Response.java @@ -815,25 +869,31 @@ src/main/java/org/openapijsonschematools/client/paths/petpetid/post/security/Pet 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 +src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/requestbody/content/multipartformdata/MultipartformdataSchema.java src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/security/PetpetiduploadimagePostSecurityRequirementObject0.java +src/main/java/org/openapijsonschematools/client/paths/solidus/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/solidus/get/responses/Code200Response.java +src/main/java/org/openapijsonschematools/client/paths/storeinventory/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/storeinventory/get/StoreinventoryGetSecurityInfo.java src/main/java/org/openapijsonschematools/client/paths/storeinventory/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/storeinventory/get/security/StoreinventoryGetSecurityRequirementObject0.java src/main/java/org/openapijsonschematools/client/paths/storeorder/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/storeorder/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/storeorder/post/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/storeorder/post/responses/Code200Response.java 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/PathParameters.java +src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/Responses.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/PathParameters.java +src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code400Response.java @@ -841,13 +901,17 @@ src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/resp src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/code200response/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/code200response/content/applicationxml/ApplicationxmlSchema.java src/main/java/org/openapijsonschematools/client/paths/user/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/user/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/user/post/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/user/post/responses/CodedefaultResponse.java src/main/java/org/openapijsonschematools/client/paths/usercreatewitharray/post/RequestBody.java +src/main/java/org/openapijsonschematools/client/paths/usercreatewitharray/post/Responses.java src/main/java/org/openapijsonschematools/client/paths/usercreatewitharray/post/responses/CodedefaultResponse.java 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/QueryParameters.java +src/main/java/org/openapijsonschematools/client/paths/userlogin/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/userlogin/get/parameters/parameter0/Schema0.java src/main/java/org/openapijsonschematools/client/paths/userlogin/get/parameters/parameter1/Schema1.java src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/Code200Response.java @@ -857,11 +921,14 @@ src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/co src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/code200response/content/applicationxml/ApplicationxmlSchema.java src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/code200response/headers/xexpiresafter/XExpiresAfterSchema.java 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/PathParameters.java +src/main/java/org/openapijsonschematools/client/paths/userusername/delete/Responses.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/PathParameters.java +src/main/java/org/openapijsonschematools/client/paths/userusername/get/Responses.java src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code200Response.java src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code400Response.java src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code404Response.java @@ -869,6 +936,7 @@ src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/code200response/content/applicationxml/ApplicationxmlSchema.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 src/main/java/org/openapijsonschematools/client/paths/userusername/put/requestbody/content/applicationjson/ApplicationjsonSchema.java src/main/java/org/openapijsonschematools/client/paths/userusername/put/responses/Code400Response.java src/main/java/org/openapijsonschematools/client/paths/userusername/put/responses/Code404Response.java @@ -876,8 +944,9 @@ src/main/java/org/openapijsonschematools/client/requestbody/GenericRequestBody.j src/main/java/org/openapijsonschematools/client/requestbody/RequestBodySerializer.java src/main/java/org/openapijsonschematools/client/requestbody/SerializedRequestBody.java src/main/java/org/openapijsonschematools/client/response/ApiResponse.java -src/main/java/org/openapijsonschematools/client/response/DeserializedApiResponse.java +src/main/java/org/openapijsonschematools/client/response/DeserializedHttpResponse.java src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java +src/main/java/org/openapijsonschematools/client/response/ResponsesDeserializer.java src/main/java/org/openapijsonschematools/client/schemas/AnyTypeJsonSchema.java src/main/java/org/openapijsonschematools/client/schemas/BooleanJsonSchema.java src/main/java/org/openapijsonschematools/client/schemas/DateJsonSchema.java diff --git a/samples/client/petstore/java/src/main/java/module-info.java b/samples/client/petstore/java/src/main/java/module-info.java deleted file mode 100644 index 8ecf42d96a1..00000000000 --- a/samples/client/petstore/java/src/main/java/module-info.java +++ /dev/null @@ -1,5 +0,0 @@ -module org.openapijsonschematools.client { - requires java.net.http; - requires org.checkerframework.checker.qual; - requires com.google.gson; -} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/HeadersWithNoBody.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/HeadersWithNoBody.java index f6f9acdb1f5..816987cc22e 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/HeadersWithNoBody.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/HeadersWithNoBody.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class HeadersWithNoBody { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessDescriptionOnly.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessDescriptionOnly.java index 6967e1461da..7d708912240 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessDescriptionOnly.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessDescriptionOnly.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class SuccessDescriptionOnly { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessInlineContentAndHeader.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessInlineContentAndHeader.java index fa7b442f693..9a2cb7de834 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessInlineContentAndHeader.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessInlineContentAndHeader.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.components.responses.successinlinecontentandheader.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class SuccessInlineContentAndHeader { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessWithJsonApiResponse.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessWithJsonApiResponse.java index 08677e4d19e..037f0c3c1de 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessWithJsonApiResponse.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessWithJsonApiResponse.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.components.responses.successwithjsonapiresponse.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class SuccessWithJsonApiResponse { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessfulXmlAndJsonArrayOfPet.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessfulXmlAndJsonArrayOfPet.java index 919db831be2..61661e78e34 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessfulXmlAndJsonArrayOfPet.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/responses/SuccessfulXmlAndJsonArrayOfPet.java @@ -2,12 +2,15 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.components.responses.successfulxmlandjsonarrayofpet.content.applicationxml.ApplicationxmlSchema; import org.openapijsonschematools.client.components.responses.successfulxmlandjsonarrayofpet.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class SuccessfulXmlAndJsonArrayOfPet { @@ -67,4 +70,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/ApiException.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/ApiException.java new file mode 100644 index 00000000000..d308d4b90a1 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/ApiException.java @@ -0,0 +1,13 @@ +package org.openapijsonschematools.client.exceptions; + +import java.net.http.HttpResponse; + +@SuppressWarnings("serial") +public class ApiException extends BaseException { + public HttpResponse response; + + public ApiException(String s, HttpResponse response) { + super(s); + this.response = response; + } +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java index 3d7b352080c..3bea6999da1 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/BaseException.java @@ -2,4 +2,7 @@ @SuppressWarnings("serial") public class BaseException extends RuntimeException { + public BaseException(String s) { + super(s); + } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java index 7f0805b1be8..424762f3cc9 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidAdditionalPropertyException.java @@ -3,6 +3,6 @@ @SuppressWarnings("serial") public class InvalidAdditionalPropertyException extends BaseException { public InvalidAdditionalPropertyException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java index 73fafa999af..02131fff34d 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/InvalidTypeException.java @@ -3,6 +3,6 @@ @SuppressWarnings("serial") public class InvalidTypeException extends BaseException { public InvalidTypeException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/UnsetPropertyException.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/UnsetPropertyException.java index cb743b6a97c..f709a440cb3 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/UnsetPropertyException.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/UnsetPropertyException.java @@ -3,6 +3,6 @@ @SuppressWarnings("serial") public class UnsetPropertyException extends BaseException { public UnsetPropertyException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/ValidationException.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/ValidationException.java index 8c217a9f9dc..bd2e7089700 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/ValidationException.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/exceptions/ValidationException.java @@ -3,6 +3,6 @@ @SuppressWarnings("serial") public class ValidationException extends BaseException { public ValidationException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/anotherfakedummy/patch/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/anotherfakedummy/patch/Responses.java new file mode 100644 index 00000000000..05784c2cc61 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/anotherfakedummy/patch/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.anotherfakedummy.patch; + +import org.openapijsonschematools.client.paths.anotherfakedummy.patch.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/anotherfakedummy/patch/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/anotherfakedummy/patch/responses/Code200Response.java index b307c66fba1..1293a281abd 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/anotherfakedummy/patch/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/anotherfakedummy/patch/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.anotherfakedummy.patch.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/Responses.java new file mode 100644 index 00000000000..199dec20968 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/delete/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.commonparamsubdir.delete; + +import org.openapijsonschematools.client.paths.commonparamsubdir.delete.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/Responses.java new file mode 100644 index 00000000000..7d1ba52c9da --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/get/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.commonparamsubdir.get; + +import org.openapijsonschematools.client.paths.commonparamsubdir.get.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/Responses.java new file mode 100644 index 00000000000..d7444126565 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/commonparamsubdir/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.commonparamsubdir.post; + +import org.openapijsonschematools.client.paths.commonparamsubdir.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/Responses.java new file mode 100644 index 00000000000..e844af8872d --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/delete/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fake.delete; + +import org.openapijsonschematools.client.paths.fake.delete.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/Responses.java new file mode 100644 index 00000000000..9062d42ce99 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/Responses.java @@ -0,0 +1,67 @@ +package org.openapijsonschematools.client.paths.fake.get; + +import org.openapijsonschematools.client.paths.fake.get.responses.Code200Response; +import org.openapijsonschematools.client.paths.fake.get.responses.Code404Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer, StatusCode404ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode404ResponseDeserializer extends Code404Response.Code404Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("404", new StatusCode404ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode200ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } else { + StatusCode404ResponseDeserializer castDeserializer = (StatusCode404ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code404Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/responses/Code404Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/responses/Code404Response.java index c656c6b1fe0..99ebf439860 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/responses/Code404Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/get/responses/Code404Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fake.get.responses.code404response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code404Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/patch/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/patch/Responses.java new file mode 100644 index 00000000000..f7f322a3fc6 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/patch/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fake.patch; + +import org.openapijsonschematools.client.paths.fake.patch.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/patch/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/patch/responses/Code200Response.java index 30c92bdccaa..2e4a85c500d 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/patch/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/patch/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fake.patch.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/post/Responses.java new file mode 100644 index 00000000000..679ab3391fc --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/post/Responses.java @@ -0,0 +1,67 @@ +package org.openapijsonschematools.client.paths.fake.post; + +import org.openapijsonschematools.client.paths.fake.post.responses.Code200Response; +import org.openapijsonschematools.client.paths.fake.post.responses.Code404Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer, StatusCode404ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode404ResponseDeserializer extends Code404Response.Code404Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("404", new StatusCode404ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode200ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } else { + StatusCode404ResponseDeserializer castDeserializer = (StatusCode404ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code404Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/post/responses/Code404Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/post/responses/Code404Response.java index f6a0bbe8f31..f3c502c31cc 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/post/responses/Code404Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fake/post/responses/Code404Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code404Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeadditionalpropertieswitharrayofenums/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeadditionalpropertieswitharrayofenums/get/Responses.java new file mode 100644 index 00000000000..22a58272836 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeadditionalpropertieswitharrayofenums/get/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakeadditionalpropertieswitharrayofenums.get; + +import org.openapijsonschematools.client.paths.fakeadditionalpropertieswitharrayofenums.get.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeadditionalpropertieswitharrayofenums/get/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeadditionalpropertieswitharrayofenums/get/responses/Code200Response.java index d1d224a9573..2758a79261f 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeadditionalpropertieswitharrayofenums/get/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeadditionalpropertieswitharrayofenums/get/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakeadditionalpropertieswitharrayofenums.get.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakebodywithfileschema/put/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakebodywithfileschema/put/Responses.java new file mode 100644 index 00000000000..3e68f7af88b --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakebodywithfileschema/put/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakebodywithfileschema.put; + +import org.openapijsonschematools.client.paths.fakebodywithfileschema.put.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/Responses.java new file mode 100644 index 00000000000..3ee8330f8cd --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakebodywithqueryparams/put/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakebodywithqueryparams.put; + +import org.openapijsonschematools.client.paths.fakebodywithqueryparams.put.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/Responses.java new file mode 100644 index 00000000000..4d7319c76a9 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakecasesensitiveparams/put/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakecasesensitiveparams.put; + +import org.openapijsonschematools.client.paths.fakecasesensitiveparams.put.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/Responses.java new file mode 100644 index 00000000000..9bcd68eb014 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakeclassnametest.patch; + +import org.openapijsonschematools.client.paths.fakeclassnametest.patch.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/responses/Code200Response.java index a56b33fb4f7..048455f6511 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeclassnametest/patch/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakeclassnametest.patch.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/Responses.java new file mode 100644 index 00000000000..721290acb00 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/Responses.java @@ -0,0 +1,65 @@ +package org.openapijsonschematools.client.paths.fakedeletecoffeeid.delete; + +import org.openapijsonschematools.client.paths.fakedeletecoffeeid.delete.responses.Code200Response; +import org.openapijsonschematools.client.paths.fakedeletecoffeeid.delete.responses.CodedefaultResponse; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response, EndpointCodedefaultResponse {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public record EndpointCodedefaultResponse( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + private final CodedefaultResponse.CodedefaultResponse1 defaultResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + this.defaultResponseDeserializer = new CodedefaultResponse.CodedefaultResponse1(); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer != null) { + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + var deserializedResponse = defaultResponseDeserializer.deserialize(response, configuration); + return new EndpointCodedefaultResponse(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/responses/CodedefaultResponse.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/responses/CodedefaultResponse.java index 9e753636173..89edaed917d 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/responses/CodedefaultResponse.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakedeletecoffeeid/delete/responses/CodedefaultResponse.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class CodedefaultResponse { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakehealth/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakehealth/get/Responses.java new file mode 100644 index 00000000000..872340f1217 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakehealth/get/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakehealth.get; + +import org.openapijsonschematools.client.paths.fakehealth.get.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakehealth/get/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakehealth/get/responses/Code200Response.java index a504fe0a6ba..300c2f64365 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakehealth/get/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakehealth/get/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakehealth.get.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlineadditionalproperties/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlineadditionalproperties/post/Responses.java new file mode 100644 index 00000000000..dc15916fd52 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlineadditionalproperties/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakeinlineadditionalproperties.post; + +import org.openapijsonschematools.client.paths.fakeinlineadditionalproperties.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/Responses.java new file mode 100644 index 00000000000..71f8975f334 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakeinlinecomposition.post; + +import org.openapijsonschematools.client.paths.fakeinlinecomposition.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/responses/Code200Response.java index 7d4e5e617e9..c6d1b2107c6 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeinlinecomposition/post/responses/Code200Response.java @@ -2,12 +2,15 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakeinlinecomposition.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import org.openapijsonschematools.client.paths.fakeinlinecomposition.post.responses.code200response.content.multipartformdata.MultipartformdataSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -67,4 +70,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakejsonformdata/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakejsonformdata/get/Responses.java new file mode 100644 index 00000000000..b8314899009 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakejsonformdata/get/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakejsonformdata.get; + +import org.openapijsonschematools.client.paths.fakejsonformdata.get.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakejsonpatch/patch/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakejsonpatch/patch/Responses.java new file mode 100644 index 00000000000..2baa6cd0b4b --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakejsonpatch/patch/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakejsonpatch.patch; + +import org.openapijsonschematools.client.paths.fakejsonpatch.patch.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakejsonwithcharset/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakejsonwithcharset/post/Responses.java new file mode 100644 index 00000000000..dfc15423aa9 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakejsonwithcharset/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakejsonwithcharset.post; + +import org.openapijsonschematools.client.paths.fakejsonwithcharset.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakejsonwithcharset/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakejsonwithcharset/post/responses/Code200Response.java index 37dcb4fe272..84f8047a02d 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakejsonwithcharset/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakejsonwithcharset/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakejsonwithcharset.post.responses.code200response.content.applicationjsoncharsetutf8.Applicationjsoncharsetutf8Schema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplerequestbodycontenttypes/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplerequestbodycontenttypes/post/Responses.java new file mode 100644 index 00000000000..ef63971c522 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplerequestbodycontenttypes/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakemultiplerequestbodycontenttypes.post; + +import org.openapijsonschematools.client.paths.fakemultiplerequestbodycontenttypes.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplerequestbodycontenttypes/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplerequestbodycontenttypes/post/responses/Code200Response.java index c5dce785061..bcbeee49908 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplerequestbodycontenttypes/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplerequestbodycontenttypes/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakemultiplerequestbodycontenttypes.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/Responses.java new file mode 100644 index 00000000000..b5d26f30a77 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/Responses.java @@ -0,0 +1,73 @@ +package org.openapijsonschematools.client.paths.fakemultipleresponsebodies.get; + +import org.openapijsonschematools.client.paths.fakemultipleresponsebodies.get.responses.Code200Response; +import org.openapijsonschematools.client.paths.fakemultipleresponsebodies.get.responses.Code202Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response, EndpointCode202Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public record EndpointCode202Response( + HttpResponse response, + Code202Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer, StatusCode202ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode202ResponseDeserializer extends Code202Response.Code202Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("202", new StatusCode202ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode200ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } else { + StatusCode202ResponseDeserializer castDeserializer = (StatusCode202ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode202Response(response, deserializedResponse.body()); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/responses/Code200Response.java index ef8dc875a8e..f36e27a553e 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakemultipleresponsebodies.get.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/responses/Code202Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/responses/Code202Response.java index baafae85a7b..875d35d26f5 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/responses/Code202Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultipleresponsebodies/get/responses/Code202Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakemultipleresponsebodies.get.responses.code202response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code202Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/Responses.java new file mode 100644 index 00000000000..d841b9c4771 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakemultiplesecurities.get; + +import org.openapijsonschematools.client.paths.fakemultiplesecurities.get.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/responses/Code200Response.java index cb30e9398b4..57552668d20 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakemultiplesecurities/get/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakemultiplesecurities.get.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/Responses.java new file mode 100644 index 00000000000..0b4cc77fe60 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeobjinquery/get/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakeobjinquery.get; + +import org.openapijsonschematools.client.paths.fakeobjinquery.get.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/Responses.java new file mode 100644 index 00000000000..3ed1961e32e --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post; + +import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/responses/Code200Response.java index d4528d09986..ba79c4fa0c3 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeparametercollisions1ababselfab/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakeparametercollisions1ababselfab.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepemcontenttype/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepemcontenttype/get/Responses.java new file mode 100644 index 00000000000..6c159b82205 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepemcontenttype/get/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakepemcontenttype.get; + +import org.openapijsonschematools.client.paths.fakepemcontenttype.get.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepemcontenttype/get/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepemcontenttype/get/responses/Code200Response.java index e63e3c08bfe..235c0db2bfb 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepemcontenttype/get/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepemcontenttype/get/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakepemcontenttype.get.responses.code200response.content.applicationxpemfile.ApplicationxpemfileSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/Responses.java new file mode 100644 index 00000000000..cac3aba755a --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakepetiduploadimagewithrequiredfile.post; + +import org.openapijsonschematools.client.paths.fakepetiduploadimagewithrequiredfile.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/responses/Code200Response.java index 24e2ecf827b..d86218a5273 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakepetiduploadimagewithrequiredfile/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakepetiduploadimagewithrequiredfile.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/Responses.java new file mode 100644 index 00000000000..70c844a46e3 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakequeryparamwithjsoncontenttype.get; + +import org.openapijsonschematools.client.paths.fakequeryparamwithjsoncontenttype.get.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/responses/Code200Response.java index 3d6b23dbf11..947ef7b2c84 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakequeryparamwithjsoncontenttype/get/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakequeryparamwithjsoncontenttype.get.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/Responses.java new file mode 100644 index 00000000000..e34ab33adcc --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/Responses.java @@ -0,0 +1,83 @@ +package org.openapijsonschematools.client.paths.fakeredirection.get; + +import org.openapijsonschematools.client.paths.fakeredirection.get.responses.Code303Response; +import org.openapijsonschematools.client.paths.fakeredirection.get.responses.Code3XXResponse; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode3XXResponse, EndpointCode303Response {} + + public record EndpointCode3XXResponse( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public record EndpointCode303Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode303ResponseDeserializer {} + + public static final class StatusCode303ResponseDeserializer extends Code303Response.Code303Response1 implements StatusCodeResponseDeserializer { + } + public sealed interface WildcardCodeResponseDeserializer permits WildcardCode3XXResponseDeserializer {} + + public static final class WildcardCode3XXResponseDeserializer extends Code3XXResponse.Code3XXResponse1 implements WildcardCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + private final Map wildcardCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("303", new StatusCode303ResponseDeserializer()) + ); + this.wildcardCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("3", new WildcardCode3XXResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer != null) { + StatusCode303ResponseDeserializer castDeserializer = (StatusCode303ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode303Response(response, deserializedResponse.body()); + } + @Nullable WildcardCodeResponseDeserializer wildcardCodeDeserializer = wildcardCodeToResponseDeserializer.get(statusCode); + if (wildcardCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + WildcardCode3XXResponseDeserializer castDeserializer = (WildcardCode3XXResponseDeserializer) wildcardCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code3XXResponse.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/responses/Code303Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/responses/Code303Response.java index 7c32fb69139..b9ca7d32b2c 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/responses/Code303Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/responses/Code303Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code303Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/responses/Code3XXResponse.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/responses/Code3XXResponse.java index b6b5bfd0eaa..7b593a14eb5 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/responses/Code3XXResponse.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeredirection/get/responses/Code3XXResponse.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code3XXResponse { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/Responses.java new file mode 100644 index 00000000000..f3c7736a3f0 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefobjinquery/get/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakerefobjinquery.get; + +import org.openapijsonschematools.client.paths.fakerefobjinquery.get.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarraymodel/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarraymodel/post/Responses.java new file mode 100644 index 00000000000..8d017e722c4 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarraymodel/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakerefsarraymodel.post; + +import org.openapijsonschematools.client.paths.fakerefsarraymodel.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarraymodel/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarraymodel/post/responses/Code200Response.java index 87967b8848d..d01d31a29d3 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarraymodel/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarraymodel/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakerefsarraymodel.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarrayofenums/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarrayofenums/post/Responses.java new file mode 100644 index 00000000000..5dfb0d00f27 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarrayofenums/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakerefsarrayofenums.post; + +import org.openapijsonschematools.client.paths.fakerefsarrayofenums.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarrayofenums/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarrayofenums/post/responses/Code200Response.java index 9dd347dd3cb..6ca1121345a 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarrayofenums/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsarrayofenums/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakerefsarrayofenums.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsboolean/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsboolean/post/Responses.java new file mode 100644 index 00000000000..96b31771303 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsboolean/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakerefsboolean.post; + +import org.openapijsonschematools.client.paths.fakerefsboolean.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsboolean/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsboolean/post/responses/Code200Response.java index dcf965a7bd8..d9c6b249dd6 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsboolean/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsboolean/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakerefsboolean.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefscomposedoneofnumberwithvalidations/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefscomposedoneofnumberwithvalidations/post/Responses.java new file mode 100644 index 00000000000..72341574f96 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefscomposedoneofnumberwithvalidations/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakerefscomposedoneofnumberwithvalidations.post; + +import org.openapijsonschematools.client.paths.fakerefscomposedoneofnumberwithvalidations.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefscomposedoneofnumberwithvalidations/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefscomposedoneofnumberwithvalidations/post/responses/Code200Response.java index 32c14d6f16c..13e9ad0468f 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefscomposedoneofnumberwithvalidations/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefscomposedoneofnumberwithvalidations/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakerefscomposedoneofnumberwithvalidations.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsenum/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsenum/post/Responses.java new file mode 100644 index 00000000000..49903cc1f2e --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsenum/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakerefsenum.post; + +import org.openapijsonschematools.client.paths.fakerefsenum.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsenum/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsenum/post/responses/Code200Response.java index e20627544e3..0648d448807 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsenum/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsenum/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakerefsenum.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsmammal/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsmammal/post/Responses.java new file mode 100644 index 00000000000..35e9f7269bb --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsmammal/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakerefsmammal.post; + +import org.openapijsonschematools.client.paths.fakerefsmammal.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsmammal/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsmammal/post/responses/Code200Response.java index 68e8bc37f17..6966924d426 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsmammal/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsmammal/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakerefsmammal.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsnumber/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsnumber/post/Responses.java new file mode 100644 index 00000000000..4545f0d8533 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsnumber/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakerefsnumber.post; + +import org.openapijsonschematools.client.paths.fakerefsnumber.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsnumber/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsnumber/post/responses/Code200Response.java index 6a4a1829e56..6523d4260c1 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsnumber/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsnumber/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakerefsnumber.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsobjectmodelwithrefprops/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsobjectmodelwithrefprops/post/Responses.java new file mode 100644 index 00000000000..49609d743ed --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsobjectmodelwithrefprops/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakerefsobjectmodelwithrefprops.post; + +import org.openapijsonschematools.client.paths.fakerefsobjectmodelwithrefprops.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsobjectmodelwithrefprops/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsobjectmodelwithrefprops/post/responses/Code200Response.java index e2c6082a8ea..149a66cb6ad 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsobjectmodelwithrefprops/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsobjectmodelwithrefprops/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakerefsobjectmodelwithrefprops.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsstring/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsstring/post/Responses.java new file mode 100644 index 00000000000..09b8212b20d --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsstring/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakerefsstring.post; + +import org.openapijsonschematools.client.paths.fakerefsstring.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsstring/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsstring/post/responses/Code200Response.java index 0ef09b42463..cb9d8fe483e 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsstring/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakerefsstring/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakerefsstring.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeresponsewithoutschema/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeresponsewithoutschema/get/Responses.java new file mode 100644 index 00000000000..087c995bb44 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeresponsewithoutschema/get/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakeresponsewithoutschema.get; + +import org.openapijsonschematools.client.paths.fakeresponsewithoutschema.get.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeresponsewithoutschema/get/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeresponsewithoutschema/get/responses/Code200Response.java index c461d9035bf..e0204129755 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeresponsewithoutschema/get/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeresponsewithoutschema/get/responses/Code200Response.java @@ -2,10 +2,13 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -30,4 +33,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/Responses.java new file mode 100644 index 00000000000..f1e32ebf987 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/faketestqueryparamters/put/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.faketestqueryparamters.put; + +import org.openapijsonschematools.client.paths.faketestqueryparamters.put.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploaddownloadfile/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploaddownloadfile/post/Responses.java new file mode 100644 index 00000000000..cb872801735 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploaddownloadfile/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakeuploaddownloadfile.post; + +import org.openapijsonschematools.client.paths.fakeuploaddownloadfile.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploaddownloadfile/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploaddownloadfile/post/responses/Code200Response.java index 63236fb8e64..a1c45b3b1b3 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploaddownloadfile/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploaddownloadfile/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakeuploaddownloadfile.post.responses.code200response.content.applicationoctetstream.ApplicationoctetstreamSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfile/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfile/post/Responses.java new file mode 100644 index 00000000000..6e2100465e9 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfile/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakeuploadfile.post; + +import org.openapijsonschematools.client.paths.fakeuploadfile.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfile/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfile/post/responses/Code200Response.java index eb4aeb00121..cac546b0422 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfile/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfile/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakeuploadfile.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfiles/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfiles/post/Responses.java new file mode 100644 index 00000000000..0b61b6ee1a0 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfiles/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.fakeuploadfiles.post; + +import org.openapijsonschematools.client.paths.fakeuploadfiles.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfiles/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfiles/post/responses/Code200Response.java index 8b5a4469414..06b0236ebd8 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfiles/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakeuploadfiles/post/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakeuploadfiles.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/Responses.java new file mode 100644 index 00000000000..cef5287b1a6 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/Responses.java @@ -0,0 +1,149 @@ +package org.openapijsonschematools.client.paths.fakewildcardresponses.get; + +import org.openapijsonschematools.client.paths.fakewildcardresponses.get.responses.Code1XXResponse; +import org.openapijsonschematools.client.paths.fakewildcardresponses.get.responses.Code200Response; +import org.openapijsonschematools.client.paths.fakewildcardresponses.get.responses.Code2XXResponse; +import org.openapijsonschematools.client.paths.fakewildcardresponses.get.responses.Code3XXResponse; +import org.openapijsonschematools.client.paths.fakewildcardresponses.get.responses.Code4XXResponse; +import org.openapijsonschematools.client.paths.fakewildcardresponses.get.responses.Code5XXResponse; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode1XXResponse, EndpointCode2XXResponse, EndpointCode200Response, EndpointCode3XXResponse {} + + public record EndpointCode1XXResponse( + HttpResponse response, + Code1XXResponse.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public record EndpointCode2XXResponse( + HttpResponse response, + Code2XXResponse.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public record EndpointCode3XXResponse( + HttpResponse response, + Code3XXResponse.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + public sealed interface WildcardCodeResponseDeserializer permits WildcardCode1XXResponseDeserializer, WildcardCode2XXResponseDeserializer, WildcardCode3XXResponseDeserializer, WildcardCode4XXResponseDeserializer, WildcardCode5XXResponseDeserializer {} + + public static final class WildcardCode1XXResponseDeserializer extends Code1XXResponse.Code1XXResponse1 implements WildcardCodeResponseDeserializer { + } + public static final class WildcardCode2XXResponseDeserializer extends Code2XXResponse.Code2XXResponse1 implements WildcardCodeResponseDeserializer { + } + public static final class WildcardCode3XXResponseDeserializer extends Code3XXResponse.Code3XXResponse1 implements WildcardCodeResponseDeserializer { + } + public static final class WildcardCode4XXResponseDeserializer extends Code4XXResponse.Code4XXResponse1 implements WildcardCodeResponseDeserializer { + } + public static final class WildcardCode5XXResponseDeserializer extends Code5XXResponse.Code5XXResponse1 implements WildcardCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + private final Map wildcardCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + this.wildcardCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("1", new WildcardCode1XXResponseDeserializer()), + new AbstractMap.SimpleEntry<>("2", new WildcardCode2XXResponseDeserializer()), + new AbstractMap.SimpleEntry<>("3", new WildcardCode3XXResponseDeserializer()), + new AbstractMap.SimpleEntry<>("4", new WildcardCode4XXResponseDeserializer()), + new AbstractMap.SimpleEntry<>("5", new WildcardCode5XXResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer != null) { + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + @Nullable WildcardCodeResponseDeserializer wildcardCodeDeserializer = wildcardCodeToResponseDeserializer.get(statusCode); + if (wildcardCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (wildcardCodeDeserializer instanceof WildcardCode1XXResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code1XXResponse.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } else if (wildcardCodeDeserializer instanceof WildcardCode2XXResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code2XXResponse.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } else if (wildcardCodeDeserializer instanceof WildcardCode3XXResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code3XXResponse.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } else if (wildcardCodeDeserializer instanceof WildcardCode4XXResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code4XXResponse.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } else { + WildcardCode5XXResponseDeserializer castDeserializer = (WildcardCode5XXResponseDeserializer) wildcardCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code5XXResponse.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code1XXResponse.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code1XXResponse.java index 1035450a564..65791d02f47 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code1XXResponse.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code1XXResponse.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakewildcardresponses.get.responses.code1xxresponse.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code1XXResponse { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code200Response.java index 4776aca71e2..a19af7ac543 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code200Response.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakewildcardresponses.get.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code2XXResponse.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code2XXResponse.java index 12796885fdb..a907b488233 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code2XXResponse.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code2XXResponse.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakewildcardresponses.get.responses.code2xxresponse.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code2XXResponse { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code3XXResponse.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code3XXResponse.java index 420f21a011b..f932612e779 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code3XXResponse.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code3XXResponse.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakewildcardresponses.get.responses.code3xxresponse.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code3XXResponse { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code4XXResponse.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code4XXResponse.java index 1d38967e4a8..682272e552d 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code4XXResponse.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code4XXResponse.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakewildcardresponses.get.responses.code4xxresponse.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code4XXResponse { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code5XXResponse.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code5XXResponse.java index 645d93d6b86..081a68aa84e 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code5XXResponse.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/Code5XXResponse.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.fakewildcardresponses.get.responses.code5xxresponse.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code5XXResponse { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/foo/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/foo/get/Responses.java new file mode 100644 index 00000000000..dc5f2cf7e5d --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/foo/get/Responses.java @@ -0,0 +1,38 @@ +package org.openapijsonschematools.client.paths.foo.get; + +import org.openapijsonschematools.client.paths.foo.get.responses.CodedefaultResponse; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCodedefaultResponse {} + + public record EndpointCodedefaultResponse( + HttpResponse response, + CodedefaultResponse.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public static final class Responses1 implements ResponsesDeserializer { + private final CodedefaultResponse.CodedefaultResponse1 defaultResponseDeserializer; + public Responses1() { + this.defaultResponseDeserializer = new CodedefaultResponse.CodedefaultResponse1(); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + var deserializedResponse = defaultResponseDeserializer.deserialize(response, configuration); + return new EndpointCodedefaultResponse(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/foo/get/responses/CodedefaultResponse.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/foo/get/responses/CodedefaultResponse.java index 4cb012e1f53..eacf0f81c6b 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/foo/get/responses/CodedefaultResponse.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/foo/get/responses/CodedefaultResponse.java @@ -2,11 +2,14 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.foo.get.responses.codedefaultresponse.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class CodedefaultResponse { @@ -51,4 +54,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/post/Responses.java new file mode 100644 index 00000000000..a39e6ae72ba --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/post/Responses.java @@ -0,0 +1,67 @@ +package org.openapijsonschematools.client.paths.pet.post; + +import org.openapijsonschematools.client.paths.pet.post.responses.Code200Response; +import org.openapijsonschematools.client.paths.pet.post.responses.Code405Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer, StatusCode405ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode405ResponseDeserializer extends Code405Response.Code405Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("405", new StatusCode405ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode200ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } else { + StatusCode405ResponseDeserializer castDeserializer = (StatusCode405ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code405Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/post/responses/Code405Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/post/responses/Code405Response.java index 28b861d4339..fae6cd8468b 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/post/responses/Code405Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/post/responses/Code405Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code405Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/Responses.java new file mode 100644 index 00000000000..73c9bfd8cd1 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/Responses.java @@ -0,0 +1,70 @@ +package org.openapijsonschematools.client.paths.pet.put; + +import org.openapijsonschematools.client.paths.pet.put.responses.Code400Response; +import org.openapijsonschematools.client.paths.pet.put.responses.Code404Response; +import org.openapijsonschematools.client.paths.pet.put.responses.Code405Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + + public sealed interface StatusCodeResponseDeserializer permits StatusCode400ResponseDeserializer, StatusCode404ResponseDeserializer, StatusCode405ResponseDeserializer {} + + public static final class StatusCode400ResponseDeserializer extends Code400Response.Code400Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode404ResponseDeserializer extends Code404Response.Code404Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode405ResponseDeserializer extends Code405Response.Code405Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("400", new StatusCode400ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("404", new StatusCode404ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("405", new StatusCode405ResponseDeserializer()) + ); + } + + public Void deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode400ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code400Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } else if (statusCodeDeserializer instanceof StatusCode404ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code404Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } else { + StatusCode405ResponseDeserializer castDeserializer = (StatusCode405ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code405Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code400Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code400Response.java index 43a665f0c19..8b6b7083e4c 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code400Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code400Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code400Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code404Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code404Response.java index c98a92007c7..95d865b82ec 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code404Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code404Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code404Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code405Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code405Response.java index ea308bdc6b2..e3de76ccb57 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code405Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/pet/put/responses/Code405Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code405Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/Responses.java new file mode 100644 index 00000000000..073278eb8bf --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/Responses.java @@ -0,0 +1,67 @@ +package org.openapijsonschematools.client.paths.petfindbystatus.get; + +import org.openapijsonschematools.client.paths.petfindbystatus.get.responses.Code200Response; +import org.openapijsonschematools.client.paths.petfindbystatus.get.responses.Code400Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer, StatusCode400ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode400ResponseDeserializer extends Code400Response.Code400Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("400", new StatusCode400ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode200ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } else { + StatusCode400ResponseDeserializer castDeserializer = (StatusCode400ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code400Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/responses/Code400Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/responses/Code400Response.java index 789af3ed96f..63257957989 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/responses/Code400Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/responses/Code400Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code400Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/Responses.java new file mode 100644 index 00000000000..fc452ecd7be --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/Responses.java @@ -0,0 +1,67 @@ +package org.openapijsonschematools.client.paths.petfindbytags.get; + +import org.openapijsonschematools.client.paths.petfindbytags.get.responses.Code200Response; +import org.openapijsonschematools.client.paths.petfindbytags.get.responses.Code400Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer, StatusCode400ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode400ResponseDeserializer extends Code400Response.Code400Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("400", new StatusCode400ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode200ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } else { + StatusCode400ResponseDeserializer castDeserializer = (StatusCode400ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code400Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/responses/Code400Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/responses/Code400Response.java index e1e47e9b91e..0b2dd4a964b 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/responses/Code400Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/responses/Code400Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code400Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/Responses.java new file mode 100644 index 00000000000..5211c9c2cd3 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/Responses.java @@ -0,0 +1,46 @@ +package org.openapijsonschematools.client.paths.petpetid.delete; + +import org.openapijsonschematools.client.paths.petpetid.delete.responses.Code400Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + + public sealed interface StatusCodeResponseDeserializer permits StatusCode400ResponseDeserializer {} + + public static final class StatusCode400ResponseDeserializer extends Code400Response.Code400Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("400", new StatusCode400ResponseDeserializer()) + ); + } + + public Void deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode400ResponseDeserializer castDeserializer = (StatusCode400ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code400Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/responses/Code400Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/responses/Code400Response.java index 2fcdf10dd22..60e17b7d517 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/responses/Code400Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/responses/Code400Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code400Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/Responses.java new file mode 100644 index 00000000000..2780f842fd3 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/Responses.java @@ -0,0 +1,78 @@ +package org.openapijsonschematools.client.paths.petpetid.get; + +import org.openapijsonschematools.client.paths.petpetid.get.responses.Code200Response; +import org.openapijsonschematools.client.paths.petpetid.get.responses.Code400Response; +import org.openapijsonschematools.client.paths.petpetid.get.responses.Code404Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer, StatusCode400ResponseDeserializer, StatusCode404ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode400ResponseDeserializer extends Code400Response.Code400Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode404ResponseDeserializer extends Code404Response.Code404Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("400", new StatusCode400ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("404", new StatusCode404ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode200ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } else if (statusCodeDeserializer instanceof StatusCode400ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code400Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } else { + StatusCode404ResponseDeserializer castDeserializer = (StatusCode404ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code404Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code200Response.java index 41cbf8b5a5c..009dadb66af 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code200Response.java @@ -2,12 +2,15 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.petpetid.get.responses.code200response.content.applicationxml.ApplicationxmlSchema; import org.openapijsonschematools.client.paths.petpetid.get.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -67,4 +70,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code400Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code400Response.java index 5d2a50f0154..32c66ffa011 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code400Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code400Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code400Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code404Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code404Response.java index 0797e7c8fa9..ee166e33acc 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code404Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/get/responses/Code404Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code404Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/Responses.java new file mode 100644 index 00000000000..b0e7a2d9012 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/Responses.java @@ -0,0 +1,46 @@ +package org.openapijsonschematools.client.paths.petpetid.post; + +import org.openapijsonschematools.client.paths.petpetid.post.responses.Code405Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + + public sealed interface StatusCodeResponseDeserializer permits StatusCode405ResponseDeserializer {} + + public static final class StatusCode405ResponseDeserializer extends Code405Response.Code405Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("405", new StatusCode405ResponseDeserializer()) + ); + } + + public Void deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode405ResponseDeserializer castDeserializer = (StatusCode405ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code405Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/responses/Code405Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/responses/Code405Response.java index e4d93dc02b9..622bc8d8042 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/responses/Code405Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetid/post/responses/Code405Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code405Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/Responses.java new file mode 100644 index 00000000000..3f4b3062f18 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/petpetiduploadimage/post/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.petpetiduploadimage.post; + +import org.openapijsonschematools.client.paths.petpetiduploadimage.post.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/solidus/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/solidus/get/Responses.java new file mode 100644 index 00000000000..2f753fc4485 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/solidus/get/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.solidus.get; + +import org.openapijsonschematools.client.paths.solidus.get.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeinventory/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeinventory/get/Responses.java new file mode 100644 index 00000000000..7ba860fcb45 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeinventory/get/Responses.java @@ -0,0 +1,54 @@ +package org.openapijsonschematools.client.paths.storeinventory.get; + +import org.openapijsonschematools.client.paths.storeinventory.get.responses.Code200Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + StatusCode200ResponseDeserializer castDeserializer = (StatusCode200ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorder/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorder/post/Responses.java new file mode 100644 index 00000000000..4504dc5cbda --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorder/post/Responses.java @@ -0,0 +1,67 @@ +package org.openapijsonschematools.client.paths.storeorder.post; + +import org.openapijsonschematools.client.paths.storeorder.post.responses.Code200Response; +import org.openapijsonschematools.client.paths.storeorder.post.responses.Code400Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer, StatusCode400ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode400ResponseDeserializer extends Code400Response.Code400Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("400", new StatusCode400ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode200ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } else { + StatusCode400ResponseDeserializer castDeserializer = (StatusCode400ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code400Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorder/post/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorder/post/responses/Code200Response.java index 806ee8b6867..0a0638b1551 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorder/post/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorder/post/responses/Code200Response.java @@ -2,12 +2,15 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.storeorder.post.responses.code200response.content.applicationxml.ApplicationxmlSchema; import org.openapijsonschematools.client.paths.storeorder.post.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -67,4 +70,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorder/post/responses/Code400Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorder/post/responses/Code400Response.java index b018f2a8d55..aa2870163ac 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorder/post/responses/Code400Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorder/post/responses/Code400Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code400Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/Responses.java new file mode 100644 index 00000000000..f811aab1d28 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/Responses.java @@ -0,0 +1,59 @@ +package org.openapijsonschematools.client.paths.storeorderorderid.delete; + +import org.openapijsonschematools.client.paths.storeorderorderid.delete.responses.Code400Response; +import org.openapijsonschematools.client.paths.storeorderorderid.delete.responses.Code404Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + + public sealed interface StatusCodeResponseDeserializer permits StatusCode400ResponseDeserializer, StatusCode404ResponseDeserializer {} + + public static final class StatusCode400ResponseDeserializer extends Code400Response.Code400Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode404ResponseDeserializer extends Code404Response.Code404Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("400", new StatusCode400ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("404", new StatusCode404ResponseDeserializer()) + ); + } + + public Void deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode400ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code400Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } else { + StatusCode404ResponseDeserializer castDeserializer = (StatusCode404ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code404Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/responses/Code400Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/responses/Code400Response.java index 3b69947b889..d24c6c5aa81 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/responses/Code400Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/responses/Code400Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code400Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/responses/Code404Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/responses/Code404Response.java index 6043fb706e6..48b7679387f 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/responses/Code404Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/delete/responses/Code404Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code404Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/Responses.java new file mode 100644 index 00000000000..7007878e286 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/Responses.java @@ -0,0 +1,78 @@ +package org.openapijsonschematools.client.paths.storeorderorderid.get; + +import org.openapijsonschematools.client.paths.storeorderorderid.get.responses.Code200Response; +import org.openapijsonschematools.client.paths.storeorderorderid.get.responses.Code400Response; +import org.openapijsonschematools.client.paths.storeorderorderid.get.responses.Code404Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer, StatusCode400ResponseDeserializer, StatusCode404ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode400ResponseDeserializer extends Code400Response.Code400Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode404ResponseDeserializer extends Code404Response.Code404Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("400", new StatusCode400ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("404", new StatusCode404ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode200ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } else if (statusCodeDeserializer instanceof StatusCode400ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code400Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } else { + StatusCode404ResponseDeserializer castDeserializer = (StatusCode404ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code404Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code200Response.java index ddacd91e6b8..6d51490e90a 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code200Response.java @@ -2,12 +2,15 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.storeorderorderid.get.responses.code200response.content.applicationxml.ApplicationxmlSchema; import org.openapijsonschematools.client.paths.storeorderorderid.get.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -67,4 +70,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code400Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code400Response.java index a0d64766ab5..6eb5f5c1de8 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code400Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code400Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code400Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code404Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code404Response.java index 9a3b4607c8f..4e7e5f5bef8 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code404Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/storeorderorderid/get/responses/Code404Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code404Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/user/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/user/post/Responses.java new file mode 100644 index 00000000000..6281a613f2d --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/user/post/Responses.java @@ -0,0 +1,38 @@ +package org.openapijsonschematools.client.paths.user.post; + +import org.openapijsonschematools.client.paths.user.post.responses.CodedefaultResponse; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCodedefaultResponse {} + + public record EndpointCodedefaultResponse( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public static final class Responses1 implements ResponsesDeserializer { + private final CodedefaultResponse.CodedefaultResponse1 defaultResponseDeserializer; + public Responses1() { + this.defaultResponseDeserializer = new CodedefaultResponse.CodedefaultResponse1(); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + var deserializedResponse = defaultResponseDeserializer.deserialize(response, configuration); + return new EndpointCodedefaultResponse(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/user/post/responses/CodedefaultResponse.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/user/post/responses/CodedefaultResponse.java index 2804bfc1dcb..fb814fa6a63 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/user/post/responses/CodedefaultResponse.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/user/post/responses/CodedefaultResponse.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class CodedefaultResponse { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewitharray/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewitharray/post/Responses.java new file mode 100644 index 00000000000..4915ddf78eb --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewitharray/post/Responses.java @@ -0,0 +1,38 @@ +package org.openapijsonschematools.client.paths.usercreatewitharray.post; + +import org.openapijsonschematools.client.paths.usercreatewitharray.post.responses.CodedefaultResponse; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCodedefaultResponse {} + + public record EndpointCodedefaultResponse( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public static final class Responses1 implements ResponsesDeserializer { + private final CodedefaultResponse.CodedefaultResponse1 defaultResponseDeserializer; + public Responses1() { + this.defaultResponseDeserializer = new CodedefaultResponse.CodedefaultResponse1(); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + var deserializedResponse = defaultResponseDeserializer.deserialize(response, configuration); + return new EndpointCodedefaultResponse(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewitharray/post/responses/CodedefaultResponse.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewitharray/post/responses/CodedefaultResponse.java index 12a36ad0d11..ff367f5c5d9 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewitharray/post/responses/CodedefaultResponse.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewitharray/post/responses/CodedefaultResponse.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class CodedefaultResponse { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewithlist/post/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewithlist/post/Responses.java new file mode 100644 index 00000000000..b4ec50143c4 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewithlist/post/Responses.java @@ -0,0 +1,38 @@ +package org.openapijsonschematools.client.paths.usercreatewithlist.post; + +import org.openapijsonschematools.client.paths.usercreatewithlist.post.responses.CodedefaultResponse; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCodedefaultResponse {} + + public record EndpointCodedefaultResponse( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public static final class Responses1 implements ResponsesDeserializer { + private final CodedefaultResponse.CodedefaultResponse1 defaultResponseDeserializer; + public Responses1() { + this.defaultResponseDeserializer = new CodedefaultResponse.CodedefaultResponse1(); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + var deserializedResponse = defaultResponseDeserializer.deserialize(response, configuration); + return new EndpointCodedefaultResponse(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewithlist/post/responses/CodedefaultResponse.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewithlist/post/responses/CodedefaultResponse.java index 8764ab19081..452bbf99d47 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewithlist/post/responses/CodedefaultResponse.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/usercreatewithlist/post/responses/CodedefaultResponse.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class CodedefaultResponse { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/Responses.java new file mode 100644 index 00000000000..d6c6fa038fe --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/Responses.java @@ -0,0 +1,67 @@ +package org.openapijsonschematools.client.paths.userlogin.get; + +import org.openapijsonschematools.client.paths.userlogin.get.responses.Code200Response; +import org.openapijsonschematools.client.paths.userlogin.get.responses.Code400Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer, StatusCode400ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode400ResponseDeserializer extends Code400Response.Code400Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("400", new StatusCode400ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode200ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } else { + StatusCode400ResponseDeserializer castDeserializer = (StatusCode400ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code400Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/Code200Response.java index 34e312d269a..12156c959d9 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/Code200Response.java @@ -2,12 +2,15 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.userlogin.get.responses.code200response.content.applicationxml.ApplicationxmlSchema; import org.openapijsonschematools.client.paths.userlogin.get.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -67,4 +70,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/Code400Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/Code400Response.java index 80856aa6119..371b8704162 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/Code400Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogin/get/responses/Code400Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code400Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogout/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogout/get/Responses.java new file mode 100644 index 00000000000..6ae2af2cb77 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userlogout/get/Responses.java @@ -0,0 +1,38 @@ +package org.openapijsonschematools.client.paths.userlogout.get; + +import org.openapijsonschematools.client.paths.userlogout.get.responses.CodedefaultResponse; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCodedefaultResponse {} + + public record EndpointCodedefaultResponse( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public static final class Responses1 implements ResponsesDeserializer { + private final CodedefaultResponse.CodedefaultResponse1 defaultResponseDeserializer; + public Responses1() { + this.defaultResponseDeserializer = new CodedefaultResponse.CodedefaultResponse1(); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + var deserializedResponse = defaultResponseDeserializer.deserialize(response, configuration); + return new EndpointCodedefaultResponse(response, deserializedResponse.body()); + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/delete/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/delete/Responses.java new file mode 100644 index 00000000000..8ca121ca5b6 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/delete/Responses.java @@ -0,0 +1,67 @@ +package org.openapijsonschematools.client.paths.userusername.delete; + +import org.openapijsonschematools.client.paths.userusername.delete.responses.Code200Response; +import org.openapijsonschematools.client.paths.userusername.delete.responses.Code404Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Void body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer, StatusCode404ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode404ResponseDeserializer extends Code404Response.Code404Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("404", new StatusCode404ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode200ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } else { + StatusCode404ResponseDeserializer castDeserializer = (StatusCode404ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code404Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/delete/responses/Code404Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/delete/responses/Code404Response.java index cdca3621219..5fc5f8a0ebb 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/delete/responses/Code404Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/delete/responses/Code404Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code404Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/Responses.java new file mode 100644 index 00000000000..46e3771793a --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/Responses.java @@ -0,0 +1,78 @@ +package org.openapijsonschematools.client.paths.userusername.get; + +import org.openapijsonschematools.client.paths.userusername.get.responses.Code200Response; +import org.openapijsonschematools.client.paths.userusername.get.responses.Code400Response; +import org.openapijsonschematools.client.paths.userusername.get.responses.Code404Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ApiResponse; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + public sealed interface EndpointResponse permits EndpointCode200Response {} + + public record EndpointCode200Response( + HttpResponse response, + Code200Response.SealedResponseBody body + ) implements EndpointResponse, ApiResponse{ + @Override + public Void headers() { + return null; + } + } + + public sealed interface StatusCodeResponseDeserializer permits StatusCode200ResponseDeserializer, StatusCode400ResponseDeserializer, StatusCode404ResponseDeserializer {} + + public static final class StatusCode200ResponseDeserializer extends Code200Response.Code200Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode400ResponseDeserializer extends Code400Response.Code400Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode404ResponseDeserializer extends Code404Response.Code404Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("200", new StatusCode200ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("400", new StatusCode400ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("404", new StatusCode404ResponseDeserializer()) + ); + } + + public EndpointResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode200ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + return new EndpointCode200Response(response, deserializedResponse.body()); + } else if (statusCodeDeserializer instanceof StatusCode400ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code400Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } else { + StatusCode404ResponseDeserializer castDeserializer = (StatusCode404ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code404Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code200Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code200Response.java index bae41243287..5e70bd5ebe9 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code200Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code200Response.java @@ -2,12 +2,15 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.mediatype.MediaType; import org.openapijsonschematools.client.paths.userusername.get.responses.code200response.content.applicationxml.ApplicationxmlSchema; import org.openapijsonschematools.client.paths.userusername.get.responses.code200response.content.applicationjson.ApplicationjsonSchema; import java.util.AbstractMap; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code200Response { @@ -67,4 +70,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code400Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code400Response.java index 1bba2220853..8755e292c0c 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code400Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code400Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code400Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code404Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code404Response.java index 511b4b8c0e4..26d850cab81 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code404Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/get/responses/Code404Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code404Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/Responses.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/Responses.java new file mode 100644 index 00000000000..996c3423963 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/Responses.java @@ -0,0 +1,59 @@ +package org.openapijsonschematools.client.paths.userusername.put; + +import org.openapijsonschematools.client.paths.userusername.put.responses.Code400Response; +import org.openapijsonschematools.client.paths.userusername.put.responses.Code404Response; +import org.openapijsonschematools.client.exceptions.ApiException; +import org.openapijsonschematools.client.response.ResponsesDeserializer; +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class Responses { + + public sealed interface StatusCodeResponseDeserializer permits StatusCode400ResponseDeserializer, StatusCode404ResponseDeserializer {} + + public static final class StatusCode400ResponseDeserializer extends Code400Response.Code400Response1 implements StatusCodeResponseDeserializer { + } + public static final class StatusCode404ResponseDeserializer extends Code404Response.Code404Response1 implements StatusCodeResponseDeserializer { + } + + public static final class Responses1 implements ResponsesDeserializer { + private final Map statusCodeToResponseDeserializer; + public Responses1() { + this.statusCodeToResponseDeserializer = Map.ofEntries( + new AbstractMap.SimpleEntry<>("400", new StatusCode400ResponseDeserializer()), + new AbstractMap.SimpleEntry<>("404", new StatusCode404ResponseDeserializer()) + ); + } + + public Void deserialize(HttpResponse response, SchemaConfiguration configuration) { + String statusCode = String.valueOf(response.statusCode()); + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + if (statusCodeDeserializer instanceof StatusCode400ResponseDeserializer castDeserializer) { + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code400Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } else { + StatusCode404ResponseDeserializer castDeserializer = (StatusCode404ResponseDeserializer) statusCodeDeserializer; + var deserializedResponse = castDeserializer.deserialize(response, configuration); + throw new Code404Response.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse + ); + } + } + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/responses/Code400Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/responses/Code400Response.java index 7997bf717b2..a19df3384c7 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/responses/Code400Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/responses/Code400Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code400Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/responses/Code404Response.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/responses/Code404Response.java index b3ac1cfe936..708688d850a 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/responses/Code404Response.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/paths/userusername/put/responses/Code404Response.java @@ -2,9 +2,12 @@ import org.openapijsonschematools.client.configurations.SchemaConfiguration; import org.openapijsonschematools.client.response.ResponseDeserializer; +import org.openapijsonschematools.client.response.DeserializedHttpResponse; +import org.openapijsonschematools.client.exceptions.ApiException; import org.openapijsonschematools.client.schemas.validation.MapUtils; import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class Code404Response { @@ -27,4 +30,14 @@ protected Void getHeaders(HttpHeaders headers) { return null; } } + + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/response/DeserializedHttpResponse.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/response/DeserializedHttpResponse.java new file mode 100644 index 00000000000..d9c62c28c70 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/response/DeserializedHttpResponse.java @@ -0,0 +1,6 @@ +package org.openapijsonschematools.client.response; + +import java.net.http.HttpResponse; + +public record DeserializedHttpResponse(SealedBodyOutputClass body, HeaderOutputClass headers) { +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java index 766af80f088..5bc67aaf446 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/response/ResponseDeserializer.java @@ -63,7 +63,7 @@ protected T deserializeBody(String contentType, byte[] body, JsonSchema s throw new RuntimeException("Deserialization for contentType="+contentType+" has not yet been implemented."); } - public ApiResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { + public DeserializedHttpResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { Optional contentTypeInfo = response.headers().firstValue("Content-Type"); if (contentTypeInfo.isEmpty()) { throw new RuntimeException("Invalid response returned, Content-Type header is missing and it must be included"); @@ -78,6 +78,6 @@ public ApiResponse deserialize(HttpResponse(response, body, headers); + return new DeserializedHttpResponse<>(body, headers); } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/response/ResponsesDeserializer.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/response/ResponsesDeserializer.java new file mode 100644 index 00000000000..20b56db17da --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/response/ResponsesDeserializer.java @@ -0,0 +1,8 @@ +package org.openapijsonschematools.client.response; + +import org.openapijsonschematools.client.configurations.SchemaConfiguration; +import java.net.http.HttpResponse; + +public interface ResponsesDeserializer { + SealedResponseClass deserialize(HttpResponse response, SchemaConfiguration configuration); +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/response/ResponseDeserializerTest.java b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/response/ResponseDeserializerTest.java index 50795dc89a9..76dc7f0165f 100644 --- a/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/response/ResponseDeserializerTest.java +++ b/samples/client/petstore/java/src/test/java/org/openapijsonschematools/client/response/ResponseDeserializerTest.java @@ -157,8 +157,7 @@ public void testDeserializeApplicationJsonNull() { byte[] bodyBytes = toJson(null).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -174,8 +173,7 @@ public void testDeserializeApplicationJsonTrue() { byte[] bodyBytes = toJson(true).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -191,8 +189,7 @@ public void testDeserializeApplicationJsonFalse() { byte[] bodyBytes = toJson(false).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -208,8 +205,7 @@ public void testDeserializeApplicationJsonInt() { byte[] bodyBytes = toJson(1).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -225,8 +221,7 @@ public void testDeserializeApplicationJsonFloat() { byte[] bodyBytes = toJson(3.14).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -242,8 +237,7 @@ public void testDeserializeApplicationJsonString() { byte[] bodyBytes = toJson("a").getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } diff --git a/samples/client/petstore/python/src/petstore_api/paths/fake_wild_card_responses/get/operation.py b/samples/client/petstore/python/src/petstore_api/paths/fake_wild_card_responses/get/operation.py index a27c7eedc68..42fa174b2b3 100644 --- a/samples/client/petstore/python/src/petstore_api/paths/fake_wild_card_responses/get/operation.py +++ b/samples/client/petstore/python/src/petstore_api/paths/fake_wild_card_responses/get/operation.py @@ -73,8 +73,9 @@ def _wild_card_responses( stream: bool = False, timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None, ) -> typing.Union[ - response_200.ApiResponse, + response_1xx.ApiResponse, response_2xx.ApiResponse, + response_200.ApiResponse, response_3xx.ApiResponse, ]: ... diff --git a/src/main/java/org/openapijsonschematools/codegen/generatorrunner/DefaultGeneratorRunner.java b/src/main/java/org/openapijsonschematools/codegen/generatorrunner/DefaultGeneratorRunner.java index b719b74661c..bae4daee7d1 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generatorrunner/DefaultGeneratorRunner.java +++ b/src/main/java/org/openapijsonschematools/codegen/generatorrunner/DefaultGeneratorRunner.java @@ -516,7 +516,15 @@ private void generatePathItem(List files, CodegenKey pathKey, CodegenPathI if (operation.responses != null && !operation.responses.isEmpty()) { String responsesJsonPath = operationJsonPath + "/responses"; - generateXs(files, responsesJsonPath, CodegenConstants.JSON_PATH_LOCATION_TYPE.RESPONSES, CodegenConstants.RESPONSES, null, true); + Map responsesInfo = new HashMap<>(); + responsesInfo.put("responses", operation.responses); + responsesInfo.put("statusCodeResponses", operation.statusCodeResponses); + responsesInfo.put("wildcardCodeResponses", operation.wildcardCodeResponses); + responsesInfo.put("nonErrorResponses", operation.nonErrorResponses); + responsesInfo.put("nonErrorStatusCodes", operation.nonErrorStatusCodes); + responsesInfo.put("nonErrorWildcardStatusCodes", operation.nonErrorWildcardStatusCodes); + responsesInfo.put("defaultResponse", operation.defaultResponse); + generateXs(files, responsesJsonPath, CodegenConstants.JSON_PATH_LOCATION_TYPE.RESPONSES, CodegenConstants.RESPONSES, responsesInfo, generator.shouldGenerateFile(responsesJsonPath)); for (Map.Entry responseEntry: operation.responses.entrySet()) { // paths.some_path.post.responses.response_200.__init__.py (file per response) // response is a package because responses have Headers which can be refed @@ -673,7 +681,7 @@ private TreeMap generateResponses(List files) { } TreeMap responses = new TreeMap<>(); String responsesJsonPath = "#/components/responses"; - generateXs(files, responsesJsonPath, CodegenConstants.JSON_PATH_LOCATION_TYPE.RESPONSES, CodegenConstants.RESPONSES, null, true); + generateXs(files, responsesJsonPath, CodegenConstants.JSON_PATH_LOCATION_TYPE.RESPONSES, CodegenConstants.RESPONSES, null, generator.shouldGenerateFile(responsesJsonPath)); for (Map.Entry responseEntry: specResponses.entrySet()) { String componentName = responseEntry.getKey(); ApiResponse apiResponse = responseEntry.getValue(); diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/DefaultGenerator.java b/src/main/java/org/openapijsonschematools/codegen/generators/DefaultGenerator.java index 66dd29cf4e0..d6bb4c026c0 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/DefaultGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/DefaultGenerator.java @@ -54,6 +54,7 @@ import org.openapijsonschematools.codegen.generators.openapimodels.CodegenEncoding; import org.openapijsonschematools.codegen.generators.openapimodels.CodegenHeader; import org.openapijsonschematools.codegen.generators.openapimodels.CodegenKey; +import org.openapijsonschematools.codegen.generators.openapimodels.CodegenMap; import org.openapijsonschematools.codegen.generators.openapimodels.CodegenMediaType; import org.openapijsonschematools.codegen.generators.openapimodels.CodegenOauthFlow; import org.openapijsonschematools.codegen.generators.openapimodels.CodegenOauthFlows; @@ -2690,7 +2691,7 @@ public CodegenOperation fromOperation(Operation operation, String jsonPath, Link CodegenText description = getCodegenText(operation.getDescription()); Boolean deprecated = operation.getDeprecated(); - TreeMap responses = null; + CodegenMap responses = null; LinkedHashSet produces = null; CodegenResponse defaultResponse = null; TreeMap nonDefaultResponses = null; @@ -2698,10 +2699,11 @@ public CodegenOperation fromOperation(Operation operation, String jsonPath, Link TreeMap statusCodeResponses = null; LinkedHashSet errorStatusCodes = null; LinkedHashSet errorWildcardStatusCodes = null; - LinkedHashSet nonErrorStatusCodes = null; + LinkedHashSet nonErrorStatusCodes = null; LinkedHashSet nonErrorWildcardStatusCodes = null; if (operation.getResponses() != null && !operation.getResponses().isEmpty()) { - responses = new TreeMap<>(); + Map responsesMap = new TreeMap<>(); + String responsesJsonPath = jsonPath + "/responses"; for (Map.Entry operationGetResponsesEntry : operation.getResponses().entrySet()) { String key = operationGetResponsesEntry.getKey(); ApiResponse response = operationGetResponsesEntry.getValue(); @@ -2712,10 +2714,10 @@ public CodegenOperation fromOperation(Operation operation, String jsonPath, Link } produces.addAll(responseProduces); } - String usedSourceJsonPath = jsonPath + "/responses/" + key; + String usedSourceJsonPath = responsesJsonPath + "/" + key; CodegenResponse r = fromResponse(response, usedSourceJsonPath); - responses.put(key, r); + responsesMap.put(key, r); if ("default".equals(key)) { defaultResponse = r; continue; @@ -2759,12 +2761,12 @@ public CodegenOperation fromOperation(Operation operation, String jsonPath, Link if (nonErrorStatusCodes == null) { nonErrorStatusCodes = new LinkedHashSet<>(); } - nonErrorStatusCodes.add(key); + nonErrorStatusCodes.add(statusCode); } } // sort them - responses = new TreeMap<>(responses); + responsesMap = new TreeMap<>(responsesMap); if (nonDefaultResponses != null) { nonDefaultResponses = new TreeMap<>(nonDefaultResponses); } @@ -2774,6 +2776,8 @@ public CodegenOperation fromOperation(Operation operation, String jsonPath, Link if (wildcardCodeResponses != null) { wildcardCodeResponses = new TreeMap<>(wildcardCodeResponses); } + CodegenKey responsesJsonPathPiece = getKey("responses", "misc", responsesJsonPath); + responses = new CodegenMap<>(responsesMap, responsesJsonPathPiece, getSubpackage(responsesJsonPath)); } List callbacks = null; @@ -3305,6 +3309,11 @@ public boolean generateSeparateServerSchemas() { return false; } + @Override + public boolean shouldGenerateFile(String jsonPath) { + return true; + } + @Override @SuppressWarnings("static-method") public HashMap fromSecurityRequirement(SecurityRequirement securityRequirement, String sourceJsonPath) { @@ -3893,8 +3902,9 @@ private void updatePathsFilepath(String[] pathPieces) { } return; } else if (pathPieces[4].equals("responses")) { - if (pathPieces.length < 6) { + if (pathPieces.length == 5) { // #/paths/user_login/get/responses -> length 5 + pathPieces[4] = toResponseModuleName(pathPieces[4], jsonPath); return; } // #/paths/user_login/get/responses/200 -> 200 -> response_200 -> length 6 diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/Generator.java b/src/main/java/org/openapijsonschematools/codegen/generators/Generator.java index ee1b3b448b9..907e1c9a8ca 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/Generator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/Generator.java @@ -302,4 +302,5 @@ public interface Generator { Function> getSchemasFn(); boolean generateSeparateServerSchemas(); + boolean shouldGenerateFile(String jsonPath); } diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java index b8e8828f68a..7c1a35ae9a5 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java @@ -711,6 +711,7 @@ public void processOpts() { // exceptions List exceptionClasses = new ArrayList<>(); + exceptionClasses.add("ApiException"); exceptionClasses.add("BaseException"); exceptionClasses.add("InvalidAdditionalPropertyException"); exceptionClasses.add("InvalidTypeException"); @@ -778,13 +779,17 @@ public void processOpts() { packagePath() + File.separatorChar + "response", "ApiResponse.java")); supportingFiles.add(new SupportingFile( - "src/main/java/packagename/response/DeserializedApiResponse.hbs", + "src/main/java/packagename/response/DeserializedHttpResponse.hbs", packagePath() + File.separatorChar + "response", - "DeserializedApiResponse.java")); + "DeserializedHttpResponse.java")); supportingFiles.add(new SupportingFile( "src/main/java/packagename/response/ResponseDeserializer.hbs", packagePath() + File.separatorChar + "response", "ResponseDeserializer.java")); + supportingFiles.add(new SupportingFile( + "src/main/java/packagename/response/ResponsesDeserializer.hbs", + packagePath() + File.separatorChar + "response", + "ResponsesDeserializer.java")); supportingFiles.add(new SupportingFile( "src/test/java/packagename/response/ResponseDeserializerTest.hbs", testPackagePath() + File.separatorChar + "response", @@ -811,6 +816,12 @@ public void processOpts() { put("src/main/java/packagename/components/responses/Response.hbs", ".java"); }} ); + jsonPathTemplateFiles.put( + CodegenConstants.JSON_PATH_LOCATION_TYPE.RESPONSES, + new HashMap<>() {{ + put("src/main/java/packagename/components/responses/Responses.hbs", ".java"); + }} + ); jsonPathDocTemplateFiles.put( CodegenConstants.JSON_PATH_LOCATION_TYPE.RESPONSE, new HashMap<>() {{ @@ -925,11 +936,16 @@ public String toResponseModuleName(String componentName, String jsonPath) { } return toModuleFilename(componentName, jsonPath); } - if (pathPieces.length == 6) { - // #/paths/somePath/verb/responses/200 - return toModelName("Code"+componentName+"Response", null); + switch (pathPieces.length) { + case 5: + // #/paths/somePath/verb/responses + return "Responses"; + case 6: + // #/paths/somePath/verb/responses/200 + return toModelName("Code"+componentName+"Response", null); + default: + return toModuleFilename("code"+componentName+"response", null); } - return toModuleFilename("code"+componentName+"response", null); } @Override @@ -3022,4 +3038,12 @@ public CodegenSchema fromSchema(Schema p, String sourceJsonPath, String currentJ } return cp; } + + @Override + public boolean shouldGenerateFile(String jsonPath) { + if (jsonPath.equals("#/components/responses")) { + 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 3d4ea507d87..7c887e08541 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/PythonClientGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/PythonClientGenerator.java @@ -1757,15 +1757,24 @@ public GeneratorType getTag() { @Override public String toResponseModuleName(String componentName, String jsonPath) { - if (!jsonPath.startsWith("#/components/responses/")) { - return "response_" + componentName.toLowerCase(Locale.ROOT); - } - String suffix = toModuleFilename(componentName, jsonPath); - String spacer = ""; - if (!suffix.startsWith("_")) { - spacer = "_"; + String[] pathPieces = jsonPath.split("/"); + if (jsonPath.startsWith("#/components/responses")) { + if (pathPieces.length == 3) { + return "responses"; + }// #/components/responses/SomeResponse + // #/components/responses/SomeResponse/content/schema + String suffix = toModuleFilename(componentName, jsonPath); + String spacer = ""; + if (!suffix.startsWith("_")) { + spacer = "_"; + } + return "response" + spacer + suffix; } - return "response" + spacer + suffix; + if (pathPieces.length == 5) {// #/paths/somePath/verb/responses + return "responses"; + }// #/paths/somePath/verb/responses/200 + // #/paths/somePath/verb/responses/200/content/schema + return "response_" + componentName.toLowerCase(Locale.ROOT); } @Override diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenMap.java b/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenMap.java new file mode 100644 index 00000000000..5c09348b329 --- /dev/null +++ b/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenMap.java @@ -0,0 +1,26 @@ +package org.openapijsonschematools.codegen.generators.openapimodels; + +import java.util.AbstractMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * A class to store inline operation definitions + */ +public class CodegenMap extends AbstractMap { + public final Map map; + public final CodegenKey jsonPathPiece; + public final String subpackage; + + public CodegenMap(Map map, CodegenKey jsonPathPiece, String subpackage) { + this.map = map; + this.jsonPathPiece = jsonPathPiece; + this.subpackage = subpackage; + } + + @Override + public Set> entrySet() { + return this.map.entrySet(); + } +} 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 c5911b3bd2f..8475d36f2d3 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenOperation.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenOperation.java @@ -23,7 +23,7 @@ public class CodegenOperation { public final Boolean deprecated; - public final LinkedHashSet nonErrorStatusCodes; // values like 201 + public final LinkedHashSet nonErrorStatusCodes; // values like 201 public final LinkedHashSet nonErrorWildcardStatusCodes; // values like 2 for @2XX public final LinkedHashSet errorStatusCodes; // values like 401 public final LinkedHashSet errorWildcardStatusCodes; // values like 4 for 4XX @@ -44,10 +44,11 @@ public class CodegenOperation { public final boolean hasOptionalParamOrBody; public final CodegenList security; public final Map tags; - public final TreeMap responses; + public final CodegenMap responses; public final TreeMap statusCodeResponses; public final TreeMap wildcardCodeResponses; public final TreeMap nonDefaultResponses; + public final TreeMap nonErrorResponses; public final CodegenResponse defaultResponse; public final List callbacks; public final ExternalDocumentation externalDocs; @@ -57,7 +58,7 @@ public class CodegenOperation { public CodegenOperation( Boolean deprecated, - LinkedHashSet nonErrorStatusCodes, + LinkedHashSet nonErrorStatusCodes, LinkedHashSet nonErrorWildcardStatusCodes, LinkedHashSet errorStatusCodes, LinkedHashSet errorWildcardStatusCodes, @@ -75,7 +76,7 @@ public CodegenOperation( boolean hasOptionalParamOrBody, CodegenList security, Map tags, - TreeMap responses, + CodegenMap responses, TreeMap statusCodeResponses, TreeMap wildcardCodeResponses, TreeMap nonDefaultResponses, @@ -119,9 +120,43 @@ public CodegenOperation( this.jsonPathPiece = jsonPathPiece; this.requestBodySchema = requestBodySchema; this.pathItemParameters = pathItemParameters; + TreeMap nonErrorResponsesMap = new TreeMap<>(); + if (statusCodeResponses != null) { + for (Map.Entry entry: statusCodeResponses.entrySet()) { + if (entry.getKey() >= 1 && entry.getKey() <= 399) { + nonErrorResponsesMap.put(entry.getKey().toString(), entry.getValue()); + } + } + } + if (wildcardCodeResponses != null) { + for (Map.Entry entry: wildcardCodeResponses.entrySet()) { + if (entry.getKey() < 4) { + nonErrorResponsesMap.put(entry.getKey().toString(), entry.getValue()); + } + } + } + if (defaultResponse != null) { + if (nonErrorResponsesMap.isEmpty()) { + /* default response should be non-error because + The Responses Object MUST contain at least one response code, and if only one response code + is provided it SHOULD be the response for a successful operation call. + */ + nonErrorResponsesMap.put("default", defaultResponse); + } else { + // the code does not know if this is an error response or non-error + // TODO add generation option that specifies it? + nonErrorResponsesMap.put("default", defaultResponse); + } + } + if (nonErrorResponsesMap.isEmpty()) { + nonErrorResponses = null; + } else { + nonErrorResponses = nonErrorResponsesMap; + } } // used by operation templates + @Deprecated public Map getNonErrorResponses() { HashMap nonErrorResponses = new HashMap<>(); if (statusCodeResponses != null) { diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenResponse.java b/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenResponse.java index 2a90cee518c..cd248827c90 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenResponse.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/openapimodels/CodegenResponse.java @@ -63,10 +63,11 @@ public CodegenResponse(CodegenKey jsonPathPiece, Map head * @return true if there is an inline header */ public boolean hasContentSchema() { - if (content == null) { + CodegenResponse inst = getSelfOrDeepestRef(); + if (inst.content == null) { return false; } - for (CodegenMediaType mediaType: content.values()) { + for (CodegenMediaType mediaType: inst.content.values()) { if (mediaType == null) { continue; } diff --git a/src/main/java/org/openapijsonschematools/codegen/templating/HandlebarsEngineAdapter.java b/src/main/java/org/openapijsonschematools/codegen/templating/HandlebarsEngineAdapter.java index 12c072fe56d..e63c0d2dd0a 100644 --- a/src/main/java/org/openapijsonschematools/codegen/templating/HandlebarsEngineAdapter.java +++ b/src/main/java/org/openapijsonschematools/codegen/templating/HandlebarsEngineAdapter.java @@ -70,10 +70,9 @@ public TemplateSource sourceAt(String location) { Context context = Context .newBuilder(bundle) .resolver( - MapValueResolver.INSTANCE, // access map values - JavaBeanValueResolver.INSTANCE, MethodValueResolver.INSTANCE, // access to public methods - FieldValueResolver.INSTANCE // access to instance fields (private or public). + FieldValueResolver.INSTANCE, // access to instance fields (private or public). + MapValueResolver.INSTANCE // access map values ) .build(); diff --git a/src/main/resources/java/src/main/java/packagename/components/responses/Response.hbs b/src/main/resources/java/src/main/java/packagename/components/responses/Response.hbs index c498a65b161..b1cf695c070 100644 --- a/src/main/resources/java/src/main/java/packagename/components/responses/Response.hbs +++ b/src/main/resources/java/src/main/java/packagename/components/responses/Response.hbs @@ -12,6 +12,8 @@ public class {{jsonPathPiece.pascalCase}} extends {{refInfo.refModule}} { {{else}} import {{packageName}}.configurations.SchemaConfiguration; import {{packageName}}.response.ResponseDeserializer; +import {{packageName}}.response.DeserializedHttpResponse; +import {{packageName}}.exceptions.ApiException; {{#if hasContentSchema}} import {{packageName}}.mediatype.MediaType; {{else}} @@ -27,6 +29,7 @@ import {{{packageName}}}.{{subpackage}}.{{containerJsonPathPiece.pascalCase}}; import java.util.AbstractMap; {{/if}} import java.util.Map; +import java.net.http.HttpResponse; import java.net.http.HttpHeaders; public class {{jsonPathPiece.pascalCase}} { @@ -100,6 +103,28 @@ public class {{jsonPathPiece.pascalCase}} { return null; } } + + {{#if hasContentSchema}} + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } + {{else}} + @SuppressWarnings("serial") + public static class ResponseApiException extends ApiException { + public DeserializedHttpResponse deserializedResponse; + + public ResponseApiException(String s, HttpResponse response, DeserializedHttpResponse deserializedResponse) { + super(s, response); + this.deserializedResponse = deserializedResponse; + } + } + {{/if}} } {{/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/components/responses/Responses.hbs new file mode 100644 index 00000000000..451981e9a22 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/components/responses/Responses.hbs @@ -0,0 +1,152 @@ +package {{packageName}}.{{responses.subpackage}}; + +{{#each responses}} +import {{{packageName}}}.{{subpackage}}.{{jsonPathPiece.pascalCase}}; +{{/each}} +import {{{packageName}}}.exceptions.ApiException; +{{#if nonErrorResponses }} +import {{{packageName}}}.response.ApiResponse; +{{/if}} +import {{{packageName}}}.response.ResponsesDeserializer; +import {{{packageName}}}.configurations.SchemaConfiguration; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpResponse; +import java.util.Map; +import java.util.AbstractMap; + +public class {{responses.jsonPathPiece.pascalCase}} { + {{#if nonErrorResponses}} + public sealed interface EndpointResponse permits {{#each nonErrorResponses}}Endpoint{{jsonPathPiece.pascalCase}}{{#unless @last}}, {{/unless}}{{/each}} {} + {{#each nonErrorResponses}} + + public record Endpoint{{jsonPathPiece.pascalCase}}( + HttpResponse response, + {{#if hasContentSchema}}{{jsonPathPiece.pascalCase}}.SealedResponseBody body{{else}}Void body{{/if}} + ) implements EndpointResponse, ApiResponse<{{#if hasContentSchema}}{{jsonPathPiece.pascalCase}}.SealedResponseBody{{else}}Void{{/if}}, Void>{ + @Override + public Void headers() { + return null; + } + } + {{/each}} + {{/if}} + {{#if statusCodeResponses}} + + public sealed interface StatusCodeResponseDeserializer permits {{#each statusCodeResponses}}Status{{jsonPathPiece.pascalCase}}Deserializer{{#unless @last}}, {{/unless}}{{/each}} {} + + {{#each statusCodeResponses}} + public static final class Status{{jsonPathPiece.pascalCase}}Deserializer extends {{jsonPathPiece.pascalCase}}.{{jsonPathPiece.pascalCase}}1 implements StatusCodeResponseDeserializer { + } + {{/each}} + {{/if}} + {{#if wildcardCodeResponses}} + public sealed interface WildcardCodeResponseDeserializer permits {{#each wildcardCodeResponses}}Wildcard{{jsonPathPiece.pascalCase}}Deserializer{{#unless @last}}, {{/unless}}{{/each}} {} + + {{#each wildcardCodeResponses}} + public static final class Wildcard{{jsonPathPiece.pascalCase}}Deserializer extends {{jsonPathPiece.pascalCase}}.{{jsonPathPiece.pascalCase}}1 implements WildcardCodeResponseDeserializer { + } + {{/each}} + {{/if}} + + public static final class {{responses.jsonPathPiece.pascalCase}}1 implements ResponsesDeserializer<{{#if nonErrorResponses }}EndpointResponse{{else}}Void{{/if}}> { + {{#if statusCodeResponses}} + private final Map statusCodeToResponseDeserializer; + {{/if}} + {{#if wildcardCodeResponses}} + private final Map wildcardCodeToResponseDeserializer; + {{/if}} + {{#with defaultResponse}} + private final {{jsonPathPiece.pascalCase}}.{{jsonPathPiece.pascalCase}}1 defaultResponseDeserializer; + {{/with}} + public {{responses.jsonPathPiece.pascalCase}}1() { + {{#if statusCodeResponses }} + this.statusCodeToResponseDeserializer = Map.ofEntries( + {{#each statusCodeResponses }} + new AbstractMap.SimpleEntry<>("{{@key}}", new Status{{jsonPathPiece.pascalCase}}Deserializer()){{#unless @last}},{{/unless}} + {{/each}} + ); + {{/if}} + {{#if wildcardCodeResponses }} + this.wildcardCodeToResponseDeserializer = Map.ofEntries( + {{#each wildcardCodeResponses }} + new AbstractMap.SimpleEntry<>("{{@key}}", new Wildcard{{jsonPathPiece.snakeCase}}Deserializer()){{#unless @last}},{{/unless}} + {{/each}} + ); + {{/if}} + {{#with defaultResponse}} + this.defaultResponseDeserializer = new {{jsonPathPiece.pascalCase}}.{{jsonPathPiece.pascalCase}}1(); + {{/with}} + } + + public {{#if nonErrorResponses }}EndpointResponse{{else}}Void{{/if}} deserialize(HttpResponse response, SchemaConfiguration configuration) { +{{#eq defaultResponse null }} + String statusCode = String.valueOf(response.statusCode()); + {{#and statusCodeResponses wildcardCodeResponses }} + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer != null) { + {{> src/main/java/packagename/components/responses/_statusCodeDeserialization }} + } + @Nullable WildcardCodeResponseDeserializer wildcardCodeDeserializer = wildcardCodeToResponseDeserializer.get(statusCode); + if (wildcardCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + {{> src/main/java/packagename/components/responses/_wildcardCodeDeserialization }} + {{else}} + {{#or statusCodeResponses wildcardCodeResponses }} + {{#if statusCodeResponses }} + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + {{> src/main/java/packagename/components/responses/_statusCodeDeserialization }} + {{else}} + @Nullable WildcardCodeResponseDeserializer wildcardCodeDeserializer = wildcardCodeToResponseDeserializer.get(statusCode); + if (wildcardCodeDeserializer == null) { + throw new ApiException( + "Invalid response statusCode="+statusCode+" has no response defined in the openapi document", + response + ); + } + {{> src/main/java/packagename/components/responses/_wildcardCodeDeserialization }} + {{/if}} + {{/or}} + {{/and}} +{{else}} + {{#and statusCodeResponses wildcardCodeResponses }} + String statusCode = String.valueOf(response.statusCode()); + {{else}} + {{#or statusCodeResponses wildcardCodeResponses }} + String statusCode = String.valueOf(response.statusCode()); + {{#if statusCodeResponses}} + @Nullable StatusCodeResponseDeserializer statusCodeDeserializer = statusCodeToResponseDeserializer.get(statusCode); + if (statusCodeDeserializer != null) { + {{> src/main/java/packagename/components/responses/_statusCodeDeserialization }} + } + {{else}} + @Nullable WildcardCodeResponseDeserializer wildcardCodeDeserializer = wildcardCodeToResponseDeserializer.get(statusCode); + if (wildcardCodeDeserializer != null) { + {{> src/main/java/packagename/components/responses/_wildcardCodeDeserialization }} + } + {{/if}} + var deserializedResponse = defaultResponseDeserializer.deserialize(response, configuration); + {{#with defaultResponse}} + return new Endpoint{{jsonPathPiece.pascalCase}}(response, deserializedResponse.body()); + {{/with}} + {{else}} + var deserializedResponse = defaultResponseDeserializer.deserialize(response, configuration); + {{#with defaultResponse}} + return new Endpoint{{jsonPathPiece.pascalCase}}(response, deserializedResponse.body()); + {{/with}} + {{/or}} + {{/and}} +{{/eq}} + } + } +} diff --git a/src/main/resources/java/src/main/java/packagename/components/responses/_returnOrThrow.hbs b/src/main/resources/java/src/main/java/packagename/components/responses/_returnOrThrow.hbs new file mode 100644 index 00000000000..7413525e34c --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/components/responses/_returnOrThrow.hbs @@ -0,0 +1,17 @@ +{{#if nonErrorStatusCodes}} + {{#contains nonErrorStatusCodes @key }} +return new Endpoint{{jsonPathPiece.pascalCase}}(response, deserializedResponse.body()); + {{else}} +throw new {{jsonPathPiece.pascalCase}}.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse +); + {{/contains}} +{{else}} +throw new {{jsonPathPiece.pascalCase}}.ResponseApiException( + "Received error statusCode response from server", + response, + deserializedResponse +); +{{/if}} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/components/responses/_statusCodeDeserialization.hbs b/src/main/resources/java/src/main/java/packagename/components/responses/_statusCodeDeserialization.hbs new file mode 100644 index 00000000000..70ff8d84eea --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/components/responses/_statusCodeDeserialization.hbs @@ -0,0 +1,23 @@ +{{#eq statusCodeResponses.size 1}} + {{#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 }} + {{/each}} +{{else}} + {{#each statusCodeResponses}} + {{#if @first}} +if (statusCodeDeserializer instanceof Status{{jsonPathPiece.pascalCase}}Deserializer castDeserializer) { + {{else}} + {{#if @last}} +} else { + Status{{jsonPathPiece.pascalCase}}Deserializer castDeserializer = (Status{{jsonPathPiece.pascalCase}}Deserializer) statusCodeDeserializer; + {{else}} +} else if (statusCodeDeserializer instanceof Status{{jsonPathPiece.pascalCase}}Deserializer castDeserializer) { + {{/if}} + {{/if}} + var deserializedResponse = castDeserializer.deserialize(response, configuration); + {{> src/main/java/packagename/components/responses/_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/components/responses/_wildcardCodeDeserialization.hbs new file mode 100644 index 00000000000..040f0e31e62 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/components/responses/_wildcardCodeDeserialization.hbs @@ -0,0 +1,23 @@ +{{#eq wildcardCodeResponses.size 1}} + {{#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 }} + {{/each}} +{{else}} + {{#each wildcardCodeResponses}} + {{#if @first}} +if (wildcardCodeDeserializer instanceof Wildcard{{jsonPathPiece.pascalCase}}Deserializer castDeserializer) { + {{else}} + {{#if @last}} +} else { + Wildcard{{jsonPathPiece.pascalCase}}Deserializer castDeserializer = (Wildcard{{jsonPathPiece.pascalCase}}Deserializer) wildcardCodeDeserializer; + {{else}} +} else if (wildcardCodeDeserializer instanceof Wildcard{{jsonPathPiece.pascalCase}}Deserializer castDeserializer) { + {{/if}} + {{/if}} + var deserializedResponse = castDeserializer.deserialize(response, configuration); + {{> src/main/java/packagename/components/responses/_returnOrThrow }} + {{/each}} +} +{{/eq}} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/exceptions/ApiException.hbs b/src/main/resources/java/src/main/java/packagename/exceptions/ApiException.hbs new file mode 100644 index 00000000000..76c683b4c5a --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/exceptions/ApiException.hbs @@ -0,0 +1,13 @@ +package {{{packageName}}}.exceptions; + +import java.net.http.HttpResponse; + +@SuppressWarnings("serial") +public class ApiException extends BaseException { + public HttpResponse response; + + public ApiException(String s, HttpResponse response) { + super(s); + this.response = response; + } +} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/exceptions/BaseException.hbs b/src/main/resources/java/src/main/java/packagename/exceptions/BaseException.hbs index 5c79af60205..eb3da9339a5 100644 --- a/src/main/resources/java/src/main/java/packagename/exceptions/BaseException.hbs +++ b/src/main/resources/java/src/main/java/packagename/exceptions/BaseException.hbs @@ -2,4 +2,7 @@ package {{{packageName}}}.exceptions; @SuppressWarnings("serial") public class BaseException extends RuntimeException { + public BaseException(String s) { + super(s); + } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/exceptions/InvalidAdditionalPropertyException.hbs b/src/main/resources/java/src/main/java/packagename/exceptions/InvalidAdditionalPropertyException.hbs index b7948c64791..6567ff7ad8f 100644 --- a/src/main/resources/java/src/main/java/packagename/exceptions/InvalidAdditionalPropertyException.hbs +++ b/src/main/resources/java/src/main/java/packagename/exceptions/InvalidAdditionalPropertyException.hbs @@ -3,6 +3,6 @@ package {{{packageName}}}.exceptions; @SuppressWarnings("serial") public class InvalidAdditionalPropertyException extends BaseException { public InvalidAdditionalPropertyException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/exceptions/InvalidTypeException.hbs b/src/main/resources/java/src/main/java/packagename/exceptions/InvalidTypeException.hbs index e5e1455ffc0..1025411b4c4 100644 --- a/src/main/resources/java/src/main/java/packagename/exceptions/InvalidTypeException.hbs +++ b/src/main/resources/java/src/main/java/packagename/exceptions/InvalidTypeException.hbs @@ -3,6 +3,6 @@ package {{{packageName}}}.exceptions; @SuppressWarnings("serial") public class InvalidTypeException extends BaseException { public InvalidTypeException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/exceptions/UnsetPropertyException.hbs b/src/main/resources/java/src/main/java/packagename/exceptions/UnsetPropertyException.hbs index fd37bec8d71..16504af69fd 100644 --- a/src/main/resources/java/src/main/java/packagename/exceptions/UnsetPropertyException.hbs +++ b/src/main/resources/java/src/main/java/packagename/exceptions/UnsetPropertyException.hbs @@ -3,6 +3,6 @@ package {{{packageName}}}.exceptions; @SuppressWarnings("serial") public class UnsetPropertyException extends BaseException { public UnsetPropertyException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/exceptions/ValidationException.hbs b/src/main/resources/java/src/main/java/packagename/exceptions/ValidationException.hbs index 7a0e0a43af2..c0be4e3d42c 100644 --- a/src/main/resources/java/src/main/java/packagename/exceptions/ValidationException.hbs +++ b/src/main/resources/java/src/main/java/packagename/exceptions/ValidationException.hbs @@ -3,6 +3,6 @@ package {{{packageName}}}.exceptions; @SuppressWarnings("serial") public class ValidationException extends BaseException { public ValidationException(String s) { - super(); + super(s); } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/response/DeserializedApiResponse.hbs b/src/main/resources/java/src/main/java/packagename/response/DeserializedApiResponse.hbs deleted file mode 100644 index 42a0147019a..00000000000 --- a/src/main/resources/java/src/main/java/packagename/response/DeserializedApiResponse.hbs +++ /dev/null @@ -1,8 +0,0 @@ -package {{{packageName}}}.response; - -import java.net.http.HttpResponse; - -public record DeserializedApiResponse(HttpResponse response, - SealedBodyOutputClass body, - HeaderOutputClass headers) implements ApiResponse { -} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/response/DeserializedHttpResponse.hbs b/src/main/resources/java/src/main/java/packagename/response/DeserializedHttpResponse.hbs new file mode 100644 index 00000000000..6c7d2077a45 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/response/DeserializedHttpResponse.hbs @@ -0,0 +1,6 @@ +package {{{packageName}}}.response; + +import java.net.http.HttpResponse; + +public record DeserializedHttpResponse(SealedBodyOutputClass body, HeaderOutputClass headers) { +} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/response/ResponseDeserializer.hbs b/src/main/resources/java/src/main/java/packagename/response/ResponseDeserializer.hbs index 289c8e0fe87..1373ade2a7c 100644 --- a/src/main/resources/java/src/main/java/packagename/response/ResponseDeserializer.hbs +++ b/src/main/resources/java/src/main/java/packagename/response/ResponseDeserializer.hbs @@ -63,7 +63,7 @@ public abstract class ResponseDeserializer deserialize(HttpResponse response, SchemaConfiguration configuration) { + public DeserializedHttpResponse deserialize(HttpResponse response, SchemaConfiguration configuration) { Optional contentTypeInfo = response.headers().firstValue("Content-Type"); if (contentTypeInfo.isEmpty()) { throw new RuntimeException("Invalid response returned, Content-Type header is missing and it must be included"); @@ -78,6 +78,6 @@ public abstract class ResponseDeserializer(response, body, headers); + return new DeserializedHttpResponse<>(body, headers); } } \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/response/ResponsesDeserializer.hbs b/src/main/resources/java/src/main/java/packagename/response/ResponsesDeserializer.hbs new file mode 100644 index 00000000000..7366d4f6953 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/response/ResponsesDeserializer.hbs @@ -0,0 +1,8 @@ +package {{{packageName}}}.response; + +import {{{packageName}}}.configurations.SchemaConfiguration; +import java.net.http.HttpResponse; + +public interface ResponsesDeserializer { + SealedResponseClass deserialize(HttpResponse response, SchemaConfiguration configuration); +} \ No newline at end of file diff --git a/src/main/resources/java/src/test/java/packagename/response/ResponseDeserializerTest.hbs b/src/main/resources/java/src/test/java/packagename/response/ResponseDeserializerTest.hbs index e39c223ca31..53be13892f3 100644 --- a/src/main/resources/java/src/test/java/packagename/response/ResponseDeserializerTest.hbs +++ b/src/main/resources/java/src/test/java/packagename/response/ResponseDeserializerTest.hbs @@ -157,8 +157,7 @@ public class ResponseDeserializerTest { byte[] bodyBytes = toJson(null).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -174,8 +173,7 @@ public class ResponseDeserializerTest { byte[] bodyBytes = toJson(true).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -191,8 +189,7 @@ public class ResponseDeserializerTest { byte[] bodyBytes = toJson(false).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -208,8 +205,7 @@ public class ResponseDeserializerTest { byte[] bodyBytes = toJson(1).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -225,8 +221,7 @@ public class ResponseDeserializerTest { byte[] bodyBytes = toJson(3.14).getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } @@ -242,8 +237,7 @@ public class ResponseDeserializerTest { byte[] bodyBytes = toJson("a").getBytes(StandardCharsets.UTF_8); BytesHttpResponse response = new BytesHttpResponse(bodyBytes, "application/json"); SchemaConfiguration configuration = new SchemaConfiguration(JsonSchemaKeywordFlags.ofNone()); - ApiResponse apiResponse = deserializer.deserialize(response, configuration); - Assert.assertEquals(response, apiResponse.response()); + DeserializedHttpResponse apiResponse = deserializer.deserialize(response, configuration); if (!(apiResponse.body() instanceof ApplicationjsonBody jsonBody)) { throw new RuntimeException("body must be type ApplicationjsonBody"); } diff --git a/src/main/resources/python/paths/path/verb/_helper_operation_args.hbs b/src/main/resources/python/paths/path/verb/_helper_operation_args.hbs index f10407d34c3..0b9a2cb6ad2 100644 --- a/src/main/resources/python/paths/path/verb/_helper_operation_args.hbs +++ b/src/main/resources/python/paths/path/verb/_helper_operation_args.hbs @@ -50,7 +50,7 @@ ) -> api_response.ApiResponseWithoutDeserialization: ... {{/eq}} {{#eq skipDeserialization false}} -) -> {{#if getAllResponsesAreErrors}}api_response.ApiResponseWithoutDeserialization: ...{{else}}{{#gt getNonErrorResponses.size 1}}typing.Union[ +) -> {{#if getAllResponsesAreErrors}}api_response.ApiResponseWithoutDeserialization: ...{{else}}{{#gt nonErrorResponses.size 1}}typing.Union[ {{> paths/path/verb/_helper_operation_response_type_hint multiple=true }} ]{{else}}{{> paths/path/verb/_helper_operation_response_type_hint multiple=false }}{{/gt}}: ... {{/if}} diff --git a/src/main/resources/python/paths/path/verb/_helper_operation_response_type_hint.hbs b/src/main/resources/python/paths/path/verb/_helper_operation_response_type_hint.hbs index 154c2b9ec25..ce1511304ba 100644 --- a/src/main/resources/python/paths/path/verb/_helper_operation_response_type_hint.hbs +++ b/src/main/resources/python/paths/path/verb/_helper_operation_response_type_hint.hbs @@ -1,4 +1,4 @@ -{{#each getNonErrorResponses}} +{{#each nonErrorResponses}} {{jsonPathPiece.snakeCase}}.ApiResponse{{#if multiple}}, {{/if}} {{/each}} \ No newline at end of file