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

Commit 5d1b814

Browse files
authored
Java: adds MapSchema (#279)
* Adds properties validator * Adds FrozenMap and MapSchema * Adds PropertiesValidatorTest * Adds RequiredValidator.java + RequiredValidatorTest.java * Adds AdditionalPropertiesValidator * Adds AdditionalPropertiesValidatorTest * Adds ObjectTypeSchemaTest
1 parent 402221e commit 5d1b814

58 files changed

Lines changed: 1617 additions & 182 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: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ src/main/java/org/openapijsonschematools/schemas/DateTimeSchema.java
1010
src/main/java/org/openapijsonschematools/schemas/DecimalSchema.java
1111
src/main/java/org/openapijsonschematools/schemas/DoubleSchema.java
1212
src/main/java/org/openapijsonschematools/schemas/FloatSchema.java
13+
src/main/java/org/openapijsonschematools/schemas/FrozenMap.java
1314
src/main/java/org/openapijsonschematools/schemas/Int32Schema.java
1415
src/main/java/org/openapijsonschematools/schemas/Int64Schema.java
1516
src/main/java/org/openapijsonschematools/schemas/IntSchema.java
17+
src/main/java/org/openapijsonschematools/schemas/MapSchema.java
1618
src/main/java/org/openapijsonschematools/schemas/NullSchema.java
1719
src/main/java/org/openapijsonschematools/schemas/NumberSchema.java
1820
src/main/java/org/openapijsonschematools/schemas/PathToSchemasMap.java
@@ -22,15 +24,23 @@ src/main/java/org/openapijsonschematools/schemas/SchemaValidator.java
2224
src/main/java/org/openapijsonschematools/schemas/StringSchema.java
2325
src/main/java/org/openapijsonschematools/schemas/UnsetAnyTypeSchema.java
2426
src/main/java/org/openapijsonschematools/schemas/ValidationMetadata.java
27+
src/main/java/org/openapijsonschematools/schemas/validators/AdditionalPropertiesValidator.java
2528
src/main/java/org/openapijsonschematools/schemas/validators/FormatValidator.java
2629
src/main/java/org/openapijsonschematools/schemas/validators/KeywordValidator.java
30+
src/main/java/org/openapijsonschematools/schemas/validators/PropertiesValidator.java
31+
src/main/java/org/openapijsonschematools/schemas/validators/RequiredValidator.java
2732
src/main/java/org/openapijsonschematools/schemas/validators/TypeValidator.java
2833
src/test/java/org/openapijsonschematools/configurations/JsonSchemaKeywordFlagsTest.java
2934
src/test/java/org/openapijsonschematools/schemas/AnyTypeSchemaTest.java
3035
src/test/java/org/openapijsonschematools/schemas/BooleanSchemaTest.java
3136
src/test/java/org/openapijsonschematools/schemas/CustomIsoparserTest.java
37+
src/test/java/org/openapijsonschematools/schemas/MapSchemaTest.java
3238
src/test/java/org/openapijsonschematools/schemas/NullSchemaTest.java
3339
src/test/java/org/openapijsonschematools/schemas/NumberSchemaTest.java
40+
src/test/java/org/openapijsonschematools/schemas/ObjectTypeSchemaTest.java
3441
src/test/java/org/openapijsonschematools/schemas/SchemaValidatorTest.java
42+
src/test/java/org/openapijsonschematools/schemas/validators/AdditionalPropertiesValidatorTest.java
3543
src/test/java/org/openapijsonschematools/schemas/validators/FormatValidatorTest.java
44+
src/test/java/org/openapijsonschematools/schemas/validators/PropertiesValidatorTest.java
45+
src/test/java/org/openapijsonschematools/schemas/validators/RequiredValidatorTest.java
3646
src/test/java/org/openapijsonschematools/schemas/validators/TypeValidatorTest.java

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import java.util.List;
88
import java.util.Map;
99

10-
record AnyTypeSchema() implements Schema {
10+
public record AnyTypeSchema() implements Schema {
1111
public static AnyTypeSchema withDefaults() {
1212
return new AnyTypeSchema();
1313
}
@@ -48,11 +48,11 @@ public static String validate(LocalDate arg, SchemaConfiguration configuration)
4848
return Schema.validate(AnyTypeSchema.class, arg, configuration);
4949
}
5050

51-
public static <T extends Map> T validate(T arg, SchemaConfiguration configuration) {
51+
public static <T extends FrozenMap> T validate(Map<String, Object> arg, SchemaConfiguration configuration) {
5252
return Schema.validate(AnyTypeSchema.class, arg, configuration);
5353
}
5454

55-
public static <U extends List> U validate(U arg, SchemaConfiguration configuration) {
55+
public static <U extends List> U validate(List<Object> arg, SchemaConfiguration configuration) {
5656
return Schema.validate(AnyTypeSchema.class, arg, configuration);
5757
}
5858
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import java.util.LinkedHashSet;
66

7-
record BooleanSchema(LinkedHashSet<Class<?>> type) implements Schema {
7+
public record BooleanSchema(LinkedHashSet<Class<?>> type) implements Schema {
88
public static BooleanSchema withDefaults() {
99
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
1010
type.add(Boolean.class);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import java.util.LinkedHashSet;
66
import java.time.LocalDate;
77

8-
record DateSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
8+
public record DateSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
99
public static DateSchema withDefaults() {
1010
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
1111
type.add(String.class);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import java.util.LinkedHashSet;
66
import java.time.ZonedDateTime;
77

8-
record DateTimeSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
8+
public record DateTimeSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
99
public static DateTimeSchema withDefaults() {
1010
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
1111
type.add(String.class);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import java.util.LinkedHashSet;
66

7-
record DecimalSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
7+
public record DecimalSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
88
public static DecimalSchema withDefaults() {
99
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
1010
type.add(String.class);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import java.util.LinkedHashSet;
66
import java.math.BigDecimal;
77

8-
record DoubleSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
8+
public record DoubleSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
99
public static DoubleSchema withDefaults() {
1010
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
1111
type.add(BigDecimal.class);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import java.util.LinkedHashSet;
66
import java.math.BigDecimal;
77

8-
record FloatSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
8+
public record FloatSchema(LinkedHashSet<Class<?>> type, String format) implements Schema {
99
public static FloatSchema withDefaults() {
1010
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
1111
type.add(BigDecimal.class);
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package org.openapijsonschematools.schemas;
2+
3+
import java.util.LinkedHashMap;
4+
import java.util.Map;
5+
import java.util.function.BiFunction;
6+
import java.util.function.Function;
7+
8+
public class FrozenMap<K, V> extends LinkedHashMap<K, V> {
9+
/*
10+
A frozen Map
11+
Once schema validation has been run, written accessor methods return values of the correct type
12+
If values were mutable, the types in those methods would not agree with returned values
13+
*/
14+
public FrozenMap(Map<? extends K, ? extends V> m) {
15+
super(m);
16+
}
17+
18+
public V put(K key, V value) {
19+
throw new UnsupportedOperationException();
20+
}
21+
public V remove(Object key) {
22+
throw new UnsupportedOperationException();
23+
}
24+
public void putAll(Map<? extends K, ? extends V> m) {
25+
throw new UnsupportedOperationException();
26+
}
27+
public void clear() {
28+
throw new UnsupportedOperationException();
29+
}
30+
31+
@Override
32+
public void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) {
33+
throw new UnsupportedOperationException();
34+
}
35+
36+
@Override
37+
public V putIfAbsent(K key, V value) {
38+
throw new UnsupportedOperationException();
39+
}
40+
41+
@Override
42+
public boolean remove(Object key, Object value) {
43+
throw new UnsupportedOperationException();
44+
}
45+
46+
@Override
47+
public boolean replace(K key, V oldValue, V newValue) {
48+
throw new UnsupportedOperationException();
49+
}
50+
51+
@Override
52+
public V replace(K key, V value) {
53+
throw new UnsupportedOperationException();
54+
}
55+
56+
@Override
57+
public V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) {
58+
throw new UnsupportedOperationException();
59+
}
60+
61+
@Override
62+
public V computeIfPresent(K key,
63+
BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
64+
throw new UnsupportedOperationException();
65+
}
66+
67+
@Override
68+
public V compute(K key,
69+
BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
70+
throw new UnsupportedOperationException();
71+
}
72+
73+
@Override
74+
public V merge(K key, V value,
75+
BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
76+
throw new UnsupportedOperationException();
77+
}
78+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import java.util.LinkedHashSet;
66
import java.math.BigDecimal;
77

8-
record Int32Schema(LinkedHashSet<Class<?>> type, String format) implements Schema {
8+
public record Int32Schema(LinkedHashSet<Class<?>> type, String format) implements Schema {
99
public static Int32Schema withDefaults() {
1010
LinkedHashSet<Class<?>> type = new LinkedHashSet<>();
1111
type.add(BigDecimal.class);

0 commit comments

Comments
 (0)