You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2024/06/27 14:16:58 UTC
(camel-quarkus) branch main updated: Ensure additional caffeine cache classes are registered for reflection if stats are enabled
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new b00a01c9d7 Ensure additional caffeine cache classes are registered for reflection if stats are enabled
b00a01c9d7 is described below
commit b00a01c9d7140b9147ab2bcf7345610fdd579cb2
Author: James Netherton <ja...@gmail.com>
AuthorDate: Thu Jun 27 13:02:28 2024 +0100
Ensure additional caffeine cache classes are registered for reflection if stats are enabled
Fixes #6230
---
.../caffeine/deployment/CaffeineProcessor.java | 21 +++++++++++++++++++--
.../src/main/resources/application.properties | 18 ++++++++++++++++++
2 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/extensions/caffeine/deployment/src/main/java/org/apache/camel/quarkus/component/caffeine/deployment/CaffeineProcessor.java b/extensions/caffeine/deployment/src/main/java/org/apache/camel/quarkus/component/caffeine/deployment/CaffeineProcessor.java
index 47f00bef6d..be17e6c752 100644
--- a/extensions/caffeine/deployment/src/main/java/org/apache/camel/quarkus/component/caffeine/deployment/CaffeineProcessor.java
+++ b/extensions/caffeine/deployment/src/main/java/org/apache/camel/quarkus/component/caffeine/deployment/CaffeineProcessor.java
@@ -16,16 +16,33 @@
*/
package org.apache.camel.quarkus.component.caffeine.deployment;
+import java.util.function.BooleanSupplier;
+
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.FeatureBuildItem;
-import org.jboss.jandex.DotName;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageSystemPropertyBuildItem;
+import org.apache.camel.quarkus.core.deployment.util.CamelSupport;
+
+import static io.quarkus.caffeine.runtime.graal.CacheConstructorsFeature.REGISTER_RECORD_STATS_IMPLEMENTATIONS;
class CaffeineProcessor {
private static final String FEATURE = "camel-caffeine";
- private static final DotName CACHE_LOADER_NAME = DotName.createSimple("com.github.benmanes.caffeine.cache.CacheLoader");
@BuildStep
FeatureBuildItem feature() {
return new FeatureBuildItem(FEATURE);
}
+
+ @BuildStep(onlyIf = CamelCaffeineStatsEnabled.class)
+ NativeImageSystemPropertyBuildItem registerRecordStatsImplementations() {
+ return new NativeImageSystemPropertyBuildItem(REGISTER_RECORD_STATS_IMPLEMENTATIONS, "true");
+ }
+
+ static final class CamelCaffeineStatsEnabled implements BooleanSupplier {
+ @Override
+ public boolean getAsBoolean() {
+ return CamelSupport.getOptionalConfigValue("camel.component.caffeine-cache.stats-enabled", boolean.class, false) ||
+ CamelSupport.getOptionalConfigValue("camel.component.caffeine-cache.statsEnabled", boolean.class, false);
+ }
+ }
}
diff --git a/integration-tests/caffeine/src/main/resources/application.properties b/integration-tests/caffeine/src/main/resources/application.properties
new file mode 100644
index 0000000000..f9074003e2
--- /dev/null
+++ b/integration-tests/caffeine/src/main/resources/application.properties
@@ -0,0 +1,18 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+camel.component.caffeine-cache.stats-enabled = true