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

Commit 83dc145

Browse files
authored
Java, adds output class types for array and object schema types (#293)
* Adds output map types * Adds map output class of method * Adds getMapOutputInstance method * Makes getMapOutputInstance non-public * Makes getMapOutputInstance protected * Adds Array output types * Adds array output class * Refactors validation logic to protect SchemaValidator validate method * FIxes java warning in schema validator * Fixes some java warnings in JsonSchema class * Fixes getProperties input * More refactoring of validation package to reduce java warnings * Replaces path to type with pathSet * Has type object validate method return output type class * Integrates array and map output types into the validate methods
1 parent 02d098c commit 83dc145

344 files changed

Lines changed: 5190 additions & 3622 deletions

File tree

Some content is hidden

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

samples/client/petstore/java/.openapi-generator/FILES

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -343,53 +343,51 @@ src/main/java/org/openapijsonschematools/paths/userusername/put/PathParameters.j
343343
src/main/java/org/openapijsonschematools/paths/userusername/put/requestbody/content/applicationjson/Schema.java
344344
src/main/java/org/openapijsonschematools/schemas/AnyTypeJsonSchema.java
345345
src/main/java/org/openapijsonschematools/schemas/BooleanJsonSchema.java
346-
src/main/java/org/openapijsonschematools/schemas/CustomIsoparser.java
347346
src/main/java/org/openapijsonschematools/schemas/DateJsonSchema.java
348347
src/main/java/org/openapijsonschematools/schemas/DateTimeJsonSchema.java
349348
src/main/java/org/openapijsonschematools/schemas/DecimalJsonSchema.java
350349
src/main/java/org/openapijsonschematools/schemas/DoubleJsonSchema.java
351350
src/main/java/org/openapijsonschematools/schemas/FloatJsonSchema.java
352-
src/main/java/org/openapijsonschematools/schemas/FrozenList.java
353-
src/main/java/org/openapijsonschematools/schemas/FrozenMap.java
354351
src/main/java/org/openapijsonschematools/schemas/Int32JsonSchema.java
355352
src/main/java/org/openapijsonschematools/schemas/Int64JsonSchema.java
356353
src/main/java/org/openapijsonschematools/schemas/IntJsonSchema.java
357-
src/main/java/org/openapijsonschematools/schemas/JsonSchema.java
358354
src/main/java/org/openapijsonschematools/schemas/ListJsonSchema.java
359355
src/main/java/org/openapijsonschematools/schemas/MapJsonSchema.java
360356
src/main/java/org/openapijsonschematools/schemas/NotAnyTypeJsonSchema.java
361357
src/main/java/org/openapijsonschematools/schemas/NullJsonSchema.java
362358
src/main/java/org/openapijsonschematools/schemas/NumberJsonSchema.java
363-
src/main/java/org/openapijsonschematools/schemas/PathToSchemasMap.java
364-
src/main/java/org/openapijsonschematools/schemas/PathToTypeMap.java
365-
src/main/java/org/openapijsonschematools/schemas/SchemaValidator.java
366359
src/main/java/org/openapijsonschematools/schemas/StringJsonSchema.java
367-
src/main/java/org/openapijsonschematools/schemas/UnsetAnyTypeJsonSchema.java
368360
src/main/java/org/openapijsonschematools/schemas/UuidJsonSchema.java
369-
src/main/java/org/openapijsonschematools/schemas/ValidationMetadata.java
370-
src/main/java/org/openapijsonschematools/schemas/validators/AdditionalPropertiesValidator.java
371-
src/main/java/org/openapijsonschematools/schemas/validators/FakeValidator.java
372-
src/main/java/org/openapijsonschematools/schemas/validators/FormatValidator.java
373-
src/main/java/org/openapijsonschematools/schemas/validators/ItemsValidator.java
374-
src/main/java/org/openapijsonschematools/schemas/validators/KeywordValidator.java
375-
src/main/java/org/openapijsonschematools/schemas/validators/PropertiesValidator.java
376-
src/main/java/org/openapijsonschematools/schemas/validators/RequiredValidator.java
377-
src/main/java/org/openapijsonschematools/schemas/validators/TypeValidator.java
361+
src/main/java/org/openapijsonschematools/schemas/validation/AdditionalPropertiesValidator.java
362+
src/main/java/org/openapijsonschematools/schemas/validation/CustomIsoparser.java
363+
src/main/java/org/openapijsonschematools/schemas/validation/FakeValidator.java
364+
src/main/java/org/openapijsonschematools/schemas/validation/FormatValidator.java
365+
src/main/java/org/openapijsonschematools/schemas/validation/FrozenList.java
366+
src/main/java/org/openapijsonschematools/schemas/validation/FrozenMap.java
367+
src/main/java/org/openapijsonschematools/schemas/validation/ItemsValidator.java
368+
src/main/java/org/openapijsonschematools/schemas/validation/JsonSchema.java
369+
src/main/java/org/openapijsonschematools/schemas/validation/KeywordValidator.java
370+
src/main/java/org/openapijsonschematools/schemas/validation/PathToSchemasMap.java
371+
src/main/java/org/openapijsonschematools/schemas/validation/PropertiesValidator.java
372+
src/main/java/org/openapijsonschematools/schemas/validation/RequiredValidator.java
373+
src/main/java/org/openapijsonschematools/schemas/validation/TypeValidator.java
374+
src/main/java/org/openapijsonschematools/schemas/validation/UnsetAnyTypeJsonSchema.java
375+
src/main/java/org/openapijsonschematools/schemas/validation/ValidationMetadata.java
378376
src/test/java/org/openapijsonschematools/configurations/JsonSchemaKeywordFlagsTest.java
379377
src/test/java/org/openapijsonschematools/schemas/AnyTypeSchemaTest.java
380378
src/test/java/org/openapijsonschematools/schemas/ArrayTypeSchemaTest.java
381379
src/test/java/org/openapijsonschematools/schemas/BooleanSchemaTest.java
382-
src/test/java/org/openapijsonschematools/schemas/CustomIsoparserTest.java
383380
src/test/java/org/openapijsonschematools/schemas/ListSchemaTest.java
384381
src/test/java/org/openapijsonschematools/schemas/MapSchemaTest.java
385382
src/test/java/org/openapijsonschematools/schemas/NullSchemaTest.java
386383
src/test/java/org/openapijsonschematools/schemas/NumberSchemaTest.java
387384
src/test/java/org/openapijsonschematools/schemas/ObjectTypeSchemaTest.java
388385
src/test/java/org/openapijsonschematools/schemas/RefBooleanSchemaTest.java
389-
src/test/java/org/openapijsonschematools/schemas/SchemaValidatorTest.java
390-
src/test/java/org/openapijsonschematools/schemas/validators/AdditionalPropertiesValidatorTest.java
391-
src/test/java/org/openapijsonschematools/schemas/validators/FormatValidatorTest.java
392-
src/test/java/org/openapijsonschematools/schemas/validators/ItemsValidatorTest.java
393-
src/test/java/org/openapijsonschematools/schemas/validators/PropertiesValidatorTest.java
394-
src/test/java/org/openapijsonschematools/schemas/validators/RequiredValidatorTest.java
395-
src/test/java/org/openapijsonschematools/schemas/validators/TypeValidatorTest.java
386+
src/test/java/org/openapijsonschematools/schemas/validation/AdditionalPropertiesValidatorTest.java
387+
src/test/java/org/openapijsonschematools/schemas/validation/CustomIsoparserTest.java
388+
src/test/java/org/openapijsonschematools/schemas/validation/FormatValidatorTest.java
389+
src/test/java/org/openapijsonschematools/schemas/validation/ItemsValidatorTest.java
390+
src/test/java/org/openapijsonschematools/schemas/validation/JsonSchemaTest.java
391+
src/test/java/org/openapijsonschematools/schemas/validation/PropertiesValidatorTest.java
392+
src/test/java/org/openapijsonschematools/schemas/validation/RequiredValidatorTest.java
393+
src/test/java/org/openapijsonschematools/schemas/validation/TypeValidatorTest.java

samples/client/petstore/java/src/main/java/org/openapijsonschematools/components/requestbodies/userarray/content/applicationjson/Schema.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,28 @@
44
import java.util.Set;
55
import org.openapijsonschematools.components.schemas.User;
66
import org.openapijsonschematools.configurations.SchemaConfiguration;
7-
import org.openapijsonschematools.schemas.FrozenList;
8-
import org.openapijsonschematools.schemas.JsonSchema;
7+
import org.openapijsonschematools.schemas.validation.FrozenList;
8+
import org.openapijsonschematools.schemas.validation.JsonSchema;
99

1010
public class Schema {
1111
// nest classes so all schemas and input/output classes can be public
1212

1313

14-
public class Schema1 implements JsonSchema {
15-
static final LinkedHashSet<Class<?>> type = new LinkedHashSet<>(Set.of(
14+
public static class SchemaList extends FrozenList<Object> {
15+
SchemaList(FrozenList<Object> m) {
16+
super(m);
17+
}
18+
}
19+
20+
public class Schema1 extends JsonSchema {
21+
public static final LinkedHashSet<Class<?>> type = new LinkedHashSet<>(Set.of(
1622
FrozenList.class
1723
));
18-
static final Class<?> items = User.User1.class;
19-
public static <U extends FrozenList> U validate(List<Object> arg, SchemaConfiguration configuration) {
24+
public static final Class<?> items = User.User1.class;
25+
protected static SchemaList getListOutputInstance(FrozenList<Object> arg) {
26+
return new SchemaList(arg);
27+
}
28+
public static SchemaList validate(List<Object> arg, SchemaConfiguration configuration) {
2029
return JsonSchema.validate(Schema1.class, arg, configuration);
2130
}
2231
}}

samples/client/petstore/java/src/main/java/org/openapijsonschematools/components/responses/headerswithnobody/Headers.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import org.openapijsonschematools.components.responses.headerswithnobody.headers.location.LocationSchema;
88
import org.openapijsonschematools.configurations.SchemaConfiguration;
99
import org.openapijsonschematools.schemas.AnyTypeJsonSchema;
10-
import org.openapijsonschematools.schemas.FrozenMap;
11-
import org.openapijsonschematools.schemas.JsonSchema;
1210
import org.openapijsonschematools.schemas.NotAnyTypeJsonSchema;
11+
import org.openapijsonschematools.schemas.validation.FrozenMap;
12+
import org.openapijsonschematools.schemas.validation.JsonSchema;
1313

1414
public class Headers {
1515
// nest classes so all schemas and input/output classes can be public
@@ -19,15 +19,27 @@ public class AdditionalProperties extends NotAnyTypeJsonSchema {}
1919
// NotAnyTypeSchema
2020

2121

22-
public class Headers1 implements JsonSchema {
23-
static final LinkedHashSet<Class<?>> type = new LinkedHashSet<>(Set.of(
22+
public static class HeadersMap extends FrozenMap<String, Object> {
23+
HeadersMap(FrozenMap<? extends String, ?> m) {
24+
super(m);
25+
}
26+
public static HeadersMap of(Map<String, Object> arg, SchemaConfiguration configuration) {
27+
return Headers1.validate(arg, configuration);
28+
}
29+
}
30+
31+
public class Headers1 extends JsonSchema {
32+
public static final LinkedHashSet<Class<?>> type = new LinkedHashSet<>(Set.of(
2433
FrozenMap.class
2534
));
26-
static final LinkedHashMap<String, Class<?>> properties = new LinkedHashMap<>(Map.ofEntries(
35+
public static final LinkedHashMap<String, Class<?>> properties = new LinkedHashMap<>(Map.ofEntries(
2736
new AbstractMap.SimpleEntry<String, Class<?>>("location", LocationSchema.LocationSchema1.class)
2837
));
2938
static final Class<?> additionalProperties = AdditionalProperties.class;
30-
public static <T extends FrozenMap> T validate(Map<String, Object> arg, SchemaConfiguration configuration) {
39+
protected static HeadersMap getMapOutputInstance(FrozenMap<? extends String, ?> arg) {
40+
return new HeadersMap(arg);
41+
}
42+
public static HeadersMap validate(Map<String, Object> arg, SchemaConfiguration configuration) {
3143
return JsonSchema.validate(Headers1.class, arg, configuration);
3244
}
3345
}

samples/client/petstore/java/src/main/java/org/openapijsonschematools/components/responses/successfulxmlandjsonarrayofpet/content/applicationjson/Schema.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,28 @@
55
import org.openapijsonschematools.components.schemas.Pet;
66
import org.openapijsonschematools.components.schemas.RefPet;
77
import org.openapijsonschematools.configurations.SchemaConfiguration;
8-
import org.openapijsonschematools.schemas.FrozenList;
9-
import org.openapijsonschematools.schemas.JsonSchema;
8+
import org.openapijsonschematools.schemas.validation.FrozenList;
9+
import org.openapijsonschematools.schemas.validation.JsonSchema;
1010

1111
public class Schema {
1212
// nest classes so all schemas and input/output classes can be public
1313

1414

15-
public class Schema1 implements JsonSchema {
16-
static final LinkedHashSet<Class<?>> type = new LinkedHashSet<>(Set.of(
15+
public static class SchemaList extends FrozenList<Object> {
16+
SchemaList(FrozenList<Object> m) {
17+
super(m);
18+
}
19+
}
20+
21+
public class Schema1 extends JsonSchema {
22+
public static final LinkedHashSet<Class<?>> type = new LinkedHashSet<>(Set.of(
1723
FrozenList.class
1824
));
19-
static final Class<?> items = RefPet.RefPet1.class;
20-
public static <U extends FrozenList> U validate(List<Object> arg, SchemaConfiguration configuration) {
25+
public static final Class<?> items = RefPet.RefPet1.class;
26+
protected static SchemaList getListOutputInstance(FrozenList<Object> arg) {
27+
return new SchemaList(arg);
28+
}
29+
public static SchemaList validate(List<Object> arg, SchemaConfiguration configuration) {
2130
return JsonSchema.validate(Schema1.class, arg, configuration);
2231
}
2332
}}

samples/client/petstore/java/src/main/java/org/openapijsonschematools/components/responses/successfulxmlandjsonarrayofpet/content/applicationxml/Schema.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,28 @@
44
import java.util.Set;
55
import org.openapijsonschematools.components.schemas.Pet;
66
import org.openapijsonschematools.configurations.SchemaConfiguration;
7-
import org.openapijsonschematools.schemas.FrozenList;
8-
import org.openapijsonschematools.schemas.JsonSchema;
7+
import org.openapijsonschematools.schemas.validation.FrozenList;
8+
import org.openapijsonschematools.schemas.validation.JsonSchema;
99

1010
public class Schema {
1111
// nest classes so all schemas and input/output classes can be public
1212

1313

14-
public class Schema1 implements JsonSchema {
15-
static final LinkedHashSet<Class<?>> type = new LinkedHashSet<>(Set.of(
14+
public static class SchemaList extends FrozenList<Object> {
15+
SchemaList(FrozenList<Object> m) {
16+
super(m);
17+
}
18+
}
19+
20+
public class Schema1 extends JsonSchema {
21+
public static final LinkedHashSet<Class<?>> type = new LinkedHashSet<>(Set.of(
1622
FrozenList.class
1723
));
18-
static final Class<?> items = Pet.Pet1.class;
19-
public static <U extends FrozenList> U validate(List<Object> arg, SchemaConfiguration configuration) {
24+
public static final Class<?> items = Pet.Pet1.class;
25+
protected static SchemaList getListOutputInstance(FrozenList<Object> arg) {
26+
return new SchemaList(arg);
27+
}
28+
public static SchemaList validate(List<Object> arg, SchemaConfiguration configuration) {
2029
return JsonSchema.validate(Schema1.class, arg, configuration);
2130
}
2231
}}

samples/client/petstore/java/src/main/java/org/openapijsonschematools/components/responses/successinlinecontentandheader/Headers.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import org.openapijsonschematools.components.responses.successinlinecontentandheader.headers.someheader.SomeHeaderSchema;
88
import org.openapijsonschematools.configurations.SchemaConfiguration;
99
import org.openapijsonschematools.schemas.AnyTypeJsonSchema;
10-
import org.openapijsonschematools.schemas.FrozenMap;
11-
import org.openapijsonschematools.schemas.JsonSchema;
1210
import org.openapijsonschematools.schemas.NotAnyTypeJsonSchema;
11+
import org.openapijsonschematools.schemas.validation.FrozenMap;
12+
import org.openapijsonschematools.schemas.validation.JsonSchema;
1313

1414
public class Headers {
1515
// nest classes so all schemas and input/output classes can be public
@@ -19,15 +19,27 @@ public class AdditionalProperties extends NotAnyTypeJsonSchema {}
1919
// NotAnyTypeSchema
2020

2121

22-
public class Headers1 implements JsonSchema {
23-
static final LinkedHashSet<Class<?>> type = new LinkedHashSet<>(Set.of(
22+
public static class HeadersMap extends FrozenMap<String, Object> {
23+
HeadersMap(FrozenMap<? extends String, ?> m) {
24+
super(m);
25+
}
26+
public static HeadersMap of(Map<String, Object> arg, SchemaConfiguration configuration) {
27+
return Headers1.validate(arg, configuration);
28+
}
29+
}
30+
31+
public class Headers1 extends JsonSchema {
32+
public static final LinkedHashSet<Class<?>> type = new LinkedHashSet<>(Set.of(
2433
FrozenMap.class
2534
));
26-
static final LinkedHashMap<String, Class<?>> properties = new LinkedHashMap<>(Map.ofEntries(
35+
public static final LinkedHashMap<String, Class<?>> properties = new LinkedHashMap<>(Map.ofEntries(
2736
new AbstractMap.SimpleEntry<String, Class<?>>("someHeader", SomeHeaderSchema.SomeHeaderSchema1.class)
2837
));
2938
static final Class<?> additionalProperties = AdditionalProperties.class;
30-
public static <T extends FrozenMap> T validate(Map<String, Object> arg, SchemaConfiguration configuration) {
39+
protected static HeadersMap getMapOutputInstance(FrozenMap<? extends String, ?> arg) {
40+
return new HeadersMap(arg);
41+
}
42+
public static HeadersMap validate(Map<String, Object> arg, SchemaConfiguration configuration) {
3143
return JsonSchema.validate(Headers1.class, arg, configuration);
3244
}
3345
}

samples/client/petstore/java/src/main/java/org/openapijsonschematools/components/responses/successinlinecontentandheader/content/applicationjson/Schema.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import java.util.Map;
44
import java.util.Set;
55
import org.openapijsonschematools.configurations.SchemaConfiguration;
6-
import org.openapijsonschematools.schemas.FrozenMap;
76
import org.openapijsonschematools.schemas.Int32JsonSchema;
8-
import org.openapijsonschematools.schemas.JsonSchema;
7+
import org.openapijsonschematools.schemas.validation.FrozenMap;
8+
import org.openapijsonschematools.schemas.validation.JsonSchema;
99

1010
public class Schema {
1111
// nest classes so all schemas and input/output classes can be public
@@ -14,12 +14,24 @@ public class Schema {
1414
public class AdditionalProperties extends Int32JsonSchema {}
1515

1616

17-
public class Schema1 implements JsonSchema {
18-
static final LinkedHashSet<Class<?>> type = new LinkedHashSet<>(Set.of(
17+
public static class SchemaMap extends FrozenMap<String, Object> {
18+
SchemaMap(FrozenMap<? extends String, ?> m) {
19+
super(m);
20+
}
21+
public static SchemaMap of(Map<String, Object> arg, SchemaConfiguration configuration) {
22+
return Schema1.validate(arg, configuration);
23+
}
24+
}
25+
26+
public class Schema1 extends JsonSchema {
27+
public static final LinkedHashSet<Class<?>> type = new LinkedHashSet<>(Set.of(
1928
FrozenMap.class
2029
));
2130
static final Class<?> additionalProperties = AdditionalProperties.class;
22-
public static <T extends FrozenMap> T validate(Map<String, Object> arg, SchemaConfiguration configuration) {
31+
protected static SchemaMap getMapOutputInstance(FrozenMap<? extends String, ?> arg) {
32+
return new SchemaMap(arg);
33+
}
34+
public static SchemaMap validate(Map<String, Object> arg, SchemaConfiguration configuration) {
2335
return JsonSchema.validate(Schema1.class, arg, configuration);
2436
}
2537
}

0 commit comments

Comments
 (0)