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

Commit 53fabbd

Browse files
authored
Java, adds schema classes (#274)
* Adds NullSchema * Adds NullSchemaTest * Adds BooleanSchema and tests of it * Adds long handling * Casts int/long/float/double into BigDecimal under the hood * Adds BigDecimal ingestion in cast to allowed types * Adds NumberSchema and tests it * Adds format validator * Adds numeric positive format tests * Adds numeric negative format tests * Adds format tests of strings and numbers * Adds Int32Schema * Adds Int64Schema * Adds IntSchema * Adds double and float schemas
1 parent 72366d4 commit 53fabbd

Some content is hidden

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

42 files changed

+1673
-28
lines changed

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,30 @@ pom.xml
33
src/main/java/org/openapijsonschematools/configurations/JsonSchemaKeywordFlags.java
44
src/main/java/org/openapijsonschematools/configurations/SchemaConfiguration.java
55
src/main/java/org/openapijsonschematools/schemas/AnyTypeSchema.java
6+
src/main/java/org/openapijsonschematools/schemas/BooleanSchema.java
67
src/main/java/org/openapijsonschematools/schemas/CustomIsoparser.java
8+
src/main/java/org/openapijsonschematools/schemas/DoubleSchema.java
9+
src/main/java/org/openapijsonschematools/schemas/FloatSchema.java
10+
src/main/java/org/openapijsonschematools/schemas/Int32Schema.java
11+
src/main/java/org/openapijsonschematools/schemas/Int64Schema.java
12+
src/main/java/org/openapijsonschematools/schemas/IntSchema.java
13+
src/main/java/org/openapijsonschematools/schemas/NullSchema.java
14+
src/main/java/org/openapijsonschematools/schemas/NumberSchema.java
715
src/main/java/org/openapijsonschematools/schemas/PathToSchemasMap.java
816
src/main/java/org/openapijsonschematools/schemas/PathToTypeMap.java
917
src/main/java/org/openapijsonschematools/schemas/Schema.java
1018
src/main/java/org/openapijsonschematools/schemas/SchemaValidator.java
1119
src/main/java/org/openapijsonschematools/schemas/UnsetAnyTypeSchema.java
1220
src/main/java/org/openapijsonschematools/schemas/ValidationMetadata.java
21+
src/main/java/org/openapijsonschematools/schemas/validators/FormatValidator.java
1322
src/main/java/org/openapijsonschematools/schemas/validators/KeywordValidator.java
1423
src/main/java/org/openapijsonschematools/schemas/validators/TypeValidator.java
1524
src/test/java/org/openapijsonschematools/configurations/JsonSchemaKeywordFlagsTest.java
1625
src/test/java/org/openapijsonschematools/schemas/AnyTypeSchemaTest.java
26+
src/test/java/org/openapijsonschematools/schemas/BooleanSchemaTest.java
1727
src/test/java/org/openapijsonschematools/schemas/CustomIsoparserTest.java
28+
src/test/java/org/openapijsonschematools/schemas/NullSchemaTest.java
29+
src/test/java/org/openapijsonschematools/schemas/NumberSchemaTest.java
1830
src/test/java/org/openapijsonschematools/schemas/SchemaValidatorTest.java
31+
src/test/java/org/openapijsonschematools/schemas/validators/FormatValidatorTest.java
1932
src/test/java/org/openapijsonschematools/schemas/validators/TypeValidatorTest.java

samples/client/petstore/java/src/main/java/org/openapijsonschematools/schemas/AnyTypeSchema.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ public static Integer validate(Integer arg, SchemaConfiguration configuration) {
2424
return Schema.validate(AnyTypeSchema.class, arg, configuration);
2525
}
2626

27+
public static Long validate(Long arg, SchemaConfiguration configuration) {
28+
return Schema.validate(AnyTypeSchema.class, arg, configuration);
29+
}
30+
2731
public static Float validate(Float arg, SchemaConfiguration configuration) {
2832
return Schema.validate(AnyTypeSchema.class, arg, configuration);
2933
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.openapijsonschematools.schemas;
2+
3+
import org.openapijsonschematools.configurations.SchemaConfiguration;
4+
5+
import java.util.LinkedHashSet;
6+
7+
record BooleanSchema(LinkedHashSet<Class<?>> type) implements Schema {
8+
public static BooleanSchema withDefaults() {
9+
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
10+
type.add(Boolean.class);
11+
return new BooleanSchema(type);
12+
}
13+
14+
public static Boolean validate(Boolean arg, SchemaConfiguration configuration) {
15+
return Schema.validate(BooleanSchema.class, arg, configuration);
16+
}
17+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.openapijsonschematools.schemas;
2+
3+
import org.openapijsonschematools.configurations.SchemaConfiguration;
4+
5+
import java.util.LinkedHashSet;
6+
import java.math.BigDecimal;
7+
8+
record DoubleSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
9+
public static DoubleSchema withDefaults() {
10+
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
11+
type.add(BigDecimal.class);
12+
String format = "float";
13+
return new DoubleSchema(type, format);
14+
}
15+
16+
public static Double validate(Double arg, SchemaConfiguration configuration) {
17+
return Schema.validate(DoubleSchema.class, arg, configuration);
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.openapijsonschematools.schemas;
2+
3+
import org.openapijsonschematools.configurations.SchemaConfiguration;
4+
5+
import java.util.LinkedHashSet;
6+
import java.math.BigDecimal;
7+
8+
record FloatSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
9+
public static FloatSchema withDefaults() {
10+
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
11+
type.add(BigDecimal.class);
12+
String format = "float";
13+
return new FloatSchema(type, format);
14+
}
15+
16+
public static Float validate(Float arg, SchemaConfiguration configuration) {
17+
return Schema.validate(FloatSchema.class, arg, configuration);
18+
}
19+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.openapijsonschematools.schemas;
2+
3+
import org.openapijsonschematools.configurations.SchemaConfiguration;
4+
5+
import java.util.LinkedHashSet;
6+
import java.math.BigDecimal;
7+
8+
record Int32Schema(LinkedHashSet<Class<?>> type, String format) implements Schema {
9+
public static Int32Schema withDefaults() {
10+
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
11+
type.add(BigDecimal.class);
12+
String format = "int32";
13+
return new Int32Schema(type, format);
14+
}
15+
16+
public static Integer validate(Integer arg, SchemaConfiguration configuration) {
17+
return Schema.validate(Int32Schema.class, arg, configuration);
18+
}
19+
20+
public static Integer validate(Float arg, SchemaConfiguration configuration) {
21+
return Schema.validate(Int32Schema.class, Integer.parseInt(arg.toString()), configuration);
22+
}
23+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.openapijsonschematools.schemas;
2+
3+
import org.openapijsonschematools.configurations.SchemaConfiguration;
4+
5+
import java.util.LinkedHashSet;
6+
import java.math.BigDecimal;
7+
8+
record Int64Schema(LinkedHashSet<Class<?>> type, String format) implements Schema {
9+
public static Int64Schema withDefaults() {
10+
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
11+
type.add(BigDecimal.class);
12+
String format = "int64";
13+
return new Int64Schema(type, format);
14+
}
15+
16+
public static Long validate(Integer arg, SchemaConfiguration configuration) {
17+
return Schema.validate(Int64Schema.class, Long.valueOf(arg), configuration);
18+
}
19+
20+
public static Long validate(Float arg, SchemaConfiguration configuration) {
21+
return Schema.validate(Int64Schema.class, Long.parseLong(arg.toString()), configuration);
22+
}
23+
24+
public static Long validate(Long arg, SchemaConfiguration configuration) {
25+
return Schema.validate(Int64Schema.class, arg, configuration);
26+
}
27+
28+
public static Long validate(Double arg, SchemaConfiguration configuration) {
29+
return Schema.validate(Int64Schema.class, Long.parseLong(arg.toString()), configuration);
30+
}
31+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.openapijsonschematools.schemas;
2+
3+
import org.openapijsonschematools.configurations.SchemaConfiguration;
4+
5+
import java.util.LinkedHashSet;
6+
import java.math.BigDecimal;
7+
8+
record IntSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
9+
public static IntSchema withDefaults() {
10+
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
11+
type.add(BigDecimal.class);
12+
String format = "int";
13+
return new IntSchema(type, format);
14+
}
15+
16+
public static Long validate(Integer arg, SchemaConfiguration configuration) {
17+
return Schema.validate(IntSchema.class, Long.valueOf(arg), configuration);
18+
}
19+
20+
public static Long validate(Float arg, SchemaConfiguration configuration) {
21+
return Schema.validate(IntSchema.class, Long.parseLong(arg.toString()), configuration);
22+
}
23+
24+
public static Long validate(Long arg, SchemaConfiguration configuration) {
25+
return Schema.validate(IntSchema.class, arg, configuration);
26+
}
27+
28+
public static Long validate(Double arg, SchemaConfiguration configuration) {
29+
return Schema.validate(IntSchema.class, Long.parseLong(arg.toString()), configuration);
30+
}
31+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.openapijsonschematools.schemas;
2+
3+
import org.openapijsonschematools.configurations.SchemaConfiguration;
4+
5+
import java.util.LinkedHashSet;
6+
7+
record NullSchema(LinkedHashSet<Class<?>> type) implements Schema {
8+
public static NullSchema withDefaults() {
9+
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
10+
type.add(Void.class);
11+
return new NullSchema(type);
12+
}
13+
14+
public static Void validate(Void arg, SchemaConfiguration configuration) {
15+
return Schema.validate(NullSchema.class, arg, configuration);
16+
}
17+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.openapijsonschematools.schemas;
2+
3+
import org.openapijsonschematools.configurations.SchemaConfiguration;
4+
5+
import java.util.LinkedHashSet;
6+
import java.math.BigDecimal;
7+
8+
record NumberSchema(LinkedHashSet<Class<?>> type) implements Schema {
9+
public static NumberSchema withDefaults() {
10+
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
11+
type.add(BigDecimal.class);
12+
return new NumberSchema(type);
13+
}
14+
15+
public static BigDecimal validate(Integer arg, SchemaConfiguration configuration) {
16+
return Schema.validate(NumberSchema.class, BigDecimal.valueOf(arg), configuration);
17+
}
18+
19+
public static BigDecimal validate(Long arg, SchemaConfiguration configuration) {
20+
return Schema.validate(NumberSchema.class, BigDecimal.valueOf(arg), configuration);
21+
}
22+
23+
public static BigDecimal validate(Float arg, SchemaConfiguration configuration) {
24+
return Schema.validate(NumberSchema.class, BigDecimal.valueOf(arg), configuration);
25+
}
26+
27+
public static BigDecimal validate(Double arg, SchemaConfiguration configuration) {
28+
return Schema.validate(NumberSchema.class, BigDecimal.valueOf(arg), configuration);
29+
}
30+
}

0 commit comments

Comments
 (0)