Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merging down #74 into main #81

Merged
merged 4 commits into from
Aug 3, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,19 @@ public static SchemaValidationException createInvalidValueResponseBody(OutputUni
return new SchemaValidationException(msg, INVALID_VALUE, outputUnit, cause);
}

public static ValidatorException createErrorFromOutputUnitType(Parameter parameter, OutputUnit outputUnit,
JsonSchemaValidationException cause) {
switch(outputUnit.getErrorType()) {
case MISSING_VALUE:
return createMissingRequiredParameter(parameter);
case INVALID_VALUE:
case NONE:
default:
return createInvalidValueParameter(parameter, outputUnit, cause);
}

CheesyBoy123 marked this conversation as resolved.
Show resolved Hide resolved
}

/**
* Returns the related OutputUnit of the validation error.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,7 @@
import static io.vertx.openapi.contract.Style.LABEL;
import static io.vertx.openapi.contract.Style.MATRIX;
import static io.vertx.openapi.contract.Style.SIMPLE;
import static io.vertx.openapi.validation.SchemaValidationException.createInvalidValueParameter;
import static io.vertx.openapi.validation.SchemaValidationException.createInvalidValueRequestBody;
import static io.vertx.openapi.validation.SchemaValidationException.*;
CheesyBoy123 marked this conversation as resolved.
Show resolved Hide resolved
import static io.vertx.openapi.validation.ValidatorErrorType.MISSING_REQUIRED_PARAMETER;
import static io.vertx.openapi.validation.ValidatorErrorType.UNSUPPORTED_VALUE_FORMAT;
import static io.vertx.openapi.validation.ValidatorException.createMissingRequiredParameter;
Expand Down Expand Up @@ -132,7 +131,7 @@ public RequestParameter validateParameter(Parameter parameter, RequestParameter
result.checkValidity();
return new RequestParameterImpl(transformedValue);
} catch (JsonSchemaValidationException e) {
throw createInvalidValueParameter(parameter, result, e);
throw createErrorFromOutputUnitType(parameter, result, e);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.google.common.collect.ImmutableList;
import io.vertx.json.schema.JsonSchema;
import io.vertx.json.schema.JsonSchemaValidationException;
import io.vertx.json.schema.OutputErrorType;
import io.vertx.json.schema.OutputUnit;
import io.vertx.openapi.contract.Parameter;
import io.vertx.openapi.validation.SchemaValidationException;
Expand All @@ -34,11 +35,11 @@ class SchemaValidationExceptionTest {
mockParameter("dummy", PATH, LABEL, false, JsonSchema.of(intSchema().toJson()));

private static final JsonSchemaValidationException DUMMY_CAUSE = new JsonSchemaValidationException("dummy",
new Exception(), "dummyLocation");
new Exception(), "dummyLocation", OutputErrorType.INVALID_VALUE);
private static final OutputUnit DUMMY_ERROR_UNIT = new OutputUnit("instanceLocation", "absoluteKeywordLocation",
"keywordLocation", "error");
"keywordLocation", "error", OutputErrorType.INVALID_VALUE);
private static final OutputUnit DUMMY_OUTPUT_UNIT = new OutputUnit("instanceLocation2", "absoluteKeywordLocation2",
"keywordLocation2", "error2");
"keywordLocation2", "error2", OutputErrorType.MISSING_VALUE);

@BeforeAll
static void setup() {
Expand Down
Loading