Skip to content

Commit

Permalink
Fix test without mapping
Browse files Browse the repository at this point in the history
Signed-off-by: Pavel Demenkov <[email protected]>
  • Loading branch information
dps123 committed Sep 23, 2020
1 parent 8cd3701 commit ffb7182
Showing 1 changed file with 8 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import java.util.stream.Collectors;

import static io.vertx.ext.json.schema.ValidationException.createException;
import java.util.List;
import java.util.Map;

public class OneOfValidatorFactory extends BaseCombinatorsValidatorFactory {
Expand Down Expand Up @@ -78,9 +79,12 @@ public void validateSync(ValidatorContext context, Object in) throws ValidationE
@Override
public Future<Void> validateAsync(ValidatorContext context, Object in) {
if (isSync()) return validateSyncAsAsync(context, in);
return FutureUtils
.oneOf(Arrays.stream(schemas).filter(s -> checkDiscriminator(s, in)).map(s -> s.validateAsync(context, in)).collect(Collectors.toList()))
.recover(err -> Future.failedFuture(createException("No schema matches", "oneOf", in, err)));
List<Future<Void>> futures = Arrays.stream(schemas).filter(s -> checkDiscriminator(s, in)).map(s -> s.validateAsync(context, in)).collect(Collectors.toList());
if (futures.isEmpty()) {
return Future.failedFuture(createException("No schema matches", "oneOf", in));
} else {
return FutureUtils.oneOf(futures).recover(err -> Future.failedFuture(createException("No schema matches", "oneOf", in, err)));
}
}

private boolean checkDiscriminator(SchemaInternal schema, Object in) {
Expand All @@ -91,7 +95,7 @@ private boolean checkDiscriminator(SchemaInternal schema, Object in) {

JsonObject jsonSchema = ((JsonObject) schema.getJson());
String schemaName = (jsonSchema.containsKey("name")) ? jsonSchema.getString("name") : jsonSchema.getString("$ref");
return discriminator != null && discriminator.equals(schemaName);
return schemaName!=null && discriminator != null && (discriminator.equals(schemaName) || schemaName.endsWith("/"+discriminator));
}
}
return true;
Expand Down

0 comments on commit ffb7182

Please sign in to comment.