You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2020/09/18 09:59:06 UTC

[camel-k-runtime] 01/02: quarkus: remove the need for a shutdown task bean as it was introduced only for testing

This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k-runtime.git

commit f6362613470a3518f04b67a8249d46bd53066966
Author: Luca Burgazzoli <lb...@gmail.com>
AuthorDate: Fri Sep 18 10:52:58 2020 +0200

    quarkus: remove the need for a shutdown task bean as it was introduced only for testing
---
 .../k/quarkus/cron/deployment/Application.java     |  23 ++---
 .../org/apache/camel/k/quarkus/it/Application.java |  20 +---
 .../org/apache/camel/k/quarkus/it/RuntimeTest.java |   2 -
 .../org/apache/camel/k/quarkus/Application.java    |  12 +--
 .../camel/k/quarkus/ApplicationProducers.java      |  17 ----
 .../apache/camel/k/support/DelegatingRuntime.java  | 109 +++++++++++++++++++++
 6 files changed, 121 insertions(+), 62 deletions(-)

diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-cron/src/main/java/org/apache/camel/k/quarkus/cron/deployment/Application.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-cron/src/main/java/org/apache/camel/k/quarkus/cron/deployment/Application.java
index a70fd02..27927c6 100644
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-cron/src/main/java/org/apache/camel/k/quarkus/cron/deployment/Application.java
+++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-cron/src/main/java/org/apache/camel/k/quarkus/cron/deployment/Application.java
@@ -22,13 +22,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
-import javax.inject.Singleton;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
-import io.quarkus.arc.Unremovable;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.k.Constants;
@@ -38,6 +36,7 @@ import org.apache.camel.k.SourceLoader;
 import org.apache.camel.k.Sources;
 import org.apache.camel.k.cron.CronSourceLoaderInterceptor;
 import org.apache.camel.k.loader.yaml.YamlSourceLoader;
+import org.apache.camel.k.support.DelegatingRuntime;
 
 @Path("/test")
 @ApplicationScoped
@@ -72,15 +71,21 @@ public class Application {
 
         final SourceLoader loader = new YamlSourceLoader();
         final Source source = Sources.fromBytes("my-cron", "yaml", null, List.of("cron"), code.getBytes(StandardCharsets.UTF_8));
+        final Runtime rt = new DelegatingRuntime(runtime) {
+            @Override
+            public void stop() throws Exception {
+                stopped.set(true);
+            }
+        };
 
         final CronSourceLoaderInterceptor interceptor = new CronSourceLoaderInterceptor();
-        interceptor.setRuntime(runtime);
+        interceptor.setRuntime(rt);
         interceptor.setOverridableComponents("timer");
 
         SourceLoader.Result result = interceptor.afterLoad(
             loader,
             source,
-            loader.load(runtime, source));
+            loader.load(rt, source));
 
         result.builder().ifPresent(b -> {
             try {
@@ -99,14 +104,4 @@ public class Application {
     public String stopped()  {
         return "" + stopped.get();
     }
-
-    /*
-     * Override the default ShutdownTask for testing purpose.
-     */
-    @Unremovable
-    @Singleton
-    @javax.enterprise.inject.Produces
-    org.apache.camel.k.quarkus.Application.ShutdownTask shutdownTask() {
-        return () -> stopped.set(true);
-    }
 }
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/main/java/org/apache/camel/k/quarkus/it/Application.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/main/java/org/apache/camel/k/quarkus/it/Application.java
index f3112a8..ce7f8a1 100644
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/main/java/org/apache/camel/k/quarkus/it/Application.java
+++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/main/java/org/apache/camel/k/quarkus/it/Application.java
@@ -43,24 +43,8 @@ public class Application {
     @Produces(MediaType.APPLICATION_JSON)
     public JsonObject inspect() {
         return Json.createObjectBuilder()
-            .add(
-                "camel-context",
-                instance(CamelContext.class)
-                    .map(Object::getClass)
-                    .map(Class::getName)
-                    .orElse(""))
-            .add(
-                "camel-k-runtime",
-                instance(Runtime.class)
-                    .map(Object::getClass)
-                    .map(Class::getName)
-                    .orElse(""))
-            .add(
-                "shutdown-task",
-                instance(org.apache.camel.k.quarkus.Application.ShutdownTask.class)
-                    .map(Object::getClass)
-                    .map(Class::getName)
-                    .orElse(""))
+            .add("camel-context", instance(CamelContext.class).map(Object::getClass).map(Class::getName).orElse(""))
+            .add("camel-k-runtime", instance(Runtime.class).map(Object::getClass).map(Class::getName).orElse(""))
             .build();
     }
 
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/test/java/org/apache/camel/k/quarkus/it/RuntimeTest.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/test/java/org/apache/camel/k/quarkus/it/RuntimeTest.java
index 5689b73..7216824 100644
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/test/java/org/apache/camel/k/quarkus/it/RuntimeTest.java
+++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime/src/test/java/org/apache/camel/k/quarkus/it/RuntimeTest.java
@@ -22,7 +22,6 @@ import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.path.json.JsonPath;
 import org.apache.camel.k.quarkus.Application;
-import org.apache.camel.k.quarkus.ApplicationProducers;
 import org.apache.camel.quarkus.core.FastCamelContext;
 import org.junit.jupiter.api.Test;
 
@@ -43,7 +42,6 @@ public class RuntimeTest {
 
         assertThat(p.getString("camel-context")).isEqualTo(FastCamelContext.class.getName());
         assertThat(p.getString("camel-k-runtime")).isEqualTo(Application.Runtime.class.getName());
-        assertThat(p.getString("shutdown-task")).isEqualTo(ApplicationProducers.DefaultShutdownTask.class.getName());
     }
 
     @Test
diff --git a/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/Application.java b/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/Application.java
index fb0392a..320bd83 100644
--- a/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/Application.java
+++ b/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/Application.java
@@ -75,9 +75,7 @@ public final class Application {
         @Override
         public void stop() throws Exception {
             if (!this.stopped.compareAndExchange(false, true)) {
-                instance(ShutdownTask.class).ifPresentOrElse(
-                    ShutdownTask::run,
-                    Quarkus::asyncExit);
+                Quarkus.asyncExit();
             }
         }
     }
@@ -144,14 +142,6 @@ public final class Application {
         }
     }
 
-    /**
-     * Provide the task to be executed to shutdown the runtime
-     */
-    @FunctionalInterface
-    public interface ShutdownTask {
-        void run();
-    }
-
     // *********************************
     //
     // Helpers
diff --git a/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/ApplicationProducers.java b/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/ApplicationProducers.java
index f44f3c9..3e18fc3 100644
--- a/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/ApplicationProducers.java
+++ b/camel-k-quarkus/camel-k-runtime-quarkus/runtime/src/main/java/org/apache/camel/k/quarkus/ApplicationProducers.java
@@ -20,9 +20,7 @@ import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.inject.Produces;
 import javax.inject.Singleton;
 
-import io.quarkus.arc.DefaultBean;
 import io.quarkus.arc.Unremovable;
-import io.quarkus.runtime.Quarkus;
 import org.apache.camel.k.Runtime;
 
 @ApplicationScoped
@@ -39,19 +37,4 @@ public class ApplicationProducers {
     Runtime runtime() {
         return this.runtime;
     }
-
-    @Unremovable
-    @DefaultBean
-    @Singleton
-    @Produces
-    Application.ShutdownTask shutdownTask() {
-        return new DefaultShutdownTask();
-    }
-
-    public static class DefaultShutdownTask implements Application.ShutdownTask {
-        @Override
-        public void run() {
-            Quarkus.asyncExit();
-        }
-    }
 }
diff --git a/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/DelegatingRuntime.java b/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/DelegatingRuntime.java
new file mode 100644
index 0000000..960306b
--- /dev/null
+++ b/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/DelegatingRuntime.java
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.k.support;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.k.Runtime;
+import org.apache.camel.spi.Registry;
+
+public class DelegatingRuntime implements Runtime {
+    private final Runtime runtime;
+
+    public DelegatingRuntime(Runtime runtime) {
+        this.runtime = runtime;
+    }
+
+    @Override
+    public <T extends CamelContext> T getCamelContext(Class<T> type) {
+        return runtime.getCamelContext(type);
+    }
+
+    @Override
+    public Registry getRegistry() {
+        return runtime.getRegistry();
+    }
+
+    @Override
+    public void setInitialProperties(Properties properties) {
+        runtime.setInitialProperties(properties);
+    }
+
+    @Override
+    public void setInitialProperties(Map<String, String> properties) {
+        runtime.setInitialProperties(properties);
+    }
+
+    @Override
+    public void setInitialProperties(String key, String value, String... keyVals) {
+        runtime.setInitialProperties(key, value, keyVals);
+    }
+
+    @Override
+    public void setProperties(Properties properties) {
+        runtime.setProperties(properties);
+    }
+
+    @Override
+    public void setProperties(Map<String, String> properties) {
+        runtime.setProperties(properties);
+    }
+
+    @Override
+    public void setProperties(String key, String value, String... keyVals) {
+        runtime.setProperties(key, value, keyVals);
+    }
+
+    @Override
+    public void addRoutes(RoutesBuilder builder) {
+        runtime.addRoutes(builder);
+    }
+
+    @Override
+    public void addConfiguration(Object configuration) {
+        runtime.addConfiguration(configuration);
+    }
+
+    @Override
+    public void setPropertiesLocations(Collection<String> locations) {
+        runtime.setPropertiesLocations(locations);
+    }
+
+    @Override
+    public void setPropertiesLocations(String... locations) {
+        runtime.setPropertiesLocations(locations);
+    }
+
+    @Override
+    public void stop() throws Exception {
+        runtime.stop();
+    }
+
+    @Override
+    public void close() throws Exception {
+        runtime.close();
+    }
+
+    @Override
+    public CamelContext getCamelContext() {
+        return runtime.getCamelContext();
+    }
+}