Skip to content

Commit 6abb08d

Browse files
committed
[JavaVertx]Add useFuture option
1 parent 6458ab7 commit 6abb08d

File tree

5 files changed

+367
-27
lines changed

5 files changed

+367
-27
lines changed

src/main/java/io/swagger/codegen/v3/generators/java/JavaVertXServerCodegen.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ public class JavaVertXServerCodegen extends AbstractJavaCodegen implements BeanV
5050
public static final String MOUNT_OPERATION_FROM_INTERFACE = "mountFromInterface";
5151
public static final String SPEC_LOCATION_OPTION = "specLocation";
5252

53+
public static final String USE_FUTURE_OPTION = "useFuture";
54+
5355
protected String rootPackage = "io.swagger.server.api";
5456
protected String apiVerticle;
5557
protected String apiVersion = "1.0.0-SNAPSHOT";
@@ -72,6 +74,8 @@ public class JavaVertXServerCodegen extends AbstractJavaCodegen implements BeanV
7274
* <li>mountOperationFrom : type String, define how routes are mounted.</li>
7375
*
7476
* <li>specLocation : define spec location, default as {@link JavaVertXServerCodegen#SPEC_LOCATION}.</li>
77+
*
78+
* <li>useFuture : define use services as future, default false.</li>
7579
* </ul>
7680
*/
7781
public JavaVertXServerCodegen() {
@@ -111,6 +115,11 @@ public JavaVertXServerCodegen() {
111115
specLocation.setDefault(SPEC_LOCATION);
112116
cliOptions.add(specLocation);
113117

118+
CliOption useFutureOption = CliOption.newBoolean(USE_FUTURE_OPTION,
119+
"When specified, describe service as future or not. Default as false");
120+
useFutureOption.setDefault(Boolean.FALSE.toString());
121+
cliOptions.add(useFutureOption);
122+
114123
cliOptions.add(CliOption.newBoolean(USE_BEANVALIDATION, "Use BeanValidation API annotations"));
115124
}
116125

@@ -186,7 +195,6 @@ public void processOpts() {
186195
additionalProperties.put(MOUNT_OPERATION_FROM_EXTENSIONS, true);
187196
}
188197

189-
190198
if (!additionalProperties.containsKey(SPEC_LOCATION_OPTION)) {
191199
additionalProperties.put(SPEC_LOCATION_OPTION, SPEC_LOCATION);
192200
}
@@ -323,8 +331,7 @@ private void manageOperations(PathItem pathItem, String pathname) {
323331
if (operationExtension instanceof String) {
324332
address = (String) operationExtension;
325333
} else if (operationExtension instanceof Map) {
326-
address = (String) ((Map<String, Object>) operationExtension).get(
327-
OPENAPI_EXTENSION_ADDRESS);
334+
address = (String) ((Map<String, Object>) operationExtension).get(OPENAPI_EXTENSION_ADDRESS);
328335
serviceId = (String) ((Map<String, Object>) operationExtension).get(OPENAPI_EXTENSION_METHOD_NAME);
329336
}
330337
} else if (operationExtension instanceof String && pathExtension instanceof Map) {

src/main/resources/handlebars/JavaVertXServer/api.mustache

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@ package {{package}};
33
{{#imports}}import {{import}};
44
{{/imports}}
55

6+
{{#useFuture}}
67
import io.vertx.core.Future;
8+
{{/useFuture}}
9+
{{^useFuture}}
10+
import io.vertx.core.Handler;
11+
import io.vertx.core.AsyncResult;
12+
{{/useFuture}}
713
import io.vertx.ext.web.validation.RequestParameter;
814
import io.vertx.ext.web.api.service.ServiceRequest;
915
import io.vertx.ext.web.api.service.ServiceResponse;
@@ -24,7 +30,7 @@ public interface {{classname}} {
2430
{{#operations}}
2531
{{#operation}}
2632
{{#contents}}
27-
Future<ServiceResponse> {{#vendorExtensions}}{{x-serviceid}}{{/vendorExtensions}}({{#useDataObject}}{{#parameters}}{{^isBodyParam}}{{^isEnum}}{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{dataType}}}{{/datatypeWithEnum}}{{/isEnum}}{{#isEnum}}{{{dataType}}}{{/isEnum}} {{paramName}}{{/isBodyParam}}{{#isBodyParam}}{{^isBinary}}{{^parent}}{{^children}}{{{dataType}}} body{{/children}}{{/parent}}{{/isBinary}}{{/isBodyParam}}{{#hasMore}}{{^isBinary}}, {{/isBinary}}{{/hasMore}}{{^hasMore}}{{^isBinary}}, {{/isBinary}}{{/hasMore}}{{/parameters}}{{/useDataObject}}{{^useDataObject}}RequestParameter body, {{/useDataObject}}ServiceRequest request);
33+
{{#useFuture}}Future<ServiceResponse>{{/useFuture}}{{^useFuture}}void{{/useFuture}} {{#vendorExtensions}}{{x-serviceid}}{{/vendorExtensions}}({{#useDataObject}}{{#parameters}}{{^isBodyParam}}{{^isEnum}}{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{dataType}}}{{/datatypeWithEnum}}{{/isEnum}}{{#isEnum}}{{{dataType}}}{{/isEnum}} {{paramName}}{{/isBodyParam}}{{#isBodyParam}}{{^isBinary}}{{^parent}}{{^children}}{{{dataType}}} body{{/children}}{{/parent}}{{/isBinary}}{{/isBodyParam}}{{#hasMore}}{{^isBinary}}, {{/isBinary}}{{/hasMore}}{{^hasMore}}{{^isBinary}}, {{/isBinary}}{{/hasMore}}{{/parameters}}{{/useDataObject}}{{^useDataObject}}RequestParameter body, {{/useDataObject}}ServiceRequest request{{^useFuture}}, Handler<AsyncResult<ServiceResponse>> resultHandler{{/useFuture}});
2834
{{/contents}}
2935
{{/operation}}
3036
{{/operations}}

src/main/resources/handlebars/JavaVertXServer/apiVerticle.mustache

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import io.vertx.reactivex.ext.web.openapi.RouterBuilder;
1616
import io.vertx.core.AbstractVerticle;
1717
import io.vertx.core.Future;
1818
import io.vertx.core.Promise;
19-
import io.vertx.core.eventbus.MessageConsumer;
2019
import io.vertx.core.http.HttpServer;
2120
import io.vertx.ext.web.Router;
2221
import io.vertx.ext.web.openapi.RouterBuilder;
@@ -30,7 +29,6 @@ import org.slf4j.LoggerFactory;
3029
public class {{title}}Verticle extends AbstractVerticle {
3130
static final Logger LOGGER = LoggerFactory.getLogger({{title}}Verticle.class);
3231

33-
MessageConsumer<JsonObject> consumer;
3432
HttpServer server;
3533

3634
@Override
@@ -75,8 +73,7 @@ public class {{title}}Verticle extends AbstractVerticle {
7573

7674
@Override
7775
public Completable rxStop() {
78-
return this.consumer.rxUnregister()
79-
.andThen(this.server.rxClose());
76+
return this.server.rxClose();
8077
}{{/rxInterface}}
8178
{{^rxInterface}}return server.listen()
8279
.onSuccess(server -> LOGGER.info("{{title}}Verticle started on port " + server.actualPort()));
@@ -86,9 +83,10 @@ public class {{title}}Verticle extends AbstractVerticle {
8683
}
8784

8885
@Override
89-
public void stop() {
90-
this.server.close();
91-
this.consumer.unregister();
86+
public void stop(Promise<Void> stopPromise) throws Exception {
87+
this.server.close()
88+
.onSuccess(server -> stopPromise.complete())
89+
.onFailure(stopPromise::fail);
9290
}{{/rxInterface}}
9391

9492
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@ModuleGen(name = "service", groupPackage = "{{apiPackage}}", useFutures = true)
1+
@ModuleGen(name = "service", groupPackage = "{{apiPackage}}", useFutures = {{#useFuture}}true{{/useFuture}}{{^useFuture}}false{{/useFuture}})
22
package {{apiPackage}};
33

44
import io.vertx.codegen.annotations.ModuleGen;

0 commit comments

Comments
 (0)