Skip to content

Commit 685377f

Browse files
committed
[#48] Support Hibernate Search queries
1 parent bf38eb5 commit 685377f

File tree

23 files changed

+509
-15
lines changed

23 files changed

+509
-15
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
:project-version: 1.1.0
2-
:infinispan-version: 15.0.15.Final
2+
:infinispan-version: 15.0.19.Final
33
:examples-dir: ./../examples/

docs/modules/ROOT/pages/index.adoc

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ The new *Infinispan Embedded Quarkus extension* simplifies using Infinispan as a
1010
1111
This extension is ideal for developers who want to build high-speed, lightweight applications without the overhead of managing external data services.
1212

13+
[IMPORTANT]
14+
====
15+
Native support in this extension is limited and not recommended.
16+
For native applications, consider using Infinispan in Client/Server mode.
17+
====
1318

1419
== Quick Overview
1520

@@ -113,6 +118,22 @@ as the media type, ensuring compatibility with remote marshalling.
113118
This approach simplifies development by reducing boilerplate, while still supporting
114119
custom XML-based configurations when needed.
115120

121+
== Embedded Query
122+
The Hibernate Search version must match the Infinispan version.
123+
If necessary, import the Hibernate Search BOM to override the
124+
Quarkus-provided version.
125+
126+
[source,xml]
127+
----
128+
<dependency>
129+
<groupId>org.hibernate.search</groupId>
130+
<artifactId>hibernate-search-bom</artifactId>
131+
<version>7.1.2.Final</version>
132+
<type>pom</type>
133+
<scope>import</scope>
134+
</dependency>
135+
----
136+
116137
== Configuration Settings
117138

118139
include::includes/quarkus-infinispan-embedded.adoc[leveloffset=+1,opts=optional]

extension/deployment/src/main/java/io/quarkiverse/infinispan/embedded/deployment/InfinispanEmbeddedProcessor.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.infinispan.protostream.GeneratedSchema;
3939
import org.infinispan.protostream.MessageMarshaller;
4040
import org.infinispan.protostream.SerializationContextInitializer;
41+
import org.infinispan.protostream.WrappedMessage;
4142
import org.infinispan.protostream.schema.Schema;
4243
import org.jboss.jandex.AnnotationInstance;
4344
import org.jboss.jandex.AnnotationTarget;
@@ -92,6 +93,8 @@ void addInfinispanDependencies(BuildProducer<IndexDependencyBuildItem> indexDepe
9293
indexDependency.produce(new IndexDependencyBuildItem("org.infinispan", "infinispan-cachestore-jdbc-common"));
9394
indexDependency.produce(new IndexDependencyBuildItem("org.infinispan", "infinispan-cachestore-jdbc"));
9495
indexDependency.produce(new IndexDependencyBuildItem("org.infinispan", "infinispan-cachestore-sql"));
96+
indexDependency.produce(new IndexDependencyBuildItem("org.infinispan", "infinispan-query"));
97+
indexDependency.produce(new IndexDependencyBuildItem("org.infinispan", "infinispan-query-core"));
9598
}
9699

97100
@BuildStep
@@ -104,6 +107,11 @@ ProtobufInitializers setup(BuildProducer<ReflectiveClassBuildItem> reflectiveCla
104107
additionalBeans.produce(AdditionalBeanBuildItem.unremovableOf(InfinispanEmbeddedProducer.class));
105108
additionalBeans.produce(AdditionalBeanBuildItem.builder().addBeanClass(Embedded.class).build());
106109

110+
resources.produce(new NativeImageResourceBuildItem("proto/generated/persistence.query.core.proto"));
111+
resources.produce(new NativeImageResourceBuildItem("proto/generated/persistence.query.proto"));
112+
resources.produce(new NativeImageResourceBuildItem("proto/generated/persistence.jdbc.proto"));
113+
resources.produce(new NativeImageResourceBuildItem(WrappedMessage.PROTO_FILE));
114+
107115
for (Class<?> serviceLoadedInterface : Arrays.asList(ModuleMetadataBuilder.class, ConfigurationParser.class)) {
108116
// Need to register all the modules as service providers so they can be picked up at runtime
109117
ServiceLoader<?> serviceLoader = ServiceLoader.load(serviceLoadedInterface);
@@ -193,9 +201,6 @@ ProtobufInitializers setup(BuildProducer<ReflectiveClassBuildItem> reflectiveCla
193201
addReflectionForName("org.infinispan.persistence.keymappers.Key2StringMapper", true, combinedIndex, reflectiveClass,
194202
false, false, excludedClasses);
195203

196-
resources.produce(new NativeImageResourceBuildItem(
197-
"proto/generated/persistence.jdbc.proto"));
198-
199204
// Ensure that optional store implementations not included in core-graalvm are still detected
200205
addReflectionForClass(StoreConfigurationBuilder.class, combinedIndex, reflectiveClass, excludedClasses);
201206
addReflectionForClass(StoreConfiguration.class, combinedIndex, reflectiveClass, true, excludedClasses);

extension/runtime/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,16 @@
6666
</exclusion>
6767
</exclusions>
6868
</dependency>
69+
70+
<dependency>
71+
<groupId>org.infinispan</groupId>
72+
<artifactId>infinispan-api</artifactId>
73+
</dependency>
74+
<dependency>
75+
<groupId>org.infinispan</groupId>
76+
<artifactId>infinispan-query</artifactId>
77+
</dependency>
78+
6979
<dependency>
7080
<groupId>org.infinispan.protostream</groupId>
7181
<artifactId>protostream-types</artifactId>

pom.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
<infinispan.version>15.0.19.Final</infinispan.version>
2727
<jgroups.raft.version>1.0.14.Final</jgroups.raft.version>
2828
<assertj.version>3.26.3</assertj.version>
29+
<hibernate-search.version>7.1.2.Final</hibernate-search.version>
2930
</properties>
3031
<licenses>
3132
<license>
@@ -43,6 +44,13 @@
4344
<type>pom</type>
4445
<scope>import</scope>
4546
</dependency>
47+
<dependency>
48+
<groupId>org.hibernate.search</groupId>
49+
<artifactId>hibernate-search-bom</artifactId>
50+
<version>${hibernate-search.version}</version>
51+
<type>pom</type>
52+
<scope>import</scope>
53+
</dependency>
4654
<dependency>
4755
<groupId>io.quarkus</groupId>
4856
<artifactId>quarkus-bom</artifactId>
@@ -119,6 +127,7 @@
119127
<module>samples/sample</module>
120128
<module>samples/cache-sample</module>
121129
<module>samples/persisted-cache-sample</module>
130+
<module>samples/query-sample</module>
122131
</modules>
123132
</profile>
124133
<profile>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.quarkiverse.infinispan.embedded.cache.sample;
1+
package io.quarkiverse.infinispan.embedded.persistence.sample;
22

33
import org.infinispan.protostream.GeneratedSchema;
44
import org.infinispan.protostream.annotations.Proto;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.quarkiverse.infinispan.embedded.cache.sample;
1+
package io.quarkiverse.infinispan.embedded.persistence.sample;
22

33
import jakarta.inject.Inject;
44
import jakarta.ws.rs.DELETE;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.quarkiverse.infinispan.embedded.cache.sample;
1+
package io.quarkiverse.infinispan.embedded.persistence.sample;
22

33
import static java.util.Objects.requireNonNull;
44

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.quarkiverse.infinispan.embedded.cache.sample;
1+
package io.quarkiverse.infinispan.embedded.persistence.sample;
22

33
import io.quarkus.test.junit.QuarkusIntegrationTest;
44

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.quarkiverse.infinispan.embedded.cache.sample;
1+
package io.quarkiverse.infinispan.embedded.persistence.sample;
22

33
import static io.restassured.RestAssured.given;
44
import static org.assertj.core.api.Assertions.assertThat;

0 commit comments

Comments
 (0)