Skip to content

Commit 775304e

Browse files
committed
Example with protostream marshalling fixed
1 parent 9592eab commit 775304e

File tree

7 files changed

+84
-2
lines changed

7 files changed

+84
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
:project-version: 1.0.0
2-
:infinispan-version: 15.0.8.Final
2+
:infinispan-version: 15.0.11.Final
33
:examples-dir: ./../examples/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.infinispan.quarkus.embedded;
2+
3+
import org.infinispan.protostream.GeneratedSchema;
4+
import org.infinispan.protostream.annotations.Proto;
5+
import org.infinispan.protostream.annotations.ProtoSchema;
6+
7+
@Proto
8+
public record Book(String name, String author) {
9+
10+
@ProtoSchema(includeClasses = Book.class, schemaPackageName = "it.quarkus")
11+
public interface BookSchema extends GeneratedSchema {
12+
13+
}
14+
}

integration-tests/src/main/java/org/infinispan/quarkus/embedded/TestServlet.java

+29
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.infinispan.quarkus.embedded;
22

3+
import static org.infinispan.commons.dataconversion.MediaType.APPLICATION_PROTOSTREAM;
4+
35
import java.io.IOException;
46
import java.nio.charset.StandardCharsets;
57
import java.util.ArrayList;
@@ -10,13 +12,15 @@
1012
import jakarta.inject.Inject;
1113
import jakarta.transaction.Transactional;
1214
import jakarta.ws.rs.GET;
15+
import jakarta.ws.rs.POST;
1316
import jakarta.ws.rs.Path;
1417
import jakarta.ws.rs.PathParam;
1518
import jakarta.ws.rs.Produces;
1619
import jakarta.ws.rs.QueryParam;
1720
import jakarta.ws.rs.core.MediaType;
1821

1922
import org.infinispan.Cache;
23+
import org.infinispan.commons.api.CacheContainerAdmin;
2024
import org.infinispan.configuration.cache.CacheMode;
2125
import org.infinispan.configuration.cache.ConfigurationBuilder;
2226
import org.infinispan.manager.DefaultCacheManager;
@@ -117,4 +121,29 @@ public String simpleCluster() throws IOException {
117121
}
118122
return "Success";
119123
}
124+
125+
@Path("PROTO/GET/books/{id}")
126+
@GET
127+
@Produces(MediaType.APPLICATION_JSON)
128+
public Book get(@PathParam("id") String id) {
129+
Cache<String, Book> books = emc.administration()
130+
.withFlags(CacheContainerAdmin.AdminFlag.VOLATILE)
131+
.getOrCreateCache("books", new ConfigurationBuilder()
132+
.encoding().mediaType(APPLICATION_PROTOSTREAM)
133+
.build());
134+
return books.get(id);
135+
}
136+
137+
@Path("PROTO/POST/books/{id}")
138+
@POST
139+
@Produces(MediaType.TEXT_PLAIN)
140+
public String create(@PathParam("id") String id, Book book) {
141+
Cache<String, Book> books = emc.administration()
142+
.withFlags(CacheContainerAdmin.AdminFlag.VOLATILE)
143+
.getOrCreateCache("books", new ConfigurationBuilder()
144+
.encoding().mediaType(APPLICATION_PROTOSTREAM)
145+
.build());
146+
books.put(id, book);
147+
return id;
148+
}
120149
}

integration-tests/src/test/java/org/infinispan/quarkus/embedded/InfinispanEmbeddedFunctionalityTest.java

+24
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.infinispan.quarkus.embedded;
22

3+
import static io.restassured.RestAssured.given;
34
import static io.restassured.RestAssured.when;
45
import static org.hamcrest.Matchers.is;
56

@@ -9,12 +10,14 @@
910
import java.nio.file.Paths;
1011
import java.util.stream.Stream;
1112

13+
import org.hamcrest.CoreMatchers;
1214
import org.infinispan.commons.util.Util;
1315
import org.junit.jupiter.api.AfterAll;
1416
import org.junit.jupiter.api.Test;
1517

1618
import io.quarkus.logging.Log;
1719
import io.quarkus.test.junit.QuarkusTest;
20+
import io.restassured.http.ContentType;
1821

1922
/**
2023
* @author William Burns
@@ -101,4 +104,25 @@ public void testSimpleCluster() {
101104
Log.info("Running cluster test");
102105
when().get("/test/CLUSTER").then().body(is("Success"));
103106
}
107+
108+
@Test
109+
public void testProtostreamCache() {
110+
Log.info("Protostream marshalling class");
111+
given()
112+
.contentType(ContentType.JSON)
113+
.body("{\"name\":\"Infinispan Book\",\"author\":\"Jack Nicholson\"}")
114+
.when()
115+
.post("/test/PROTO/POST/books/123")
116+
.then()
117+
.statusCode(200)
118+
.body(CoreMatchers.is("123"));
119+
120+
given()
121+
.when().get("/test/PROTO/GET/books/123")
122+
.then()
123+
.statusCode(200)
124+
.body(CoreMatchers.is(
125+
"{\"name\":\"Infinispan Book\",\"author\":\"Jack Nicholson\"}"));
126+
127+
}
104128
}

pom.xml

-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@
106106
<module>docs</module>
107107
</modules>
108108
</profile>
109-
110109
<profile>
111110
<id>it</id>
112111
<activation>
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
package io.quarkiverse.infinispan.embedded.sample;
22

3+
import org.infinispan.protostream.GeneratedSchema;
4+
import org.infinispan.protostream.annotations.Proto;
5+
import org.infinispan.protostream.annotations.ProtoSchema;
6+
7+
@Proto
38
public record Greeting(String name, String message) {
9+
@ProtoSchema(includeClasses = { Greeting.class }, schemaPackageName = "io.quarkiverse.infinispan")
10+
public interface GameSchema extends GeneratedSchema {
11+
}
412
}

sample/src/main/java/io/quarkiverse/infinispan/embedded/sample/InfinispanGreetingResource.java

+8
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99

1010
import org.infinispan.Cache;
1111
import org.infinispan.commons.api.CacheContainerAdmin;
12+
import org.infinispan.commons.dataconversion.MediaType;
1213
import org.infinispan.configuration.cache.CacheMode;
1314
import org.infinispan.configuration.cache.Configuration;
1415
import org.infinispan.configuration.cache.ConfigurationBuilder;
16+
import org.infinispan.health.ClusterHealth;
1517
import org.infinispan.manager.EmbeddedCacheManager;
1618

1719
import io.quarkus.logging.Log;
@@ -28,13 +30,19 @@ public class InfinispanGreetingResource {
2830
@Startup
2931
void init() {
3032
Configuration config = new ConfigurationBuilder()
33+
.encoding().mediaType(MediaType.APPLICATION_PROTOSTREAM)
3134
.clustering().cacheMode(CacheMode.DIST_ASYNC).build();
3235
Log.info("Create mycache with config " + config);
3336
cacheManager.administration()
3437
.withFlags(CacheContainerAdmin.AdminFlag.VOLATILE)
3538
.getOrCreateCache(CACHE_NAME, config);
3639
}
3740

41+
@GET
42+
public ClusterHealth clusterHealth() {
43+
return cacheManager.getHealth().getClusterHealth();
44+
}
45+
3846
@POST
3947
@Path("/{id}")
4048
public CompletionStage<String> postGreeting(String id, Greeting greeting) {

0 commit comments

Comments
 (0)