diff --git a/jnosql-tinkerpop/pom.xml b/jnosql-tinkerpop/pom.xml
index d9128c0aa..fac780ba8 100644
--- a/jnosql-tinkerpop/pom.xml
+++ b/jnosql-tinkerpop/pom.xml
@@ -64,11 +64,48 @@
neo4j-tinkerpop-api-impl
${neo4j.connector.version}
test
+
+
+ org.slf4j
+ slf4j-nop
+
+
+
+
+ org.apache.tinkerpop
+ tinkergraph-gremlin
+ ${tinkerpop.version}
+ test
+
+
+ com.arangodb
+ arangodb-tinkerpop-provider
+ 3.2.1
+ test
+
+
+ org.slf4j
+ slf4j-simple
+ 1.7.25
+ test
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+
+
+
+
+
org.antlr
antlr4-maven-plugin
diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/CommunicationEntityConverter.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/CommunicationEntityConverter.java
index 0396463db..d5e22b3c3 100644
--- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/CommunicationEntityConverter.java
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/CommunicationEntityConverter.java
@@ -19,15 +19,16 @@
import java.util.function.Function;
-public enum CommunicationEntityConverter implements Function{
- INSTANCE;
+import static org.eclipse.jnosql.databases.tinkerpop.communication.TinkerpopGraphDatabaseManager.ID;
+public enum CommunicationEntityConverter implements Function {
+ INSTANCE;
@Override
public CommunicationEntity apply(Vertex vertex) {
var entity = CommunicationEntity.of(vertex.label());
vertex.properties().forEachRemaining(p -> entity.add(p.key(), p.value()));
- entity.add(DefaultTinkerpopGraphDatabaseManager.ID_PROPERTY, vertex.id());
+ entity.add(ID, vertex.id());
return entity;
}
}
diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManager.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManager.java
index 9a309e664..ceb6a828c 100644
--- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManager.java
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManager.java
@@ -19,12 +19,14 @@
import org.apache.tinkerpop.gremlin.structure.Direction;
import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.eclipse.jnosql.communication.CommunicationException;
import org.eclipse.jnosql.communication.ValueUtil;
import org.eclipse.jnosql.communication.graph.CommunicationEdge;
import org.eclipse.jnosql.communication.semistructured.CommunicationEntity;
import org.eclipse.jnosql.communication.semistructured.DeleteQuery;
+import org.eclipse.jnosql.communication.semistructured.Element;
import org.eclipse.jnosql.communication.semistructured.SelectQuery;
import java.time.Duration;
@@ -52,7 +54,6 @@
*/
public class DefaultTinkerpopGraphDatabaseManager implements TinkerpopGraphDatabaseManager {
- public static final String ID_PROPERTY = "_id";
private final Graph graph;
DefaultTinkerpopGraphDatabaseManager(Graph graph) {
@@ -71,13 +72,8 @@ public String name() {
@Override
public CommunicationEntity insert(CommunicationEntity entity) {
-
Objects.requireNonNull(entity, "entity is required");
- Vertex vertex = graph.addVertex(entity.name());
- entity.elements().forEach(e -> vertex.property(e.name(), ValueUtil.convert(e.value())));
- entity.add(ID_PROPERTY, vertex.id());
- vertex.property(ID_PROPERTY, vertex.id());
- GraphTransactionUtil.transaction(graph);
+ addVertex(entity);
return entity;
}
@@ -101,14 +97,16 @@ public Iterable insert(Iterable iterab
@Override
public CommunicationEntity update(CommunicationEntity entity) {
Objects.requireNonNull(entity, "entity is required");
- entity.find(ID_PROPERTY).ifPresent(id -> {
- Iterator vertices = graph.vertices(id.get());
- if(!vertices.hasNext()) {
- throw new EmptyResultException("The entity does not exist with the id: " + id);
- }
- Vertex vertex = vertices.next();
- entity.elements().forEach(e -> vertex.property(e.name(), ValueUtil.convert(e.value())));
- });
+ Object id = entity.find(ID).map(Element::get)
+ .orElseThrow(() -> new IllegalArgumentException("Entity must have an ID"));
+ Iterator vertices = graph.vertices(id);
+ if (!vertices.hasNext()) {
+ throw new EmptyResultException("The entity does not exist with the id: " + id);
+ }
+ Vertex vertex = vertices.next();
+ entity.elements().stream()
+ .filter(it -> !ID.equals(it.name()))
+ .forEach(e -> vertex.property(e.name(), ValueUtil.convert(e.value())));
GraphTransactionUtil.transaction(graph);
return entity;
}
@@ -198,11 +196,11 @@ public void remove(CommunicationEntity source, String label, CommunicationEntity
Objects.requireNonNull(target, "target is required");
Objects.requireNonNull(label, "label is required");
- Vertex sourceVertex = findVertexById(source.find(ID_PROPERTY)
+ Vertex sourceVertex = findVertexById(source.find(ID)
.orElseThrow(() -> new CommunicationException("Source entity must have an ID")).get())
.orElseThrow(() -> new EmptyResultException("Source entity not found"));
- Vertex targetVertex = findVertexById(target.find(ID_PROPERTY)
+ Vertex targetVertex = findVertexById(target.find(ID)
.orElseThrow(() -> new CommunicationException("Target entity must have an ID")).get())
.orElseThrow(() -> new EmptyResultException("Target entity not found"));
@@ -241,10 +239,10 @@ public Optional findEdgeById(K id) {
var edge = traversal.next();
var source = CommunicationEntity.of(edge.outVertex().label());
- source.add(ID_PROPERTY, edge.outVertex().id());
+ source.add(ID, edge.outVertex().id());
var target = CommunicationEntity.of(edge.inVertex().label());
- target.add(ID_PROPERTY, edge.inVertex().id());
+ target.add(ID, edge.inVertex().id());
Map properties = new HashMap<>();
edge.properties().forEachRemaining(p -> properties.put(p.key(), p.value()));
@@ -252,16 +250,23 @@ public Optional findEdgeById(K id) {
return Optional.of(new TinkerpopCommunicationEdge(id, source, target, edge.label(), properties));
}
+ private Vertex addVertex(CommunicationEntity entity) {
+ Object[] args = Stream.concat(
+ Stream.of(T.label, entity.name()),
+ entity.elements().stream().flatMap(it -> ID.equals(it.name()) ?
+ Stream.of(T.id, it.get()) :
+ Stream.of(it.name(), ValueUtil.convert(it.value())))
+ ).toArray();
+ Vertex vertex = graph.addVertex(args);
+ entity.add(ID, vertex.id());
+ GraphTransactionUtil.transaction(graph);
+ return vertex;
+ }
+
private Vertex findOrCreateVertex(CommunicationEntity entity) {
- return entity.find(ID_PROPERTY)
+ return entity.find(ID)
.flatMap(id -> findVertexById(id.get()))
- .orElseGet(() -> {
- var newVertex = graph.addVertex(entity.name());
- entity.elements().forEach(e -> newVertex.property(e.name(), ValueUtil.convert(e.value())));
- newVertex.property(ID_PROPERTY, newVertex.id());
- entity.add(ID_PROPERTY, newVertex.id());
- return newVertex;
- });
+ .orElseGet(() -> addVertex(entity));
}
private Optional findVertexById(Object id) {
diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopGraphDatabaseManager.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopGraphDatabaseManager.java
index ddaf5d175..5007ee681 100644
--- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopGraphDatabaseManager.java
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopGraphDatabaseManager.java
@@ -15,6 +15,7 @@
package org.eclipse.jnosql.databases.tinkerpop.communication;
import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.T;
import org.eclipse.jnosql.communication.graph.GraphDatabaseManager;
import org.eclipse.jnosql.communication.semistructured.DatabaseManager;
@@ -35,6 +36,8 @@
*/
public interface TinkerpopGraphDatabaseManager extends GraphDatabaseManager, Supplier {
+ String ID = T.id.getAccessor();
+
/**
* Creates a new instance of DefaultGraphDatabaseManager with the specified TinkerPop Graph.
*
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/ArangoDeployment.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/ArangoDeployment.java
new file mode 100644
index 000000000..4b7affb65
--- /dev/null
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/ArangoDeployment.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2022 Contributors to the Eclipse Foundation
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and Apache License v2.0 which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php.
+ *
+ * You may elect to redistribute this code under either of these licenses.
+ *
+ * Contributors:
+ *
+ * Otavio Santana
+ */
+package org.eclipse.jnosql.databases.tinkerpop.cdi;
+
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.wait.strategy.Wait;
+
+enum ArangoDeployment {
+ INSTANCE;
+
+ private final GenericContainer> arangodb =
+ new GenericContainer<>("arangodb/arangodb:latest")
+ .withExposedPorts(8529)
+ .withEnv("ARANGO_NO_AUTH", "1")
+ .waitingFor(Wait.forHttp("/")
+ .forStatusCode(200));
+
+ {
+ arangodb.start();
+ }
+
+ public GenericContainer> getContainer() {
+ return arangodb;
+ }
+}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/TestGraphSupplier.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/TestGraphSupplier.java
new file mode 100644
index 000000000..598b1f81b
--- /dev/null
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/TestGraphSupplier.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2022 Contributors to the Eclipse Foundation
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and Apache License v2.0 which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php.
+ *
+ * You may elect to redistribute this code under either of these licenses.
+ *
+ * Contributors:
+ *
+ * Otavio Santana
+ * Michele Rastelli
+ */
+package org.eclipse.jnosql.databases.tinkerpop.cdi;
+
+import com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph;
+import com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraphConfig;
+import org.apache.commons.configuration2.BaseConfiguration;
+import org.apache.commons.configuration2.Configuration;
+import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.util.GraphFactory;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerTransactionGraph;
+import org.testcontainers.containers.GenericContainer;
+
+import java.io.File;
+import java.util.List;
+import java.util.function.Supplier;
+import java.util.logging.Logger;
+
+import static java.lang.System.currentTimeMillis;
+
+public enum TestGraphSupplier implements Supplier {
+
+ NEO4J {
+ private static final Logger LOGGER = Logger.getLogger(TestGraphSupplier.class.getName());
+
+ @Override
+ public Graph get() {
+ String directory = new File("").getAbsolutePath() + "/target/neo4j-graph/" + currentTimeMillis();
+ LOGGER.info("Starting Neo4j at directory: " + directory);
+ return Neo4jGraph.open(directory);
+ }
+ },
+
+ ARANGODB {
+ @Override
+ public Graph get() {
+ GenericContainer> container = ArangoDeployment.INSTANCE.getContainer();
+ Configuration configuration = new BaseConfiguration();
+ configuration.addProperty("gremlin.graph", ArangoDBGraph.class.getName());
+ configuration.addProperty("gremlin.arangodb.conf.graph.enableDataDefinition", true);
+ configuration.addProperty("gremlin.arangodb.conf.graph.type", ArangoDBGraphConfig.GraphType.COMPLEX.name());
+ configuration.addProperty("gremlin.arangodb.conf.graph.edgeDefinitions", List.of(
+ "reads:[Human]->[Magazine]",
+ "knows:[Person]->[Person]",
+ "eats:[Creature]->[Creature]",
+ "loves:[Human]->[Human]",
+ "likes:[Human]->[Creature]",
+ "friend:[Person]->[Person]"
+ ));
+ configuration.addProperty("gremlin.arangodb.conf.driver.hosts", container.getHost() + ":" + container.getFirstMappedPort());
+ return GraphFactory.open(configuration);
+ }
+ },
+
+ TINKER_GRAPH {
+ @Override
+ public Graph get() {
+ Configuration configuration = new BaseConfiguration();
+ configuration.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_VERTEX_ID_MANAGER, TinkerGraph.DefaultIdManager.STRING.name());
+ configuration.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, TinkerGraph.DefaultIdManager.STRING.name());
+ configuration.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_VERTEX_PROPERTY_ID_MANAGER, TinkerGraph.DefaultIdManager.STRING.name());
+ return TinkerTransactionGraph.open(configuration);
+ }
+ }
+
+}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/arangodb/ArangoDBGraphProducer.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/arangodb/ArangoDBGraphProducer.java
new file mode 100644
index 000000000..6919f1a34
--- /dev/null
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/arangodb/ArangoDBGraphProducer.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2022 Contributors to the Eclipse Foundation
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and Apache License v2.0 which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php.
+ *
+ * You may elect to redistribute this code under either of these licenses.
+ *
+ * Contributors:
+ *
+ * Otavio Santana
+ * Michele Rastelli
+ */
+package org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb;
+
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.Priority;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.inject.Alternative;
+import jakarta.enterprise.inject.Disposes;
+import jakarta.enterprise.inject.Produces;
+import jakarta.interceptor.Interceptor;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.TestGraphSupplier;
+
+import java.util.function.Supplier;
+import java.util.logging.Logger;
+
+@ApplicationScoped
+@Alternative
+@Priority(Interceptor.Priority.APPLICATION)
+public class ArangoDBGraphProducer implements Supplier {
+
+ private static final Logger LOGGER = Logger.getLogger(ArangoDBGraphProducer.class.getName());
+
+ private Graph graph;
+
+ @PostConstruct
+ public void init() {
+ graph = TestGraphSupplier.ARANGODB.get();
+ LOGGER.info("Graph database created");
+ }
+
+ @Produces
+ @ApplicationScoped
+ @Override
+ public Graph get() {
+ return graph;
+ }
+
+ public void dispose(@Disposes Graph graph) throws Exception {
+ LOGGER.info("Graph database closing");
+ graph.close();
+ LOGGER.info("Graph Database closed");
+ }
+
+}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphProducer.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/mock/MockGraphProducer.java
similarity index 50%
rename from jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphProducer.java
rename to jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/mock/MockGraphProducer.java
index e93101c3f..97099c958 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphProducer.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/mock/MockGraphProducer.java
@@ -12,32 +12,21 @@
*
* Otavio Santana
*/
-package org.eclipse.jnosql.databases.tinkerpop.mapping;
+package org.eclipse.jnosql.databases.tinkerpop.cdi.mock;
-import jakarta.annotation.PostConstruct;
import jakarta.annotation.Priority;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Alternative;
-import jakarta.enterprise.inject.Disposes;
import jakarta.enterprise.inject.Produces;
import jakarta.interceptor.Interceptor;
-import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.eclipse.jnosql.mapping.Database;
import org.eclipse.jnosql.mapping.DatabaseType;
import org.mockito.Mockito;
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.Collections;
-import java.util.Comparator;
-import java.util.function.Supplier;
-import java.util.logging.Logger;
-import static java.lang.System.currentTimeMillis;
import static java.util.Collections.singleton;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -45,40 +34,17 @@
@ApplicationScoped
@Alternative
@Priority(Interceptor.Priority.APPLICATION)
-public class GraphProducer implements Supplier {
-
- private static final Logger LOGGER = Logger.getLogger(GraphProducer.class.getName());
-
- private Graph graph;
-
- private String directory;
-
- @PostConstruct
- public void init() {
- this.directory = new File("").getAbsolutePath() + "/target/jnosql-graph/" + currentTimeMillis() + "/";
- LOGGER.info("Starting Graph database at directory: " + directory);
- this.graph = Neo4jGraph.open(directory);
- LOGGER.info("Graph database created");
- }
-
- @Produces
- @ApplicationScoped
- @Override
- public Graph get() {
- return graph;
- }
-
+public class MockGraphProducer {
@Produces
@ApplicationScoped
@Database(value = DatabaseType.GRAPH, provider = "graphRepositoryMock")
public Graph getGraphMock() {
-
Graph graphMock = mock(Graph.class);
Vertex vertex = mock(Vertex.class);
when(vertex.label()).thenReturn("Person");
- when(vertex.id()).thenReturn(10L);
- when(graphMock.vertices(10L)).thenReturn(Collections.emptyIterator());
+ when(vertex.id()).thenReturn("10");
+ when(graphMock.vertices("10")).thenReturn(Collections.emptyIterator());
when(vertex.keys()).thenReturn(singleton("name"));
when(vertex.value("name")).thenReturn("nameMock");
when(graphMock.addVertex(Mockito.anyString())).thenReturn(vertex);
@@ -86,18 +52,4 @@ public Graph getGraphMock() {
return graphMock;
}
- public void dispose(@Disposes Graph graph) throws Exception {
- LOGGER.info("Graph database closing");
- graph.close();
- final Path path = Paths.get(directory);
- if (Files.exists(path)) {
- LOGGER.info("Removing directory graph database: " + directory);
- Files.walk(path)
- .sorted(Comparator.reverseOrder())
- .map(Path::toFile)
- .forEach(File::delete);
- LOGGER.info("Graph directory exists?: " + Files.exists(path));
- }
- LOGGER.info("Graph Database closed");
- }
}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/neo4j/Neo4jGraphProducer.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/neo4j/Neo4jGraphProducer.java
new file mode 100644
index 000000000..19904faf1
--- /dev/null
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/neo4j/Neo4jGraphProducer.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2022 Contributors to the Eclipse Foundation
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and Apache License v2.0 which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php.
+ *
+ * You may elect to redistribute this code under either of these licenses.
+ *
+ * Contributors:
+ *
+ * Otavio Santana
+ * Michele Rastelli
+ */
+package org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j;
+
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.Priority;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.inject.Alternative;
+import jakarta.enterprise.inject.Disposes;
+import jakarta.enterprise.inject.Produces;
+import jakarta.interceptor.Interceptor;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.TestGraphSupplier;
+
+import java.util.function.Supplier;
+import java.util.logging.Logger;
+
+@ApplicationScoped
+@Alternative
+@Priority(Interceptor.Priority.APPLICATION)
+public class Neo4jGraphProducer implements Supplier {
+
+ private static final Logger LOGGER = Logger.getLogger(Neo4jGraphProducer.class.getName());
+
+ private Graph graph;
+
+ @PostConstruct
+ public void init() {
+ graph = TestGraphSupplier.NEO4J.get();
+ LOGGER.info("Graph database created");
+ }
+
+ @Produces
+ @ApplicationScoped
+ @Override
+ public Graph get() {
+ return graph;
+ }
+
+ public void dispose(@Disposes Graph graph) throws Exception {
+ LOGGER.info("Graph database closing");
+ graph.close();
+ LOGGER.info("Graph Database closed");
+ }
+
+}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/GraphSupplier.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/tinkergraph/TinkerGraphProducer.java
similarity index 50%
rename from jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/GraphSupplier.java
rename to jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/tinkergraph/TinkerGraphProducer.java
index dcf55743b..7a135ae3c 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/GraphSupplier.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/cdi/tinkergraph/TinkerGraphProducer.java
@@ -11,35 +11,36 @@
* Contributors:
*
* Otavio Santana
+ * Michele Rastelli
*/
-package org.eclipse.jnosql.databases.tinkerpop.communication;
-
-import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph;
+package org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph;
+
+import jakarta.annotation.Priority;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.inject.Alternative;
+import jakarta.enterprise.inject.Disposes;
+import jakarta.enterprise.inject.Produces;
+import jakarta.interceptor.Interceptor;
import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.TestGraphSupplier;
-import java.io.File;
import java.util.function.Supplier;
-import java.util.logging.Logger;
-
-import static java.lang.System.currentTimeMillis;
-
-public enum GraphSupplier implements Supplier {
- INSTANCE;
- private static final Logger LOGGER = Logger.getLogger(GraphSupplier.class.getName());
- private final String directory;
-
- private final Graph graph;
-
- {
- this.directory = new File("").getAbsolutePath() + "/target/jnosql-communication-graph/" + currentTimeMillis() + "/";
- graph = Neo4jGraph.open(directory);
- }
+@ApplicationScoped
+@Alternative
+@Priority(Interceptor.Priority.APPLICATION)
+public class TinkerGraphProducer implements Supplier {
+ @Produces
+ @ApplicationScoped
@Override
public Graph get() {
- LOGGER.info("Starting Graph database at directory: " + directory);
- return graph;
+ return TestGraphSupplier.TINKER_GRAPH.get();
+ }
+
+ public void dispose(@Disposes Graph graph) throws Exception {
+ graph.close();
}
+
}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManagerTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManagerTest.java
index 0e62930c7..d91b42362 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManagerTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManagerTest.java
@@ -25,7 +25,9 @@
import org.eclipse.jnosql.communication.semistructured.Element;
import org.eclipse.jnosql.communication.semistructured.Elements;
import org.eclipse.jnosql.communication.semistructured.SelectQuery;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.TestGraphSupplier;
import org.eclipse.jnosql.mapping.semistructured.MappingQuery;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -42,24 +44,47 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.eclipse.jnosql.communication.semistructured.DeleteQuery.delete;
import static org.eclipse.jnosql.communication.semistructured.SelectQuery.select;
+import static org.eclipse.jnosql.databases.tinkerpop.communication.TinkerpopGraphDatabaseManager.ID;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
-class DefaultTinkerpopGraphDatabaseManagerTest {
+abstract class DefaultTinkerpopGraphDatabaseManagerTest {
- public static final String COLLECTION_NAME = "person";
+ static class ArangoDBTest extends DefaultTinkerpopGraphDatabaseManagerTest {
+ @Override
+ Graph graph() {
+ return TestGraphSupplier.ARANGODB.get();
+ }
+ }
+
+ static class Neo4jTest extends DefaultTinkerpopGraphDatabaseManagerTest {
+ @Override
+ Graph graph() {
+ return TestGraphSupplier.NEO4J.get();
+ }
+ }
+
+ static class TinkerGraphTest extends DefaultTinkerpopGraphDatabaseManagerTest {
+ @Override
+ Graph graph() {
+ return TestGraphSupplier.TINKER_GRAPH.get();
+ }
+ }
+
+ static final String COLLECTION_NAME = "Person";
private TinkerpopGraphDatabaseManager entityManager;
private final Faker faker = new Faker();
+ abstract Graph graph();
+
@BeforeEach
- void setUp(){
- Graph graph = GraphSupplier.INSTANCE.get();
- this.entityManager = TinkerpopGraphDatabaseManager.of(graph);
+ void setUp() {
+ this.entityManager = TinkerpopGraphDatabaseManager.of(graph());
}
@BeforeEach
@@ -67,8 +92,13 @@ void beforeEach() {
delete().from(COLLECTION_NAME).delete(entityManager);
}
+ @AfterEach
+ void close() {
+ entityManager.close();
+ }
+
@Test
- void shouldInsertEntity(){
+ void shouldInsertEntity() {
String name = faker.name().fullName();
var age = faker.number().randomDigit();
var entity = CommunicationEntity.of("Person");
@@ -80,12 +110,12 @@ void shouldInsertEntity(){
SoftAssertions.assertSoftly(softly -> {
softly.assertThat(communicationEntity.find("name", String.class)).get().isEqualTo(name);
softly.assertThat(communicationEntity.find("age", int.class)).get().isEqualTo(age);
- softly.assertThat(communicationEntity.find(DefaultTinkerpopGraphDatabaseManager.ID_PROPERTY)).isPresent();
+ softly.assertThat(communicationEntity.find(ID)).isPresent();
});
}
@Test
- void shouldInsertEntities(){
+ void shouldInsertEntities() {
String name = faker.name().fullName();
var age = faker.number().randomDigit();
var entity = CommunicationEntity.of("Person");
@@ -106,11 +136,11 @@ void shouldInsertEntities(){
softly.assertThat(communicationEntities).hasSize(2);
softly.assertThat(communicationEntities.get(0).find("name", String.class)).get().isEqualTo(name);
softly.assertThat(communicationEntities.get(0).find("age", int.class)).get().isEqualTo(age);
- softly.assertThat(communicationEntities.get(0).find(DefaultTinkerpopGraphDatabaseManager.ID_PROPERTY)).isPresent();
+ softly.assertThat(communicationEntities.get(0).find(ID)).isPresent();
softly.assertThat(communicationEntities.get(1).find("name", String.class)).get().isEqualTo(name2);
softly.assertThat(communicationEntities.get(1).find("age", int.class)).get().isEqualTo(age2);
- softly.assertThat(communicationEntities.get(1).find(DefaultTinkerpopGraphDatabaseManager.ID_PROPERTY)).isPresent();
+ softly.assertThat(communicationEntities.get(1).find(ID)).isPresent();
});
}
@@ -119,7 +149,7 @@ void shouldInsertEntities(){
void shouldInsert() {
var entity = getEntity();
var documentEntity = entityManager.insert(entity);
- assertTrue(documentEntity.elements().stream().map(Element::name).anyMatch(s -> s.equals("_id")));
+ assertTrue(documentEntity.elements().stream().map(Element::name).anyMatch(s -> s.equals(ID)));
}
@Test
@@ -142,11 +172,11 @@ void shouldUpdate() {
void shouldRemoveEntity() {
var documentEntity = entityManager.insert(getEntity());
- Optional id = documentEntity.find("_id");
+ Optional id = documentEntity.find(ID);
var query = select().from(COLLECTION_NAME)
- .where("_id").eq(id.orElseThrow().get())
+ .where(ID).eq(id.orElseThrow().get())
.build();
- var deleteQuery = delete().from(COLLECTION_NAME).where("_id")
+ var deleteQuery = delete().from(COLLECTION_NAME).where(ID)
.eq(id.get().get())
.build();
@@ -157,10 +187,10 @@ void shouldRemoveEntity() {
@Test
void shouldFindDocument() {
var entity = entityManager.insert(getEntity());
- Optional id = entity.find("_id");
+ Optional id = entity.find(ID);
var query = select().from(COLLECTION_NAME)
- .where("_id").eq(id.orElseThrow().get())
+ .where(ID).eq(id.orElseThrow().get())
.build();
var entities = entityManager.select(query).collect(Collectors.toList());
@@ -171,11 +201,12 @@ void shouldFindDocument() {
@Test
void shouldFindDocument2() {
var entity = entityManager.insert(getEntity());
- Optional id = entity.find("_id");
+ Optional id = entity.find(ID);
var query = select().from(COLLECTION_NAME)
.where("name").eq("Poliana")
- .and("city").eq("Salvador").and("_id").eq(id.orElseThrow().get())
+ .and("city").eq("Salvador")
+ .and(ID).eq(id.orElseThrow().get())
.build();
List entities = entityManager.select(query).collect(Collectors.toList());
@@ -186,11 +217,11 @@ void shouldFindDocument2() {
@Test
void shouldFindDocument3() {
var entity = entityManager.insert(getEntity());
- Optional id = entity.find("_id");
+ Optional id = entity.find(ID);
var query = select().from(COLLECTION_NAME)
.where("name").eq("Poliana")
.or("city").eq("Salvador")
- .and(id.orElseThrow().name()).eq(id.get().get())
+ .and(ID).eq(id.orElseThrow().get())
.build();
List entities = entityManager.select(query).collect(Collectors.toList());
@@ -304,7 +335,6 @@ void shouldFindDocumentBetween() {
});
-
}
@Test
@@ -426,7 +456,7 @@ void shouldFindAllByFields() {
assertEquals(3, entity.size());
SoftAssertions.assertSoftly(softly -> {
softly.assertThat(entity.find("name")).isPresent();
- softly.assertThat(entity.find("_id")).isPresent();
+ softly.assertThat(entity.find(ID)).isPresent();
softly.assertThat(entity.find("city")).isPresent();
});
}
@@ -436,15 +466,15 @@ void shouldCreateEdge() {
var person1 = entityManager.insert(getEntity());
var person2 = entityManager.insert(getEntity());
- String label = "FRIEND";
+ String label = "friend";
Map properties = Map.of("since", 2023);
var edge = entityManager.edge(person1, label, person2, properties);
assertNotNull(edge);
assertEquals(label, edge.label());
- assertEquals(person1.find("_id").orElseThrow().get(), edge.source().find("_id").orElseThrow().get());
- assertEquals(person2.find("_id").orElseThrow().get(), edge.target().find("_id").orElseThrow().get());
+ assertEquals(person1.find(ID).orElseThrow().get(), edge.source().find(ID).orElseThrow().get());
+ assertEquals(person2.find(ID).orElseThrow().get(), edge.target().find(ID).orElseThrow().get());
assertEquals(properties, edge.properties());
}
@@ -453,9 +483,9 @@ void shouldRemoveEdge() {
var person1 = entityManager.insert(getEntity());
var person2 = entityManager.insert(getEntity());
- CommunicationEdge communicationEdge = entityManager.edge(person1, "FRIEND", person2, Map.of());
+ CommunicationEdge communicationEdge = entityManager.edge(person1, "friend", person2, Map.of());
- entityManager.remove(person1, "FRIEND", person2);
+ entityManager.remove(person1, "friend", person2);
var edges = entityManager.findEdgeById(communicationEdge.id());
@@ -467,7 +497,7 @@ void shouldDeleteEdgeById() {
var person1 = entityManager.insert(getEntity());
var person2 = entityManager.insert(getEntity());
- var edge = entityManager.edge(person1, "FRIEND", person2, Map.of());
+ var edge = entityManager.edge(person1, "friend", person2, Map.of());
entityManager.deleteEdge(edge.id());
@@ -480,15 +510,15 @@ void shouldFindEdgeById() {
var person1 = entityManager.insert(getEntity());
var person2 = entityManager.insert(getEntity());
- var edge = entityManager.edge(person1, "FRIEND", person2, Map.of("since", 2023));
+ var edge = entityManager.edge(person1, "friend", person2, Map.of("since", 2023));
Optional foundEdge = entityManager.findEdgeById(edge.id());
assertTrue(foundEdge.isPresent());
assertEquals(edge.id(), foundEdge.get().id());
assertEquals(edge.label(), foundEdge.get().label());
- assertEquals(edge.source().find("_id").orElseThrow().get(), foundEdge.get().source().find("_id").orElseThrow().get());
- assertEquals(edge.target().find("_id").orElseThrow().get(), foundEdge.get().target().find("_id").orElseThrow().get());
+ assertEquals(edge.source().find(ID).orElseThrow().get(), foundEdge.get().source().find(ID).orElseThrow().get());
+ assertEquals(edge.target().find(ID).orElseThrow().get(), foundEdge.get().target().find(ID).orElseThrow().get());
}
@Test
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplateTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplateTest.java
index 295956616..bb6af7b8a 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplateTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplateTest.java
@@ -42,6 +42,7 @@
import static java.util.stream.Collectors.toList;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assume.assumeTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -119,7 +120,7 @@ void shouldMergeOnInsert() {
@Test
void shouldGetErrorWhenIdIsNullWhenUpdate() {
- assertThrows(EmptyResultException.class, () -> {
+ assertThrows(IllegalArgumentException.class, () -> {
Human human = Human.builder().withAge()
.withName("Otavio").build();
getGraphTemplate().update(human);
@@ -130,7 +131,7 @@ void shouldGetErrorWhenIdIsNullWhenUpdate() {
void shouldGetErrorWhenEntityIsNotSavedYet() {
assertThrows(EmptyResultException.class, () -> {
Human human = Human.builder().withAge()
- .withId(10L)
+ .withId("10")
.withName("Otavio").build();
getGraphTemplate().update(human);
@@ -212,7 +213,7 @@ void shouldFindAnEntity() {
@Test
void shouldNotFindAnEntity() {
- Optional personFound = getGraphTemplate().find(0L);
+ Optional personFound = getGraphTemplate().find("0");
assertFalse(personFound.isPresent());
}
@@ -275,12 +276,12 @@ void shouldReturnErrorWhenGetEdgesIdHasNullId() {
@Test
void shouldReturnErrorWhenGetEdgesIdHasNullDirection() {
- assertThrows(NullPointerException.class, () -> getGraphTemplate().edgesById(10, null));
+ assertThrows(NullPointerException.class, () -> getGraphTemplate().edgesById("10", null));
}
@Test
void shouldReturnEmptyWhenVertexDoesNotExist() {
- Collection edges = getGraphTemplate().edgesById(10, Direction.BOTH);
+ Collection edges = getGraphTemplate().edgesById("10", Direction.BOTH);
assertTrue(edges.isEmpty());
}
@@ -349,7 +350,7 @@ void shouldReturnErrorWhenGetEdgesHasNullId() {
@Test
void shouldReturnErrorWhenGetEdgesHasNullId2() {
- Human otavio = Human.builder().withId(0L).withAge().withName("Otavio").build();
+ Human otavio = Human.builder().withId("0").withAge().withName("Otavio").build();
Collection edges = getGraphTemplate().edges(otavio, Direction.BOTH);
assertThat(edges).isEmpty();
}
@@ -365,7 +366,7 @@ void shouldReturnErrorWhenGetEdgesHasNullDirection() {
@Test
void shouldReturnEmptyWhenEntityDoesNotExist() {
- Human otavio = Human.builder().withAge().withName("Otavio").withId(10L).build();
+ Human otavio = Human.builder().withAge().withName("Otavio").withId("10").build();
Collection edges = getGraphTemplate().edges(otavio, Direction.BOTH);
assertTrue(edges.isEmpty());
}
@@ -399,6 +400,7 @@ void shouldReturnEdges() {
@Test
void shouldGetTransaction() {
+ assumeTrue("transactions not supported", getGraph().features().graph().supportsTransactions());
Transaction transaction = getGraphTemplate().transaction();
assertNotNull(transaction);
}
@@ -430,7 +432,7 @@ void shouldExecuteQueryWithParameter() {
@Test
void shouldReturnEmpty() {
- Optional person = getGraphTemplate().gremlinSingleResult("g.V().hasLabel('Person')");
+ Optional person = getGraphTemplate().gremlinSingleResult("g.V().hasLabel('person')");
assertFalse(person.isPresent());
}
@@ -541,8 +543,7 @@ void shouldDeleteAll() {
@Test
void shouldReturnEmptyWhenFindByIdNotFound() {
-
- final Optional person = getGraphTemplate().find(Human.class, -2L);
+ final Optional person = getGraphTemplate().find(Human.class, "-2");
assertNotNull(person);
assertFalse(person.isPresent());
}
@@ -567,12 +568,12 @@ void shouldCreateEdgeByGraphAPI() {
final Human poliana = getGraphTemplate().insert(Human.builder().withAge()
.withName("Poliana").build());
- var edge = org.eclipse.jnosql.mapping.graph.Edge.source(otavio).label("LOVES").target(poliana).build();
+ var edge = org.eclipse.jnosql.mapping.graph.Edge.source(otavio).label("loves").target(poliana).build();
var edgeEntity = getGraphTemplate().edge(edge);
SoftAssertions.assertSoftly(softly -> {
softly.assertThat(edgeEntity).isNotNull();
- softly.assertThat(edgeEntity.label()).isEqualTo("LOVES");
+ softly.assertThat(edgeEntity.label()).isEqualTo("loves");
softly.assertThat(edgeEntity.source()).isEqualTo(otavio);
softly.assertThat(edgeEntity.target()).isEqualTo(poliana);
});
@@ -587,7 +588,7 @@ void shouldCreateEdgeByGraphAPIWithProperties() {
.withName("Poliana").build());
var edge = org.eclipse.jnosql.mapping.graph.Edge.source(otavio)
- .label("LOVES")
+ .label("loves")
.target(poliana)
.property("when", "2017")
.property("where", "Brazil")
@@ -596,7 +597,7 @@ void shouldCreateEdgeByGraphAPIWithProperties() {
SoftAssertions.assertSoftly(softly -> {
softly.assertThat(edgeEntity).isNotNull();
- softly.assertThat(edgeEntity.label()).isEqualTo("LOVES");
+ softly.assertThat(edgeEntity.label()).isEqualTo("loves");
softly.assertThat(edgeEntity.source()).isEqualTo(otavio);
softly.assertThat(edgeEntity.target()).isEqualTo(poliana);
softly.assertThat(edgeEntity.properties()).hasSize(2);
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultEdgeTraversalTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultEdgeTraversalTest.java
index 296829c1f..bdb8c8d02 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultEdgeTraversalTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultEdgeTraversalTest.java
@@ -18,6 +18,9 @@
import org.apache.tinkerpop.gremlin.process.traversal.P;
import org.apache.tinkerpop.gremlin.structure.T;
import org.assertj.core.api.SoftAssertions;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Creature;
import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Magazine;
@@ -51,10 +54,21 @@
@EnableAutoWeld
@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
@AddPackages(Reflections.class)
@AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
-class DefaultEdgeTraversalTest extends AbstractTraversalTest {
+abstract class DefaultEdgeTraversalTest extends AbstractTraversalTest {
+
+ @AddPackages(ArangoDBGraphProducer.class)
+ static class ArangoDBTest extends DefaultEdgeTraversalTest {
+ }
+
+ @AddPackages(Neo4jGraphProducer.class)
+ static class Neo4jTest extends DefaultEdgeTraversalTest {
+ }
+
+ @AddPackages(TinkerGraphProducer.class)
+ static class TinkerGraphTest extends DefaultEdgeTraversalTest {
+ }
@Test
void shouldReturnErrorWhenEdgeIdIsNull() {
@@ -489,7 +503,7 @@ void shouldReturnErrorWhenThereAreMoreThanOneInGetSingleResult() {
@Test
void shouldReturnOptionalEmptyWhenThereIsNotResultInSingleResult() {
- Optional entity = tinkerpopTemplate.traversalEdge(-1L).singleResult();
+ Optional entity = tinkerpopTemplate.traversalEdge("-1").singleResult();
assertFalse(entity.isPresent());
}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTraversalSourceTemplateTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTraversalSourceTemplateTest.java
index eb815435e..73d696b0e 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTraversalSourceTemplateTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTraversalSourceTemplateTest.java
@@ -16,6 +16,9 @@
import jakarta.inject.Inject;
import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
import org.eclipse.jnosql.mapping.core.Converters;
import org.eclipse.jnosql.mapping.reflection.Reflections;
@@ -27,9 +30,21 @@
@EnableAutoWeld
@AddPackages(value = {Converters.class, EntityConverter.class, Transactional.class})
-@AddPackages({MagazineRepository.class, Reflections.class, GraphProducer.class})
+@AddPackages({MagazineRepository.class, Reflections.class})
@AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
-class DefaultGraphTraversalSourceTemplateTest extends AbstractTinkerpopTemplateTest {
+abstract class DefaultGraphTraversalSourceTemplateTest extends AbstractTinkerpopTemplateTest {
+
+ @AddPackages(ArangoDBGraphProducer.class)
+ static class ArangoDBTest extends DefaultGraphTraversalSourceTemplateTest {
+ }
+
+ @AddPackages(Neo4jGraphProducer.class)
+ static class Neo4jTest extends DefaultGraphTraversalSourceTemplateTest {
+ }
+
+ @AddPackages(TinkerGraphProducer.class)
+ static class TinkerGraphTest extends DefaultGraphTraversalSourceTemplateTest {
+ }
@Inject
private TinkerpopTemplate graphTemplate;
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplateProducerTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplateProducerTest.java
index 57f2cde58..27e38e602 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplateProducerTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplateProducerTest.java
@@ -16,6 +16,7 @@
import jakarta.inject.Inject;
import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.mock.MockGraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
import org.eclipse.jnosql.mapping.core.Converters;
import org.eclipse.jnosql.mapping.reflection.Reflections;
@@ -33,7 +34,7 @@
@EnableAutoWeld
@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
+@AddPackages(MockGraphProducer.class)
@AddPackages(Reflections.class)
@AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
class DefaultGraphTemplateProducerTest {
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultValueMapTraversalTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultValueMapTraversalTest.java
index cf24e051b..0aecc3610 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultValueMapTraversalTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultValueMapTraversalTest.java
@@ -15,6 +15,9 @@
package org.eclipse.jnosql.databases.tinkerpop.mapping;
import jakarta.data.exceptions.NonUniqueResultException;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
import org.eclipse.jnosql.mapping.core.Converters;
@@ -40,11 +43,21 @@
@EnableAutoWeld
@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
@AddPackages(Reflections.class)
@AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
-class DefaultValueMapTraversalTest extends AbstractTraversalTest {
+abstract class DefaultValueMapTraversalTest extends AbstractTraversalTest {
+ @AddPackages(ArangoDBGraphProducer.class)
+ static class ArangoDBTest extends DefaultValueMapTraversalTest {
+ }
+
+ @AddPackages(Neo4jGraphProducer.class)
+ static class Neo4jTest extends DefaultValueMapTraversalTest {
+ }
+
+ @AddPackages(TinkerGraphProducer.class)
+ static class TinkerGraphTest extends DefaultValueMapTraversalTest {
+ }
@Test
void shouldCount() {
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultVertexTraversalTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultVertexTraversalTest.java
index 11dfeea01..20c63c54d 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultVertexTraversalTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultVertexTraversalTest.java
@@ -17,6 +17,9 @@
import jakarta.data.exceptions.NonUniqueResultException;
import org.apache.tinkerpop.gremlin.process.traversal.P;
import org.apache.tinkerpop.gremlin.structure.T;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Creature;
import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Magazine;
@@ -52,11 +55,21 @@
@EnableAutoWeld
@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
@AddPackages(Reflections.class)
@AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
-class DefaultVertexTraversalTest extends AbstractTraversalTest {
+abstract class DefaultVertexTraversalTest extends AbstractTraversalTest {
+ @AddPackages(ArangoDBGraphProducer.class)
+ static class ArangoDBTest extends DefaultVertexTraversalTest {
+ }
+
+ @AddPackages(Neo4jGraphProducer.class)
+ static class Neo4jTest extends DefaultVertexTraversalTest {
+ }
+
+ @AddPackages(TinkerGraphProducer.class)
+ static class TinkerGraphTest extends DefaultVertexTraversalTest {
+ }
@Test
void shouldReturnErrorWhenVertexIdIsNull() {
@@ -100,7 +113,7 @@ void shouldNext() {
@Test
void shouldEmptyNext() {
- Optional> next = tinkerpopTemplate.traversalVertex(-12).next();
+ Optional> next = tinkerpopTemplate.traversalVertex("-12").next();
assertFalse(next.isPresent());
}
@@ -515,5 +528,4 @@ void shouldDedup() {
assertEquals(3, people.size());
}
-
}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/EdgeEntityTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/EdgeEntityTest.java
index 67fcbb453..22ba6ad18 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/EdgeEntityTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/EdgeEntityTest.java
@@ -18,6 +18,9 @@
import jakarta.inject.Inject;
import org.eclipse.jnosql.communication.Value;
import org.eclipse.jnosql.communication.semistructured.Element;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Magazine;
import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
@@ -43,11 +46,21 @@
@EnableAutoWeld
@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
@AddPackages(Reflections.class)
@AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
-class EdgeEntityTest {
+abstract class EdgeEntityTest {
+ @AddPackages(ArangoDBGraphProducer.class)
+ static class ArangoDBTest extends EdgeEntityTest {
+ }
+
+ @AddPackages(Neo4jGraphProducer.class)
+ static class Neo4jTest extends EdgeEntityTest {
+ }
+
+ @AddPackages(TinkerGraphProducer.class)
+ static class TinkerGraphTest extends EdgeEntityTest {
+ }
@Inject
private TinkerpopTemplate tinkerpopTemplate;
@@ -83,7 +96,7 @@ void shouldReturnErrorWhenLabelIsNull() {
@Test
void shouldReturnNullWhenInboundIdIsNull() {
Assertions.assertThrows(EmptyResultException.class, () -> {
- Human human = Human.builder().withId(-5).withName("Poliana").withAge().build();
+ Human human = Human.builder().withId("-5").withName("Poliana").withAge().build();
Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
tinkerpopTemplate.edge(human, "reads", magazine);
});
@@ -102,7 +115,7 @@ void shouldReturnNullWhenOutboundIdIsNull() {
@Test
void shouldReturnEntityNotFoundWhenOutBoundDidNotFound() {
Assertions.assertThrows( EmptyResultException.class, () -> {
- Human human = Human.builder().withId(-10L).withName("Poliana").withAge().build();
+ Human human = Human.builder().withId("-10").withName("Poliana").withAge().build();
Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
tinkerpopTemplate.edge(human, "reads", magazine);
});
@@ -112,7 +125,7 @@ void shouldReturnEntityNotFoundWhenOutBoundDidNotFound() {
void shouldReturnEntityNotFoundWhenInBoundDidNotFound() {
Assertions.assertThrows( EmptyResultException.class, () -> {
Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
- Magazine magazine = Magazine.builder().withId(10L).withAge(2007).withName("The Shack").build();
+ Magazine magazine = Magazine.builder().withId("10").withAge(2007).withName("The Shack").build();
tinkerpopTemplate.edge(human, "reads", magazine);
});
}
@@ -141,10 +154,10 @@ void shouldGetId() {
assertEquals(magazine, edge.incoming());
assertTrue(edge.isEmpty());
assertNotNull(edge.id());
- final Long id = edge.id(Long.class);
+ final String id = edge.id(String.class);
assertNotNull(id);
- assertEquals(id, edge.id(Integer.class).longValue());
+ assertEquals(id, edge.id(String.class));
}
@@ -352,7 +365,7 @@ void shouldFindAnEdge() {
@Test
void shouldNotFindAnEdge() {
- Optional edgeEntity = tinkerpopTemplate.edge(-12L);
+ Optional edgeEntity = tinkerpopTemplate.edge("-12");
assertFalse(edgeEntity.isPresent());
}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateTest.java
index 6d71a979c..91a22e0fd 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateTest.java
@@ -16,6 +16,9 @@
import jakarta.inject.Inject;
import jakarta.nosql.Template;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
import org.eclipse.jnosql.mapping.Database;
import org.eclipse.jnosql.mapping.core.Converters;
@@ -34,10 +37,21 @@
@EnableAutoWeld
@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class, GraphTemplate.class})
-@AddPackages(GraphProducer.class)
@AddPackages(Reflections.class)
@AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class, GraphExtension.class})
-class GraphTemplateTest {
+abstract class GraphTemplateTest {
+
+ @AddPackages(ArangoDBGraphProducer.class)
+ static class ArangoDBTest extends GraphTemplateTest {
+ }
+
+ @AddPackages(Neo4jGraphProducer.class)
+ static class Neo4jTest extends GraphTemplateTest {
+ }
+
+ @AddPackages(TinkerGraphProducer.class)
+ static class TinkerGraphTest extends GraphTemplateTest {
+ }
@Inject
private Template template;
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/MagazineTemplateTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/MagazineTemplateTest.java
index bc5bbcf22..7ca01fb44 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/MagazineTemplateTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/MagazineTemplateTest.java
@@ -18,6 +18,9 @@
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.Transaction;
import org.apache.tinkerpop.gremlin.structure.Transaction.Status;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Magazine;
import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.MagazineTemplate;
import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
@@ -34,16 +37,28 @@
import static org.apache.tinkerpop.gremlin.structure.Transaction.Status.COMMIT;
import static org.apache.tinkerpop.gremlin.structure.Transaction.Status.ROLLBACK;
+import static org.junit.Assume.assumeTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
@EnableAutoWeld
@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
@AddPackages(Reflections.class)
@AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
-class MagazineTemplateTest {
+abstract class MagazineTemplateTest {
+
+ @AddPackages(ArangoDBGraphProducer.class)
+ static class ArangoDBTest extends MagazineTemplateTest {
+ }
+
+ @AddPackages(Neo4jGraphProducer.class)
+ static class Neo4jTest extends MagazineTemplateTest {
+ }
+
+ @AddPackages(TinkerGraphProducer.class)
+ static class TinkerGraphTest extends MagazineTemplateTest {
+ }
@Inject
private MagazineTemplate template;
@@ -53,6 +68,8 @@ class MagazineTemplateTest {
@Test
void shouldSaveWithTransaction() {
+ assumeTrue("transactions not supported", graph.features().graph().supportsTransactions());
+
AtomicReference status = new AtomicReference<>();
Magazine magazine = Magazine.builder().withName("The Book").build();
@@ -65,6 +82,8 @@ void shouldSaveWithTransaction() {
@Test
void shouldSaveWithRollback() {
+ assumeTrue("transactions not supported", graph.features().graph().supportsTransactions());
+
AtomicReference status = new AtomicReference<>();
Magazine magazine = Magazine.builder().withName("The Book").build();
@@ -83,6 +102,8 @@ void shouldSaveWithRollback() {
@Test
void shouldUseAutomaticNormalTransaction() {
+ assumeTrue("transactions not supported", graph.features().graph().supportsTransactions());
+
AtomicReference status = new AtomicReference<>();
Magazine magazine = Magazine.builder().withName("The Book").build();
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/PopulationTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/PopulationTest.java
index c2d51d81b..3200cbb0a 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/PopulationTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/PopulationTest.java
@@ -16,8 +16,10 @@
import jakarta.inject.Inject;
-import org.apache.tinkerpop.gremlin.process.traversal.Order;
import org.assertj.core.api.SoftAssertions;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.arangodb.ArangoDBGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.neo4j.Neo4jGraphProducer;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.tinkergraph.TinkerGraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
import org.eclipse.jnosql.mapping.core.Converters;
@@ -36,10 +38,21 @@
@EnableAutoWeld
@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class, GraphTemplate.class})
-@AddPackages(GraphProducer.class)
@AddPackages(Reflections.class)
@AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class, GraphExtension.class})
-public class PopulationTest {
+abstract class PopulationTest {
+
+ @AddPackages(ArangoDBGraphProducer.class)
+ static class ArangoDBTest extends PopulationTest {
+ }
+
+ @AddPackages(Neo4jGraphProducer.class)
+ static class Neo4jTest extends PopulationTest {
+ }
+
+ @AddPackages(TinkerGraphProducer.class)
+ static class TinkerGraphTest extends PopulationTest {
+ }
@Inject
private Population population;
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateProducerTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateProducerTest.java
index d14ad4c3b..1eb3040b4 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateProducerTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateProducerTest.java
@@ -16,6 +16,7 @@
import jakarta.inject.Inject;
import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.mock.MockGraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
import org.eclipse.jnosql.mapping.core.Converters;
import org.eclipse.jnosql.mapping.reflection.Reflections;
@@ -32,7 +33,7 @@
@EnableAutoWeld
@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
+@AddPackages(MockGraphProducer.class)
@AddPackages(Reflections.class)
@AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
class GraphTemplateProducerTest {
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateTest.java
index 2f6885b10..cae8863e4 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateTest.java
@@ -16,6 +16,7 @@
import jakarta.inject.Inject;
import jakarta.nosql.Template;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.mock.MockGraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
import org.eclipse.jnosql.mapping.Database;
import org.eclipse.jnosql.mapping.core.Converters;
@@ -34,7 +35,7 @@
@EnableAutoWeld
@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class, GraphTemplate.class})
-@AddPackages(GraphProducer.class)
+@AddPackages(MockGraphProducer.class)
@AddPackages(Reflections.class)
@AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class, GraphExtension.class})
class TinkerpopTemplateTest {
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphSupplierTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphSupplierTest.java
index 0973315d8..f5b35ef82 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphSupplierTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphSupplierTest.java
@@ -17,7 +17,6 @@
import jakarta.inject.Inject;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.eclipse.jnosql.databases.tinkerpop.communication.DatabaseConfigurationAdapter;
-import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate;
import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.TinkerpopExtension;
import org.eclipse.jnosql.mapping.core.Converters;
@@ -37,7 +36,6 @@
@EnableAutoWeld
@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
-@AddPackages(GraphProducer.class)
@AddPackages(Reflections.class)
@AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class})
class GraphSupplierTest {
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Creature.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Creature.java
index 40fef8e77..f34383769 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Creature.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Creature.java
@@ -23,9 +23,8 @@
@Entity
public class Creature {
-
- @Id
- private Long id;
+ @Id("~id")
+ private String id;
@Column
private String name;
@@ -37,7 +36,7 @@ public Creature(String name) {
this.name = name;
}
- public Long getId() {
+ public String getId() {
return id;
}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Human.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Human.java
index 0667fcfce..8603d9556 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Human.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Human.java
@@ -27,8 +27,8 @@
@MappedSuperclass
public class Human {
- @Id
- private Long id;
+ @Id("~id")
+ private String id;
@Column
private String name;
@@ -42,7 +42,7 @@ public class Human {
private String ignore;
- public Long getId() {
+ public String getId() {
return id;
}
@@ -69,7 +69,7 @@ public boolean isAdult() {
Human() {
}
- Human(Long id, String name, int age, List phones, String ignore) {
+ Human(String id, String name, int age, List phones, String ignore) {
this.id = id;
this.name = name;
this.age = age;
@@ -79,7 +79,7 @@ public boolean isAdult() {
@Override
public String toString() {
- return "Person{" + "id=" + id +
+ return "Human{" + "id=" + id +
", name='" + name + '\'' +
", age=" + age +
", phones=" + phones +
@@ -96,7 +96,7 @@ public boolean equals(Object o) {
return false;
}
Human human = (Human) o;
- return id == human.id &&
+ return Objects.equals(id, human.id) &&
age == human.age &&
Objects.equals(name, human.name) &&
Objects.equals(phones, human.phones);
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/HumanBuilder.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/HumanBuilder.java
index 7caaf886d..206d57993 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/HumanBuilder.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/HumanBuilder.java
@@ -17,13 +17,13 @@
import java.util.List;
public class HumanBuilder {
- private Long id;
+ private String id;
private String name;
private int age;
private List phones;
private String ignore;
- public HumanBuilder withId(long id) {
+ public HumanBuilder withId(String id) {
this.id = id;
return this;
}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Magazine.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Magazine.java
index 07d03ed95..670ae74fc 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Magazine.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/Magazine.java
@@ -23,8 +23,8 @@
@Entity
public class Magazine {
- @Id
- private Long id;
+ @Id("~id")
+ private String id;
@Column
private String name;
@@ -36,13 +36,13 @@ public class Magazine {
Magazine() {
}
- Magazine(Long id, String name, Integer age) {
+ Magazine(String id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
- public Long getId() {
+ public String getId() {
return id;
}
@@ -86,7 +86,7 @@ public static MagazineBuilder builder() {
public static class MagazineBuilder {
private String name;
private Integer age;
- private Long id;
+ private String id;
private MagazineBuilder() {
}
@@ -101,7 +101,7 @@ public MagazineBuilder withAge(Integer age) {
return this;
}
- public MagazineBuilder withId(Long id) {
+ public MagazineBuilder withId(String id) {
this.id = id;
return this;
}
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TinkerpopExtensionTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TinkerpopExtensionTest.java
index 9683d70cd..cbafb65f4 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TinkerpopExtensionTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TinkerpopExtensionTest.java
@@ -15,9 +15,8 @@
package org.eclipse.jnosql.databases.tinkerpop.mapping.spi;
import jakarta.inject.Inject;
-import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate;
-import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
+import org.eclipse.jnosql.databases.tinkerpop.cdi.mock.MockGraphProducer;
import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.HumanRepository;
import org.eclipse.jnosql.mapping.Database;
import org.eclipse.jnosql.mapping.DatabaseType;
@@ -33,17 +32,15 @@
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
@EnableAutoWeld
@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class, GraphTemplate.class})
-@AddPackages(GraphProducer.class)
+@AddPackages(MockGraphProducer.class)
@AddPackages(Reflections.class)
@AddExtensions({ReflectionEntityMetadataExtension.class, TinkerpopExtension.class, GraphExtension.class})
class TinkerpopExtensionTest {
-
@Inject
@Database(value = DatabaseType.GRAPH)
private HumanRepository repository;
@@ -69,7 +66,7 @@ void shouldInitiate() {
}
@Test
- void shouldUseMock(){
+ void shouldUseMock() {
assertNotNull(repositoryMock);
}
diff --git a/jnosql-tinkerpop/src/test/resources/simplelogger.properties b/jnosql-tinkerpop/src/test/resources/simplelogger.properties
new file mode 100644
index 000000000..9268538a1
--- /dev/null
+++ b/jnosql-tinkerpop/src/test/resources/simplelogger.properties
@@ -0,0 +1,12 @@
+org.slf4j.simpleLogger.logFile=System.out
+org.slf4j.simpleLogger.showDateTime=true
+org.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss.SSS
+org.slf4j.simpleLogger.showThreadName=true
+org.slf4j.simpleLogger.showLogName=true
+org.slf4j.simpleLogger.showShortLogName=false
+
+org.slf4j.simpleLogger.defaultLogLevel=info
+org.slf4j.simpleLogger.log.org.testcontainers=warn
+
+## ArangoDB communication debug level
+#org.slf4j.simpleLogger.log.com.arangodb.internal.net.Communication=debug