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

Commit 5d67801

Browse files
committed
Adds ContainsValidator, adds needed containsPathToSchemas input to the validate method
1 parent 950e487 commit 5d67801

File tree

57 files changed

+404
-91
lines changed

Some content is hidden

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

57 files changed

+404
-91
lines changed

samples/client/3_1_0_unit_test/java/.openapi-generator/FILES

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,14 +254,14 @@ src/main/java/org/openapijsonschematools/client/schemas/validation/BooleanEnumVa
254254
src/main/java/org/openapijsonschematools/client/schemas/validation/BooleanSchemaValidator.java
255255
src/main/java/org/openapijsonschematools/client/schemas/validation/BooleanValueMethod.java
256256
src/main/java/org/openapijsonschematools/client/schemas/validation/ConstValidator.java
257+
src/main/java/org/openapijsonschematools/client/schemas/validation/ContainsValidator.java
257258
src/main/java/org/openapijsonschematools/client/schemas/validation/CustomIsoparser.java
258259
src/main/java/org/openapijsonschematools/client/schemas/validation/DefaultValueMethod.java
259260
src/main/java/org/openapijsonschematools/client/schemas/validation/DoubleEnumValidator.java
260261
src/main/java/org/openapijsonschematools/client/schemas/validation/DoubleValueMethod.java
261262
src/main/java/org/openapijsonschematools/client/schemas/validation/EnumValidator.java
262263
src/main/java/org/openapijsonschematools/client/schemas/validation/ExclusiveMaximumValidator.java
263264
src/main/java/org/openapijsonschematools/client/schemas/validation/ExclusiveMinimumValidator.java
264-
src/main/java/org/openapijsonschematools/client/schemas/validation/FakeValidator.java
265265
src/main/java/org/openapijsonschematools/client/schemas/validation/FloatEnumValidator.java
266266
src/main/java/org/openapijsonschematools/client/schemas/validation/FloatValueMethod.java
267267
src/main/java/org/openapijsonschematools/client/schemas/validation/FormatValidator.java

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/AdditionalPropertiesValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@ public AdditionalPropertiesValidator(Class<? extends JsonSchema> additionalPrope
1515
}
1616

1717
@Override
18-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
18+
public @Nullable PathToSchemasMap validate(
19+
JsonSchema schema,
20+
@Nullable Object arg,
21+
ValidationMetadata validationMetadata,
22+
List<PathToSchemasMap> containsPathToSchemas
23+
) {
1924
if (!(arg instanceof Map<?, ?> mapArg)) {
2025
return null;
2126
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/AllOfValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@ public AllOfValidator(List<Class<? extends JsonSchema>> allOf) {
1111
}
1212

1313
@Override
14-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
14+
public @Nullable PathToSchemasMap validate(
15+
JsonSchema schema,
16+
@Nullable Object arg,
17+
ValidationMetadata validationMetadata,
18+
List<PathToSchemasMap> containsPathToSchemas
19+
) {
1520
PathToSchemasMap pathToSchemas = new PathToSchemasMap();
1621
for(Class<? extends JsonSchema> allOfClass: allOf) {
1722
JsonSchema allOfSchema = JsonSchemaFactory.getInstance(allOfClass);

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/AnyOfValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ public AnyOfValidator(List<Class<? extends JsonSchema>> anyOf) {
1414
}
1515

1616
@Override
17-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
17+
public @Nullable PathToSchemasMap validate(
18+
JsonSchema schema,
19+
@Nullable Object arg,
20+
ValidationMetadata validationMetadata,
21+
List<PathToSchemasMap> containsPathToSchemas
22+
) {
1823
PathToSchemasMap pathToSchemas = new PathToSchemasMap();
1924
List<Class<? extends JsonSchema>> validatedAnyOfClasses = new ArrayList<>();
2025
for(Class<? extends JsonSchema> anyOfClass: anyOf) {

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/ConstValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ public ConstValidator(@Nullable Object constValue) {
1414
}
1515

1616
@Override
17-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
17+
public @Nullable PathToSchemasMap validate(
18+
JsonSchema schema,
19+
@Nullable Object arg,
20+
ValidationMetadata validationMetadata,
21+
List<PathToSchemasMap> containsPathToSchemas
22+
) {
1823
if (arg instanceof Number) {
1924
BigDecimal castArg = getBigDecimal((Number) arg);
2025
if (Objects.equals(castArg, constValue)) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package org.openapijsonschematools.client.schemas.validation;
2+
3+
import org.checkerframework.checker.nullness.qual.Nullable;
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
8+
public class ContainsValidator implements KeywordValidator {
9+
public final Class<? extends JsonSchema> contains;
10+
11+
public ItemsValidator(Class<? extends JsonSchema> contains) {
12+
this.contains = contains;
13+
}
14+
15+
@Override
16+
public @Nullable PathToSchemasMap validate(
17+
JsonSchema schema,
18+
@Nullable Object arg,
19+
ValidationMetadata validationMetadata,
20+
List<PathToSchemasMap> containsPathToSchemas
21+
) {
22+
if (!(arg instanceof List)) {
23+
return null;
24+
}
25+
many_path_to_schemas = contains_cls_path_to_schemas[1]
26+
if (containsPathToSchemas.isEmpty()) {
27+
throw new ApiValueError(
28+
"Validation failed for contains keyword in class={} at pathToItem={}. No "
29+
"items validated to the contains schema.".format(cls, validation_metadata.path_to_item)
30+
)
31+
}
32+
PathToSchemasMap pathToSchemas = new PathToSchemasMap();
33+
for (PathToSchemasMap otherPathToSchema: containsPathToSchemas) {
34+
pathToSchemas.update(other_path_to_schema)
35+
}
36+
return pathToSchemas;
37+
}
38+
39+
public List<PathToSchemasMap> getContainsPathToSchemas(
40+
@Nullable Object arg,
41+
ValidationMetadata validation_metadata,
42+
PathToSchemasMap path_to_schemas,
43+
) {
44+
if (!(arg instanceof List)) {
45+
return new ArrayList<>();
46+
}
47+
List<PathToSchemasMap> containsPathToSchemas = new ArrayList<>();
48+
int i = 0;
49+
for(Object itemValue: (List<?>) arg) {
50+
PathToSchemasMap thesePathToSchemas = new PathToSchemasMap();
51+
List<Object> itemPathToItem = new ArrayList<>(validationMetadata.pathToItem());
52+
itemPathToItem.add(i);
53+
ValidationMetadata itemValidationMetadata = new ValidationMetadata(
54+
itemPathToItem,
55+
validationMetadata.configuration(),
56+
validationMetadata.validatedPathToSchemas(),
57+
validationMetadata.seenClasses()
58+
);
59+
if (itemValidationMetadata.validationRanEarlier(itemsSchema)) {
60+
// todo add_deeper_validated_schemas
61+
containsPathToSchemas.add(thesePathToSchemas);
62+
i +=1;
63+
continue;
64+
}
65+
66+
JsonSchema containsSchema = JsonSchemaFactory.getInstance(contains);
67+
try {
68+
PathToSchemasMap otherPathToSchemas = JsonSchema.validate(
69+
containsSchema, itemValue, itemValidationMetadata)
70+
containsPathToSchemas.append(otherPathToSchemas)
71+
} except (exceptions.OpenApiException ignored) {
72+
;
73+
}
74+
return containsPathToSchemas;
75+
}
76+
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/EnumValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,12 @@ private boolean enumContainsArg(@Nullable Object arg){
1919
}
2020

2121
@Override
22-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
22+
public @Nullable PathToSchemasMap validate(
23+
JsonSchema schema,
24+
@Nullable Object arg,
25+
ValidationMetadata validationMetadata,
26+
List<PathToSchemasMap> containsPathToSchemas
27+
) {
2328
if (enumValues.isEmpty()) {
2429
throw new ValidationException("No value can match enum because enum is empty");
2530
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/ExclusiveMaximumValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ public ExclusiveMaximumValidator(Number exclusiveMaximum) {
1212
}
1313

1414
@Override
15-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
15+
public @Nullable PathToSchemasMap validate(
16+
JsonSchema schema,
17+
@Nullable Object arg,
18+
ValidationMetadata validationMetadata,
19+
List<PathToSchemasMap> containsPathToSchemas
20+
) {
1621
if (!(arg instanceof Number)) {
1722
return null;
1823
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/ExclusiveMinimumValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ public ExclusiveMinimumValidator(Number exclusiveMinimum) {
1212
}
1313

1414
@Override
15-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
15+
public @Nullable PathToSchemasMap validate(
16+
JsonSchema schema,
17+
@Nullable Object arg,
18+
ValidationMetadata validationMetadata,
19+
List<PathToSchemasMap> containsPathToSchemas
20+
) {
1621
if (!(arg instanceof Number)) {
1722
return null;
1823
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/FormatValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,12 @@ private Void validateStringFormat(String arg, ValidationMetadata validationMetad
143143
}
144144

145145
@Override
146-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
146+
public @Nullable PathToSchemasMap validate(
147+
JsonSchema schema,
148+
@Nullable Object arg,
149+
ValidationMetadata validationMetadata,
150+
List<PathToSchemasMap> containsPathToSchemas
151+
) {
147152
if (arg instanceof Number) {
148153
validateNumericFormat(
149154
(Number) arg,

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/ItemsValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@ public ItemsValidator(Class<? extends JsonSchema> items) {
1313
}
1414

1515
@Override
16-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
16+
public @Nullable PathToSchemasMap validate(
17+
JsonSchema schema,
18+
@Nullable Object arg,
19+
ValidationMetadata validationMetadata,
20+
List<PathToSchemasMap> containsPathToSchemas
21+
) {
1722
if (!(arg instanceof List)) {
1823
return null;
1924
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/KeywordValidator.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55

66
public interface KeywordValidator {
77
@Nullable PathToSchemasMap validate(
8-
JsonSchema schema,
9-
@Nullable Object arg,
10-
ValidationMetadata validationMetadata) throws ValidationException;
8+
JsonSchema schema,
9+
@Nullable Object arg,
10+
ValidationMetadata validationMetadata,
11+
List<PathToSchemasMap> containsPathToSchemas
12+
) throws ValidationException;
1113
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/MaxItemsValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@ public MaxItemsValidator(int maxItems) {
1313
}
1414

1515
@Override
16-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
16+
public @Nullable PathToSchemasMap validate(
17+
JsonSchema schema,
18+
@Nullable Object arg,
19+
ValidationMetadata validationMetadata,
20+
List<PathToSchemasMap> containsPathToSchemas
21+
) {
1722
if (!(arg instanceof List)) {
1823
return null;
1924
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/MaxLengthValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@ public MaxLengthValidator(int maxLength) {
1111
}
1212

1313
@Override
14-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
14+
public @Nullable PathToSchemasMap validate(
15+
JsonSchema schema,
16+
@Nullable Object arg,
17+
ValidationMetadata validationMetadata,
18+
List<PathToSchemasMap> containsPathToSchemas
19+
) {
1520
if (!(arg instanceof String)) {
1621
return null;
1722
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/MaxPropertiesValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@ public MaxPropertiesValidator(int maxProperties) {
1313
}
1414

1515
@Override
16-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
16+
public @Nullable PathToSchemasMap validate(
17+
JsonSchema schema,
18+
@Nullable Object arg,
19+
ValidationMetadata validationMetadata,
20+
List<PathToSchemasMap> containsPathToSchemas
21+
) {
1722
if (!(arg instanceof Map)) {
1823
return null;
1924
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/MaximumValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ public MaximumValidator(Number maximum) {
1212
}
1313

1414
@Override
15-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
15+
public @Nullable PathToSchemasMap validate(
16+
JsonSchema schema,
17+
@Nullable Object arg,
18+
ValidationMetadata validationMetadata,
19+
List<PathToSchemasMap> containsPathToSchemas
20+
) {
1621
if (!(arg instanceof Number)) {
1722
return null;
1823
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/MinItemsValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@ public MinItemsValidator(int minItems) {
1313
}
1414

1515
@Override
16-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
16+
public @Nullable PathToSchemasMap validate(
17+
JsonSchema schema,
18+
@Nullable Object arg,
19+
ValidationMetadata validationMetadata,
20+
List<PathToSchemasMap> containsPathToSchemas
21+
) {
1722
if (!(arg instanceof List)) {
1823
return null;
1924
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/MinLengthValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@ public MinLengthValidator(int minLength) {
1111
}
1212

1313
@Override
14-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
14+
public @Nullable PathToSchemasMap validate(
15+
JsonSchema schema,
16+
@Nullable Object arg,
17+
ValidationMetadata validationMetadata,
18+
List<PathToSchemasMap> containsPathToSchemas
19+
) {
1520
if (!(arg instanceof String)) {
1621
return null;
1722
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/MinPropertiesValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@ public MinPropertiesValidator(int minProperties) {
1313
}
1414

1515
@Override
16-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
16+
public @Nullable PathToSchemasMap validate(
17+
JsonSchema schema,
18+
@Nullable Object arg,
19+
ValidationMetadata validationMetadata,
20+
List<PathToSchemasMap> containsPathToSchemas
21+
) {
1722
if (!(arg instanceof Map)) {
1823
return null;
1924
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/MinimumValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ public MinimumValidator(Number minimum) {
1212
}
1313

1414
@Override
15-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
15+
public @Nullable PathToSchemasMap validate(
16+
JsonSchema schema,
17+
@Nullable Object arg,
18+
ValidationMetadata validationMetadata,
19+
List<PathToSchemasMap> containsPathToSchemas
20+
) {
1621
if (!(arg instanceof Number)) {
1722
return null;
1823
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/MultipleOfValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@ public MultipleOfValidator(BigDecimal multipleOf) {
1313
}
1414

1515
@Override
16-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
16+
public @Nullable PathToSchemasMap validate(
17+
JsonSchema schema,
18+
@Nullable Object arg,
19+
ValidationMetadata validationMetadata,
20+
List<PathToSchemasMap> containsPathToSchemas
21+
) {
1722
if (!(arg instanceof Number)) {
1823
return null;
1924
}

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/NotValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ public NotValidator(Class<? extends JsonSchema> not) {
1818
}
1919

2020
@Override
21-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
21+
public @Nullable PathToSchemasMap validate(
22+
JsonSchema schema,
23+
@Nullable Object arg,
24+
ValidationMetadata validationMetadata,
25+
List<PathToSchemasMap> containsPathToSchemas
26+
) {
2227
PathToSchemasMap pathToSchemas;
2328
try {
2429
JsonSchema notSchema = JsonSchemaFactory.getInstance(not);

samples/client/3_1_0_unit_test/java/src/main/java/org/openapijsonschematools/client/schemas/validation/OneOfValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ public OneOfValidator(List<Class<? extends JsonSchema>> oneOf) {
1414
}
1515

1616
@Override
17-
public @Nullable PathToSchemasMap validate(JsonSchema schema, @Nullable Object arg, ValidationMetadata validationMetadata) {
17+
public @Nullable PathToSchemasMap validate(
18+
JsonSchema schema,
19+
@Nullable Object arg,
20+
ValidationMetadata validationMetadata,
21+
List<PathToSchemasMap> containsPathToSchemas
22+
) {
1823
PathToSchemasMap pathToSchemas = new PathToSchemasMap();
1924
List<Class<? extends JsonSchema>> validatedOneOfClasses = new ArrayList<>();
2025
for(Class<? extends JsonSchema> oneOfClass: oneOf) {

0 commit comments

Comments
 (0)