You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by al...@apache.org on 2022/09/14 20:09:15 UTC
[camel-quarkus] branch main updated: JCache native mode
This is an automated email from the ASF dual-hosted git repository.
aldettinger 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 5d6d102cdd JCache native mode
5d6d102cdd is described below
commit 5d6d102cdd124ab3d317fe2dff480f6c22e26102
Author: Eugene Berman <eu...@modusbox.com>
AuthorDate: Tue Sep 13 16:02:12 2022 -0700
JCache native mode
---
docs/modules/ROOT/examples/components/jcache.yml | 6 +-
.../ROOT/pages/reference/extensions/jcache.adoc | 14 +++--
extensions-jvm/pom.xml | 1 -
.../jcache/deployment/pom.xml | 0
.../jcache/deployment/JcacheProcessor.java | 33 +++++++----
{extensions-jvm => extensions}/jcache/pom.xml | 2 +-
.../jcache/runtime/pom.xml | 1 +
.../main/resources/META-INF/quarkus-extension.yaml | 3 +-
extensions/pom.xml | 1 +
integration-tests-jvm/pom.xml | 1 -
.../jcache/pom.xml | 53 +++++++++++++++++
.../it/JcacheCaffeineReflectionConfiguration.java | 19 ++-----
.../component/jcache/it/JcacheResource.java | 30 ++++++----
.../quarkus/component/jcache/it/JcacheRoutes.java | 66 ++++++++++++++++++++++
.../src/main/resources/application.properties | 17 ++++++
.../quarkus/component/jcache/it/JcacheIT.java | 16 +-----
.../quarkus/component/jcache/it/JcacheTest.java | 27 +++++++--
integration-tests/pom.xml | 1 +
pom.xml | 1 +
poms/bom-test/pom.xml | 11 ++++
tooling/scripts/test-categories.yaml | 1 +
21 files changed, 237 insertions(+), 67 deletions(-)
diff --git a/docs/modules/ROOT/examples/components/jcache.yml b/docs/modules/ROOT/examples/components/jcache.yml
index 9429f64751..5536775e60 100644
--- a/docs/modules/ROOT/examples/components/jcache.yml
+++ b/docs/modules/ROOT/examples/components/jcache.yml
@@ -2,11 +2,11 @@
# This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
cqArtifactId: camel-quarkus-jcache
cqArtifactIdBase: jcache
-cqNativeSupported: false
-cqStatus: Preview
+cqNativeSupported: true
+cqStatus: Stable
cqDeprecated: false
cqJvmSince: 1.2.0
-cqNativeSince: n/a
+cqNativeSince: 2.13.0
cqCamelPartName: jcache
cqCamelPartTitle: JCache
cqCamelPartDescription: Perform caching operations against JSR107/JCache.
diff --git a/docs/modules/ROOT/pages/reference/extensions/jcache.adoc b/docs/modules/ROOT/pages/reference/extensions/jcache.adoc
index 654e8b4360..dd9e205df1 100644
--- a/docs/modules/ROOT/pages/reference/extensions/jcache.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/jcache.adoc
@@ -4,17 +4,17 @@
= JCache
:linkattrs:
:cq-artifact-id: camel-quarkus-jcache
-:cq-native-supported: false
-:cq-status: Preview
-:cq-status-deprecation: Preview
+:cq-native-supported: true
+:cq-status: Stable
+:cq-status-deprecation: Stable
:cq-description: Perform caching operations against JSR107/JCache.
:cq-deprecated: false
:cq-jvm-since: 1.2.0
-:cq-native-since: n/a
+:cq-native-since: 2.13.0
ifeval::[{doc-show-badges} == true]
[.badges]
-[.badge-key]##JVM since##[.badge-supported]##1.2.0## [.badge-key]##Native##[.badge-unsupported]##unsupported##
+[.badge-key]##JVM since##[.badge-supported]##1.2.0## [.badge-key]##Native since##[.badge-supported]##2.13.0##
endif::[]
Perform caching operations against JSR107/JCache.
@@ -29,6 +29,10 @@ Please refer to the above link for usage and configuration details.
[id="extensions-jcache-maven-coordinates"]
== Maven coordinates
+https://{link-quarkus-code-generator}/?extension-search=camel-quarkus-jcache[Create a new project with this extension on {link-quarkus-code-generator}, window="_blank"]
+
+Or add the coordinates to your existing project:
+
[source,xml]
----
<dependency>
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index a611f06053..2817222987 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -79,7 +79,6 @@
<module>jasypt</module>
<module>java-joor-dsl</module>
<module>jbpm</module>
- <module>jcache</module>
<module>jclouds</module>
<module>jcr</module>
<module>jgroups</module>
diff --git a/extensions-jvm/jcache/deployment/pom.xml b/extensions/jcache/deployment/pom.xml
similarity index 100%
rename from extensions-jvm/jcache/deployment/pom.xml
rename to extensions/jcache/deployment/pom.xml
diff --git a/extensions-jvm/jcache/deployment/src/main/java/org/apache/camel/quarkus/component/jcache/deployment/JcacheProcessor.java b/extensions/jcache/deployment/src/main/java/org/apache/camel/quarkus/component/jcache/deployment/JcacheProcessor.java
similarity index 56%
rename from extensions-jvm/jcache/deployment/src/main/java/org/apache/camel/quarkus/component/jcache/deployment/JcacheProcessor.java
rename to extensions/jcache/deployment/src/main/java/org/apache/camel/quarkus/component/jcache/deployment/JcacheProcessor.java
index 275b66871d..17c5d3b042 100644
--- a/extensions-jvm/jcache/deployment/src/main/java/org/apache/camel/quarkus/component/jcache/deployment/JcacheProcessor.java
+++ b/extensions/jcache/deployment/src/main/java/org/apache/camel/quarkus/component/jcache/deployment/JcacheProcessor.java
@@ -16,12 +16,15 @@
*/
package org.apache.camel.quarkus.component.jcache.deployment;
+import java.io.IOException;
+import java.util.Set;
+import java.util.stream.Stream;
+
+import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.annotations.ExecutionTime;
-import io.quarkus.deployment.annotations.Record;
import io.quarkus.deployment.builditem.FeatureBuildItem;
-import io.quarkus.deployment.pkg.steps.NativeBuild;
-import org.apache.camel.quarkus.core.JvmOnlyRecorder;
+import io.quarkus.deployment.builditem.nativeimage.ServiceProviderBuildItem;
+import io.quarkus.deployment.util.ServiceUtil;
import org.jboss.logging.Logger;
class JcacheProcessor {
@@ -34,13 +37,19 @@ class JcacheProcessor {
return new FeatureBuildItem(FEATURE);
}
- /**
- * Remove this once this extension starts supporting the native mode.
- */
- @BuildStep(onlyIf = NativeBuild.class)
- @Record(value = ExecutionTime.RUNTIME_INIT)
- void warnJvmInNative(JvmOnlyRecorder recorder) {
- JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time
- recorder.warnJvmInNative(FEATURE); // warn at runtime
+ @BuildStep
+ void registerCachingProvider(BuildProducer<ServiceProviderBuildItem> services) {
+ Stream.of("javax.cache.spi.CachingProvider")
+ .forEach(service -> {
+ try {
+ Set<String> implementations = ServiceUtil.classNamesNamedIn(
+ Thread.currentThread().getContextClassLoader(),
+ "META-INF/services/" + service);
+ services.produce(
+ new ServiceProviderBuildItem(service, implementations));
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ });
}
}
diff --git a/extensions-jvm/jcache/pom.xml b/extensions/jcache/pom.xml
similarity index 96%
rename from extensions-jvm/jcache/pom.xml
rename to extensions/jcache/pom.xml
index 332cc6e09c..1b4ebbfd8a 100644
--- a/extensions-jvm/jcache/pom.xml
+++ b/extensions/jcache/pom.xml
@@ -21,7 +21,7 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-extensions-jvm</artifactId>
+ <artifactId>camel-quarkus-extensions</artifactId>
<version>2.13.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/extensions-jvm/jcache/runtime/pom.xml b/extensions/jcache/runtime/pom.xml
similarity index 98%
rename from extensions-jvm/jcache/runtime/pom.xml
rename to extensions/jcache/runtime/pom.xml
index f99f460640..c6acb54448 100644
--- a/extensions-jvm/jcache/runtime/pom.xml
+++ b/extensions/jcache/runtime/pom.xml
@@ -32,6 +32,7 @@
<properties>
<camel.quarkus.jvmSince>1.2.0</camel.quarkus.jvmSince>
+ <camel.quarkus.nativeSince>2.13.0</camel.quarkus.nativeSince>
</properties>
<dependencies>
diff --git a/extensions-jvm/jcache/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/jcache/runtime/src/main/resources/META-INF/quarkus-extension.yaml
similarity index 97%
rename from extensions-jvm/jcache/runtime/src/main/resources/META-INF/quarkus-extension.yaml
rename to extensions/jcache/runtime/src/main/resources/META-INF/quarkus-extension.yaml
index 108ffe4b7b..fba39c7a49 100644
--- a/extensions-jvm/jcache/runtime/src/main/resources/META-INF/quarkus-extension.yaml
+++ b/extensions/jcache/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -24,9 +24,8 @@
name: "Camel JCache"
description: "Perform caching operations against JSR107/JCache"
metadata:
- unlisted: true
guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/jcache.html"
categories:
- "integration"
status:
- - "preview"
+ - "stable"
diff --git a/extensions/pom.xml b/extensions/pom.xml
index d9ffe807f0..62b19a3a48 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -130,6 +130,7 @@
<module>jackson-protobuf</module>
<module>jacksonxml</module>
<module>jaxb</module>
+ <module>jcache</module>
<module>jdbc</module>
<module>jfr</module>
<module>jira</module>
diff --git a/integration-tests-jvm/pom.xml b/integration-tests-jvm/pom.xml
index c101f12e0d..c79c6453ed 100644
--- a/integration-tests-jvm/pom.xml
+++ b/integration-tests-jvm/pom.xml
@@ -77,7 +77,6 @@
<module>jasypt</module>
<module>java-joor-dsl</module>
<module>jbpm</module>
- <module>jcache</module>
<module>jclouds</module>
<module>jcr</module>
<module>jgroups</module>
diff --git a/integration-tests-jvm/jcache/pom.xml b/integration-tests/jcache/pom.xml
similarity index 62%
rename from integration-tests-jvm/jcache/pom.xml
rename to integration-tests/jcache/pom.xml
index d4c46e2b2a..9132e66a05 100644
--- a/integration-tests-jvm/jcache/pom.xml
+++ b/integration-tests/jcache/pom.xml
@@ -35,10 +35,23 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-jcache</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-direct</artifactId>
+ </dependency>
+
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
</dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-caffeine</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.github.ben-manes.caffeine</groupId>
+ <artifactId>jcache</artifactId>
+ </dependency>
<!-- test dependencies -->
<dependency>
@@ -63,6 +76,19 @@
</activation>
<dependencies>
<!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-direct-deployment</artifactId>
+ <version>${project.version}</version>
+ <type>pom</type>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>*</groupId>
+ <artifactId>*</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-jcache-deployment</artifactId>
@@ -78,6 +104,33 @@
</dependency>
</dependencies>
</profile>
+ <profile>
+ <id>native</id>
+ <activation>
+ <property>
+ <name>native</name>
+ </property>
+ </activation>
+ <properties>
+ <quarkus.package.type>native</quarkus.package.type>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
</profiles>
</project>
diff --git a/integration-tests-jvm/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java b/integration-tests/jcache/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheCaffeineReflectionConfiguration.java
similarity index 70%
copy from integration-tests-jvm/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java
copy to integration-tests/jcache/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheCaffeineReflectionConfiguration.java
index 1806724a1b..1e1c850790 100644
--- a/integration-tests-jvm/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java
+++ b/integration-tests/jcache/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheCaffeineReflectionConfiguration.java
@@ -16,19 +16,10 @@
*/
package org.apache.camel.quarkus.component.jcache.it;
-import io.quarkus.test.junit.QuarkusTest;
-import io.restassured.RestAssured;
-import org.junit.jupiter.api.Test;
-
-@QuarkusTest
-class JcacheTest {
-
- @Test
- public void loadComponentJcache() {
- /* A simple autogenerated test */
- RestAssured.get("/jcache/load/component/jcache")
- .then()
- .statusCode(200);
- }
+import io.quarkus.runtime.annotations.RegisterForReflection;
+@RegisterForReflection(classNames = {
+ "com.github.benmanes.caffeine.jcache.copy.JavaSerializationCopier"
+})
+public class JcacheCaffeineReflectionConfiguration {
}
diff --git a/integration-tests-jvm/jcache/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheResource.java b/integration-tests/jcache/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheResource.java
similarity index 67%
rename from integration-tests-jvm/jcache/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheResource.java
rename to integration-tests/jcache/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheResource.java
index f1b98c0fa4..2038594304 100644
--- a/integration-tests-jvm/jcache/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheResource.java
+++ b/integration-tests/jcache/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheResource.java
@@ -22,9 +22,8 @@ import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import org.apache.camel.CamelContext;
+import org.apache.camel.*;
import org.jboss.logging.Logger;
@Path("/jcache")
@@ -37,15 +36,26 @@ public class JcacheResource {
@Inject
CamelContext context;
- @Path("/load/component/jcache")
+ @Inject
+ ProducerTemplate producerTemplate;
+
+ @Path("/sayHello")
@GET
@Produces(MediaType.TEXT_PLAIN)
- public Response loadComponentJcache() throws Exception {
- /* This is an autogenerated test */
- if (context.getComponent(COMPONENT_JCACHE) != null) {
- return Response.ok().build();
- }
- LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_JCACHE);
- return Response.status(500, COMPONENT_JCACHE + " could not be loaded from the Camel context").build();
+ public String sayHello() throws Exception {
+ Exchange exchange = producerTemplate.request("direct:getCachedValue", new Processor() {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ exchange.getMessage().setHeader("Cache-Key", "123");
+ }
+ });
+
+ String body = exchange.getMessage().getBody(String.class);
+ String inCacheProperty = exchange.getProperty("In-Cache", String.class);
+
+ String response = body + " : " + inCacheProperty;
+
+ return response;
}
+
}
diff --git a/integration-tests/jcache/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheRoutes.java b/integration-tests/jcache/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheRoutes.java
new file mode 100644
index 0000000000..f03baac069
--- /dev/null
+++ b/integration-tests/jcache/src/main/java/org/apache/camel/quarkus/component/jcache/it/JcacheRoutes.java
@@ -0,0 +1,66 @@
+/*
+ * 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.component.jcache.it;
+
+import java.util.concurrent.TimeUnit;
+
+import javax.cache.Cache;
+import javax.cache.CacheManager;
+import javax.cache.Caching;
+import javax.cache.configuration.MutableConfiguration;
+import javax.cache.expiry.CreatedExpiryPolicy;
+import javax.cache.expiry.Duration;
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Produces;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.jcache.policy.JCachePolicy;
+
+@ApplicationScoped
+public class JcacheRoutes extends RouteBuilder {
+ @Inject
+ @Named("jcachePolicy")
+ JCachePolicy jcachePolicy;
+
+ @Override
+ public void configure() throws Exception {
+ from("direct:getCachedValue")
+ .setProperty("In-Cache", constant("Cached Response"))
+ .policy(jcachePolicy)
+ .setBody(constant("Hello World"))
+ .setProperty("In-Cache", constant("Non-Cached Response"))
+ .end();
+ }
+
+ @Produces
+ @ApplicationScoped
+ @Named
+ public JCachePolicy jcachePolicy() {
+ MutableConfiguration configuration = new MutableConfiguration<>();
+ configuration.setTypes(String.class, Object.class);
+ configuration.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.SECONDS, 3)));
+ CacheManager cacheManager = Caching.getCachingProvider().getCacheManager();
+ Cache cache = cacheManager.createCache("MyJCache", configuration);
+
+ JCachePolicy jcachePolicy = new JCachePolicy();
+ jcachePolicy.setCache(cache);
+ jcachePolicy.setKeyExpression(simple("${header.Cache-Key}"));
+ return jcachePolicy;
+ }
+}
diff --git a/integration-tests/jcache/src/main/resources/application.properties b/integration-tests/jcache/src/main/resources/application.properties
new file mode 100644
index 0000000000..c00c114854
--- /dev/null
+++ b/integration-tests/jcache/src/main/resources/application.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.
+## ---------------------------------------------------------------------------
+quarkus.native.resources.includes=reference.conf
\ No newline at end of file
diff --git a/integration-tests-jvm/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java b/integration-tests/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheIT.java
similarity index 70%
copy from integration-tests-jvm/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java
copy to integration-tests/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheIT.java
index 1806724a1b..e7710e35b3 100644
--- a/integration-tests-jvm/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java
+++ b/integration-tests/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheIT.java
@@ -16,19 +16,9 @@
*/
package org.apache.camel.quarkus.component.jcache.it;
-import io.quarkus.test.junit.QuarkusTest;
-import io.restassured.RestAssured;
-import org.junit.jupiter.api.Test;
+import io.quarkus.test.junit.QuarkusIntegrationTest;
-@QuarkusTest
-class JcacheTest {
-
- @Test
- public void loadComponentJcache() {
- /* A simple autogenerated test */
- RestAssured.get("/jcache/load/component/jcache")
- .then()
- .statusCode(200);
- }
+@QuarkusIntegrationTest
+class JcacheIT extends JcacheTest {
}
diff --git a/integration-tests-jvm/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java b/integration-tests/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java
similarity index 60%
rename from integration-tests-jvm/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java
rename to integration-tests/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java
index 1806724a1b..5bc1518d5b 100644
--- a/integration-tests-jvm/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java
+++ b/integration-tests/jcache/src/test/java/org/apache/camel/quarkus/component/jcache/it/JcacheTest.java
@@ -20,15 +20,32 @@ import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;
+import static org.hamcrest.Matchers.is;
+
@QuarkusTest
class JcacheTest {
@Test
- public void loadComponentJcache() {
- /* A simple autogenerated test */
- RestAssured.get("/jcache/load/component/jcache")
+ public void testCache() {
+ RestAssured.get("/jcache/sayHello")
.then()
- .statusCode(200);
- }
+ .statusCode(200)
+ .body(is("Hello World : Non-Cached Response"));
+
+ RestAssured.get("/jcache/sayHello")
+ .then()
+ .statusCode(200)
+ .body(is("Hello World : Cached Response"));
+ //Wait till Cache expires
+ try {
+ Thread.sleep(4000);
+ } catch (InterruptedException e) {
+ }
+
+ RestAssured.get("/jcache/sayHello")
+ .then()
+ .statusCode(200)
+ .body(is("Hello World : Non-Cached Response"));
+ }
}
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index fd8a2ad83a..99ff783113 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -114,6 +114,7 @@
<module>jackson-avro</module>
<module>jackson-protobuf</module>
<module>jaxb</module>
+ <module>jcache</module>
<module>jdbc</module>
<module>jfr</module>
<module>jira</module>
diff --git a/pom.xml b/pom.xml
index c6244b9eed..813bc8d5bc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -76,6 +76,7 @@
<azure-core-test.version>1.7.9</azure-core-test.version>
<cassandra-driver-test.version>3.7.1</cassandra-driver-test.version><!-- Keep in sync with testcontainers instead of Debezium bom -->
<bouncycastle.version>1.70</bouncycastle.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.bouncycastle:bcprov-jdk15on -->
+ <caffeine.version>2.9.3</caffeine.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:com.github.ben-manes.caffeine:caffeine -->
<commons-beanutils.version>${commons-beanutils-version}</commons-beanutils.version>
<commons-cli.version>1.4</commons-cli.version><!-- keep in sync with Quarkus, via quarkus-bootstrap-core -->
<commons-collections.version>3.2.2</commons-collections.version><!-- used by hbase, should be pretty stable as commons-collections are not developed actively anymore -->
diff --git a/poms/bom-test/pom.xml b/poms/bom-test/pom.xml
index 17bf9f89b3..34bec65b1a 100644
--- a/poms/bom-test/pom.xml
+++ b/poms/bom-test/pom.xml
@@ -359,6 +359,17 @@
<version>${greenmail.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.github.ben-manes.caffeine</groupId>
+ <artifactId>jcache</artifactId>
+ <version>${caffeine.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
</dependencies>
</dependencyManagement>
diff --git a/tooling/scripts/test-categories.yaml b/tooling/scripts/test-categories.yaml
index 5ed3e6cf87..b1b5e9f660 100644
--- a/tooling/scripts/test-categories.yaml
+++ b/tooling/scripts/test-categories.yaml
@@ -24,6 +24,7 @@ group-01:
- hazelcast
- http
- infinispan
+ - jcache
- jms-artemis-client
- jsch
- kafka