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

Java generator, adds schema default + Servers #355

Merged
merged 13 commits into from
Jan 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions docs/generators/java.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
### Client Modification Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|BasePath||ToolingExtension
|BasePath||ToolingExtension
|Authorizations|✗|ToolingExtension
|UserAgent|✗|ToolingExtension
|MockServer|✗|ToolingExtension
Expand Down Expand Up @@ -216,7 +216,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Readme|✓|ToolingExtension
|Servers||OAS3
|Servers||OAS3
|Security|✗|OAS2,OAS3
|ComponentSchemas|✓|OAS3
|ComponentResponses|✗|OAS3
Expand All @@ -233,7 +233,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Info|✓|OAS2,OAS3
|Servers||OAS3
|Servers||OAS3
|Paths|✗|OAS2,OAS3
|Webhooks|✗|OAS3
|Components|✓|OAS3
Expand Down
5 changes: 5 additions & 0 deletions samples/client/3_0_3_unit_test/java/.openapi-generator/FILES
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ docs/components/schemas/UniqueitemsValidation.md
docs/components/schemas/UriFormat.md
docs/components/schemas/UriReferenceFormat.md
docs/components/schemas/UriTemplateFormat.md
docs/servers/Server0.md
pom.xml
src/main/java/org/openapijsonschematools/client/components/schemas/AdditionalpropertiesAllowsASchemaWhichShouldValidate.java
src/main/java/org/openapijsonschematools/client/components/schemas/AdditionalpropertiesAreAllowedByDefault.java
Expand Down Expand Up @@ -209,6 +210,7 @@ src/main/java/org/openapijsonschematools/client/schemas/validation/BooleanEnumVa
src/main/java/org/openapijsonschematools/client/schemas/validation/BooleanSchemaValidator.java
src/main/java/org/openapijsonschematools/client/schemas/validation/BooleanValueMethod.java
src/main/java/org/openapijsonschematools/client/schemas/validation/CustomIsoparser.java
src/main/java/org/openapijsonschematools/client/schemas/validation/DefaultValueMethod.java
src/main/java/org/openapijsonschematools/client/schemas/validation/DoubleEnumValidator.java
src/main/java/org/openapijsonschematools/client/schemas/validation/DoubleValueMethod.java
src/main/java/org/openapijsonschematools/client/schemas/validation/EnumValidator.java
Expand Down Expand Up @@ -261,6 +263,9 @@ src/main/java/org/openapijsonschematools/client/schemas/validation/TypeValidator
src/main/java/org/openapijsonschematools/client/schemas/validation/UniqueItemsValidator.java
src/main/java/org/openapijsonschematools/client/schemas/validation/UnsetAnyTypeJsonSchema.java
src/main/java/org/openapijsonschematools/client/schemas/validation/ValidationMetadata.java
src/main/java/org/openapijsonschematools/client/servers/Server0.java
src/main/java/org/openapijsonschematools/client/servers/ServerWithVariables.java
src/main/java/org/openapijsonschematools/client/servers/ServerWithoutVariables.java
src/test/java/org/openapijsonschematools/client/configurations/JsonSchemaKeywordFlagsTest.java
src/test/java/org/openapijsonschematools/client/schemas/AnyTypeSchemaTest.java
src/test/java/org/openapijsonschematools/client/schemas/ArrayTypeSchemaTest.java
Expand Down
5 changes: 5 additions & 0 deletions samples/client/3_0_3_unit_test/java/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,11 @@ org.openapijsonschematools.client.components.schemas to validate input payloads
output classes. Json schemas allow multiple types for one schema, so a schema's validate method can have
allowed input and output types.

## Servers
| server_index | Class | Description |
| ------------ | ----- | ----------- |
| 0 | [Server0](docs/servers/Server0.md) | |

## Component Schemas

| Class | Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ String validatedPayload = InvalidStringValueForDefault.Bar.validate(
| ----------------- | ---------------------- |
| Set<Class<?>> | type = Set.of(<br/>&nbsp;&nbsp;&nbsp;&nbsp;String.class<br/>)<br/> |
| Integer | minLength = 4 |
| @Nullable Object | defaultValue = "bad" |

### Method Summary
| Modifier and Type | Method and Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ int validatedPayload = TheDefaultKeywordDoesNotDoAnythingIfThePropertyIsMissing.
| ----------------- | ---------------------- |
| Set<Class<?>> | type = Set.of(<br/>&nbsp;&nbsp;&nbsp;&nbsp;Integer.class,<br/>&nbsp;&nbsp;&nbsp;&nbsp;Long.class,<br/>&nbsp;&nbsp;&nbsp;&nbsp;Float.class,<br/>&nbsp;&nbsp;&nbsp;&nbsp;Double.class<br/>)<br/> |
| Number | maximum = 3 |
| @Nullable Object | defaultValue = 5.0 |

### Method Summary
| Modifier and Type | Method and Description |
Expand Down
17 changes: 17 additions & 0 deletions samples/client/3_0_3_unit_test/java/docs/servers/Server0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
org.openapijsonschematools.client.servers.Server0
# Server Server0
public class Server0

A class that stores a server url

### Constructor Summary
| Constructor and Description |
| --------------------------- |
| Server0()<br>Creates a server |

### Field Summary
| Modifier and Type | Field and Description |
| ----------------- | --------------------- |
| String | url = "https://someserver.com/v1" |

[[Back to top]](#top) [[Back to Servers]](../../README.md#Servers) [[Back to README]](../../README.md)
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.openapijsonschematools.client.schemas.BaseBuilder;
import org.openapijsonschematools.client.schemas.UnsetAddPropsSetter;
import org.openapijsonschematools.client.schemas.validation.BooleanSchemaValidator;
import org.openapijsonschematools.client.schemas.validation.DefaultValueMethod;
import org.openapijsonschematools.client.schemas.validation.FrozenList;
import org.openapijsonschematools.client.schemas.validation.FrozenMap;
import org.openapijsonschematools.client.schemas.validation.JsonSchema;
Expand All @@ -37,7 +38,7 @@ public class InvalidStringValueForDefault {
// nest classes so all schemas and input/output classes can be public


public static class Bar extends JsonSchema implements StringSchemaValidator {
public static class Bar extends JsonSchema implements StringSchemaValidator, DefaultValueMethod<String> {
private static @Nullable Bar instance = null;

protected Bar() {
Expand All @@ -46,6 +47,7 @@ protected Bar() {
String.class
))
.minLength(4)
.defaultValue("bad")
);
}

Expand Down Expand Up @@ -81,6 +83,12 @@ public String validate(String arg, SchemaConfiguration configuration) throws Val
}
throw new InvalidTypeException("Invalid input type="+getClass(arg)+". It can't be instantiated by this schema");
}
public String defaultValue() {
if (defaultValue instanceof String) {
return (String) defaultValue;
}
throw new InvalidTypeException("Invalid type stored in defaultValue");
}
}

public static class InvalidStringValueForDefaultMap extends FrozenMap<@Nullable Object> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.openapijsonschematools.client.exceptions.ValidationException;
import org.openapijsonschematools.client.schemas.BaseBuilder;
import org.openapijsonschematools.client.schemas.UnsetAddPropsSetter;
import org.openapijsonschematools.client.schemas.validation.DefaultValueMethod;
import org.openapijsonschematools.client.schemas.validation.FrozenMap;
import org.openapijsonschematools.client.schemas.validation.JsonSchema;
import org.openapijsonschematools.client.schemas.validation.JsonSchemaInfo;
Expand All @@ -41,6 +42,7 @@ protected Alpha() {
Double.class
))
.maximum(3)
.defaultValue(5.0)
);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package org.openapijsonschematools.client.schemas.validation;

public interface DefaultValueMethod<T> {
T defaultValue();
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public abstract class JsonSchema {
public final @Nullable Boolean uniqueItems;
public final @Nullable Set<@Nullable Object> enumValues;
public final @Nullable Pattern pattern;
public final @Nullable Object defaultValue;
private final LinkedHashMap<String, KeywordValidator> keywordToValidator;

protected JsonSchema(JsonSchemaInfo jsonSchemaInfo) {
Expand Down Expand Up @@ -214,6 +215,7 @@ protected JsonSchema(JsonSchemaInfo jsonSchemaInfo) {
new PatternValidator(this.pattern)
);
}
this.defaultValue = jsonSchemaInfo.defaultValue;
this.keywordToValidator = keywordToValidator;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,4 +128,9 @@ public JsonSchemaInfo pattern(Pattern pattern) {
this.pattern = pattern;
return this;
}
public @Nullable Object defaultValue = null;
public JsonSchemaInfo defaultValue(@Nullable Object defaultValue) {
this.defaultValue = defaultValue;
return this;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package org.openapijsonschematools.client.servers;

import org.openapijsonschematools.client.servers.ServerWithoutVariables;

class Server0 extends ServerWithoutVariables {
public Server0() {
super("https://someserver.com/v1");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.openapijsonschematools.client.servers;

import java.util.Map;

public abstract class ServerWithVariables<T extends Map<String, String>> {
public final String url;
public final T variables;

protected ServerWithVariables(String url, T variables) {
this.variables = variables;
for (Map.Entry<String, String> entry: variables.entrySet()) {
url = url.replace("{" + entry.getKey() + "}", entry.getValue());
}
this.url = url;
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.openapijsonschematools.client.servers;

public abstract class ServerWithoutVariables {
public final String url;

protected ServerWithoutVariables(String url) {
this.url = url;
}
}

17 changes: 17 additions & 0 deletions samples/client/petstore/java/.openapi-generator/FILES
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,9 @@ docs/paths/userlogin/get/responses/response200/headers/xratelimit/content/applic
docs/paths/userusername/get/responses/response200/content/applicationjson/Schema.md
docs/paths/userusername/get/responses/response200/content/applicationxml/Schema.md
docs/paths/userusername/put/requestbody/content/applicationjson/Schema.md
docs/servers/Server0.md
docs/servers/Server1.md
docs/servers/Server2.md
pom.xml
src/main/java/org/openapijsonschematools/client/components/headers/int32jsoncontenttypeheader/content/applicationjson/Int32JsonContentTypeHeaderSchema.java
src/main/java/org/openapijsonschematools/client/components/headers/numberheader/NumberHeaderSchema.java
Expand Down Expand Up @@ -609,8 +612,14 @@ src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/
src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/response4xx/content/applicationjson/Schema.java
src/main/java/org/openapijsonschematools/client/paths/fakewildcardresponses/get/responses/response5xx/content/applicationjson/Schema.java
src/main/java/org/openapijsonschematools/client/paths/foo/get/responses/responsedefault/content/applicationjson/Schema.java
src/main/java/org/openapijsonschematools/client/paths/foo/get/servers/FooGetServer0.java
src/main/java/org/openapijsonschematools/client/paths/foo/get/servers/FooGetServer1.java
src/main/java/org/openapijsonschematools/client/paths/foo/get/servers/server1/Variables.java
src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/QueryParameters.java
src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/get/parameters/parameter0/Schema0.java
src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/servers/PetfindbystatusServer0.java
src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/servers/PetfindbystatusServer1.java
src/main/java/org/openapijsonschematools/client/paths/petfindbystatus/servers/server1/Variables.java
src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/QueryParameters.java
src/main/java/org/openapijsonschematools/client/paths/petfindbytags/get/parameters/parameter0/Schema0.java
src/main/java/org/openapijsonschematools/client/paths/petpetid/delete/HeaderParameters.java
Expand Down Expand Up @@ -679,6 +688,7 @@ src/main/java/org/openapijsonschematools/client/schemas/validation/BooleanEnumVa
src/main/java/org/openapijsonschematools/client/schemas/validation/BooleanSchemaValidator.java
src/main/java/org/openapijsonschematools/client/schemas/validation/BooleanValueMethod.java
src/main/java/org/openapijsonschematools/client/schemas/validation/CustomIsoparser.java
src/main/java/org/openapijsonschematools/client/schemas/validation/DefaultValueMethod.java
src/main/java/org/openapijsonschematools/client/schemas/validation/DoubleEnumValidator.java
src/main/java/org/openapijsonschematools/client/schemas/validation/DoubleValueMethod.java
src/main/java/org/openapijsonschematools/client/schemas/validation/EnumValidator.java
Expand Down Expand Up @@ -731,6 +741,13 @@ src/main/java/org/openapijsonschematools/client/schemas/validation/TypeValidator
src/main/java/org/openapijsonschematools/client/schemas/validation/UniqueItemsValidator.java
src/main/java/org/openapijsonschematools/client/schemas/validation/UnsetAnyTypeJsonSchema.java
src/main/java/org/openapijsonschematools/client/schemas/validation/ValidationMetadata.java
src/main/java/org/openapijsonschematools/client/servers/Server0.java
src/main/java/org/openapijsonschematools/client/servers/Server1.java
src/main/java/org/openapijsonschematools/client/servers/Server2.java
src/main/java/org/openapijsonschematools/client/servers/ServerWithVariables.java
src/main/java/org/openapijsonschematools/client/servers/ServerWithoutVariables.java
src/main/java/org/openapijsonschematools/client/servers/server0/Variables.java
src/main/java/org/openapijsonschematools/client/servers/server1/Variables.java
src/test/java/org/openapijsonschematools/client/configurations/JsonSchemaKeywordFlagsTest.java
src/test/java/org/openapijsonschematools/client/schemas/AnyTypeSchemaTest.java
src/test/java/org/openapijsonschematools/client/schemas/ArrayTypeSchemaTest.java
Expand Down
7 changes: 7 additions & 0 deletions samples/client/petstore/java/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,13 @@ org.openapijsonschematools.client.components.schemas to validate input payloads
output classes. Json schemas allow multiple types for one schema, so a schema's validate method can have
allowed input and output types.

## Servers
| server_index | Class | Description |
| ------------ | ----- | ----------- |
| 0 | [Server0](docs/servers/Server0.md) | petstore server |
| 1 | [Server1](docs/servers/Server1.md) | The local server |
| 2 | [Server2](docs/servers/Server2.md) | staging server with no variables |

## Component Schemas

| Class | Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ String validatedPayload = Animal.Color.validate(
| Modifier and Type | Field and Description |
| ----------------- | ---------------------- |
| Set<Class<?>> | type = Set.of(<br/>&nbsp;&nbsp;&nbsp;&nbsp;String.class<br/>)<br/> |
| @Nullable Object | defaultValue = "red" |

### Method Summary
| Modifier and Type | Method and Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ String validatedPayload = Bar.Bar1.validate(
| Modifier and Type | Field and Description |
| ----------------- | ---------------------- |
| Set<Class<?>> | type = Set.of(<br/>&nbsp;&nbsp;&nbsp;&nbsp;String.class<br/>)<br/> |
| @Nullable Object | defaultValue = "bar" |

### Method Summary
| Modifier and Type | Method and Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ String validatedPayload = Category.Name.validate(
| Modifier and Type | Field and Description |
| ----------------- | ---------------------- |
| Set<Class<?>> | type = Set.of(<br/>&nbsp;&nbsp;&nbsp;&nbsp;String.class<br/>)<br/> |
| @Nullable Object | defaultValue = "default-name" |

### Method Summary
| Modifier and Type | Method and Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ String validatedPayload = DateTimeTest.DateTimeTest1.validate(
| ----------------- | ---------------------- |
| Set<Class<?>> | type = Set.of(<br/>&nbsp;&nbsp;&nbsp;&nbsp;String.class<br/>)<br/> |
| String | type = "date-time"; |
| @Nullable Object | defaultValue = "2010-01-01T10:10:10.000111+01:00" |

### Method Summary
| Modifier and Type | Method and Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ String validatedPayload = EnumClass.EnumClass1.validate(
| ----------------- | ---------------------- |
| Set<Class<?>> | type = Set.of(<br/>&nbsp;&nbsp;&nbsp;&nbsp;String.class<br/>)<br/> |
| Set<Object> | enumValues = SetMaker.makeSet(<br>&nbsp;&nbsp;&nbsp;&nbsp;"_abc",<br>&nbsp;&nbsp;&nbsp;&nbsp;"-efg",<br>&nbsp;&nbsp;&nbsp;&nbsp;"(xyz)",<br>&nbsp;&nbsp;&nbsp;&nbsp;"COUNT_1M",<br>&nbsp;&nbsp;&nbsp;&nbsp;"COUNT_50M"<br>)<br> |
| @Nullable Object | defaultValue = "-efg" |

### Method Summary
| Modifier and Type | Method and Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ long validatedPayload = IntegerEnumWithDefaultValue.IntegerEnumWithDefaultValue1
| ----------------- | ---------------------- |
| Set<Class<?>> | type = Set.of(<br/>&nbsp;&nbsp;&nbsp;&nbsp;Integer.class,<br/>&nbsp;&nbsp;&nbsp;&nbsp;Long.class,<br/>&nbsp;&nbsp;&nbsp;&nbsp;Float.class,<br/>&nbsp;&nbsp;&nbsp;&nbsp;Double.class<br/>)<br/> |
| Set<Object> | enumValues = SetMaker.makeSet(<br>&nbsp;&nbsp;&nbsp;&nbsp;0,<br>&nbsp;&nbsp;&nbsp;&nbsp;1,<br>&nbsp;&nbsp;&nbsp;&nbsp;2<br>)<br> |
| @Nullable Object | defaultValue = 0 |

### Method Summary
| Modifier and Type | Method and Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ String validatedPayload = StringEnumWithDefaultValue.StringEnumWithDefaultValue1
| ----------------- | ---------------------- |
| Set<Class<?>> | type = Set.of(<br/>&nbsp;&nbsp;&nbsp;&nbsp;String.class<br/>)<br/> |
| Set<Object> | enumValues = SetMaker.makeSet(<br>&nbsp;&nbsp;&nbsp;&nbsp;"placed",<br>&nbsp;&nbsp;&nbsp;&nbsp;"approved",<br>&nbsp;&nbsp;&nbsp;&nbsp;"delivered"<br>)<br> |
| @Nullable Object | defaultValue = "placed" |

### Method Summary
| Modifier and Type | Method and Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ String validatedPayload = Schema0.Items0.validate(
| ----------------- | ---------------------- |
| Set<Class<?>> | type = Set.of(<br/>&nbsp;&nbsp;&nbsp;&nbsp;String.class<br/>)<br/> |
| Set<Object> | enumValues = SetMaker.makeSet(<br>&nbsp;&nbsp;&nbsp;&nbsp;">",<br>&nbsp;&nbsp;&nbsp;&nbsp;"$"<br>)<br> |
| @Nullable Object | defaultValue = "$" |

### Method Summary
| Modifier and Type | Method and Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ String validatedPayload = Schema1.Schema11.validate(
| ----------------- | ---------------------- |
| Set<Class<?>> | type = Set.of(<br/>&nbsp;&nbsp;&nbsp;&nbsp;String.class<br/>)<br/> |
| Set<Object> | enumValues = SetMaker.makeSet(<br>&nbsp;&nbsp;&nbsp;&nbsp;"_abc",<br>&nbsp;&nbsp;&nbsp;&nbsp;"-efg",<br>&nbsp;&nbsp;&nbsp;&nbsp;"(xyz)"<br>)<br> |
| @Nullable Object | defaultValue = "-efg" |

### Method Summary
| Modifier and Type | Method and Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ String validatedPayload = Schema2.Items2.validate(
| ----------------- | ---------------------- |
| Set<Class<?>> | type = Set.of(<br/>&nbsp;&nbsp;&nbsp;&nbsp;String.class<br/>)<br/> |
| Set<Object> | enumValues = SetMaker.makeSet(<br>&nbsp;&nbsp;&nbsp;&nbsp;">",<br>&nbsp;&nbsp;&nbsp;&nbsp;"$"<br>)<br> |
| @Nullable Object | defaultValue = "$" |

### Method Summary
| Modifier and Type | Method and Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ String validatedPayload = Schema3.Schema31.validate(
| ----------------- | ---------------------- |
| Set<Class<?>> | type = Set.of(<br/>&nbsp;&nbsp;&nbsp;&nbsp;String.class<br/>)<br/> |
| Set<Object> | enumValues = SetMaker.makeSet(<br>&nbsp;&nbsp;&nbsp;&nbsp;"_abc",<br>&nbsp;&nbsp;&nbsp;&nbsp;"-efg",<br>&nbsp;&nbsp;&nbsp;&nbsp;"(xyz)"<br>)<br> |
| @Nullable Object | defaultValue = "-efg" |

### Method Summary
| Modifier and Type | Method and Description |
Expand Down
Loading