Index: server/tests/pom.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/server/tests/pom.xml b/server/tests/pom.xml
--- a/server/tests/pom.xml (revision e453ed4c95a0f7349e7616f54c6d3b6587fee4ab)
+++ b/server/tests/pom.xml (revision c4dc69b29774e72b3eeb2b6b9c8b251364c17047)
@@ -52,6 +52,11 @@
test
+ org.infinispan.protostream
+ protostream-processor
+ test
+
+
org.infinispan
infinispan-server-rest
test-jar
Index: server/tests/src/test/java/org/infinispan/server/functional/protobuf/Person.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/server/tests/src/test/java/org/infinispan/server/functional/protobuf/Person.java b/server/tests/src/test/java/org/infinispan/server/functional/protobuf/Person.java
new file mode 100644
--- /dev/null (revision c4dc69b29774e72b3eeb2b6b9c8b251364c17047)
+++ b/server/tests/src/test/java/org/infinispan/server/functional/protobuf/Person.java (revision c4dc69b29774e72b3eeb2b6b9c8b251364c17047)
@@ -0,0 +1,41 @@
+package org.infinispan.server.functional.protobuf;
+
+import org.infinispan.protostream.annotations.ProtoFactory;
+import org.infinispan.protostream.annotations.ProtoField;
+
+/**
+ * This class is annotated with the infinispan Protostream support annotations.
+ * With this method, you don't need to define a protobuf file and a marshaller for the object.
+ */
+public final class Person {
+
+ @ProtoField(number = 1)
+ String firstName;
+
+ @ProtoField(number = 2)
+ String lastName;
+
+ @ProtoField(number = 3, defaultValue = "-1")
+ int bornYear;
+
+ @ProtoField(number = 4)
+ String bornIn;
+
+ @ProtoFactory
+ public Person(String firstName, String lastName, int bornYear, String bornIn) {
+ this.firstName = firstName;
+ this.lastName = lastName;
+ this.bornYear = bornYear;
+ this.bornIn = bornIn;
+ }
+
+ @Override
+ public String toString() {
+ return "Person{" +
+ "firstName='" + firstName + '\'' +
+ ", lastName='" + lastName + '\'' +
+ ", bornYear='" + bornYear + '\'' +
+ ", bornIn='" + bornIn + '\'' +
+ '}';
+ }
+}
Index: server/tests/src/test/java/org/infinispan/server/functional/protobuf/ProtobufHotRodRestEntityIT.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/server/tests/src/test/java/org/infinispan/server/functional/protobuf/ProtobufHotRodRestEntityIT.java b/server/tests/src/test/java/org/infinispan/server/functional/protobuf/ProtobufHotRodRestEntityIT.java
new file mode 100644
--- /dev/null (revision c4dc69b29774e72b3eeb2b6b9c8b251364c17047)
+++ b/server/tests/src/test/java/org/infinispan/server/functional/protobuf/ProtobufHotRodRestEntityIT.java (revision c4dc69b29774e72b3eeb2b6b9c8b251364c17047)
@@ -0,0 +1,99 @@
+package org.infinispan.server.functional.protobuf;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
+import static org.infinispan.query.remote.client.ProtobufMetadataManagerConstants.PROTOBUF_METADATA_CACHE_NAME;
+import static org.infinispan.server.test.core.Common.sync;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.infinispan.client.hotrod.RemoteCache;
+import org.infinispan.client.hotrod.RemoteCacheManager;
+import org.infinispan.client.hotrod.Search;
+import org.infinispan.client.hotrod.configuration.ConfigurationBuilder;
+import org.infinispan.client.rest.RestClient;
+import org.infinispan.client.rest.RestResponse;
+import org.infinispan.commons.dataconversion.internal.Json;
+import org.infinispan.protostream.GeneratedSchema;
+import org.infinispan.query.dsl.Query;
+import org.infinispan.query.dsl.QueryFactory;
+import org.infinispan.server.test.core.ServerRunMode;
+import org.infinispan.server.test.junit4.InfinispanServerRule;
+import org.infinispan.server.test.junit4.InfinispanServerRuleBuilder;
+import org.infinispan.server.test.junit4.InfinispanServerTestMethodRule;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+
+public class ProtobufHotRodRestEntityIT {
+
+ private static final String CACHE_NAME = "test";
+
+ private static final String CACHE_CONFIG =
+ "\n"
+ + " \n"
+ + "";
+
+ @ClassRule
+ public static InfinispanServerRule SERVERS = InfinispanServerRuleBuilder.config("configuration/BasicServerTest.xml")
+ .runMode(ServerRunMode.FORKED)
+ .numServers(1)
+ .build();
+
+ @Rule
+ public InfinispanServerTestMethodRule SERVER_TEST = new InfinispanServerTestMethodRule(SERVERS);
+
+ @Test
+ public void test() {
+ RemoteCacheManager hotRodClient = getHotRodClient();
+ try {
+ testQueries(hotRodClient);
+ } finally {
+ hotRodClient.stop();
+ }
+
+ RestClient restClient = SERVER_TEST.rest().create();
+ RestResponse response = sync(restClient.cache(CACHE_NAME).entries(1000));
+
+ if (response.getStatus() != 200) {
+ fail(response.getBody());
+ }
+
+ Collection> entities = (Collection>) Json.read(response.getBody()).getValue();
+ assertThat(entities).hasSize(4);
+ }
+
+ private static void testQueries(RemoteCacheManager client) {
+ RemoteCache peopleCache = client.getCache(CACHE_NAME);
+
+ Map people = new HashMap<>();
+ people.put("1", new Person("Oihana", "Rossignol", 2016, "Paris"));
+ people.put("2", new Person("Elaia", "Rossignol", 2018, "Paris"));
+ people.put("3", new Person("Yago", "Steiner", 2013, "Saint-Mandé"));
+ people.put("4", new Person("Alberto", "Steiner", 2016, "Paris"));
+ peopleCache.putAll(people);
+
+ QueryFactory queryFactory = Search.getQueryFactory(peopleCache);
+ Query query = queryFactory.create("FROM tutorial.Person p where p.lastName = :lastName");
+ query.setParameter("lastName", "Rossignol");
+ List rossignols = query.execute().list();
+ assertThat(rossignols).extracting("firstName").containsExactlyInAnyOrder("Oihana", "Elaia");
+ }
+
+ private static RemoteCacheManager getHotRodClient() {
+ GeneratedSchema schema = new QuerySchemaBuilderImpl();
+
+ ConfigurationBuilder builder = new ConfigurationBuilder();
+ builder.remoteCache(CACHE_NAME).configuration(CACHE_CONFIG.replace("CACHE_NAME", CACHE_NAME));
+
+ builder.addContextInitializer(schema);
+ RemoteCacheManager client = new RemoteCacheManager(builder.build());
+
+ RemoteCache metadataCache = client.getCache(PROTOBUF_METADATA_CACHE_NAME);
+ metadataCache.put(schema.getProtoFileName(), schema.getProtoFile());
+ return client;
+ }
+}
Index: server/tests/src/test/java/org/infinispan/server/functional/protobuf/QuerySchemaBuilder.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/server/tests/src/test/java/org/infinispan/server/functional/protobuf/QuerySchemaBuilder.java b/server/tests/src/test/java/org/infinispan/server/functional/protobuf/QuerySchemaBuilder.java
new file mode 100644
--- /dev/null (revision c4dc69b29774e72b3eeb2b6b9c8b251364c17047)
+++ b/server/tests/src/test/java/org/infinispan/server/functional/protobuf/QuerySchemaBuilder.java (revision c4dc69b29774e72b3eeb2b6b9c8b251364c17047)
@@ -0,0 +1,8 @@
+package org.infinispan.server.functional.protobuf;
+
+import org.infinispan.protostream.GeneratedSchema;
+import org.infinispan.protostream.annotations.AutoProtoSchemaBuilder;
+
+@AutoProtoSchemaBuilder(schemaPackageName = "tutorial", includeClasses = Person.class)
+public interface QuerySchemaBuilder extends GeneratedSchema {
+}
Index: server/tests/src/test/resources/configuration/BasicServerTest.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/server/tests/src/test/resources/configuration/BasicServerTest.xml b/server/tests/src/test/resources/configuration/BasicServerTest.xml
new file mode 100644
--- /dev/null (revision c4dc69b29774e72b3eeb2b6b9c8b251364c17047)
+++ b/server/tests/src/test/resources/configuration/BasicServerTest.xml (revision c4dc69b29774e72b3eeb2b6b9c8b251364c17047)
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: server/tests/src/test/resources/configuration/jgroups/none.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/server/tests/src/test/resources/configuration/jgroups/none.xml b/server/tests/src/test/resources/configuration/jgroups/none.xml
new file mode 100644
--- /dev/null (revision c4dc69b29774e72b3eeb2b6b9c8b251364c17047)
+++ b/server/tests/src/test/resources/configuration/jgroups/none.xml (revision c4dc69b29774e72b3eeb2b6b9c8b251364c17047)
@@ -0,0 +1,4 @@
+
+