forked from loafle/openapi-generator-original
Adding the possibility to generate java Vert.X servers. It uses Vertx-Swagger-Router project. It can generate an Async callback version or a Rx version.
57 lines
2.2 KiB
Plaintext
57 lines
2.2 KiB
Plaintext
package {{rootPackage}};
|
|
|
|
import java.nio.charset.Charset;
|
|
|
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
|
import com.github.phiz71.vertx.swagger.router.OperationIdServiceIdResolver;
|
|
import com.github.phiz71.vertx.swagger.router.SwaggerRouter;
|
|
|
|
import io.swagger.models.Swagger;
|
|
import io.swagger.parser.SwaggerParser;
|
|
import io.vertx.core.AbstractVerticle;
|
|
import io.vertx.core.Future;
|
|
import io.vertx.core.file.FileSystem;
|
|
import io.vertx.core.json.Json;
|
|
import io.vertx.core.logging.Logger;
|
|
import io.vertx.core.logging.LoggerFactory;
|
|
import io.vertx.ext.web.Router;
|
|
|
|
public class MainApiVerticle extends AbstractVerticle {
|
|
final static Logger LOGGER = LoggerFactory.getLogger(MainApiVerticle.class);
|
|
|
|
final Router router = Router.router(vertx);
|
|
|
|
@Override
|
|
public void start(Future<Void> startFuture) throws Exception {
|
|
Json.mapper.registerModule(new JavaTimeModule());
|
|
FileSystem vertxFileSystem = vertx.fileSystem();
|
|
vertxFileSystem.readFile("swagger.json", readFile -> {
|
|
if (readFile.succeeded()) {
|
|
Swagger swagger = new SwaggerParser().parse(readFile.result().toString(Charset.forName("utf-8")));
|
|
Router swaggerRouter = SwaggerRouter.swaggerRouter(Router.router(vertx), swagger, vertx.eventBus(), new OperationIdServiceIdResolver());
|
|
|
|
deployVerticles(startFuture);
|
|
|
|
vertx.createHttpServer()
|
|
.requestHandler(swaggerRouter::accept)
|
|
.listen({{serverPort}});
|
|
startFuture.complete();
|
|
} else {
|
|
startFuture.fail(readFile.cause());
|
|
}
|
|
});
|
|
}
|
|
|
|
public void deployVerticles(Future<Void> startFuture) {
|
|
{{#apiInfo}}{{#apis}}
|
|
vertx.deployVerticle("{{apiPackage}}.{{classname}}Verticle", res -> {
|
|
if (res.succeeded()) {
|
|
LOGGER.info("{{classname}}Verticle : Deployed");
|
|
} else {
|
|
startFuture.fail(res.cause());
|
|
LOGGER.error("{{classname}}Verticle : Deployement failed");
|
|
}
|
|
});
|
|
{{/apis}}{{/apiInfo}}
|
|
}
|
|
} |