From fc1e6f7e92caeeee2c2432e8721022fa925b2043 Mon Sep 17 00:00:00 2001 From: James Netherton Date: Thu, 20 Jun 2024 13:06:36 +0100 Subject: [PATCH] Log the Camel Quarkus version on startup Fixes #6196 --- extensions-core/core/deployment/pom.xml | 6 ++ .../deployment/CamelBootstrapProcessor.java | 3 +- .../deployment/util/CamelQuarkusVersion.java | 63 +++++++++++++++++++ .../util/camel-quarkus-version.properties | 17 +++++ .../quarkus/core/CamelBootstrapRecorder.java | 4 +- 5 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/util/CamelQuarkusVersion.java create mode 100644 extensions-core/core/deployment/src/main/resources/org/apache/camel/quarkus/core/deployment/util/camel-quarkus-version.properties diff --git a/extensions-core/core/deployment/pom.xml b/extensions-core/core/deployment/pom.xml index 69b213eabda6..f3ce8e493642 100644 --- a/extensions-core/core/deployment/pom.xml +++ b/extensions-core/core/deployment/pom.xml @@ -94,6 +94,12 @@ + + + src/main/resources + true + + maven-compiler-plugin diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelBootstrapProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelBootstrapProcessor.java index db9e8805f1c1..d0d675f8d15a 100644 --- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelBootstrapProcessor.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelBootstrapProcessor.java @@ -28,6 +28,7 @@ import org.apache.camel.quarkus.core.CamelBootstrapRecorder; import org.apache.camel.quarkus.core.deployment.spi.CamelBootstrapCompletedBuildItem; import org.apache.camel.quarkus.core.deployment.spi.CamelRuntimeBuildItem; +import org.apache.camel.quarkus.core.deployment.util.CamelQuarkusVersion; class CamelBootstrapProcessor { /** @@ -51,7 +52,7 @@ void boot( recorder.addShutdownTask(shutdown, runtime.runtime()); if (runtime.isAutoStartup()) { - recorder.start(runtime.runtime(), commandLineArguments); + recorder.start(runtime.runtime(), commandLineArguments, CamelQuarkusVersion.getVersion()); } /* Make sure that Quarkus orders this method before starting to serve HTTP endpoints. * Otherwise first requests might reach Camel context in a non-yet-started state. */ diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/util/CamelQuarkusVersion.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/util/CamelQuarkusVersion.java new file mode 100644 index 000000000000..4326ffad9e94 --- /dev/null +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/util/CamelQuarkusVersion.java @@ -0,0 +1,63 @@ +/* + * 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.quarkus.core.deployment.util; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.Properties; + +import org.jboss.logging.Logger; + +public final class CamelQuarkusVersion { + private static final String CAMEL_QUARKUS_VERSION_PROPERTIES = "camel-quarkus-version.properties"; + private static final Logger LOG = Logger.getLogger(CamelQuarkusVersion.class); + private static final String VERSION; + + static { + Properties versionProps = new Properties(); + String versionString = "unknown version"; + try (final InputStream stream = CamelQuarkusVersion.class.getResourceAsStream(CAMEL_QUARKUS_VERSION_PROPERTIES)) { + if (stream != null) { + try (final InputStreamReader reader = new InputStreamReader(stream, StandardCharsets.UTF_8)) { + versionProps.load(reader); + versionString = versionProps.getProperty("version", versionString); + } + } else { + logUnableToLoadVersionProperties(null); + } + } catch (IOException e) { + logUnableToLoadVersionProperties(e); + } + VERSION = versionString; + } + + static void logUnableToLoadVersionProperties(IOException e) { + if (LOG.isDebugEnabled()) { + LOG.debugf(e, "Unable to load %s", CAMEL_QUARKUS_VERSION_PROPERTIES); + } + } + + private CamelQuarkusVersion() { + // Utility class + } + + public static String getVersion() { + return VERSION; + } +} diff --git a/extensions-core/core/deployment/src/main/resources/org/apache/camel/quarkus/core/deployment/util/camel-quarkus-version.properties b/extensions-core/core/deployment/src/main/resources/org/apache/camel/quarkus/core/deployment/util/camel-quarkus-version.properties new file mode 100644 index 000000000000..fbe48f8d7781 --- /dev/null +++ b/extensions-core/core/deployment/src/main/resources/org/apache/camel/quarkus/core/deployment/util/camel-quarkus-version.properties @@ -0,0 +1,17 @@ +## --------------------------------------------------------------------------- +## 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. +## --------------------------------------------------------------------------- +version=${project.version} \ No newline at end of file diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelBootstrapRecorder.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelBootstrapRecorder.java index f30d7b6cc3e2..5b679fd5f726 100644 --- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelBootstrapRecorder.java +++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelBootstrapRecorder.java @@ -38,10 +38,10 @@ public void run() { }); } - public void start(RuntimeValue runtime, Supplier arguments) { + public void start(RuntimeValue runtime, Supplier arguments, String camelQuarkusVersion) { try { Logger logger = Logger.getLogger(CamelBootstrapRecorder.class); - logger.infof("Bootstrap runtime: %s", runtime.getValue().getClass().getName()); + logger.infof("Apache Camel Quarkus %s is starting", camelQuarkusVersion); runtime.getValue().start(arguments.get()); } catch (Exception e) { throw new RuntimeException(e);