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