diff --git a/security/vertx-jwt/src/main/java/io/quarkus/ts/security/vertx/Application.java b/security/vertx-jwt/src/main/java/io/quarkus/ts/security/vertx/Application.java index 2fa065ab8..23aed9ffe 100644 --- a/security/vertx-jwt/src/main/java/io/quarkus/ts/security/vertx/Application.java +++ b/security/vertx-jwt/src/main/java/io/quarkus/ts/security/vertx/Application.java @@ -3,6 +3,9 @@ import static io.quarkus.ts.security.vertx.Application.AUTH.NO_SECURE; import static io.quarkus.ts.security.vertx.Application.AUTH.SECURE; +import java.time.Duration; +import java.util.UUID; + import javax.enterprise.context.ApplicationScoped; import javax.enterprise.event.Observes; import javax.inject.Inject; @@ -17,7 +20,11 @@ import io.quarkus.ts.security.vertx.handlers.BladeRunnerHandler; import io.quarkus.ts.security.vertx.handlers.JWTHandler; import io.quarkus.ts.security.vertx.handlers.ReplicantHandler; +import io.quarkus.ts.security.vertx.model.HelloEvent; +import io.quarkus.vertx.ConsumeEvent; +import io.smallrye.mutiny.Multi; import io.vertx.core.Handler; +import io.vertx.core.eventbus.EventBus; import io.vertx.core.http.HttpMethod; import io.vertx.ext.auth.jwt.JWTAuth; import io.vertx.ext.web.Route; @@ -29,10 +36,13 @@ import io.vertx.ext.web.handler.LoggerHandler; @ApplicationScoped -public class Application { +public class Application extends CommonApplication { private static final Logger LOG = Logger.getLogger(Application.class); + @Inject + EventBus eventBus; + @ConfigProperty(name = "app.name") public String serviceName; @@ -66,8 +76,12 @@ void init(@Observes Router router) { } void onStart(@Observes StartupEvent ev) { + LOG.info(String.format("Application %s starting...", serviceName)); + Multi.createFrom().ticks().every(Duration.ofMillis(2000)) + .subscribe().with((Long tick) -> eventBus.publish(ADDRESS, new HelloEvent(UUID.randomUUID().toString()))); + addRoute(HttpMethod.POST, "/bladeRunner", SECURE, rc -> bladeRunner.upsertBladeRunner(rc)); addRoute(HttpMethod.GET, "/bladeRunner/:id", SECURE, rc -> bladeRunner.getBladeRunnerById(rc)); addRoute(HttpMethod.GET, "/bladeRunner", SECURE, rc -> bladeRunner.getAllBladeRunner(rc)); @@ -98,4 +112,10 @@ private void addRoute(HttpMethod method, String path, AUTH authEnabled, Handler< route.handler(handler).failureHandler(rc -> failureHandler.handler(rc)); } + + @Override + @ConsumeEvent(ADDRESS) + public void consumeEventBusEvent(HelloEvent event) { + LOG.infof("Consuming generated HelloEvent at starting point. Msg value: %s", event.getMessage()); + } } diff --git a/security/vertx-jwt/src/main/java/io/quarkus/ts/security/vertx/CommonApplication.java b/security/vertx-jwt/src/main/java/io/quarkus/ts/security/vertx/CommonApplication.java new file mode 100644 index 000000000..24078dea1 --- /dev/null +++ b/security/vertx-jwt/src/main/java/io/quarkus/ts/security/vertx/CommonApplication.java @@ -0,0 +1,8 @@ +package io.quarkus.ts.security.vertx; + +public abstract class CommonApplication { + + public static final String ADDRESS = "greeting"; + + public abstract void consumeEventBusEvent(T event); +} diff --git a/security/vertx-jwt/src/main/java/io/quarkus/ts/security/vertx/model/HelloEvent.java b/security/vertx-jwt/src/main/java/io/quarkus/ts/security/vertx/model/HelloEvent.java new file mode 100644 index 000000000..4f037c30d --- /dev/null +++ b/security/vertx-jwt/src/main/java/io/quarkus/ts/security/vertx/model/HelloEvent.java @@ -0,0 +1,14 @@ +package io.quarkus.ts.security.vertx.model; + +public class HelloEvent { + + final String message; + + public HelloEvent(String message) { + this.message = message; + } + + public String getMessage() { + return message; + } +} diff --git a/security/vertx-jwt/src/test/java/io/quarkus/ts/security/vertx/BladeRunnerHandlerIT.java b/security/vertx-jwt/src/test/java/io/quarkus/ts/security/vertx/BladeRunnerHandlerIT.java index 458531d4d..0c7d35600 100644 --- a/security/vertx-jwt/src/test/java/io/quarkus/ts/security/vertx/BladeRunnerHandlerIT.java +++ b/security/vertx-jwt/src/test/java/io/quarkus/ts/security/vertx/BladeRunnerHandlerIT.java @@ -2,6 +2,11 @@ import static org.hamcrest.Matchers.is; +import java.util.HashSet; +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; @@ -47,4 +52,16 @@ public void deleteBladeRunner() { .then() .statusCode(404); } + + @Tag("QUARKUS-2746 ") + @Test + public void verifyConsumeEventAnnotation() { + List actualLogs = app.getLogs(); + List helloEvents = actualLogs.stream() + .filter(l -> l.contains("Consuming generated HelloEvent at starting point")) + .collect(Collectors.toList()); + + Assertions.assertTrue(new HashSet<>(helloEvents).size() == helloEvents.size(), + "@ConsumeEvent annotation should be invoked once per event"); + } }