Class RouterBuilder
- java.lang.Object
-
- io.vertx.reactivex.ext.web.openapi.RouterBuilder
-
public class RouterBuilder extends Object
Interface to build a Vert.x Web from an OpenAPI 3 contract.
To add an handler, useoperation(java.lang.String)
(String, Handler)}
Usage example:RouterBuilder.create(vertx, "src/resources/spec.yaml", asyncResult -> { if (!asyncResult.succeeded()) { // IO failure or spec invalid
else { RouterBuilder routerBuilder = asyncResult.result(); RouterBuilder.operation("operation_id").handler(routingContext -> { // Do something }, routingContext -> { // Do something with failure handler }); Router router = routerBuilder.createRouter(); } }); }
Handlers are loaded in this order:
- Body handler (Customizable with
- Custom global handlers configurable with
- Global security handlers defined in upper spec level
- Operation specific security handlers
- Generated validation handler
- User handlers or "Not implemented" handler
original
non RX-ified interface using Vert.x codegen.
-
-
Field Summary
Fields Modifier and Type Field Description static TypeArg<RouterBuilder>
__TYPE_ARG
-
Constructor Summary
Constructors Constructor Description RouterBuilder(RouterBuilder delegate)
RouterBuilder(Object delegate)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description RouterBuilder
bodyHandler(BodyHandler bodyHandler)
Deprecated.static void
create(Vertx vertx, String url)
Likestatic void
create(Vertx vertx, String url, Handler<AsyncResult<RouterBuilder>> handler)
Likestatic void
create(Vertx vertx, String url, OpenAPILoaderOptions options)
Likestatic void
create(Vertx vertx, String url, OpenAPILoaderOptions options, Handler<AsyncResult<RouterBuilder>> handler)
LikeRouter
createRouter()
Construct a new router based on spec.boolean
equals(Object o)
RouterBuilder
getDelegate()
OpenAPIHolder
getOpenAPI()
RouterBuilderOptions
getOptions()
SchemaParser
getSchemaParser()
Deprecated.SchemaRouter
getSchemaRouter()
Deprecated.int
hashCode()
RouterBuilder
mountServicesFromExtensions()
Introspect the OpenAPI spec to mount handlers for all operations that specifies a x-vertx-event-bus annotation.static RouterBuilder
newInstance(RouterBuilder arg)
Operation
operation(String operationId)
Access to an operation defined in the contract withoperationId
List<Operation>
operations()
RouterBuilder
rootHandler(Handler<RoutingContext> rootHandler)
Add global handler to be applied prior to being generated.static io.reactivex.Single<RouterBuilder>
rxCreate(Vertx vertx, String url)
Likestatic io.reactivex.Single<RouterBuilder>
rxCreate(Vertx vertx, String url, OpenAPILoaderOptions options)
LikeSecurityScheme
securityHandler(String securitySchemeName)
Creates a new security scheme for the required .RouterBuilder
securityHandler(String securitySchemeName, AuthenticationHandler handler)
Mount to paths that have to follow a security schema a security handler.RouterBuilder
serviceExtraPayloadMapper(Function<RoutingContext,JsonObject> serviceExtraPayloadMapper)
When set, this function is called while creating the payload ofRouterBuilder
setOptions(RouterBuilderOptions options)
Set options of router builder.String
toString()
-
-
-
Field Detail
-
__TYPE_ARG
public static final TypeArg<RouterBuilder> __TYPE_ARG
-
-
Constructor Detail
-
RouterBuilder
public RouterBuilder(RouterBuilder delegate)
-
RouterBuilder
public RouterBuilder(Object delegate)
-
-
Method Detail
-
getDelegate
public RouterBuilder getDelegate()
-
operation
public Operation operation(String operationId)
Access to an operation defined in the contract withoperationId
- Parameters:
operationId
- the id of the operation- Returns:
- the requested operation
-
bodyHandler
@Deprecated public RouterBuilder bodyHandler(BodyHandler bodyHandler)
Deprecated.Supply your own BodyHandler if you would like to control body limit, uploads directory and deletion of uploaded files. If you provide a null body handler, you won't be able to validate request bodies- Parameters:
bodyHandler
-- Returns:
- self
-
rootHandler
public RouterBuilder rootHandler(Handler<RoutingContext> rootHandler)
Add global handler to be applied prior to being generated.
Please note that you should not add a body handler inside that list. If you want to modify the body handler, please usebodyHandler(io.vertx.reactivex.ext.web.handler.BodyHandler)
- Parameters:
rootHandler
-- Returns:
- self
-
mountServicesFromExtensions
public RouterBuilder mountServicesFromExtensions()
Introspect the OpenAPI spec to mount handlers for all operations that specifies a x-vertx-event-bus annotation. Please give a look at vertx-web-api-service documentation for more informations- Returns:
- self
-
setOptions
public RouterBuilder setOptions(RouterBuilderOptions options)
Set options of router builder. For more infoRouterBuilderOptions
- Parameters:
options
-- Returns:
- self
-
getOptions
public RouterBuilderOptions getOptions()
- Returns:
- options of router builder. For more info
RouterBuilderOptions
-
getOpenAPI
public OpenAPIHolder getOpenAPI()
- Returns:
- holder used by self to process the OpenAPI. You can use it to resolve
$ref
s
-
getSchemaRouter
@Deprecated public SchemaRouter getSchemaRouter()
Deprecated.- Returns:
- schema router used by self to internally manage all
Schema
instances
-
getSchemaParser
@Deprecated public SchemaParser getSchemaParser()
Deprecated.- Returns:
- schema parser used by self to parse all
Schema
-
serviceExtraPayloadMapper
public RouterBuilder serviceExtraPayloadMapper(Function<RoutingContext,JsonObject> serviceExtraPayloadMapper)
When set, this function is called while creating the payload of- Parameters:
serviceExtraPayloadMapper
-- Returns:
- self
-
securityHandler
public SecurityScheme securityHandler(String securitySchemeName)
Creates a new security scheme for the required .- Parameters:
securitySchemeName
-- Returns:
- a security scheme.
-
createRouter
public Router createRouter()
Construct a new router based on spec. It will fail if you are trying to mount a spec with security schemes without assigned handlers
Note: Router is built when this function is called and the path definition ordering in contract is respected.- Returns:
-
create
public static void create(Vertx vertx, String url, Handler<AsyncResult<RouterBuilder>> handler)
Like- Parameters:
vertx
-url
-handler
-
-
rxCreate
public static io.reactivex.Single<RouterBuilder> rxCreate(Vertx vertx, String url)
Like- Parameters:
vertx
-url
-- Returns:
-
create
public static void create(Vertx vertx, String url, OpenAPILoaderOptions options, Handler<AsyncResult<RouterBuilder>> handler)
Like- Parameters:
vertx
-url
-options
-handler
-
-
create
public static void create(Vertx vertx, String url, OpenAPILoaderOptions options)
Like- Parameters:
vertx
-url
-options
-
-
rxCreate
public static io.reactivex.Single<RouterBuilder> rxCreate(Vertx vertx, String url, OpenAPILoaderOptions options)
Like- Parameters:
vertx
-url
-options
-- Returns:
-
securityHandler
public RouterBuilder securityHandler(String securitySchemeName, AuthenticationHandler handler)
Mount to paths that have to follow a security schema a security handler. This method will not perform any validation weather or not the givensecuritySchemeName
is present in the OpenAPI document. For must use cases the methodsecurityHandler(java.lang.String)
should be used.- Parameters:
securitySchemeName
- the components security scheme idhandler
- the authentication handler- Returns:
- self
-
newInstance
public static RouterBuilder newInstance(RouterBuilder arg)
-
-