@Override
public void start(Future<Void> startPromise) {
VertxResteasyDeployment deployment = new VertxResteasyDeployment();
deployment.start();
deployment.getProviderFactory().registerProvider(DefaultExceptionMapper.class);
if (enableRbac) {
log.info("Enabling RBAC for REST API");
deployment.getProviderFactory().registerProviderInstance(new AuthInterceptor(authApi, path ->
path.startsWith(HttpHealthService.BASE_URI) ||
path.startsWith(HttpConsoleService.BASE_URI)));
} else {
log.info("Disabling authentication and authorization for REST API");
deployment.getProviderFactory().registerProviderInstance(new AllowAllAuthInterceptor());
}
deployment.getRegistry().addSingletonResource(new HttpHealthService());
deployment.getRegistry().addSingletonResource(new HttpConsoleService(authApi.getNamespace(), addressSpaceApi));
deployment.getRegistry().addSingletonResource(new OSBCatalogService(addressSpaceApi, authApi, schemaProvider));
deployment.getRegistry().addSingletonResource(new OSBProvisioningService(addressSpaceApi, authApi, schemaProvider, consoleProxy));
deployment.getRegistry().addSingletonResource(new OSBBindingService(addressSpaceApi, authApi, schemaProvider, userApi));
deployment.getRegistry().addSingletonResource(new OSBLastOperationService(addressSpaceApi, authApi, schemaProvider));
VertxRequestHandler requestHandler = new VertxRequestHandler(vertx, deployment);
httpServer = createServer(requestHandler, startPromise);
}