package io.vertx.ext.web.api.contract;
import io.vertx.codegen.annotations.DataObject;
import io.vertx.codegen.annotations.Fluent;
import io.vertx.core.Handler;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.RoutingContext;
import io.vertx.ext.web.api.validation.ValidationException;
import io.vertx.ext.web.handler.BodyHandler;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
Author: Francesco Guardiani @slinkydeveloper
/**
* @author Francesco Guardiani @slinkydeveloper
*/
@DataObject(generateConverter = true, publicConverter = false)
public class RouterFactoryOptions {
By default, RouterFactory doesn't mount validation failure handler
Deprecated: Router Factory won't manage the validation errors anymore. You must use Router.errorHandler(int, Handler<RoutingContext>)
with 400 error
/**
* By default, RouterFactory doesn't mount validation failure handler
* @deprecated Router Factory won't manage the validation errors anymore. You must use {@link io.vertx.ext.web.Router#errorHandler(int, Handler)} with 400 error
*/
@Deprecated
public final static boolean DEFAULT_MOUNT_VALIDATION_FAILURE_HANDLER = false;
By default, RouterFactory mounts Not Implemented handler
/**
* By default, RouterFactory mounts Not Implemented handler
*/
public final static boolean DEFAULT_MOUNT_NOT_IMPLEMENTED_HANDLER = true;
By default, RouterFactory requires security handlers
to be defined while calling getRouter() or it will throw an Exception
/**
* By default, RouterFactory requires security handlers
* to be defined while calling getRouter() or it will throw an Exception
*/
public final static boolean DEFAULT_REQUIRE_SECURITY_HANDLERS = true;
By default, RouterFactory will mount ResponseContentTypeHandler when required
/**
* By default, RouterFactory will mount ResponseContentTypeHandler when required
*/
public final static boolean DEFAULT_MOUNT_RESPONSE_CONTENT_TYPE_HANDLER = true;
By default, RouterFactory will not expose operation configuration in the the routing context
/**
* By default, RouterFactory will not expose operation configuration in the the routing context
*/
public final static String DEFAULT_OPERATION_MODEL_KEY = null;
private boolean mountValidationFailureHandler;
private boolean mountNotImplementedHandler;
private boolean requireSecurityHandlers;
private boolean mountResponseContentTypeHandler;
private String operationModelKey;
public RouterFactoryOptions() {
init();
}
public RouterFactoryOptions(JsonObject json) {
init();
RouterFactoryOptionsConverter.fromJson(json, this);
}
public RouterFactoryOptions(RouterFactoryOptions other) {
this.mountValidationFailureHandler = other.isMountValidationFailureHandler();
this.mountNotImplementedHandler = other.isMountNotImplementedHandler();
this.requireSecurityHandlers = other.isRequireSecurityHandlers();
this.mountResponseContentTypeHandler = other.isMountResponseContentTypeHandler();
this.operationModelKey = other.getOperationModelKey();
}
public JsonObject toJson() {
JsonObject json = new JsonObject();
RouterFactoryOptionsConverter.toJson(this, json);
return json;
}
private void init() {
this.mountValidationFailureHandler = DEFAULT_MOUNT_VALIDATION_FAILURE_HANDLER;
this.mountNotImplementedHandler = DEFAULT_MOUNT_NOT_IMPLEMENTED_HANDLER;
this.requireSecurityHandlers = DEFAULT_REQUIRE_SECURITY_HANDLERS;
this.mountResponseContentTypeHandler = DEFAULT_MOUNT_RESPONSE_CONTENT_TYPE_HANDLER;
this.operationModelKey = DEFAULT_OPERATION_MODEL_KEY;
}
Deprecated: Router Factory won't manage the validation errors anymore. You must use Router.errorHandler(int, Handler<RoutingContext>)
with 400 error Returns:
/**
* @deprecated Router Factory won't manage the validation errors anymore. You must use {@link io.vertx.ext.web.Router#errorHandler(int, Handler)} with 400 error
* @return
*/
@Deprecated
public boolean isMountValidationFailureHandler() {
return mountValidationFailureHandler;
}
Enable or disable validation failure handler. If you enable it during router creation a failure handler that manages ValidationException will be mounted. You can change the validation failure handler with with function RouterFactory.setValidationFailureHandler(Handler)
. If failure is different from ValidationException, next failure handler will be called. Params: - mountGlobalValidationFailureHandler –
Returns: this object Deprecated: Router Factory won't manage the validation errors anymore. You must use Router.errorHandler(int, Handler<RoutingContext>)
with 400 error
/**
* Enable or disable validation failure handler. If you enable it during router creation a failure handler
* that manages ValidationException will be mounted. You can change the validation failure handler with with function {@link RouterFactory#setValidationFailureHandler(Handler)}. If failure is different from ValidationException, next failure
* handler will be called.
*
* @param mountGlobalValidationFailureHandler
* @return this object
* @deprecated Router Factory won't manage the validation errors anymore. You must use {@link io.vertx.ext.web.Router#errorHandler(int, Handler)} with 400 error
*/
@Fluent
@Deprecated
public RouterFactoryOptions setMountValidationFailureHandler(boolean mountGlobalValidationFailureHandler) {
this.mountValidationFailureHandler = mountGlobalValidationFailureHandler;
return this;
}
public boolean isMountNotImplementedHandler() {
return mountNotImplementedHandler;
}
If true, Router Factory will automatically mount an handler that return HTTP 501 status code for each operation where you didn't specify an handler. You can customize the response with Router.errorHandler(int, Handler<RoutingContext>)
Params: - mountOperationsWithoutHandler –
Returns: this object
/**
* If true, Router Factory will automatically mount an handler that return HTTP 501 status code for each operation where you didn't specify an handler.
* You can customize the response with {@link io.vertx.ext.web.Router#errorHandler(int, Handler)}
*
* @param mountOperationsWithoutHandler
* @return this object
*/
@Fluent
public RouterFactoryOptions setMountNotImplementedHandler(boolean mountOperationsWithoutHandler) {
this.mountNotImplementedHandler = mountOperationsWithoutHandler;
return this;
}
public boolean isRequireSecurityHandlers() {
return requireSecurityHandlers;
}
If true, when you call RouterFactory.getRouter()
the factory will mount for every path the required security handlers and, if a security handler is not defined, it throws an RouterFactoryException
Params: - requireSecurityHandlers –
Returns: this object
/**
* If true, when you call {@link RouterFactory#getRouter()} the factory will mount for every path
* the required security handlers and, if a security handler is not defined, it throws an {@link RouterFactoryException}
*
* @param requireSecurityHandlers
* @return this object
*/
@Fluent
public RouterFactoryOptions setRequireSecurityHandlers(boolean requireSecurityHandlers) {
this.requireSecurityHandlers = requireSecurityHandlers;
return this;
}
public boolean isMountResponseContentTypeHandler() {
return mountResponseContentTypeHandler;
}
If true, when required, the factory will mount a ResponseContentTypeHandler
Params: - mountResponseContentTypeHandler –
Returns:
/**
* If true, when required, the factory will mount a {@link io.vertx.ext.web.handler.ResponseContentTypeHandler}
* @param mountResponseContentTypeHandler
* @return
*/
@Fluent
public RouterFactoryOptions setMountResponseContentTypeHandler(boolean mountResponseContentTypeHandler) {
this.mountResponseContentTypeHandler = mountResponseContentTypeHandler;
return this;
}
public String getOperationModelKey() {
return operationModelKey;
}
When set, an additional handler will be created to expose the operation model in the routing
context under the given key. When the key is null, the handler is not added.
Params: - operationModelKey –
Returns:
/**
* When set, an additional handler will be created to expose the operation model in the routing
* context under the given key. When the key is null, the handler is not added.
* @param operationModelKey
* @return
*/
@Fluent
public RouterFactoryOptions setOperationModelKey(String operationModelKey) {
this.operationModelKey = operationModelKey;
return this;
}
}