anchor.diff:  ----
   <dependency>
     <groupId>io.vertx</groupId>
  -  <artifactId>vertx-openapi</artifactId>
  +  <artifactId>vertx-web-openapi</artifactId>
     <version>${maven.version}</version>
   </dependency>
   ----
  
positive.code: [source,groovy,subs="+attributes"]
  ----
  dependencies {
    compile 'io.vertx:vertx-openapi:${maven.version}'
  }
  ----
  
  == `RouterFactory`
  
  {@link io.vertx.ext.web.openapi.RouterFactory} is the main element of this module: It provides the interface to mount request handlers and generates the final {@link io.vertx.ext.web.Router}
  
  === Create the `RouterFactory`
  
  To start using Vert.x Web OpenAPI, you must instantiate {@link io.vertx.ext.web.openapi.RouterFactory} with your contract using
  {@link io.vertx.ext.web.openapi.RouterFactory#create(Vertx,String,Handler)}
  
negative.code: Vert.x OpenAPI mounts the correct {@link io.vertx.ext.web.validation.ValidationHandler} for you, so you can access to request parameters and request body.
  Refer to https://vertx.io/docs/vertx-web-validation/java/[Vert.x Web Validation documentation] to learn how to get request parameters & request body and how to manage validation failures
  
  == Map `AuthenticationHandler` to OpenAPI security schemes
  
  You can map an {@link io.vertx.ext.web.handler.AuthenticationHandler} to a security schema defined in the contract.
  
  For example, given your contract has a security schema named `security_scheme_name`:
  
  [source,$lang]
  ----
  {@link examples.OpenAPI3Examples#addSecurityHandler}
  ----
  
  You can mount {@link io.vertx.ext.web.handler.AuthenticationHandler} included in Vert.x Web, for example:
  
  [source,$lang]
  ----
  {@link examples.OpenAPI3Examples#addJWT}
  ----
  
  When you generate the {@link io.vertx.ext.web.Router} the router factory will solve the security schemes required for an operation.
  It fails if there is a missing `AuthenticationHandler` required by a configured operation.
  
  For debugging/testing purpose you can disable this check with {@link io.vertx.ext.web.openapi.RouterFactoryOptions#setRequireSecurityHandlers(boolean)}
  
  == Not Implemented Error
  
  Router Factory automatically mounts a default handler for operations without a specified handler.
  This default handler fails the routing context with 405 `Method Not Allowed`/501 `Not Implemented` error.
  You can enable/disable it with {@link io.vertx.ext.web.openapi.RouterFactoryOptions#setMountNotImplementedHandler}
  and you can customize this error handling with {@link io.vertx.ext.web.Router#errorHandler}
  
  == Response Content Type Handler
  
  Router Factory automatically mounts a {@link io.vertx.ext.web.handler.ResponseContentTypeHandler} handler when contract requires it.
  You can disable this feature with {@link io.vertx.ext.web.openapi.RouterFactoryOptions#setMountResponseContentTypeHandler}
  
  == Operation model
  
  If you need to access to your operation model while handling the request,
  you can configure the router factory to push it inside the `RoutingContext` with {@link io.vertx.ext.web.openapi.RouterFactoryOptions#setOperationModelKey(String)}:
  