anchor.diff:  The form attributes are parsed, converted in json and validated,
   while for file uploads the validation handler just checks the existence and the content type.
   
  -=== Custom global handlers
  +== Custom global handlers
   
   If you need to mount handlers that must be executed for each operation in your router before the operation specific handlers, you can use {@link io.vertx.ext.web.openapi.RouterFactory#rootHandler(Handler)}
   
  -=== Router factory handlers mount order
  +== Router factory handlers mount order
   
   Handlers are loaded by the router factory in this order:
   
   1. Body handler
   2. Custom global handlers
  -3. Global security handlers defined in upper spec level
  -4. Operation specific security handlers
  -5. Generated validation handler
  +4. Configured {@link io.vertx.ext.web.handler.AuthenticationHandler}s
  +5. Generated {@link io.vertx.ext.web.validation.ValidationHandler}
   6. User handlers or "Not implemented" handler (if enabled)
   
  -=== Generate the router
  +== Generate the router
   
   When you are ready, generate the router and use it:
   
  
positive.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
  
  === Define security handlers
  
  A security handler is defined by a combination of schema name and scope. You can mount only one security handler for a combination.
  For example:
  
  [source,$lang]
  ----
  {@link examples.OpenAPI3Examples#addSecurityHandler}
  ----
  
  You can use included Vert.x security handlers, for example:
  
  [source,$lang]
  ----
  {@link examples.OpenAPI3Examples#addJWT}
  ----
  
  When you generate the {@link io.vertx.ext.web.Router} the router factory fails if there is a missing security handler.
  
  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)}:
  
negative.code: [source,groovy,subs="+attributes"]
  ----
  dependencies {
    compile 'io.vertx:vertx-web-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}
  
  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)}
  