From a130118fccb9132cc46fa1f063422f140bca06cd Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 19:10:06 +0000 Subject: [PATCH 01/43] docs: enhance documentation on neo4j Signed-off-by: Otavio Santana --- jnosql-neo4j/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jnosql-neo4j/pom.xml b/jnosql-neo4j/pom.xml index 74c6599ef..5682c05eb 100644 --- a/jnosql-neo4j/pom.xml +++ b/jnosql-neo4j/pom.xml @@ -42,7 +42,7 @@ org.eclipse.jnosql.mapping - jnosql-mapping-semistructured + jnosql-mapping-graph ${project.version} From 53d72d6acc267d0c3f1a2a7fbc1c8b76d4e57cd9 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 19:14:23 +0000 Subject: [PATCH 02/43] feat: include spceialization on neo4j graph Signed-off-by: Otavio Santana --- .../databases/neo4j/communication/Neo4JDatabaseManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManager.java b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManager.java index 32d351f8e..a5446be16 100644 --- a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManager.java +++ b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManager.java @@ -16,6 +16,7 @@ */ package org.eclipse.jnosql.databases.neo4j.communication; +import org.eclipse.jnosql.communication.graph.GraphDatabaseManager; import org.eclipse.jnosql.communication.semistructured.CommunicationEntity; import org.eclipse.jnosql.communication.semistructured.DatabaseManager; @@ -48,7 +49,7 @@ * * @see DatabaseManager */ -public interface Neo4JDatabaseManager extends DatabaseManager { +public interface Neo4JDatabaseManager extends GraphDatabaseManager { /** * Executes a custom Cypher query with parameters and returns a stream of {@link CommunicationEntity}. From 48c9780c04d550ed2ae1286e4a058117c7dacd3c Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 19:14:46 +0000 Subject: [PATCH 03/43] feat: initial structure to neo4j Signed-off-by: Otavio Santana --- .../DefaultNeo4JDatabaseManager.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java index 425c6cec9..822de8912 100644 --- a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java +++ b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java @@ -17,6 +17,7 @@ package org.eclipse.jnosql.databases.neo4j.communication; import org.eclipse.jnosql.communication.CommunicationException; +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; @@ -32,6 +33,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.logging.Logger; import java.util.stream.Stream; @@ -248,6 +250,21 @@ public void remove(CommunicationEntity source, String label, CommunicationEntity } } + @Override + public void deleteEdge(K id) { + Objects.requireNonNull(id, "The id is required"); + + } + + @Override + public Optional findEdgeById(K id) { + return Optional.empty(); + } + + @Override + public CommunicationEdge edge(CommunicationEntity source, String label, CommunicationEntity target, Map properties) { + return null; + } @Override From 690f0c1d71a758b0be14b04ef54e06dee932548e Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 19:29:49 +0000 Subject: [PATCH 04/43] feat: update edge implementation Signed-off-by: Otavio Santana --- .../DefaultNeo4JDatabaseManager.java | 54 ++++++++++++++++++- .../communication/Neo4jCommunicationEdge.java | 25 +++++++++ 2 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4jCommunicationEdge.java diff --git a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java index 822de8912..8e38c344a 100644 --- a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java +++ b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java @@ -253,19 +253,69 @@ public void remove(CommunicationEntity source, String label, CommunicationEntity @Override public void deleteEdge(K id) { Objects.requireNonNull(id, "The id is required"); + LOGGER.fine(() -> "Deleting edge with ID: " + id); + String cypher = "MATCH ()-[r]-() WHERE elementId(r) = $elementId DELETE r"; + try (Transaction tx = session.beginTransaction()) { + tx.run(cypher, Values.parameters("elementId", id)); + LOGGER.fine(() -> "Deleted edge with ID: " + id); + tx.commit(); + } } @Override public Optional findEdgeById(K id) { + Objects.requireNonNull(id, "The edge ID is required"); + + String cypher = "MATCH (s)-[r]->(t) WHERE elementId(r) = $edgeId RETURN r, s, t"; + LOGGER.fine(() -> "Find edge with ID: " + id); + try (Transaction tx = session.beginTransaction()) { + var result = tx.run(cypher, Values.parameters("edgeId", id)); + if (result.hasNext()) { + LOGGER.fine(() -> "Found edge with ID: " + id); + var record = result.next(); + var relationship = record.get("r").asRelationship(); + + var sourceNode = record.get("s").asNode(); + var targetNode = record.get("t").asNode(); + var sourceEntity = extractEntity(sourceNode.labels().iterator().next(), record, true); + var targetEntity = extractEntity(targetNode.labels().iterator().next(), record, true); + Map properties = relationship.asMap(); + return Optional.of(new Neo4jCommunicationEdge(relationship.elementId(), sourceEntity, targetEntity, relationship.type(), properties)); + } + } return Optional.empty(); } @Override public CommunicationEdge edge(CommunicationEntity source, String label, CommunicationEntity target, Map properties) { - return null; - } + Objects.requireNonNull(source, "Source entity is required"); + Objects.requireNonNull(target, "Target entity is required"); + Objects.requireNonNull(label, "Relationship type is required"); + Objects.requireNonNull(properties, "Properties map is required"); + String cypher = "MATCH (s) WHERE elementId(s) = $sourceElementId " + + "MATCH (t) WHERE elementId(t) = $targetElementId " + + "CREATE (s)-[r:" + label + " $props]->(t) RETURN r"; + LOGGER.fine(() -> "Creating edge with label: " + label); + try (Transaction tx = session.beginTransaction()) { + var sourceId = source.find(ID).orElseThrow(() -> + new EdgeCommunicationException("The source entity should have the " + ID + " property")).get(); + var targetId = target.find(ID).orElseThrow(() -> + new EdgeCommunicationException("The target entity should have the " + ID + " property")).get(); + + var result = tx.run(cypher, Values.parameters( + "sourceElementId", sourceId, + "targetElementId", targetId, + "props", properties + )); + + var relationship = result.single().get("r").asRelationship(); + LOGGER.fine(() -> "Created edge with ID: " + relationship.elementId()); + tx.commit(); + return new Neo4jCommunicationEdge(relationship.elementId(), source, target, label, properties); + } + } @Override public void close() { diff --git a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4jCommunicationEdge.java b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4jCommunicationEdge.java new file mode 100644 index 000000000..c668224d0 --- /dev/null +++ b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4jCommunicationEdge.java @@ -0,0 +1,25 @@ +/* + * + * Copyright (c) 2025 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.neo4j.communication; + +import org.eclipse.jnosql.communication.graph.CommunicationEdge; +import org.eclipse.jnosql.communication.semistructured.CommunicationEntity; + +import java.util.Map; + +record Neo4jCommunicationEdge(Object id, CommunicationEntity source, CommunicationEntity target, String label, Map properties) implements CommunicationEdge { +} From d170c8d614b4fd041c3b0de5373643b4cac16a21 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 19:32:36 +0000 Subject: [PATCH 05/43] feat: implement neo4j database manager Signed-off-by: Otavio Santana --- .../DefaultNeo4JDatabaseManager.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java index 8e38c344a..0a80496c9 100644 --- a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java +++ b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java @@ -294,10 +294,13 @@ public CommunicationEdge edge(CommunicationEntity source, String label, Communic Objects.requireNonNull(label, "Relationship type is required"); Objects.requireNonNull(properties, "Properties map is required"); + source = ensureEntityExists(source); + target = ensureEntityExists(target); + String cypher = "MATCH (s) WHERE elementId(s) = $sourceElementId " + "MATCH (t) WHERE elementId(t) = $targetElementId " + "CREATE (s)-[r:" + label + " $props]->(t) RETURN r"; - LOGGER.fine(() -> "Creating edge with label: " + label); + try (Transaction tx = session.beginTransaction()) { var sourceId = source.find(ID).orElseThrow(() -> new EdgeCommunicationException("The source entity should have the " + ID + " property")).get(); @@ -313,10 +316,25 @@ public CommunicationEdge edge(CommunicationEntity source, String label, Communic var relationship = result.single().get("r").asRelationship(); LOGGER.fine(() -> "Created edge with ID: " + relationship.elementId()); tx.commit(); + return new Neo4jCommunicationEdge(relationship.elementId(), source, target, label, properties); } } + private CommunicationEntity ensureEntityExists(CommunicationEntity entity) { + return entity.find(ID).filter(this::entityExists).map(id -> entity).orElseGet(() -> insert(entity)); + } + + private boolean entityExists(Object id) { + String cypher = "MATCH (e) WHERE elementId(e) = $id RETURN count(e) > 0 AS exists"; + try (Transaction tx = session.beginTransaction()) { + var result = tx.run(cypher, Values.parameters("id", id)); + var exists = result.single().get("exists").asBoolean(); + LOGGER.fine(() -> "Checking if entity exists with ID: " + id + " result: " + exists); + return exists; + } + } + @Override public void close() { LOGGER.fine("Closing the Neo4J session, the database name is: " + database); From e1c433833050aa817292b5c74abdd1114d8e09f2 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 19:38:11 +0000 Subject: [PATCH 06/43] tet: create neojdatabase Signed-off-by: Otavio Santana --- .../DefaultNeo4JDatabaseManager.java | 4 +- .../Neo4JDatabaseManagerTest.java | 57 +++++++++++++++++++ 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java index 0a80496c9..c1b773cf9 100644 --- a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java +++ b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/communication/DefaultNeo4JDatabaseManager.java @@ -325,10 +325,10 @@ private CommunicationEntity ensureEntityExists(CommunicationEntity entity) { return entity.find(ID).filter(this::entityExists).map(id -> entity).orElseGet(() -> insert(entity)); } - private boolean entityExists(Object id) { + private boolean entityExists(Element id) { String cypher = "MATCH (e) WHERE elementId(e) = $id RETURN count(e) > 0 AS exists"; try (Transaction tx = session.beginTransaction()) { - var result = tx.run(cypher, Values.parameters("id", id)); + var result = tx.run(cypher, Values.parameters("id", id.get())); var exists = result.single().get("exists").asBoolean(); LOGGER.fine(() -> "Checking if entity exists with ID: " + id + " result: " + exists); return exists; diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java index b3c866d69..8454bd747 100644 --- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java +++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java @@ -562,6 +562,63 @@ void shouldRemoveEdge() { }); } + @Test + void shouldDeleteEdgeById() { + var person1 = entityManager.insert(getEntity()); + var person2 = entityManager.insert(getEntity()); + + var edge = entityManager.edge(person1, "FRIEND", person2, Map.of("since", 2020)); + + var edgeId = edge.id(); + + entityManager.deleteEdge(edgeId); + + String cypher = "MATCH ()-[r]-() WHERE elementId(r) = $id RETURN r"; + Map parameters = Map.of("id", edgeId); + + var result = entityManager.executeQuery(cypher, parameters).toList(); + SoftAssertions.assertSoftly(softly -> { + softly.assertThat(result).isEmpty(); + }); + } + + @Test + void shouldFindEdgeById() { + var person1 = entityManager.insert(getEntity()); + var person2 = entityManager.insert(getEntity()); + + var edge = entityManager.edge(person1, "FRIEND", person2, Map.of("since", 2020)); + + var edgeId = edge.id(); + + var retrievedEdge = entityManager.findEdgeById(edgeId); + + SoftAssertions.assertSoftly(softly -> { + softly.assertThat(retrievedEdge).isPresent(); + softly.assertThat(retrievedEdge.get().label()).isEqualTo("FRIEND"); + softly.assertThat(retrievedEdge.get().properties()).containsEntry("since", 2020); + }); + } + + @Test + void shouldCreateEdgeWithProperties() { + var person1 = entityManager.insert(getEntity()); + var person2 = entityManager.insert(getEntity()); + + Map properties = Map.of("since", 2019, "strength", "strong"); + var edge = entityManager.edge(person1, "FRIEND", person2, properties); + + String cypher = "MATCH (p1:person)-[r:FRIEND]-(p2:person) " + + "WHERE elementId(r) = $edgeId RETURN r"; + Map parameters = Map.of("edgeId", edge.id()); + + var result = entityManager.executeQuery(cypher, parameters).toList(); + SoftAssertions.assertSoftly(softly -> { + softly.assertThat(result).isNotEmpty(); + softly.assertThat(edge.properties()).containsEntry("since", 2019); + softly.assertThat(edge.properties()).containsEntry("strength", "strong"); + }); + } private CommunicationEntity getEntity() { Faker faker = new Faker(); From cc6865c122360a0395a0dae489e488960a5b7b50 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 19:38:50 +0000 Subject: [PATCH 07/43] test: update test scenarion Signed-off-by: Otavio Santana --- .../databases/neo4j/communication/Neo4JDatabaseManagerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java index 8454bd747..a15b87577 100644 --- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java +++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java @@ -596,7 +596,7 @@ void shouldFindEdgeById() { SoftAssertions.assertSoftly(softly -> { softly.assertThat(retrievedEdge).isPresent(); softly.assertThat(retrievedEdge.get().label()).isEqualTo("FRIEND"); - softly.assertThat(retrievedEdge.get().properties()).containsEntry("since", 2020); + softly.assertThat(retrievedEdge.get().properties()).containsEntry("since", 2020L); }); } From 74092302051e30c9bf1ff3be50664c7fd2b9b43d Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 19:39:33 +0000 Subject: [PATCH 08/43] feat: update neo4j configuration Signed-off-by: Otavio Santana --- .../jnosql/databases/neo4j/mapping/DefaultNeo4JTemplate.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplate.java b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplate.java index 4bb80a618..766ac71ee 100644 --- a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplate.java +++ b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplate.java @@ -23,8 +23,8 @@ import org.eclipse.jnosql.communication.semistructured.DatabaseManager; import org.eclipse.jnosql.databases.neo4j.communication.Neo4JDatabaseManager; import org.eclipse.jnosql.mapping.core.Converters; +import org.eclipse.jnosql.mapping.graph.AbstractGraphTemplate; import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata; -import org.eclipse.jnosql.mapping.semistructured.AbstractSemiStructuredTemplate; import org.eclipse.jnosql.mapping.semistructured.EntityConverter; import org.eclipse.jnosql.mapping.semistructured.EventPersistManager; @@ -36,7 +36,7 @@ @ApplicationScoped @Typed(Neo4JTemplate.class) -class DefaultNeo4JTemplate extends AbstractSemiStructuredTemplate implements Neo4JTemplate { +class DefaultNeo4JTemplate extends AbstractGraphTemplate implements Neo4JTemplate { private static final Logger LOGGER = Logger.getLogger(DefaultNeo4JTemplate.class.getName()); From c9942c599ffba161ac795b0be6e75aedb27c0b89 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 19:40:38 +0000 Subject: [PATCH 09/43] feat: remove edge record Signed-off-by: Otavio Santana --- .../jnosql/databases/neo4j/mapping/Edge.java | 98 ------------------- .../neo4j/mapping/Neo4JTemplate.java | 49 ---------- 2 files changed, 147 deletions(-) delete mode 100644 jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Edge.java diff --git a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Edge.java b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Edge.java deleted file mode 100644 index ba61cdf51..000000000 --- a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Edge.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * - * Copyright (c) 2025 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.neo4j.mapping; - -import java.util.Objects; - -/** - * Represents an edge in a graph database, linking a source entity to a target entity - * through a specified relationship type. - * - *

This class models relationships between nodes in a Neo4J database, where each - * edge is defined by a source node, a target node, and a relationship type.

- * - *

Edges are immutable and ensure that a valid relationship exists between two entities.

- * - * @param The entity type representing the source node. - * @param The entity type representing the target node. - */ -public class Edge { - - private final T source; - private final E target; - private final String relationship; - - private Edge(T source, E target, String relationship) { - this.source = source; - this.target = target; - this.relationship = relationship; - } - - /** - * Retrieves the source entity of the edge. - * - * @return The source entity. - */ - public T source() { - return source; - } - - /** - * Retrieves the target entity of the edge. - * - * @return The target entity. - */ - public E target() { - return target; - } - - /** - * Retrieves the relationship type of the edge. - * - * @return The relationship type. - */ - public String relationship() { - return relationship; - } - - @Override - public boolean equals(Object o) { - if (o == null || getClass() != o.getClass()) { - return false; - } - Edge edge = (Edge) o; - return Objects.equals(source, edge.source) && Objects.equals(target, edge.target) && Objects.equals(relationship, edge.relationship); - } - - @Override - public int hashCode() { - return Objects.hash(source, target, relationship); - } - - @Override - public String toString() { - return "Edge{" + - "source=" + source + - ", target=" + target + - ", relationship='" + relationship + '\'' + - '}'; - } - - static Edge of(T source, String relationship, E target) { - return new Edge<>(source, target, relationship); - } -} diff --git a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4JTemplate.java b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4JTemplate.java index 084ca0355..26cfff068 100644 --- a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4JTemplate.java +++ b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4JTemplate.java @@ -65,53 +65,4 @@ public interface Neo4JTemplate extends SemiStructuredTemplate { */ Stream traverse(String startNodeId, Supplier relationship, int depth); - /** - * Creates an edge between two entities with the specified relationship type. - * - * @param source The source entity. - * @param relationshipType The relationship type to establish. - * @param target The target entity. - * @param The entity type representing the source node. - * @param The entity type representing the target node. - * @return The created {@link Edge} representing the relationship. - * @throws NullPointerException if {@code source}, {@code relationshipType}, or {@code target} is null. - */ - Edge edge(T source, String relationshipType, E target); - - /** - * Creates an edge between two entities using a dynamically provided relationship type. - * - * @param source The source entity. - * @param relationship A supplier providing the relationship type dynamically. - * @param target The target entity. - * @param The entity type representing the source node. - * @param The entity type representing the target node. - * @return The created {@link Edge} representing the relationship. - * @throws NullPointerException if {@code source}, {@code relationship}, or {@code target} is null. - */ - Edge edge(T source, Supplier relationship, E target); - - /** - * Removes an edge between two entities with the specified relationship type. - * - * @param source The source entity. - * @param relationshipType The relationship type to remove. - * @param target The target entity. - * @param The entity type representing the source node. - * @param The entity type representing the target node. - * @throws NullPointerException if {@code source}, {@code relationshipType}, or {@code target} is null. - */ - void remove(T source, String relationshipType, E target); - - /** - * Removes an edge between two entities using a dynamically provided relationship type. - * - * @param source The source entity. - * @param relationship A supplier providing the relationship type dynamically. - * @param target The target entity. - * @param The entity type representing the source node. - * @param The entity type representing the target node. - * @throws NullPointerException if {@code source}, {@code relationship}, or {@code target} is null. - */ - void remove(T source, Supplier relationship, E target); } From 78ccd0c6f8458b1ed3f022108104d0876473e162 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 19:42:11 +0000 Subject: [PATCH 10/43] feat: update neo4j template Signed-off-by: Otavio Santana --- .../neo4j/mapping/DefaultNeo4JTemplate.java | 74 +------------------ 1 file changed, 2 insertions(+), 72 deletions(-) diff --git a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplate.java b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplate.java index 766ac71ee..9046753f5 100644 --- a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplate.java +++ b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplate.java @@ -20,7 +20,7 @@ import jakarta.enterprise.inject.Instance; import jakarta.enterprise.inject.Typed; import jakarta.inject.Inject; -import org.eclipse.jnosql.communication.semistructured.DatabaseManager; +import org.eclipse.jnosql.communication.graph.GraphDatabaseManager; import org.eclipse.jnosql.databases.neo4j.communication.Neo4JDatabaseManager; import org.eclipse.jnosql.mapping.core.Converters; import org.eclipse.jnosql.mapping.graph.AbstractGraphTemplate; @@ -31,15 +31,12 @@ import java.util.Map; import java.util.Objects; import java.util.function.Supplier; -import java.util.logging.Logger; import java.util.stream.Stream; @ApplicationScoped @Typed(Neo4JTemplate.class) class DefaultNeo4JTemplate extends AbstractGraphTemplate implements Neo4JTemplate { - private static final Logger LOGGER = Logger.getLogger(DefaultNeo4JTemplate.class.getName()); - private Instance manager; private EntityConverter converter; @@ -90,80 +87,13 @@ public Stream traverse(String startNodeId, String relationship, int depth .map(e -> (T) converter.toEntity(e)); } - @Override - public Edge edge(T source, Supplier relationship, E target) { - Objects.requireNonNull(source, "source is required"); - Objects.requireNonNull(relationship, "relationship is required"); - Objects.requireNonNull(target, "target is required"); - return edge(source, relationship.get(), target); - } - - @SuppressWarnings("unchecked") - @Override - public Edge edge(T source, String relationshipType, E target) { - Objects.requireNonNull(relationshipType, "relationshipType is required"); - Objects.requireNonNull(source, "source is required"); - Objects.requireNonNull(target, "target is required"); - - T findSource = this.find((Class)source.getClass(), source).orElseGet(() ->{ - LOGGER.fine("There is not entity to source: " + source + " inserting the entity"); - return this.insert(source); - }); - - E findTarget = this.find((Class)target.getClass(), source).orElseGet(() ->{ - LOGGER.fine("There is not entity to target: " + target + " inserting the entity"); - return this.insert(target); - }); - - var sourceCommunication = this.converter.toCommunication(findSource); - var targetCommunication = this.converter.toCommunication(findTarget); - LOGGER.fine(() -> "creating an edge from " + sourceCommunication + " to " + targetCommunication + " with the relationship: " + relationshipType); - manager.get().edge(sourceCommunication, relationshipType, targetCommunication); - return Edge.of(findSource, relationshipType, findTarget); - } - - - - @Override - public void remove(T source, Supplier relationship, E target) { - Objects.requireNonNull(source, "source is required"); - Objects.requireNonNull(relationship, "relationship is required"); - Objects.requireNonNull(target, "target is required"); - this.remove(source, relationship.get(), target); - } - - @SuppressWarnings("unchecked") - @Override - public void remove(T source, String relationshipType, E target) { - Objects.requireNonNull(source, "source is required"); - Objects.requireNonNull(relationshipType, "relationshipType is required"); - Objects.requireNonNull(target, "target is required"); - - T findSource = this.find((Class)source.getClass(), source).orElseGet(() ->{ - LOGGER.fine("There is not entity to source: " + source + " inserting the entity"); - return this.insert(source); - }); - - E findTarget = this.find((Class)target.getClass(), source).orElseGet(() ->{ - LOGGER.fine("There is not entity to target: " + target + " inserting the entity"); - return this.insert(target); - }); - - var sourceCommunication = this.converter.toCommunication(findSource); - var targetCommunication = this.converter.toCommunication(findTarget); - - LOGGER.fine(() -> "removing an edge from " + sourceCommunication + " to " + targetCommunication + " with the relationship: " + relationshipType); - manager.get().remove(sourceCommunication, relationshipType, targetCommunication); - - } - @Override protected EntityConverter converter() { return converter; } @Override - protected DatabaseManager manager() { + protected GraphDatabaseManager manager() { return manager.get(); } From 285e0a895c21d8c015fa413d7938faec3d45f689 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 19:43:03 +0000 Subject: [PATCH 11/43] feat: update tet on neo4j Signed-off-by: Otavio Santana --- .../mapping/DefaultNeo4JTemplateTest.java | 64 +------------------ 1 file changed, 3 insertions(+), 61 deletions(-) diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplateTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplateTest.java index 771360bb8..2397f7720 100644 --- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplateTest.java +++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplateTest.java @@ -18,7 +18,6 @@ import jakarta.enterprise.inject.Instance; import jakarta.inject.Inject; -import net.datafaker.Faker; import org.eclipse.jnosql.communication.semistructured.CommunicationEntity; import org.eclipse.jnosql.communication.semistructured.Element; import org.eclipse.jnosql.databases.neo4j.communication.Neo4JDatabaseManager; @@ -33,21 +32,15 @@ import org.jboss.weld.junit5.auto.EnableAutoWeld; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.mockito.Mockito; import java.util.Collections; import java.util.Map; -import java.util.UUID; -import java.util.function.Supplier; import java.util.stream.Stream; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doNothing; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -100,55 +93,4 @@ void shouldThrowExceptionWhenQueryIsNull() { assertThrows(NullPointerException.class, () -> template.cypher(null, Collections.emptyMap())); assertThrows(NullPointerException.class, () -> template.cypher("MATCH (n) RETURN n", null)); } - - @Test - void shouldCreateEdge() { - var faker = new Faker(); - Music source = new Music(UUID.randomUUID().toString(), faker.funnyName().name(), 10); - Music target = new Music(UUID.randomUUID().toString(), faker.funnyName().name(), 15); - String relationshipType = "FRIENDS"; - Edge edge = Edge.of(source, relationshipType, target); - - - Mockito.when(manager.insert(Mockito.any(CommunicationEntity.class))).thenAnswer(invocation -> invocation.getArgument(0)); - - Edge result = template.edge(source, relationshipType, target); - - assertNotNull(result); - assertEquals(edge, result); - verify(manager).edge(any(), eq(relationshipType), any()); - } - - @Test - void shouldThrowExceptionWhenCreatingEdgeWithNullValues() { - var faker = new Faker(); - Music source = new Music(UUID.randomUUID().toString(), faker.funnyName().name(), 10); - Music target = new Music(UUID.randomUUID().toString(), faker.funnyName().name(), 15); - assertThrows(NullPointerException.class, () -> template.edge(null, "FRIENDS", target)); - assertThrows(NullPointerException.class, () -> template.edge(source, (Supplier) null, target)); - assertThrows(NullPointerException.class, () -> template.edge(source, "FRIENDS", null)); - } - - @Test - void shouldRemoveEdge() { - var faker = new Faker(); - Music source = new Music(UUID.randomUUID().toString(), faker.funnyName().name(), 10); - Music target = new Music(UUID.randomUUID().toString(), faker.funnyName().name(), 15); - String relationshipType = "FRIENDS"; - - doNothing().when(manager).remove(any(), anyString(), any()); - Mockito.when(manager.insert(Mockito.any(CommunicationEntity.class))).thenAnswer(invocation -> invocation.getArgument(0)); - template.remove(source, relationshipType, target); - verify(manager).remove(any(), eq(relationshipType), any()); - } - - @Test - void shouldThrowExceptionWhenRemovingEdgeWithNullValues() { - var faker = new Faker(); - Music source = new Music(UUID.randomUUID().toString(), faker.funnyName().name(), 10); - Music target = new Music(UUID.randomUUID().toString(), faker.funnyName().name(), 15); - assertThrows(NullPointerException.class, () -> template.remove(null, "FRIENDS", target)); - assertThrows(NullPointerException.class, () -> template.remove(source, (String) null, target)); - assertThrows(NullPointerException.class, () -> template.remove(source, "FRIENDS", null)); - } } \ No newline at end of file From a0ffa1109a8c0701e7df59a72bc82e54f04d3733 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 19:51:37 +0000 Subject: [PATCH 12/43] feat: update neoj4 to extends neo4j Signed-off-by: Otavio Santana --- .../jnosql/databases/neo4j/mapping/Neo4JTemplate.java | 4 ++-- .../neo4j/integration/TemplateIntegrationTest.java | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4JTemplate.java b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4JTemplate.java index 26cfff068..1ca2177d4 100644 --- a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4JTemplate.java +++ b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4JTemplate.java @@ -16,7 +16,7 @@ */ package org.eclipse.jnosql.databases.neo4j.mapping; -import org.eclipse.jnosql.mapping.semistructured.SemiStructuredTemplate; +import org.eclipse.jnosql.mapping.graph.GraphTemplate; import java.util.Map; import java.util.function.Supplier; @@ -29,7 +29,7 @@ * traversing relationships, and handling edges between entities. * */ -public interface Neo4JTemplate extends SemiStructuredTemplate { +public interface Neo4JTemplate extends GraphTemplate { /** * Executes a Cypher query and returns a stream of results mapped to the given entity type. * diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java index 85cfe17af..e8dbec082 100644 --- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java +++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java @@ -21,6 +21,7 @@ import org.eclipse.jnosql.mapping.Database; import org.eclipse.jnosql.mapping.core.Converters; import org.eclipse.jnosql.mapping.core.spi.EntityMetadataExtension; +import org.eclipse.jnosql.mapping.graph.Edge; import org.eclipse.jnosql.mapping.reflection.Reflections; import org.eclipse.jnosql.mapping.semistructured.EntityConverter; import org.jboss.weld.junit5.auto.AddExtensions; @@ -110,4 +111,12 @@ void shouldDeleteAll(){ template.delete(Magazine.class).execute(); assertThat(template.select(Magazine.class).result()).isEmpty(); } + + @Test + void shouldCreateEdge() { + Magazine firstEdition = template.insert(new Magazine(null, "Effective Java", 1)); + Magazine secondEdition = template.insert(new Magazine(null, "Effective Java", 2)); + Edge edge = Edge.source(firstEdition).label("NEXT").target(secondEdition).property("year", 2025).build(); + template.edge(edge); + } } From 3d326470cf485bfd4f0e3045a2ef302605fac9f2 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 20:05:39 +0000 Subject: [PATCH 13/43] test: create template integration Signed-off-by: Otavio Santana --- .../integration/TemplateIntegrationTest.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java index e8dbec082..3cb7f4c7b 100644 --- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java +++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java @@ -15,6 +15,7 @@ package org.eclipse.jnosql.databases.neo4j.integration; import jakarta.inject.Inject; +import org.assertj.core.api.SoftAssertions; import org.eclipse.jnosql.databases.neo4j.communication.DatabaseContainer; import org.eclipse.jnosql.databases.neo4j.communication.Neo4JConfigurations; import org.eclipse.jnosql.databases.neo4j.mapping.Neo4JTemplate; @@ -117,6 +118,32 @@ void shouldCreateEdge() { Magazine firstEdition = template.insert(new Magazine(null, "Effective Java", 1)); Magazine secondEdition = template.insert(new Magazine(null, "Effective Java", 2)); Edge edge = Edge.source(firstEdition).label("NEXT").target(secondEdition).property("year", 2025).build(); - template.edge(edge); + Edge magazineEdge = template.edge(edge); + + SoftAssertions.assertSoftly(soft -> { + soft.assertThat(magazineEdge.source()).isEqualTo(firstEdition); + soft.assertThat(magazineEdge.target()).isEqualTo(secondEdition); + soft.assertThat(magazineEdge.label()).isEqualTo("NEXT"); + soft.assertThat(magazineEdge.property("year", Integer.class)).contains(2025); + soft.assertThat(magazineEdge.id()).isPresent(); + }); + } + + @Test + void shouldCreateEdgeFromNullId() { + Magazine firstEdition = new Magazine(null, "Effective Java", 1); + Magazine secondEdition = new Magazine(null, "Effective Java", 2); + Edge edge = Edge.source(firstEdition).label("NEXT").target(secondEdition).property("year", 2025).build(); + Edge magazineEdge = template.edge(edge); + + SoftAssertions.assertSoftly(soft -> { + soft.assertThat(magazineEdge.source()).isNotNull(); + soft.assertThat(magazineEdge.source().id()).isNotNull(); + soft.assertThat(magazineEdge.target()).isNotNull(); + soft.assertThat(magazineEdge.target().id()).isNotNull(); + soft.assertThat(magazineEdge.label()).isEqualTo("NEXT"); + soft.assertThat(magazineEdge.property("year", Integer.class)).contains(2025); + soft.assertThat(magazineEdge.id()).isPresent(); + }); } } From 0fe1e0f9fe959b12aa60db4aae87c94e3571c412 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 20:06:58 +0000 Subject: [PATCH 14/43] chore: update graph at tinkerpop Signed-off-by: Otavio Santana --- jnosql-tinkerpop/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jnosql-tinkerpop/pom.xml b/jnosql-tinkerpop/pom.xml index ea2855b4f..c993f6c09 100644 --- a/jnosql-tinkerpop/pom.xml +++ b/jnosql-tinkerpop/pom.xml @@ -37,7 +37,7 @@ org.eclipse.jnosql.mapping - jnosql-mapping-semistructured + jnosql-mapping-graph ${project.version} From 471725bd5f65a41f85dfc55fc34746ab82df1c51 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 20:10:21 +0000 Subject: [PATCH 15/43] feat: update package manage Signed-off-by: Otavio Santana --- .../communication/CommunicationEntityConverter.java | 2 +- ...ava => DefaultTinkerpopGraphDatabaseManager.java} | 6 +++--- ...nager.java => TinkerpopGraphDatabaseManager.java} | 7 ++++--- .../tinkerpop/communication/package-info.java | 2 +- .../tinkerpop/mapping/AbstractGraphTemplate.java | 8 ++++---- .../tinkerpop/mapping/DefaultGraphTemplate.java | 8 ++++---- .../tinkerpop/mapping/GraphTemplateProducer.java | 8 ++++---- ...=> DefaultTinkerpopGraphDatabaseManagerTest.java} | 12 ++++++------ 8 files changed, 27 insertions(+), 26 deletions(-) rename jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/{DefaultGraphDatabaseManager.java => DefaultTinkerpopGraphDatabaseManager.java} (96%) rename jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/{GraphDatabaseManager.java => TinkerpopGraphDatabaseManager.java} (87%) rename jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/{DefaultGraphDatabaseManagerTest.java => DefaultTinkerpopGraphDatabaseManagerTest.java} (97%) 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 116c7f151..0396463db 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 @@ -27,7 +27,7 @@ public enum CommunicationEntityConverter implements Function entity.add(p.key(), p.value())); - entity.add(DefaultGraphDatabaseManager.ID_PROPERTY, vertex.id()); + entity.add(DefaultTinkerpopGraphDatabaseManager.ID_PROPERTY, vertex.id()); return entity; } } diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultGraphDatabaseManager.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManager.java similarity index 96% rename from jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultGraphDatabaseManager.java rename to jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManager.java index d1eb5ee04..fbfa6b6fc 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultGraphDatabaseManager.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManager.java @@ -33,7 +33,7 @@ import static org.apache.tinkerpop.gremlin.process.traversal.Order.desc; /** - * Default implementation of {@link GraphDatabaseManager} that serves as an adapter to the TinkerPop + * Default implementation of {@link TinkerpopGraphDatabaseManager} that serves as an adapter to the TinkerPop * graph database provided by the Apache TinkerPop framework. *

* This implementation wraps a TinkerPop {@link Graph} instance and provides methods to interact with @@ -44,12 +44,12 @@ * as indicated by the UnsupportedOperationException thrown by those methods. *

*/ -public class DefaultGraphDatabaseManager implements GraphDatabaseManager { +public class DefaultTinkerpopGraphDatabaseManager implements TinkerpopGraphDatabaseManager { public static final String ID_PROPERTY = "_id"; private final Graph graph; - DefaultGraphDatabaseManager(Graph graph) { + DefaultTinkerpopGraphDatabaseManager(Graph graph) { this.graph = graph; } diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/GraphDatabaseManager.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopGraphDatabaseManager.java similarity index 87% rename from jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/GraphDatabaseManager.java rename to jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopGraphDatabaseManager.java index 19f9415ee..ddaf5d175 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/GraphDatabaseManager.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.eclipse.jnosql.communication.graph.GraphDatabaseManager; import org.eclipse.jnosql.communication.semistructured.DatabaseManager; import java.util.Objects; @@ -32,7 +33,7 @@ * also act as suppliers of the underlying {@link org.apache.tinkerpop.gremlin.structure.Graph} instance. *

*/ -public interface GraphDatabaseManager extends DatabaseManager, Supplier { +public interface TinkerpopGraphDatabaseManager extends GraphDatabaseManager, Supplier { /** * Creates a new instance of DefaultGraphDatabaseManager with the specified TinkerPop Graph. @@ -41,8 +42,8 @@ public interface GraphDatabaseManager extends DatabaseManager, Supplier { * @return a new DefaultGraphDatabaseManager instance * @throws NullPointerException if the graph parameter is null */ - static GraphDatabaseManager of(Graph graph) { + static TinkerpopGraphDatabaseManager of(Graph graph) { Objects.requireNonNull(graph, "graph is required"); - return new DefaultGraphDatabaseManager(graph); + return new DefaultTinkerpopGraphDatabaseManager(graph); } } diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/package-info.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/package-info.java index bcd663d8e..948c89eab 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/package-info.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/package-info.java @@ -18,7 +18,7 @@ * in the JNoSQL project. It contains interfaces, classes, and utilities that enable developers to * communicate with and manage graph databases. *

- * The core interface in this package is {@link org.eclipse.jnosql.databases.tinkerpop.communication.GraphDatabaseManager}, + * The core interface in this package is {@link org.eclipse.jnosql.databases.tinkerpop.communication.TinkerpopGraphDatabaseManager}, * which extends {@link org.eclipse.jnosql.communication.semistructured.DatabaseManager} * and acts as a specialized extension for managing graph databases. Implementations of this interface * provide methods for interacting with the underlying graph database, executing graph traversals, diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractGraphTemplate.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractGraphTemplate.java index 2b49f6218..3c149a999 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractGraphTemplate.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractGraphTemplate.java @@ -25,7 +25,7 @@ import org.apache.tinkerpop.gremlin.structure.Transaction; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.eclipse.jnosql.databases.tinkerpop.communication.CommunicationEntityConverter; -import org.eclipse.jnosql.databases.tinkerpop.communication.GraphDatabaseManager; +import org.eclipse.jnosql.databases.tinkerpop.communication.TinkerpopGraphDatabaseManager; import org.eclipse.jnosql.databases.tinkerpop.communication.GraphTransactionUtil; import org.eclipse.jnosql.mapping.IdNotFoundException; import org.eclipse.jnosql.mapping.PreparedStatement; @@ -62,11 +62,11 @@ abstract class AbstractGraphTemplate extends AbstractSemiStructuredTemplate impl /** - * Retrieves the {@link GraphDatabaseManager} associated with this graph template. + * Retrieves the {@link TinkerpopGraphDatabaseManager} associated with this graph template. * - * @return the {@link GraphDatabaseManager} associated with this graph template + * @return the {@link TinkerpopGraphDatabaseManager} associated with this graph template */ - protected abstract GraphDatabaseManager manager(); + protected abstract TinkerpopGraphDatabaseManager manager(); /** * Retrieves the {@link GraphTraversalSource} associated with this graph template. diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTemplate.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTemplate.java index eefe02480..201cd1a2e 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTemplate.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTemplate.java @@ -19,7 +19,7 @@ import jakarta.inject.Inject; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.structure.Graph; -import org.eclipse.jnosql.databases.tinkerpop.communication.GraphDatabaseManager; +import org.eclipse.jnosql.databases.tinkerpop.communication.TinkerpopGraphDatabaseManager; import org.eclipse.jnosql.mapping.Database; import org.eclipse.jnosql.mapping.core.Converters; import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata; @@ -34,7 +34,7 @@ class DefaultGraphTemplate extends AbstractGraphTemplate { private EntityConverter converter; - private GraphDatabaseManager manager; + private TinkerpopGraphDatabaseManager manager; private EventPersistManager eventManager; private EntitiesMetadata entities; private Converters converters; @@ -49,7 +49,7 @@ class DefaultGraphTemplate extends AbstractGraphTemplate { this.eventManager = eventManager; this.entities = entities; this.converters = converters; - this.manager = GraphDatabaseManager.of(graph); + this.manager = TinkerpopGraphDatabaseManager.of(graph); } /** @@ -64,7 +64,7 @@ protected EntityConverter converter() { } @Override - protected GraphDatabaseManager manager() { + protected TinkerpopGraphDatabaseManager manager() { return manager; } diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateProducer.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateProducer.java index 37a4ee1c5..9f1c219f0 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateProducer.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateProducer.java @@ -20,7 +20,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.structure.Graph; import org.eclipse.jnosql.communication.semistructured.DatabaseManager; -import org.eclipse.jnosql.databases.tinkerpop.communication.GraphDatabaseManager; +import org.eclipse.jnosql.databases.tinkerpop.communication.TinkerpopGraphDatabaseManager; import org.eclipse.jnosql.mapping.core.Converters; import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata; import org.eclipse.jnosql.mapping.semistructured.EntityConverter; @@ -70,14 +70,14 @@ static class ProducerGraphTemplate extends AbstractGraphTemplate { private final Graph graph; - private final GraphDatabaseManager manager; + private final TinkerpopGraphDatabaseManager manager; public ProducerGraphTemplate(EntityConverter converter, Graph graph, EventPersistManager eventManager, EntitiesMetadata entities, Converters converters) { this.converter = converter; this.graph = graph; - this.manager = GraphDatabaseManager.of(graph); + this.manager = TinkerpopGraphDatabaseManager.of(graph); this.eventManager = eventManager; this.entities = entities; this.converters = converters; @@ -93,7 +93,7 @@ protected EntityConverter converter() { } @Override - protected GraphDatabaseManager manager() { + protected TinkerpopGraphDatabaseManager manager() { return manager; } diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultGraphDatabaseManagerTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManagerTest.java similarity index 97% rename from jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultGraphDatabaseManagerTest.java rename to jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManagerTest.java index a5f5d954f..e1f17fc97 100644 --- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultGraphDatabaseManagerTest.java +++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManagerTest.java @@ -44,18 +44,18 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -class DefaultGraphDatabaseManagerTest { +class DefaultTinkerpopGraphDatabaseManagerTest { public static final String COLLECTION_NAME = "person"; - private GraphDatabaseManager entityManager; + private TinkerpopGraphDatabaseManager entityManager; private final Faker faker = new Faker(); @BeforeEach void setUp(){ Graph graph = GraphSupplier.INSTANCE.get(); - this.entityManager = GraphDatabaseManager.of(graph); + this.entityManager = TinkerpopGraphDatabaseManager.of(graph); } @BeforeEach @@ -76,7 +76,7 @@ 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(DefaultGraphDatabaseManager.ID_PROPERTY)).isPresent(); + softly.assertThat(communicationEntity.find(DefaultTinkerpopGraphDatabaseManager.ID_PROPERTY)).isPresent(); }); } @@ -102,11 +102,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(DefaultGraphDatabaseManager.ID_PROPERTY)).isPresent(); + softly.assertThat(communicationEntities.get(0).find(DefaultTinkerpopGraphDatabaseManager.ID_PROPERTY)).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(DefaultGraphDatabaseManager.ID_PROPERTY)).isPresent(); + softly.assertThat(communicationEntities.get(1).find(DefaultTinkerpopGraphDatabaseManager.ID_PROPERTY)).isPresent(); }); } From bed52abe0d1886f4636af0967b5c92cd8c457cbc Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 20:11:45 +0000 Subject: [PATCH 16/43] feat: generate tinkerpop communication edge Signed-off-by: Otavio Santana --- .../DefaultTinkerpopGraphDatabaseManager.java | 23 +++++++++++++++++ .../TinkerpopCommunicationEdge.java | 25 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopCommunicationEdge.java 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 fbfa6b6fc..6c8c572ce 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 @@ -20,13 +20,16 @@ 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.SelectQuery; import java.time.Duration; import java.util.Iterator; +import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.stream.Stream; import static org.apache.tinkerpop.gremlin.process.traversal.Order.asc; @@ -167,4 +170,24 @@ public void close() { throw new CommunicationException("There is an issue when close the Graph connection", e); } } + + @Override + public CommunicationEdge edge(CommunicationEntity source, String label, CommunicationEntity target, Map properties) { + return null; + } + + @Override + public void remove(CommunicationEntity source, String label, CommunicationEntity target) { + + } + + @Override + public void deleteEdge(K id) { + + } + + @Override + public Optional findEdgeById(K id) { + return Optional.empty(); + } } diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopCommunicationEdge.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopCommunicationEdge.java new file mode 100644 index 000000000..162879c55 --- /dev/null +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/TinkerpopCommunicationEdge.java @@ -0,0 +1,25 @@ +/* + * + * Copyright (c) 2025 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.communication; + +import org.eclipse.jnosql.communication.graph.CommunicationEdge; +import org.eclipse.jnosql.communication.semistructured.CommunicationEntity; + +import java.util.Map; + +record TinkerpopCommunicationEdge(Object id, CommunicationEntity source, CommunicationEntity target, String label, Map properties) implements CommunicationEdge { +} From c2e8337ce5aa03a91f5675b2e9f9bbd3e9ff2852 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 20:18:26 +0000 Subject: [PATCH 17/43] feat: implement tinkerpop database Signed-off-by: Otavio Santana --- .../DefaultTinkerpopGraphDatabaseManager.java | 83 ++++++++++++++++++- 1 file changed, 81 insertions(+), 2 deletions(-) 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 6c8c572ce..2a3e79d82 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 @@ -16,6 +16,8 @@ import jakarta.data.exceptions.EmptyResultException; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; +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.Vertex; import org.eclipse.jnosql.communication.CommunicationException; @@ -26,6 +28,7 @@ import org.eclipse.jnosql.communication.semistructured.SelectQuery; import java.time.Duration; +import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Objects; @@ -173,21 +176,97 @@ public void close() { @Override public CommunicationEdge edge(CommunicationEntity source, String label, CommunicationEntity target, Map properties) { - return null; + Objects.requireNonNull(source, "source is required"); + Objects.requireNonNull(target, "target is required"); + Objects.requireNonNull(label, "label is required"); + + Vertex sourceVertex = findOrCreateVertex(source); + + Vertex targetVertex = findOrCreateVertex(target); + + var edge = sourceVertex.addEdge(label, targetVertex); + properties.forEach(edge::property); + + GraphTransactionUtil.transaction(graph); + + return new TinkerpopCommunicationEdge(edge.id(), source, target, label, properties); } @Override public void remove(CommunicationEntity source, String label, CommunicationEntity target) { + Objects.requireNonNull(source, "source is required"); + Objects.requireNonNull(target, "target is required"); + Objects.requireNonNull(label, "label is required"); + + Vertex sourceVertex = findVertexById(source.find(ID_PROPERTY) + .orElseThrow(() -> new CommunicationException("Source entity must have an ID"))) + .orElseThrow(() -> new EmptyResultException("Source entity not found"))); + Vertex targetVertex = findVertexById(target.find(ID_PROPERTY) + .orElseThrow(() -> new CommunicationException("Target entity must have an ID"))) + .orElseThrow(() -> new EmptyResultException("Target entity not found"))); + + Iterator edges = sourceVertex.edges(Direction.OUT, label); + while (edges.hasNext()) { + Edge edge = edges.next(); + if (edge.inVertex().id().equals(targetVertex.id())) { + edge.remove(); + } + } + + GraphTransactionUtil.transaction(graph); } @Override public void deleteEdge(K id) { + Objects.requireNonNull(id, "The id is required"); + + var traversal = graph.traversal().E(id); + if (!traversal.hasNext()) { + throw new EmptyResultException("Edge not found for ID: " + id); + } + traversal.next().remove(); + GraphTransactionUtil.transaction(graph); } @Override public Optional findEdgeById(K id) { - return Optional.empty(); + Objects.requireNonNull(id, "The id is required"); + + var traversal = graph.traversal().E(id); + if (!traversal.hasNext()) { + return Optional.empty(); + } + + var edge = traversal.next(); + var source = CommunicationEntity.of(edge.outVertex().label()); + source.add(ID_PROPERTY, edge.outVertex().id()); + + var target = CommunicationEntity.of(edge.inVertex().label()); + target.add(ID_PROPERTY, edge.inVertex().id()); + + Map properties = new HashMap<>(); + edge.properties().forEachRemaining(p -> properties.put(p.key(), p.value())); + + return Optional.of(new TinkerpopCommunicationEdge(id, source, target, edge.label(), properties)); + } + + private Vertex findOrCreateVertex(CommunicationEntity entity) { + return entity.find(ID_PROPERTY) + .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; + }); } + + private Optional findVertexById(Object id) { + Iterator vertices = graph.vertices(id); + return vertices.hasNext() ? Optional.of(vertices.next()) : Optional.empty(); + } + } From 3b34c2bbfd123d705d335cd1f251caa784aadaf0 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 20:18:36 +0000 Subject: [PATCH 18/43] feat: fix compile issue Signed-off-by: Otavio Santana --- .../communication/DefaultTinkerpopGraphDatabaseManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 2a3e79d82..b1a50cec2 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 @@ -200,11 +200,11 @@ public void remove(CommunicationEntity source, String label, CommunicationEntity Vertex sourceVertex = findVertexById(source.find(ID_PROPERTY) .orElseThrow(() -> new CommunicationException("Source entity must have an ID"))) - .orElseThrow(() -> new EmptyResultException("Source entity not found"))); + .orElseThrow(() -> new EmptyResultException("Source entity not found")); Vertex targetVertex = findVertexById(target.find(ID_PROPERTY) .orElseThrow(() -> new CommunicationException("Target entity must have an ID"))) - .orElseThrow(() -> new EmptyResultException("Target entity not found"))); + .orElseThrow(() -> new EmptyResultException("Target entity not found")); Iterator edges = sourceVertex.edges(Direction.OUT, label); while (edges.hasNext()) { From 1fd83f0e95aae079b94d1c1379de3b11d80f4d72 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 20:24:38 +0000 Subject: [PATCH 19/43] test: generate entity with tinkerpop Signed-off-by: Otavio Santana --- ...aultTinkerpopGraphDatabaseManagerTest.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) 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 e1f17fc97..5b8aeba01 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 @@ -18,6 +18,7 @@ import org.apache.tinkerpop.gremlin.structure.Graph; import org.assertj.core.api.Assertions; import org.assertj.core.api.SoftAssertions; +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; @@ -427,8 +428,66 @@ void shouldFindAllByFields() { }); } + @Test + void shouldCreateEdge() { + var person1 = entityManager.insert(getEntity()); + var person2 = entityManager.insert(getEntity()); + + 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(properties, edge.properties()); + } + + @Test + void shouldRemoveEdge() { + var person1 = entityManager.insert(getEntity()); + var person2 = entityManager.insert(getEntity()); + + entityManager.edge(person1, "FRIEND", person2, Map.of()); + + entityManager.remove(person1, "FRIEND", person2); + + var edgesQuery = select().from(COLLECTION_NAME).where("_id").eq(person1.find("_id").orElseThrow().get()).build(); + var edges = entityManager.select(edgesQuery).toList(); + + assertThat(edges).isEmpty(); + } + + @Test + void shouldDeleteEdgeById() { + var person1 = entityManager.insert(getEntity()); + var person2 = entityManager.insert(getEntity()); + var edge = entityManager.edge(person1, "FRIEND", person2, Map.of()); + + entityManager.deleteEdge(edge.id()); + + Optional foundEdge = entityManager.findEdgeById(edge.id()); + assertFalse(foundEdge.isPresent()); + } + @Test + void shouldFindEdgeById() { + var person1 = entityManager.insert(getEntity()); + var person2 = entityManager.insert(getEntity()); + + 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()); + } private CommunicationEntity getEntity() { CommunicationEntity entity = CommunicationEntity.of(COLLECTION_NAME); From a7821964a9dda1461b1140175ce784a510ff1911 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 20:32:27 +0000 Subject: [PATCH 20/43] feat: update tinkerpop query Signed-off-by: Otavio Santana --- .../communication/DefaultTinkerpopGraphDatabaseManager.java | 4 ++-- .../DefaultTinkerpopGraphDatabaseManagerTest.java | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) 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 b1a50cec2..9a309e664 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 @@ -199,11 +199,11 @@ public void remove(CommunicationEntity source, String label, CommunicationEntity Objects.requireNonNull(label, "label is required"); Vertex sourceVertex = findVertexById(source.find(ID_PROPERTY) - .orElseThrow(() -> new CommunicationException("Source entity must have an 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) - .orElseThrow(() -> new CommunicationException("Target entity must have an ID"))) + .orElseThrow(() -> new CommunicationException("Target entity must have an ID")).get()) .orElseThrow(() -> new EmptyResultException("Target entity not found")); Iterator edges = sourceVertex.edges(Direction.OUT, label); 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 5b8aeba01..6e7c5e5ee 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 @@ -450,12 +450,11 @@ void shouldRemoveEdge() { var person1 = entityManager.insert(getEntity()); var person2 = entityManager.insert(getEntity()); - entityManager.edge(person1, "FRIEND", person2, Map.of()); + CommunicationEdge communicationEdge = entityManager.edge(person1, "FRIEND", person2, Map.of()); entityManager.remove(person1, "FRIEND", person2); - var edgesQuery = select().from(COLLECTION_NAME).where("_id").eq(person1.find("_id").orElseThrow().get()).build(); - var edges = entityManager.select(edgesQuery).toList(); + var edges = entityManager.findEdgeById(communicationEdge.id()); assertThat(edges).isEmpty(); } From ba84c8f238598f423cd10d18b5c44e2d44943902 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 20:38:20 +0000 Subject: [PATCH 21/43] feat: update to tinkerpop structure Signed-off-by: Otavio Santana --- ...te.java => AbstractTinkerpopTemplate.java} | 2 +- ...ate.java => DefaultTinkerpopTemplate.java} | 10 +- .../tinkerpop/mapping/EdgeEntity.java | 2 +- .../mapping/GraphTemplateProducer.java | 20 +- ...phTemplate.java => TinkerpopTemplate.java} | 2 +- .../mapping/query/RepositoryGraphBean.java | 6 +- .../spi/CustomRepositoryGraphBean.java | 6 +- .../tinkerpop/mapping/spi/TemplateBean.java | 12 +- ...ava => AbstractTinkerpopTemplateTest.java} | 4 +- .../mapping/AbstractTraversalTest.java | 32 +-- .../mapping/DefaultEdgeTraversalTest.java | 188 ++++++++--------- ...faultGraphTraversalSourceTemplateTest.java | 8 +- ...DefaultTinkerpopTemplateProducerTest.java} | 4 +- .../mapping/DefaultValueMapTraversalTest.java | 16 +- .../mapping/DefaultVertexTraversalTest.java | 190 +++++++++--------- .../tinkerpop/mapping/EdgeEntityTest.java | 158 +++++++-------- .../mapping/MagazineTemplateTest.java | 2 +- ...ava => TinkerpopTemplateProducerTest.java} | 6 +- ...teTest.java => TinkerpopTemplateTest.java} | 4 +- .../configuration/GraphSupplierTest.java | 4 +- .../mapping/entities/MagazineTemplate.java | 10 +- .../mapping/spi/GraphCustomExtensionTest.java | 4 +- .../mapping/spi/GraphExtensionTest.java | 8 +- 23 files changed, 349 insertions(+), 349 deletions(-) rename jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/{AbstractGraphTemplate.java => AbstractTinkerpopTemplate.java} (99%) rename jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/{DefaultGraphTemplate.java => DefaultTinkerpopTemplate.java} (89%) rename jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/{GraphTemplate.java => TinkerpopTemplate.java} (99%) rename jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/{AbstractGraphTemplateTest.java => AbstractTinkerpopTemplateTest.java} (99%) rename jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/{DefaultGraphTemplateProducerTest.java => DefaultTinkerpopTemplateProducerTest.java} (93%) rename jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/{GraphTemplateProducerTest.java => TinkerpopTemplateProducerTest.java} (90%) rename jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/{GraphTemplateTest.java => TinkerpopTemplateTest.java} (93%) diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractGraphTemplate.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplate.java similarity index 99% rename from jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractGraphTemplate.java rename to jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplate.java index 3c149a999..27ca3d493 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractGraphTemplate.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplate.java @@ -50,7 +50,7 @@ import static java.util.Objects.requireNonNull; import static org.apache.tinkerpop.gremlin.structure.T.id; -abstract class AbstractGraphTemplate extends AbstractSemiStructuredTemplate implements GraphTemplate { +abstract class AbstractTinkerpopTemplate extends AbstractSemiStructuredTemplate implements TinkerpopTemplate { @SuppressWarnings("unchecked") private static final Function, GraphTraversal> INITIAL_VERTEX = diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTemplate.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplate.java similarity index 89% rename from jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTemplate.java rename to jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplate.java index 201cd1a2e..189db480b 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTemplate.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplate.java @@ -31,7 +31,7 @@ @Default @ApplicationScoped @Database(GRAPH) -class DefaultGraphTemplate extends AbstractGraphTemplate { +class DefaultTinkerpopTemplate extends AbstractTinkerpopTemplate { private EntityConverter converter; private TinkerpopGraphDatabaseManager manager; @@ -41,9 +41,9 @@ class DefaultGraphTemplate extends AbstractGraphTemplate { private Graph graph; @Inject - DefaultGraphTemplate(EntityConverter converter, Graph graph, - EventPersistManager eventManager, - EntitiesMetadata entities, Converters converters) { + DefaultTinkerpopTemplate(EntityConverter converter, Graph graph, + EventPersistManager eventManager, + EntitiesMetadata entities, Converters converters) { this.converter = converter; this.graph = graph; this.eventManager = eventManager; @@ -56,7 +56,7 @@ class DefaultGraphTemplate extends AbstractGraphTemplate { * Constructor for CDI */ @Deprecated - DefaultGraphTemplate() {} + DefaultTinkerpopTemplate() {} @Override protected EntityConverter converter() { diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/EdgeEntity.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/EdgeEntity.java index 222cd643e..52dda94a1 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/EdgeEntity.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/EdgeEntity.java @@ -28,7 +28,7 @@ * It is a wrapper of {@link org.apache.tinkerpop.gremlin.structure.Edge} that links two Entity. * Along with its Property objects, an Edge has both a Direction and a label. * Any Change at the Edge is automatically continued in the database. However, any, change in the Entity will be ignored. - * {@link GraphTemplate#update(Object)} + * {@link TinkerpopTemplate#update(Object)} * *

outVertex ---label---> inVertex.
*/ diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateProducer.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateProducer.java index 9f1c219f0..188fff9c8 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateProducer.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateProducer.java @@ -30,11 +30,11 @@ import java.util.function.Function; /** - * An {@code ApplicationScoped} producer class responsible for creating instances of {@link GraphTemplate}. - * It implements the {@link Function} interface with {@link DatabaseManager} as input and {@link GraphTemplate} as output. + * An {@code ApplicationScoped} producer class responsible for creating instances of {@link TinkerpopTemplate}. + * It implements the {@link Function} interface with {@link DatabaseManager} as input and {@link TinkerpopTemplate} as output. */ @ApplicationScoped -public class GraphTemplateProducer implements Function { +public class GraphTemplateProducer implements Function { @Inject private EntityConverter converter; @@ -50,14 +50,14 @@ public class GraphTemplateProducer implements Function { @Override - public GraphTemplate apply(Graph graph) { + public TinkerpopTemplate apply(Graph graph) { Objects.requireNonNull(graph, "graph is required"); - return new ProducerGraphTemplate(converter, graph, + return new ProducerTinkerpopTemplate(converter, graph, eventManager, entities, converters); } @Vetoed - static class ProducerGraphTemplate extends AbstractGraphTemplate { + static class ProducerTinkerpopTemplate extends AbstractTinkerpopTemplate { private final EntityConverter converter; @@ -72,9 +72,9 @@ static class ProducerGraphTemplate extends AbstractGraphTemplate { private final TinkerpopGraphDatabaseManager manager; - public ProducerGraphTemplate(EntityConverter converter, Graph graph, - EventPersistManager eventManager, - EntitiesMetadata entities, Converters converters) { + public ProducerTinkerpopTemplate(EntityConverter converter, Graph graph, + EventPersistManager eventManager, + EntitiesMetadata entities, Converters converters) { this.converter = converter; this.graph = graph; this.manager = TinkerpopGraphDatabaseManager.of(graph); @@ -83,7 +83,7 @@ public ProducerGraphTemplate(EntityConverter converter, Graph graph, this.converters = converters; } - ProducerGraphTemplate() { + ProducerTinkerpopTemplate() { this(null, null, null, null, null); } diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplate.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java similarity index 99% rename from jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplate.java rename to jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java index 01880d341..8a4f7cf4f 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplate.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java @@ -35,7 +35,7 @@ * * @see org.apache.tinkerpop.gremlin.structure.Graph */ -public interface GraphTemplate extends SemiStructuredTemplate { +public interface TinkerpopTemplate extends SemiStructuredTemplate { /** * Deletes a {@link org.apache.tinkerpop.gremlin.structure.Vertex} diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/query/RepositoryGraphBean.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/query/RepositoryGraphBean.java index c7076db82..470c88b14 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/query/RepositoryGraphBean.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/query/RepositoryGraphBean.java @@ -16,7 +16,7 @@ import jakarta.data.repository.DataRepository; import jakarta.enterprise.context.spi.CreationalContext; -import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphTemplate; +import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate; import org.eclipse.jnosql.mapping.DatabaseQualifier; import org.eclipse.jnosql.mapping.DatabaseType; import org.eclipse.jnosql.mapping.core.Converters; @@ -84,8 +84,8 @@ public Class getBeanClass() { @SuppressWarnings("unchecked") public T create(CreationalContext context) { EntitiesMetadata entities = getInstance(EntitiesMetadata.class); - var template = provider.isEmpty() ? getInstance(GraphTemplate.class) : - getInstance(GraphTemplate.class, DatabaseQualifier.ofGraph(provider)); + var template = provider.isEmpty() ? getInstance(TinkerpopTemplate.class) : + getInstance(TinkerpopTemplate.class, DatabaseQualifier.ofGraph(provider)); Converters converters = getInstance(Converters.class); diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/CustomRepositoryGraphBean.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/CustomRepositoryGraphBean.java index 6a0eb0ab4..98b9c562c 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/CustomRepositoryGraphBean.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/CustomRepositoryGraphBean.java @@ -15,7 +15,7 @@ package org.eclipse.jnosql.databases.tinkerpop.mapping.spi; import jakarta.enterprise.context.spi.CreationalContext; -import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphTemplate; +import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate; import org.eclipse.jnosql.mapping.DatabaseQualifier; import org.eclipse.jnosql.mapping.DatabaseType; import org.eclipse.jnosql.mapping.core.Converters; @@ -83,8 +83,8 @@ public Class getBeanClass() { @Override public T create(CreationalContext context) { var entities = getInstance(EntitiesMetadata.class); - var template = provider.isEmpty() ? getInstance(GraphTemplate.class) : - getInstance(GraphTemplate.class, DatabaseQualifier.ofGraph(provider)); + var template = provider.isEmpty() ? getInstance(TinkerpopTemplate.class) : + getInstance(TinkerpopTemplate.class, DatabaseQualifier.ofGraph(provider)); var converters = getInstance(Converters.class); diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TemplateBean.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TemplateBean.java index 7e387c6b5..bf75c93ab 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TemplateBean.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TemplateBean.java @@ -17,7 +17,7 @@ import jakarta.enterprise.context.spi.CreationalContext; import jakarta.nosql.Template; import org.apache.tinkerpop.gremlin.structure.Graph; -import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphTemplate; +import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate; import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphTemplateProducer; import org.eclipse.jnosql.mapping.DatabaseQualifier; import org.eclipse.jnosql.mapping.DatabaseType; @@ -28,9 +28,9 @@ import java.util.Collections; import java.util.Set; -class TemplateBean extends AbstractBean { +class TemplateBean extends AbstractBean { - private static final Set TYPES = Set.of(GraphTemplate.class, Template.class); + private static final Set TYPES = Set.of(TinkerpopTemplate.class, Template.class); private final String provider; @@ -48,12 +48,12 @@ public TemplateBean(String provider) { @Override public Class getBeanClass() { - return GraphTemplate.class; + return TinkerpopTemplate.class; } @Override - public GraphTemplate create(CreationalContext context) { + public TinkerpopTemplate create(CreationalContext context) { GraphTemplateProducer producer = getInstance(GraphTemplateProducer.class); Graph graph = getGraph(); @@ -77,7 +77,7 @@ public Set getQualifiers() { @Override public String getId() { - return GraphTemplate.class.getName() + DatabaseType.GRAPH + "-" + provider; + return TinkerpopTemplate.class.getName() + DatabaseType.GRAPH + "-" + provider; } } diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractGraphTemplateTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplateTest.java similarity index 99% rename from jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractGraphTemplateTest.java rename to jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplateTest.java index c8cebef6d..91f3a3ce5 100644 --- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractGraphTemplateTest.java +++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplateTest.java @@ -49,11 +49,11 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -public abstract class AbstractGraphTemplateTest { +public abstract class AbstractTinkerpopTemplateTest { protected abstract Graph getGraph(); - protected abstract GraphTemplate getGraphTemplate(); + protected abstract TinkerpopTemplate getGraphTemplate(); @AfterEach void after() { diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTraversalTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTraversalTest.java index 425313bdd..4e533f3ce 100644 --- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTraversalTest.java +++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTraversalTest.java @@ -30,7 +30,7 @@ public abstract class AbstractTraversalTest { static final String READS = "reads"; @Inject - protected GraphTemplate graphTemplate; + protected TinkerpopTemplate tinkerpopTemplate; @Inject protected Graph graph; @@ -54,21 +54,21 @@ public void setUp() { graph.traversal().V().toList().forEach(Vertex::remove); graph.traversal().E().toList().forEach(Edge::remove); - otavio = graphTemplate.insert(Human.builder().withAge(27) + otavio = tinkerpopTemplate.insert(Human.builder().withAge(27) .withName("Otavio").build()); - poliana = graphTemplate.insert(Human.builder().withAge(26) + poliana = tinkerpopTemplate.insert(Human.builder().withAge(26) .withName("Poliana").build()); - paulo = graphTemplate.insert(Human.builder().withAge(50) + paulo = tinkerpopTemplate.insert(Human.builder().withAge(50) .withName("Paulo").build()); - shack = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - license = graphTemplate.insert(Magazine.builder().withAge(2013).withName("Software License").build()); - effectiveJava = graphTemplate.insert(Magazine.builder().withAge(2001).withName("Effective Java").build()); + shack = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + license = tinkerpopTemplate.insert(Magazine.builder().withAge(2013).withName("Software License").build()); + effectiveJava = tinkerpopTemplate.insert(Magazine.builder().withAge(2001).withName("Effective Java").build()); - reads = graphTemplate.edge(otavio, READS, effectiveJava); - reads2 = graphTemplate.edge(poliana, READS, shack); - reads3 = graphTemplate.edge(paulo, READS, license); + reads = tinkerpopTemplate.edge(otavio, READS, effectiveJava); + reads2 = tinkerpopTemplate.edge(poliana, READS, shack); + reads3 = tinkerpopTemplate.edge(paulo, READS, license); reads.add("motivation", "hobby"); reads.add("language", "Java"); @@ -78,13 +78,13 @@ public void setUp() { @AfterEach public void after() { - graphTemplate.delete(otavio.getId()); - graphTemplate.delete(poliana.getId()); - graphTemplate.delete(paulo.getId()); + tinkerpopTemplate.delete(otavio.getId()); + tinkerpopTemplate.delete(poliana.getId()); + tinkerpopTemplate.delete(paulo.getId()); - graphTemplate.deleteEdge(shack.getId()); - graphTemplate.deleteEdge(license.getId()); - graphTemplate.deleteEdge(effectiveJava.getId()); + tinkerpopTemplate.deleteEdge(shack.getId()); + tinkerpopTemplate.deleteEdge(license.getId()); + tinkerpopTemplate.deleteEdge(effectiveJava.getId()); reads.delete(); reads2.delete(); 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 655358560..c43b4010a 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 @@ -50,7 +50,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; @EnableAutoWeld -@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class}) +@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class}) @AddPackages(GraphProducer.class) @AddPackages(Reflections.class) @AddExtensions({EntityMetadataExtension.class, GraphExtension.class}) @@ -58,12 +58,12 @@ class DefaultEdgeTraversalTest extends AbstractTraversalTest { @Test void shouldReturnErrorWhenEdgeIdIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalEdge(null)); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalEdge(null)); } @Test void shouldReturnEdgeId() { - Optional edgeEntity = graphTemplate.traversalEdge(reads.id()) + Optional edgeEntity = tinkerpopTemplate.traversalEdge(reads.id()) .next(); assertTrue(edgeEntity.isPresent()); @@ -72,7 +72,7 @@ void shouldReturnEdgeId() { @Test void shouldReturnOutE() { - List edges = graphTemplate.traversalVertex().outE(READS) + List edges = tinkerpopTemplate.traversalVertex().outE(READS) .stream() .collect(toList()); @@ -82,7 +82,7 @@ void shouldReturnOutE() { @Test void shouldReturnOutEWithSupplier() { - List edges = graphTemplate.traversalVertex().outE(() -> READS) + List edges = tinkerpopTemplate.traversalVertex().outE(() -> READS) .stream() .collect(toList()); @@ -92,14 +92,14 @@ void shouldReturnOutEWithSupplier() { @Test void shouldReturnErrorOutEWhenIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().outE((String) null) + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().outE((String) null) .stream() .toList()); } @Test void shouldReturnInE() { - List edges = graphTemplate.traversalVertex().inE(READS) + List edges = tinkerpopTemplate.traversalVertex().inE(READS) .stream() .collect(toList()); @@ -109,7 +109,7 @@ void shouldReturnInE() { @Test void shouldReturnInEWitSupplier() { - List edges = graphTemplate.traversalVertex().inE(() -> READS) + List edges = tinkerpopTemplate.traversalVertex().inE(() -> READS) .stream() .collect(toList()); @@ -120,7 +120,7 @@ void shouldReturnInEWitSupplier() { @Test void shouldReturnErrorWhenInEIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().inE((String) null) + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().inE((String) null) .stream() .toList()); @@ -128,7 +128,7 @@ void shouldReturnErrorWhenInEIsNull() { @Test void shouldReturnBothE() { - List edges = graphTemplate.traversalVertex().bothE(READS) + List edges = tinkerpopTemplate.traversalVertex().bothE(READS) .stream() .toList(); @@ -137,7 +137,7 @@ void shouldReturnBothE() { @Test void shouldReturnBothEWithSupplier() { - List edges = graphTemplate.traversalVertex().bothE(() -> READS) + List edges = tinkerpopTemplate.traversalVertex().bothE(() -> READS) .stream() .toList(); @@ -146,7 +146,7 @@ void shouldReturnBothEWithSupplier() { @Test void shouldReturnErrorWhenBothEIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().bothE((String) null) + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().bothE((String) null) .stream() .toList()); } @@ -154,14 +154,14 @@ void shouldReturnErrorWhenBothEIsNull() { @Test void shouldReturnOut() { - List people = graphTemplate.traversalVertex().outE(READS).outV().result().collect(toList()); + List people = tinkerpopTemplate.traversalVertex().outE(READS).outV().result().collect(toList()); assertEquals(3, people.size()); assertThat(people).contains(poliana, otavio, paulo); } @Test void shouldReturnIn() { - List magazines = graphTemplate.traversalVertex().outE(READS).inV().result().collect(toList()); + List magazines = tinkerpopTemplate.traversalVertex().outE(READS).inV().result().collect(toList()); assertEquals(3, magazines.size()); assertThat(magazines).contains(shack, effectiveJava, license); } @@ -169,7 +169,7 @@ void shouldReturnIn() { @Test void shouldReturnBoth() { - List entities = graphTemplate.traversalVertex().outE(READS).bothV().result().collect(toList()); + List entities = tinkerpopTemplate.traversalVertex().outE(READS).bothV().result().collect(toList()); assertEquals(6, entities.size()); assertThat(entities).contains(shack, effectiveJava, license, paulo, otavio, poliana); } @@ -178,7 +178,7 @@ void shouldReturnBoth() { @Test void shouldHasPropertyFromAccessor() { - Optional edgeEntity = graphTemplate.traversalVertex() + Optional edgeEntity = tinkerpopTemplate.traversalVertex() .outE(READS) .has(T.id, "notFound").next(); @@ -188,7 +188,7 @@ void shouldHasPropertyFromAccessor() { @Test void shouldHasProperty() { - Optional edgeEntity = graphTemplate.traversalVertex() + Optional edgeEntity = tinkerpopTemplate.traversalVertex() .outE(READS) .has("motivation", "hobby").next(); @@ -198,7 +198,7 @@ void shouldHasProperty() { @Test void shouldHasSupplierProperty() { - Optional edgeEntity = graphTemplate.traversalVertex() + Optional edgeEntity = tinkerpopTemplate.traversalVertex() .outE(READS) .has(() -> "motivation", "hobby").next(); @@ -209,7 +209,7 @@ void shouldHasSupplierProperty() { @Test void shouldHasPropertyPredicate() { - Optional edgeEntity = graphTemplate.traversalVertex() + Optional edgeEntity = tinkerpopTemplate.traversalVertex() .outE(READS) .has("motivation", P.eq("hobby")).next(); @@ -221,7 +221,7 @@ void shouldHasPropertyPredicate() { @Test void shouldHasPropertyKeySupplierPredicate() { - Optional edgeEntity = graphTemplate.traversalVertex() + Optional edgeEntity = tinkerpopTemplate.traversalVertex() .outE(READS) .has(() -> "motivation", P.eq("hobby")).next(); @@ -232,21 +232,21 @@ void shouldHasPropertyKeySupplierPredicate() { @Test void shouldReturnErrorWhenHasPropertyWhenKeyIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex() + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex() .outE(READS) .has((String) null, "hobby").next()); } @Test void shouldReturnErrorWhenHasPropertyWhenValueIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex() + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex() .outE(READS) .has("motivation", null).next()); } @Test void shouldHasNot() { - List edgeEntities = graphTemplate.traversalVertex() + List edgeEntities = tinkerpopTemplate.traversalVertex() .outE(READS).hasNot("language") .stream() .toList(); @@ -256,39 +256,39 @@ void shouldHasNot() { @Test void shouldCount() { - long count = graphTemplate.traversalVertex().outE(READS).count(); + long count = tinkerpopTemplate.traversalVertex().outE(READS).count(); assertEquals(3L, count); } @Test void shouldReturnZeroWhenCountIsEmpty() { - long count = graphTemplate.traversalVertex().outE("WRITES").count(); + long count = tinkerpopTemplate.traversalVertex().outE("WRITES").count(); assertEquals(0L, count); } @Test void shouldReturnErrorWhenHasNotIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().outE(READS).hasNot((String) null)); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().outE(READS).hasNot((String) null)); } @Test void shouldDefinesLimit() { - long count = graphTemplate.traversalEdge().limit(1L).count(); + long count = tinkerpopTemplate.traversalEdge().limit(1L).count(); assertEquals(1L, count); - assertNotEquals(graphTemplate.traversalEdge().count(), count); + assertNotEquals(tinkerpopTemplate.traversalEdge().count(), count); } @Test void shouldDefinesRange() { - long count = graphTemplate.traversalEdge().range(1, 3).count(); + long count = tinkerpopTemplate.traversalEdge().range(1, 3).count(); assertEquals(2L, count); - assertNotEquals(graphTemplate.traversalEdge().count(), count); + assertNotEquals(tinkerpopTemplate.traversalEdge().count(), count); } @Test void shouldMapValuesAsStream() { - List> maps = graphTemplate.traversalVertex().inE("reads") + List> maps = tinkerpopTemplate.traversalVertex().inE("reads") .valueMap("motivation").stream().toList(); assertFalse(maps.isEmpty()); @@ -303,7 +303,7 @@ void shouldMapValuesAsStream() { @Test void shouldMapValuesAsStreamLimit() { - List> maps = graphTemplate.traversalVertex().inE("reads") + List> maps = tinkerpopTemplate.traversalVertex().inE("reads") .valueMap("motivation").next(2).toList(); assertFalse(maps.isEmpty()); @@ -313,14 +313,14 @@ void shouldMapValuesAsStreamLimit() { @Test void shouldReturnMapValueAsEmptyStream() { - Stream> stream = graphTemplate.traversalVertex().inE("reads") + Stream> stream = tinkerpopTemplate.traversalVertex().inE("reads") .valueMap("noFoundProperty").stream(); assertTrue(stream.allMatch(m -> Objects.isNull(m.get("noFoundProperty")))); } @Test void shouldReturnNext() { - Map map = graphTemplate.traversalVertex().inE("reads") + Map map = tinkerpopTemplate.traversalVertex().inE("reads") .valueMap("motivation").next(); assertNotNull(map); @@ -330,33 +330,33 @@ void shouldReturnNext() { @Test void shouldReturnHas() { - Creature lion = graphTemplate.insert(new Creature("lion")); - Creature snake = graphTemplate.insert(new Creature("snake")); - Creature mouse = graphTemplate.insert(new Creature("mouse")); - Creature plant = graphTemplate.insert(new Creature("plant")); + Creature lion = tinkerpopTemplate.insert(new Creature("lion")); + Creature snake = tinkerpopTemplate.insert(new Creature("snake")); + Creature mouse = tinkerpopTemplate.insert(new Creature("mouse")); + Creature plant = tinkerpopTemplate.insert(new Creature("plant")); - graphTemplate.edge(lion, "eats", snake).add("when", "night"); - graphTemplate.edge(snake, "eats", mouse); - graphTemplate.edge(mouse, "eats", plant); + tinkerpopTemplate.edge(lion, "eats", snake).add("when", "night"); + tinkerpopTemplate.edge(snake, "eats", mouse); + tinkerpopTemplate.edge(mouse, "eats", plant); - Optional result = graphTemplate.traversalEdge().has("when").next(); + Optional result = tinkerpopTemplate.traversalEdge().has("when").next(); assertNotNull(result); - graphTemplate.deleteEdge(lion.getId()); + tinkerpopTemplate.deleteEdge(lion.getId()); } @Test void shouldRepeatTimesTraversal() { - Creature lion = graphTemplate.insert(new Creature("lion")); - Creature snake = graphTemplate.insert(new Creature("snake")); - Creature mouse = graphTemplate.insert(new Creature("mouse")); - Creature plant = graphTemplate.insert(new Creature("plant")); - - graphTemplate.edge(lion, "eats", snake).add("when", "night"); - graphTemplate.edge(snake, "eats", mouse); - graphTemplate.edge(mouse, "eats", plant); - Optional result = graphTemplate.traversalEdge().repeat().has("when").times(2).next(); + Creature lion = tinkerpopTemplate.insert(new Creature("lion")); + Creature snake = tinkerpopTemplate.insert(new Creature("snake")); + Creature mouse = tinkerpopTemplate.insert(new Creature("mouse")); + Creature plant = tinkerpopTemplate.insert(new Creature("plant")); + + tinkerpopTemplate.edge(lion, "eats", snake).add("when", "night"); + tinkerpopTemplate.edge(snake, "eats", mouse); + tinkerpopTemplate.edge(mouse, "eats", plant); + Optional result = tinkerpopTemplate.traversalEdge().repeat().has("when").times(2).next(); assertNotNull(result); assertEquals(snake, result.get().incoming()); assertEquals(lion, result.get().outgoing()); @@ -364,16 +364,16 @@ void shouldRepeatTimesTraversal() { @Test void shouldRepeatUntilTraversal() { - Creature lion = graphTemplate.insert(new Creature("lion")); - Creature snake = graphTemplate.insert(new Creature("snake")); - Creature mouse = graphTemplate.insert(new Creature("mouse")); - Creature plant = graphTemplate.insert(new Creature("plant")); + Creature lion = tinkerpopTemplate.insert(new Creature("lion")); + Creature snake = tinkerpopTemplate.insert(new Creature("snake")); + Creature mouse = tinkerpopTemplate.insert(new Creature("mouse")); + Creature plant = tinkerpopTemplate.insert(new Creature("plant")); - graphTemplate.edge(lion, "eats", snake).add("when", "night"); - graphTemplate.edge(snake, "eats", mouse); - graphTemplate.edge(mouse, "eats", plant); + tinkerpopTemplate.edge(lion, "eats", snake).add("when", "night"); + tinkerpopTemplate.edge(snake, "eats", mouse); + tinkerpopTemplate.edge(mouse, "eats", plant); - Optional result = graphTemplate.traversalEdge().repeat().has("when") + Optional result = tinkerpopTemplate.traversalEdge().repeat().has("when") .until().has("when").next(); assertTrue(result.isPresent()); @@ -385,16 +385,16 @@ void shouldRepeatUntilTraversal() { @Test void shouldRepeatUntilHasValueTraversal() { - Creature lion = graphTemplate.insert(new Creature("lion")); - Creature snake = graphTemplate.insert(new Creature("snake")); - Creature mouse = graphTemplate.insert(new Creature("mouse")); - Creature plant = graphTemplate.insert(new Creature("plant")); + Creature lion = tinkerpopTemplate.insert(new Creature("lion")); + Creature snake = tinkerpopTemplate.insert(new Creature("snake")); + Creature mouse = tinkerpopTemplate.insert(new Creature("mouse")); + Creature plant = tinkerpopTemplate.insert(new Creature("plant")); - graphTemplate.edge(lion, "eats", snake).add("when", "night"); - graphTemplate.edge(snake, "eats", mouse); - graphTemplate.edge(mouse, "eats", plant); + tinkerpopTemplate.edge(lion, "eats", snake).add("when", "night"); + tinkerpopTemplate.edge(snake, "eats", mouse); + tinkerpopTemplate.edge(mouse, "eats", plant); - Optional result = graphTemplate.traversalEdge().repeat().has("when") + Optional result = tinkerpopTemplate.traversalEdge().repeat().has("when") .until().has("when", "night").next(); assertTrue(result.isPresent()); @@ -406,16 +406,16 @@ void shouldRepeatUntilHasValueTraversal() { @Test void shouldRepeatUntilHasPredicateTraversal() { - Creature lion = graphTemplate.insert(new Creature("lion")); - Creature snake = graphTemplate.insert(new Creature("snake")); - Creature mouse = graphTemplate.insert(new Creature("mouse")); - Creature plant = graphTemplate.insert(new Creature("plant")); + Creature lion = tinkerpopTemplate.insert(new Creature("lion")); + Creature snake = tinkerpopTemplate.insert(new Creature("snake")); + Creature mouse = tinkerpopTemplate.insert(new Creature("mouse")); + Creature plant = tinkerpopTemplate.insert(new Creature("plant")); - graphTemplate.edge(lion, "eats", snake).add("when", "night"); - graphTemplate.edge(snake, "eats", mouse); - graphTemplate.edge(mouse, "eats", plant); + tinkerpopTemplate.edge(lion, "eats", snake).add("when", "night"); + tinkerpopTemplate.edge(snake, "eats", mouse); + tinkerpopTemplate.edge(mouse, "eats", plant); - EdgeEntity result = graphTemplate.traversalEdge().repeat().has("when") + EdgeEntity result = tinkerpopTemplate.traversalEdge().repeat().has("when") .until().has("when", new P((a, b) -> true, "night")).next().orElseThrow(); @@ -431,20 +431,20 @@ void shouldRepeatUntilHasPredicateTraversal() { @Test void shouldReturnErrorWhenTheOrderIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalEdge().orderBy(null)); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalEdge().orderBy(null)); } @Test void shouldReturnErrorWhenThePropertyDoesNotExist() { assertThrows(NoSuchElementException.class, () -> - graphTemplate.traversalEdge().orderBy("wrong property").asc().next().get()); + tinkerpopTemplate.traversalEdge().orderBy("wrong property").asc().next().get()); } @Test void shouldOrderAsc() { String property = "motivation"; - List properties = graphTemplate.traversalEdge() + List properties = tinkerpopTemplate.traversalEdge() .has(property) .orderBy(property) .asc().stream() @@ -461,7 +461,7 @@ void shouldOrderAsc() { void shouldOrderDesc() { String property = "motivation"; - List properties = graphTemplate.traversalEdge() + List properties = tinkerpopTemplate.traversalEdge() .has(property) .orderBy(property) .desc().stream() @@ -477,58 +477,58 @@ void shouldOrderDesc() { @Test void shouldReturnResultAsList() { - List entities = graphTemplate.traversalEdge().result() + List entities = tinkerpopTemplate.traversalEdge().result() .toList(); assertEquals(3, entities.size()); } @Test void shouldReturnErrorWhenThereAreMoreThanOneInGetSingleResult() { - assertThrows(NonUniqueResultException.class, () -> graphTemplate.traversalEdge().singleResult()); + assertThrows(NonUniqueResultException.class, () -> tinkerpopTemplate.traversalEdge().singleResult()); } @Test void shouldReturnOptionalEmptyWhenThereIsNotResultInSingleResult() { - Optional entity = graphTemplate.traversalEdge(-1L).singleResult(); + Optional entity = tinkerpopTemplate.traversalEdge(-1L).singleResult(); assertFalse(entity.isPresent()); } @Test void shouldReturnSingleResult() { String name = "Poliana"; - Optional entity = graphTemplate.traversalEdge(reads.id()).singleResult(); + Optional entity = tinkerpopTemplate.traversalEdge(reads.id()).singleResult(); assertEquals(reads, entity.get()); } @Test void shouldReturnErrorWhenPredicateIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalEdge().filter(null)); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalEdge().filter(null)); } @Test void shouldReturnFromPredicate() { - long count = graphTemplate.traversalEdge().filter(reads::equals).count(); + long count = tinkerpopTemplate.traversalEdge().filter(reads::equals).count(); assertEquals(1L, count); } @Test void shouldDedup() { - graphTemplate.edge(otavio, "knows", paulo); - graphTemplate.edge(paulo, "knows", otavio); - graphTemplate.edge(otavio, "knows", poliana); - graphTemplate.edge(poliana, "knows", otavio); - graphTemplate.edge(poliana, "knows", paulo); - graphTemplate.edge(paulo, "knows", poliana); + tinkerpopTemplate.edge(otavio, "knows", paulo); + tinkerpopTemplate.edge(paulo, "knows", otavio); + tinkerpopTemplate.edge(otavio, "knows", poliana); + tinkerpopTemplate.edge(poliana, "knows", otavio); + tinkerpopTemplate.edge(poliana, "knows", paulo); + tinkerpopTemplate.edge(paulo, "knows", poliana); - List edges = graphTemplate.traversalVertex() + List edges = tinkerpopTemplate.traversalVertex() .hasLabel(Human.class) .inE("knows").result() .collect(Collectors.toList()); assertEquals(6, edges.size()); - edges = graphTemplate.traversalVertex() + edges = tinkerpopTemplate.traversalVertex() .hasLabel(Human.class) .inE("knows") .dedup() 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 1610a2984..399460df0 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 @@ -29,10 +29,10 @@ @AddPackages(value = {Converters.class, EntityConverter.class, Transactional.class}) @AddPackages({MagazineRepository.class, Reflections.class, GraphProducer.class}) @AddExtensions({EntityMetadataExtension.class, GraphExtension.class}) -class DefaultGraphTraversalSourceTemplateTest extends AbstractGraphTemplateTest { +class DefaultGraphTraversalSourceTemplateTest extends AbstractTinkerpopTemplateTest { @Inject - private GraphTemplate graphTemplate; + private TinkerpopTemplate tinkerpopTemplate; @Inject private Graph graph; @@ -43,7 +43,7 @@ protected Graph getGraph() { } @Override - protected GraphTemplate getGraphTemplate() { - return graphTemplate; + protected TinkerpopTemplate getGraphTemplate() { + return tinkerpopTemplate; } } diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTemplateProducerTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplateProducerTest.java similarity index 93% rename from jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTemplateProducerTest.java rename to jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplateProducerTest.java index c7c93296a..de9cae7a1 100644 --- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultGraphTemplateProducerTest.java +++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplateProducerTest.java @@ -32,11 +32,11 @@ @EnableAutoWeld -@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class}) +@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class}) @AddPackages(GraphProducer.class) @AddPackages(Reflections.class) @AddExtensions({EntityMetadataExtension.class, GraphExtension.class}) -class DefaultGraphTemplateProducerTest { +class DefaultTinkerpopTemplateProducerTest { @Inject private GraphTemplateProducer producer; 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 222bd3c91..febef12a3 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 @@ -39,7 +39,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; @EnableAutoWeld -@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class}) +@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class}) @AddPackages(GraphProducer.class) @AddPackages(Reflections.class) @AddExtensions({EntityMetadataExtension.class, GraphExtension.class}) @@ -48,7 +48,7 @@ class DefaultValueMapTraversalTest extends AbstractTraversalTest { @Test void shouldCount() { - long count = graphTemplate.traversalVertex() + long count = tinkerpopTemplate.traversalVertex() .hasLabel(Human.class).valueMap("name").count(); assertEquals(3L, count); } @@ -56,7 +56,7 @@ void shouldCount() { @Test void shouldReturnMapValues() { - List names = graphTemplate.traversalVertex() + List names = tinkerpopTemplate.traversalVertex() .hasLabel(Human.class).valueMap("name") .stream() .map(m -> m.getOrDefault("name", "").toString()).collect(Collectors.toList()); @@ -67,7 +67,7 @@ void shouldReturnMapValues() { @Test void shouldReturnStream() { - Stream> stream = graphTemplate.traversalVertex() + Stream> stream = tinkerpopTemplate.traversalVertex() .hasLabel(Human.class).valueMap("name") .stream(); assertNotNull(stream); @@ -77,7 +77,7 @@ void shouldReturnStream() { @Test void shouldReturnResultAsList() { - List> maps = graphTemplate.traversalVertex() + List> maps = tinkerpopTemplate.traversalVertex() .hasLabel(Human.class).valueMap("name") .resultList(); assertEquals(3, maps.size()); @@ -85,14 +85,14 @@ void shouldReturnResultAsList() { @Test void shouldReturnErrorWhenThereAreMoreThanOneInGetSingleResult() { - assertThrows(NonUniqueResultException.class, () -> graphTemplate.traversalVertex() + assertThrows(NonUniqueResultException.class, () -> tinkerpopTemplate.traversalVertex() .hasLabel(Human.class).valueMap("name") .singleResult()); } @Test void shouldReturnOptionalEmptyWhenThereIsNotResultInSingleResult() { - Optional> entity = graphTemplate.traversalVertex() + Optional> entity = tinkerpopTemplate.traversalVertex() .hasLabel("not_found").valueMap("name").singleResult(); assertFalse(entity.isPresent()); } @@ -100,7 +100,7 @@ void shouldReturnOptionalEmptyWhenThereIsNotResultInSingleResult() { @Test void shouldReturnSingleResult() { String name = "Poliana"; - Optional> poliana = graphTemplate.traversalVertex().hasLabel("Human"). + Optional> poliana = tinkerpopTemplate.traversalVertex().hasLabel("Human"). has("name", name).valueMap("name").singleResult(); assertEquals(name, poliana.map(m -> m.get("name")).orElse("")); } 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 73faf1bea..2a80d3e57 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 @@ -51,7 +51,7 @@ @EnableAutoWeld -@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class}) +@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class}) @AddPackages(GraphProducer.class) @AddPackages(Reflections.class) @AddExtensions({EntityMetadataExtension.class, GraphExtension.class}) @@ -60,12 +60,12 @@ class DefaultVertexTraversalTest extends AbstractTraversalTest { @Test void shouldReturnErrorWhenVertexIdIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex(null)); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex(null)); } @Test void shouldGetVertexFromId() { - List people = graphTemplate.traversalVertex(otavio.getId(), poliana.getId()).result() + List people = tinkerpopTemplate.traversalVertex(otavio.getId(), poliana.getId()).result() .collect(toList()); assertThat(people).contains(otavio, poliana); @@ -73,7 +73,7 @@ void shouldGetVertexFromId() { @Test void shouldDefineLimit() { - List people = graphTemplate.traversalVertex(otavio.getId(), poliana.getId(), + List people = tinkerpopTemplate.traversalVertex(otavio.getId(), poliana.getId(), paulo.getId()).limit(1) .result() .collect(toList()); @@ -84,7 +84,7 @@ void shouldDefineLimit() { @Test void shouldDefineLimit2() { - List people = graphTemplate.traversalVertex(otavio.getId(), poliana.getId(), paulo.getId()). + List people = tinkerpopTemplate.traversalVertex(otavio.getId(), poliana.getId(), paulo.getId()). next(2) .collect(toList()); @@ -94,27 +94,27 @@ void shouldDefineLimit2() { @Test void shouldNext() { - Optional next = graphTemplate.traversalVertex().next(); + Optional next = tinkerpopTemplate.traversalVertex().next(); assertTrue(next.isPresent()); } @Test void shouldEmptyNext() { - Optional next = graphTemplate.traversalVertex(-12).next(); + Optional next = tinkerpopTemplate.traversalVertex(-12).next(); assertFalse(next.isPresent()); } @Test void shouldHave() { - Optional person = graphTemplate.traversalVertex().has("name", "Poliana").next(); + Optional person = tinkerpopTemplate.traversalVertex().has("name", "Poliana").next(); assertTrue(person.isPresent()); assertEquals(person.get(), poliana); } @Test void shouldReturnErrorWhenHasNullKey() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex() + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex() .has((String) null, "Poliana") .next()); } @@ -122,34 +122,34 @@ void shouldReturnErrorWhenHasNullKey() { @Test void shouldReturnErrorWhenHasNullValue() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().has("name", null) + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().has("name", null) .next()); } @Test void shouldHaveId() { - Optional person = graphTemplate.traversalVertex().has(T.id, poliana.getId()).next(); + Optional person = tinkerpopTemplate.traversalVertex().has(T.id, poliana.getId()).next(); assertTrue(person.isPresent()); assertEquals(person.get(), poliana); } @Test void shouldReturnErrorWhenHasIdHasNullValue() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().has(T.id, null).next()); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().has(T.id, null).next()); } @Test void shouldReturnErrorWhenHasIdHasNullAccessor() { assertThrows(NullPointerException.class, () -> { T id = null; - graphTemplate.traversalVertex().has(id, poliana.getId()).next(); + tinkerpopTemplate.traversalVertex().has(id, poliana.getId()).next(); }); } @Test void shouldHavePredicate() { - List result = graphTemplate.traversalVertex().has("age", P.gt(26)) + List result = tinkerpopTemplate.traversalVertex().has("age", P.gt(26)) .result() .toList(); assertEquals(5, result.size()); @@ -159,7 +159,7 @@ void shouldHavePredicate() { void shouldReturnErrorWhenHasPredicateIsNull() { assertThrows(NullPointerException.class, () -> { P gt = null; - graphTemplate.traversalVertex().has("age", gt) + tinkerpopTemplate.traversalVertex().has("age", gt) .result() .toList(); }); @@ -167,7 +167,7 @@ void shouldReturnErrorWhenHasPredicateIsNull() { @Test void shouldReturnErrorWhenHasKeyIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().has((String) null, + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().has((String) null, P.gt(26)) .result() .toList()); @@ -175,7 +175,7 @@ void shouldReturnErrorWhenHasKeyIsNull() { @Test void shouldHaveLabel() { - List magazines = graphTemplate.traversalVertex().hasLabel("Magazine").result().collect(toList()); + List magazines = tinkerpopTemplate.traversalVertex().hasLabel("Magazine").result().collect(toList()); assertEquals(3, magazines.size()); assertThat(magazines).contains(shack, license, effectiveJava); } @@ -183,7 +183,7 @@ void shouldHaveLabel() { @Test void shouldHaveLabel2() { - List entities = graphTemplate.traversalVertex() + List entities = tinkerpopTemplate.traversalVertex() .hasLabel(P.eq("Magazine").or(P.eq("Human"))) .result().collect(toList()); assertThat(entities).hasSize(6).contains(shack, license, effectiveJava, otavio, poliana, paulo); @@ -191,88 +191,88 @@ void shouldHaveLabel2() { @Test void shouldReturnErrorWhenHasLabelHasNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().hasLabel((String) null) + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().hasLabel((String) null) .result().toList()); } @Test void shouldIn() { - List magazines = graphTemplate.traversalVertex().out(READS).result().collect(toList()); + List magazines = tinkerpopTemplate.traversalVertex().out(READS).result().collect(toList()); assertEquals(3, magazines.size()); assertThat(magazines).contains(shack, license, effectiveJava); } @Test void shouldReturnErrorWhenInIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().out((String) null).result().toList()); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().out((String) null).result().toList()); } @Test void shouldOut() { - List people = graphTemplate.traversalVertex().in(READS).result().collect(toList()); + List people = tinkerpopTemplate.traversalVertex().in(READS).result().collect(toList()); assertEquals(3, people.size()); assertThat(people).contains(otavio, poliana, paulo); } @Test void shouldReturnErrorWhenOutIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().in((String) null).result().toList()); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().in((String) null).result().toList()); } @Test void shouldBoth() { - List entities = graphTemplate.traversalVertex().both(READS) + List entities = tinkerpopTemplate.traversalVertex().both(READS) .result().toList(); assertEquals(6, entities.size()); } @Test void shouldReturnErrorWhenBothIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().both((String) null) + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().both((String) null) .result().toList()); } @Test void shouldNot() { - List result = graphTemplate.traversalVertex().hasNot("year").result().toList(); + List result = tinkerpopTemplate.traversalVertex().hasNot("year").result().toList(); assertEquals(6, result.size()); } @Test void shouldReturnErrorWhenHasNotIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().hasNot((String) null) + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().hasNot((String) null) .result().toList()); } @Test void shouldCount() { - long count = graphTemplate.traversalVertex().both(READS).count(); + long count = tinkerpopTemplate.traversalVertex().both(READS).count(); assertEquals(6L, count); } @Test void shouldReturnZeroWhenCountIsEmpty() { - long count = graphTemplate.traversalVertex().both("WRITES").count(); + long count = tinkerpopTemplate.traversalVertex().both("WRITES").count(); assertEquals(0L, count); } @Test void shouldDefinesLimit() { - long count = graphTemplate.traversalVertex().limit(1L).count(); + long count = tinkerpopTemplate.traversalVertex().limit(1L).count(); assertEquals(1L, count); - assertNotEquals(graphTemplate.traversalVertex().count(), count); + assertNotEquals(tinkerpopTemplate.traversalVertex().count(), count); } @Test void shouldDefinesRange() { - long count = graphTemplate.traversalVertex().range(1, 3).count(); + long count = tinkerpopTemplate.traversalVertex().range(1, 3).count(); assertEquals(2L, count); - assertNotEquals(graphTemplate.traversalVertex().count(), count); + assertNotEquals(tinkerpopTemplate.traversalVertex().count(), count); } @Test void shouldMapValuesAsStream() { - List> maps = graphTemplate.traversalVertex().hasLabel("Human") + List> maps = tinkerpopTemplate.traversalVertex().hasLabel("Human") .valueMap("name").stream().toList(); assertFalse(maps.isEmpty()); @@ -287,7 +287,7 @@ void shouldMapValuesAsStream() { @Test void shouldMapValuesAsStreamLimit() { - List> maps = graphTemplate.traversalVertex().hasLabel("Human") + List> maps = tinkerpopTemplate.traversalVertex().hasLabel("Human") .valueMap("name").next(2).toList(); assertFalse(maps.isEmpty()); @@ -297,14 +297,14 @@ void shouldMapValuesAsStreamLimit() { @Test void shouldReturnMapValueAsEmptyStream() { - Stream> stream = graphTemplate.traversalVertex().hasLabel("Person") + Stream> stream = tinkerpopTemplate.traversalVertex().hasLabel("Person") .valueMap("noField").stream(); assertTrue(stream.allMatch(m -> Objects.isNull(m.get("noFoundProperty")))); } @Test void shouldReturnNext() { - Map map = graphTemplate.traversalVertex().hasLabel("Human") + Map map = tinkerpopTemplate.traversalVertex().hasLabel("Human") .valueMap("name").next(); assertNotNull(map); @@ -314,15 +314,15 @@ void shouldReturnNext() { @Test void shouldRepeatTimesTraversal() { - Creature lion = graphTemplate.insert(new Creature("lion")); - Creature snake = graphTemplate.insert(new Creature("snake")); - Creature mouse = graphTemplate.insert(new Creature("mouse")); - Creature plant = graphTemplate.insert(new Creature("plant")); - - graphTemplate.edge(lion, "eats", snake).add("when", "night"); - graphTemplate.edge(snake, "eats", mouse); - graphTemplate.edge(mouse, "eats", plant); - Optional animal = graphTemplate.traversalVertex().repeat().out("eats").times(3).next(); + Creature lion = tinkerpopTemplate.insert(new Creature("lion")); + Creature snake = tinkerpopTemplate.insert(new Creature("snake")); + Creature mouse = tinkerpopTemplate.insert(new Creature("mouse")); + Creature plant = tinkerpopTemplate.insert(new Creature("plant")); + + tinkerpopTemplate.edge(lion, "eats", snake).add("when", "night"); + tinkerpopTemplate.edge(snake, "eats", mouse); + tinkerpopTemplate.edge(mouse, "eats", plant); + Optional animal = tinkerpopTemplate.traversalVertex().repeat().out("eats").times(3).next(); assertTrue(animal.isPresent()); assertEquals(plant, animal.get()); @@ -330,15 +330,15 @@ void shouldRepeatTimesTraversal() { @Test void shouldRepeatTimesTraversal2() { - Creature lion = graphTemplate.insert(new Creature("lion")); - Creature snake = graphTemplate.insert(new Creature("snake")); - Creature mouse = graphTemplate.insert(new Creature("mouse")); - Creature plant = graphTemplate.insert(new Creature("plant")); - - graphTemplate.edge(lion, "eats", snake).add("when", "night"); - graphTemplate.edge(snake, "eats", mouse); - graphTemplate.edge(mouse, "eats", plant); - Optional animal = graphTemplate.traversalVertex().repeat().in("eats").times(3).next(); + Creature lion = tinkerpopTemplate.insert(new Creature("lion")); + Creature snake = tinkerpopTemplate.insert(new Creature("snake")); + Creature mouse = tinkerpopTemplate.insert(new Creature("mouse")); + Creature plant = tinkerpopTemplate.insert(new Creature("plant")); + + tinkerpopTemplate.edge(lion, "eats", snake).add("when", "night"); + tinkerpopTemplate.edge(snake, "eats", mouse); + tinkerpopTemplate.edge(mouse, "eats", plant); + Optional animal = tinkerpopTemplate.traversalVertex().repeat().in("eats").times(3).next(); assertTrue(animal.isPresent()); assertEquals(lion, animal.get()); @@ -346,16 +346,16 @@ void shouldRepeatTimesTraversal2() { @Test void shouldRepeatUntilTraversal() { - Creature lion = graphTemplate.insert(new Creature("lion")); - Creature snake = graphTemplate.insert(new Creature("snake")); - Creature mouse = graphTemplate.insert(new Creature("mouse")); - Creature plant = graphTemplate.insert(new Creature("plant")); + Creature lion = tinkerpopTemplate.insert(new Creature("lion")); + Creature snake = tinkerpopTemplate.insert(new Creature("snake")); + Creature mouse = tinkerpopTemplate.insert(new Creature("mouse")); + Creature plant = tinkerpopTemplate.insert(new Creature("plant")); - graphTemplate.edge(lion, "eats", snake); - graphTemplate.edge(snake, "eats", mouse); - graphTemplate.edge(mouse, "eats", plant); + tinkerpopTemplate.edge(lion, "eats", snake); + tinkerpopTemplate.edge(snake, "eats", mouse); + tinkerpopTemplate.edge(mouse, "eats", plant); - Optional animal = graphTemplate.traversalVertex() + Optional animal = tinkerpopTemplate.traversalVertex() .repeat().out("eats") .until().has("name", "plant").next(); @@ -367,16 +367,16 @@ void shouldRepeatUntilTraversal() { @Test void shouldRepeatUntilTraversal2() { - Creature lion = graphTemplate.insert(new Creature("lion")); - Creature snake = graphTemplate.insert(new Creature("snake")); - Creature mouse = graphTemplate.insert(new Creature("mouse")); - Creature plant = graphTemplate.insert(new Creature("plant")); + Creature lion = tinkerpopTemplate.insert(new Creature("lion")); + Creature snake = tinkerpopTemplate.insert(new Creature("snake")); + Creature mouse = tinkerpopTemplate.insert(new Creature("mouse")); + Creature plant = tinkerpopTemplate.insert(new Creature("plant")); - graphTemplate.edge(lion, "eats", snake); - graphTemplate.edge(snake, "eats", mouse); - graphTemplate.edge(mouse, "eats", plant); + tinkerpopTemplate.edge(lion, "eats", snake); + tinkerpopTemplate.edge(snake, "eats", mouse); + tinkerpopTemplate.edge(mouse, "eats", plant); - Optional animal = graphTemplate.traversalVertex() + Optional animal = tinkerpopTemplate.traversalVertex() .repeat().in("eats") .until().has("name", "lion").next(); @@ -389,20 +389,20 @@ void shouldRepeatUntilTraversal2() { @Test void shouldReturnErrorWhenTheOrderIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().orderBy(null)); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().orderBy(null)); } @Test void shouldReturnErrorWhenThePropertyDoesNotExist() { assertThrows(NoSuchElementException.class, () -> - graphTemplate.traversalVertex().orderBy("wrong property").asc().next().get()); + tinkerpopTemplate.traversalVertex().orderBy("wrong property").asc().next().get()); } @Test void shouldOrderAsc() { String property = "name"; - List properties = graphTemplate.traversalVertex() + List properties = tinkerpopTemplate.traversalVertex() .hasLabel("Magazine") .has(property) .orderBy(property) @@ -417,7 +417,7 @@ void shouldOrderAsc() { void shouldOrderDesc() { String property = "name"; - List properties = graphTemplate.traversalVertex() + List properties = tinkerpopTemplate.traversalVertex() .hasLabel("Magazine") .has(property) .orderBy(property) @@ -430,29 +430,29 @@ void shouldOrderDesc() { @Test void shouldReturnErrorWhenHasLabelStringNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().hasLabel((String) null)); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().hasLabel((String) null)); } @Test void shouldReturnErrorWhenHasLabelSupplierNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().hasLabel((Supplier) null)); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().hasLabel((Supplier) null)); } @Test void shouldReturnErrorWhenHasLabelEntityClassNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().hasLabel((Class) null)); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().hasLabel((Class) null)); } @Test void shouldReturnHasLabel() { - assertTrue(graphTemplate.traversalVertex().hasLabel("Person").result().allMatch(Human.class::isInstance)); - assertTrue(graphTemplate.traversalVertex().hasLabel(() -> "Book").result().allMatch(Magazine.class::isInstance)); - assertTrue(graphTemplate.traversalVertex().hasLabel(Creature.class).result().allMatch(Creature.class::isInstance)); + assertTrue(tinkerpopTemplate.traversalVertex().hasLabel("Person").result().allMatch(Human.class::isInstance)); + assertTrue(tinkerpopTemplate.traversalVertex().hasLabel(() -> "Book").result().allMatch(Magazine.class::isInstance)); + assertTrue(tinkerpopTemplate.traversalVertex().hasLabel(Creature.class).result().allMatch(Creature.class::isInstance)); } @Test void shouldReturnResultAsList() { - List people = graphTemplate.traversalVertex().hasLabel("Human") + List people = tinkerpopTemplate.traversalVertex().hasLabel("Human") .result() .toList(); assertEquals(3, people.size()); @@ -460,31 +460,31 @@ void shouldReturnResultAsList() { @Test void shouldReturnErrorWhenThereAreMoreThanOneInGetSingleResult() { - assertThrows(NonUniqueResultException.class, () -> graphTemplate.traversalVertex().hasLabel("Human").singleResult()); + assertThrows(NonUniqueResultException.class, () -> tinkerpopTemplate.traversalVertex().hasLabel("Human").singleResult()); } @Test void shouldReturnOptionalEmptyWhenThereIsNotResultInSingleResult() { - Optional entity = graphTemplate.traversalVertex().hasLabel("NoEntity").singleResult(); + Optional entity = tinkerpopTemplate.traversalVertex().hasLabel("NoEntity").singleResult(); assertFalse(entity.isPresent()); } @Test void shouldReturnSingleResult() { String name = "Poliana"; - Optional poliana = graphTemplate.traversalVertex().hasLabel("Human"). + Optional poliana = tinkerpopTemplate.traversalVertex().hasLabel("Human"). has("name", name).singleResult(); assertEquals(name, poliana.map(Human::getName).orElse("")); } @Test void shouldReturnErrorWhenPredicateIsNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.traversalVertex().filter(null)); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.traversalVertex().filter(null)); } @Test void shouldPredicate() { - long count = graphTemplate.traversalVertex() + long count = tinkerpopTemplate.traversalVertex() .hasLabel(Human.class) .filter(Human::isAdult).count(); assertEquals(3L, count); @@ -493,21 +493,21 @@ void shouldPredicate() { @Test void shouldDedup() { - graphTemplate.edge(otavio, "knows", paulo); - graphTemplate.edge(paulo, "knows", otavio); - graphTemplate.edge(otavio, "knows", poliana); - graphTemplate.edge(poliana, "knows", otavio); - graphTemplate.edge(poliana, "knows", paulo); - graphTemplate.edge(paulo, "knows", poliana); + tinkerpopTemplate.edge(otavio, "knows", paulo); + tinkerpopTemplate.edge(paulo, "knows", otavio); + tinkerpopTemplate.edge(otavio, "knows", poliana); + tinkerpopTemplate.edge(poliana, "knows", otavio); + tinkerpopTemplate.edge(poliana, "knows", paulo); + tinkerpopTemplate.edge(paulo, "knows", poliana); - List people = graphTemplate.traversalVertex() + List people = tinkerpopTemplate.traversalVertex() .hasLabel(Human.class) .in("knows").result() .collect(Collectors.toList()); assertEquals(6, people.size()); - people = graphTemplate.traversalVertex() + people = tinkerpopTemplate.traversalVertex() .hasLabel(Human.class) .in("knows").dedup().result() .toList(); 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 8f944b2df..258e89965 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 @@ -42,7 +42,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; @EnableAutoWeld -@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class}) +@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class}) @AddPackages(GraphProducer.class) @AddPackages(Reflections.class) @AddExtensions({EntityMetadataExtension.class, GraphExtension.class}) @@ -50,7 +50,7 @@ class EdgeEntityTest { @Inject - private GraphTemplate graphTemplate; + private TinkerpopTemplate tinkerpopTemplate; @Test @@ -58,7 +58,7 @@ void shouldReturnErrorWhenInboundIsNull() { Assertions.assertThrows(NullPointerException.class, () -> { Human human = Human.builder().withName("Poliana").withAge().build(); Magazine magazine = null; - graphTemplate.edge(human, "reads", magazine); + tinkerpopTemplate.edge(human, "reads", magazine); }); } @@ -67,7 +67,7 @@ void shouldReturnErrorWhenOutboundIsNull() { Assertions.assertThrows(IllegalStateException.class, () -> { Human human = Human.builder().withName("Poliana").withAge().build(); Magazine magazine = Magazine.builder().withAge(2007).withName("The Shack").build(); - graphTemplate.edge(human, "reads", magazine); + tinkerpopTemplate.edge(human, "reads", magazine); }); } @@ -76,7 +76,7 @@ void shouldReturnErrorWhenLabelIsNull() { Assertions.assertThrows(NullPointerException.class, () -> { Human human = Human.builder().withName("Poliana").withAge().build(); Magazine magazine = Magazine.builder().withAge(2007).withName("The Shack").build(); - graphTemplate.edge(human, (String) null, magazine); + tinkerpopTemplate.edge(human, (String) null, magazine); }); } @@ -84,8 +84,8 @@ void shouldReturnErrorWhenLabelIsNull() { void shouldReturnNullWhenInboundIdIsNull() { Assertions.assertThrows(EmptyResultException.class, () -> { Human human = Human.builder().withId(-5).withName("Poliana").withAge().build(); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - graphTemplate.edge(human, "reads", magazine); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + tinkerpopTemplate.edge(human, "reads", magazine); }); } @@ -93,9 +93,9 @@ void shouldReturnNullWhenInboundIdIsNull() { @Test void shouldReturnNullWhenOutboundIdIsNull() { Assertions.assertThrows(IllegalStateException.class, () -> { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); Magazine magazine = Magazine.builder().withAge(2007).withName("The Shack").build(); - graphTemplate.edge(human, "reads", magazine); + tinkerpopTemplate.edge(human, "reads", magazine); }); } @@ -103,25 +103,25 @@ void shouldReturnNullWhenOutboundIdIsNull() { void shouldReturnEntityNotFoundWhenOutBoundDidNotFound() { Assertions.assertThrows( EmptyResultException.class, () -> { Human human = Human.builder().withId(-10L).withName("Poliana").withAge().build(); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - graphTemplate.edge(human, "reads", magazine); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + tinkerpopTemplate.edge(human, "reads", magazine); }); } @Test void shouldReturnEntityNotFoundWhenInBoundDidNotFound() { Assertions.assertThrows( EmptyResultException.class, () -> { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); Magazine magazine = Magazine.builder().withId(10L).withAge(2007).withName("The Shack").build(); - graphTemplate.edge(human, "reads", magazine); + tinkerpopTemplate.edge(human, "reads", magazine); }); } @Test void shouldCreateAnEdge() { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, "reads", magazine); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine); assertEquals("reads", edge.label()); assertEquals(human, edge.outgoing()); @@ -132,9 +132,9 @@ void shouldCreateAnEdge() { @Test void shouldGetId() { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, "reads", magazine); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine); assertEquals("reads", edge.label()); assertEquals(human, edge.outgoing()); @@ -150,9 +150,9 @@ void shouldGetId() { @Test void shouldCreateAnEdgeWithSupplier() { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, () -> "reads", magazine); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(human, () -> "reads", magazine); assertEquals("reads", edge.label()); assertEquals(human, edge.outgoing()); @@ -163,11 +163,11 @@ void shouldCreateAnEdgeWithSupplier() { @Test void shouldUseAnEdge() { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, "reads", magazine); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine); - EdgeEntity sameEdge = graphTemplate.edge(human, "reads", magazine); + EdgeEntity sameEdge = tinkerpopTemplate.edge(human, "reads", magazine); assertEquals(edge.id(), sameEdge.id()); assertEquals(edge, sameEdge); @@ -175,15 +175,15 @@ void shouldUseAnEdge() { @Test void shouldUseAnEdge2() { - Human poliana = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Human nilzete = graphTemplate.insert(Human.builder().withName("Nilzete").withAge().build()); + Human poliana = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Human nilzete = tinkerpopTemplate.insert(Human.builder().withName("Nilzete").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(poliana, "reads", magazine); - EdgeEntity edge1 = graphTemplate.edge(nilzete, "reads", magazine); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(poliana, "reads", magazine); + EdgeEntity edge1 = tinkerpopTemplate.edge(nilzete, "reads", magazine); - EdgeEntity sameEdge = graphTemplate.edge(poliana, "reads", magazine); - EdgeEntity sameEdge1 = graphTemplate.edge(nilzete, "reads", magazine); + EdgeEntity sameEdge = tinkerpopTemplate.edge(poliana, "reads", magazine); + EdgeEntity sameEdge1 = tinkerpopTemplate.edge(nilzete, "reads", magazine); assertEquals(edge.id(), sameEdge.id()); assertEquals(edge, sameEdge); @@ -195,15 +195,15 @@ void shouldUseAnEdge2() { @Test void shouldUseADifferentEdge() { - Human poliana = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Human nilzete = graphTemplate.insert(Human.builder().withName("Nilzete").withAge().build()); + Human poliana = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Human nilzete = tinkerpopTemplate.insert(Human.builder().withName("Nilzete").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(poliana, "reads", magazine); - EdgeEntity edge1 = graphTemplate.edge(nilzete, "reads", magazine); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(poliana, "reads", magazine); + EdgeEntity edge1 = tinkerpopTemplate.edge(nilzete, "reads", magazine); - EdgeEntity sameEdge = graphTemplate.edge(poliana, "reads", magazine); - EdgeEntity sameEdge1 = graphTemplate.edge(nilzete, "reads", magazine); + EdgeEntity sameEdge = tinkerpopTemplate.edge(poliana, "reads", magazine); + EdgeEntity sameEdge1 = tinkerpopTemplate.edge(nilzete, "reads", magazine); assertNotEquals(edge.id(), edge1.id()); assertNotEquals(edge.id(), sameEdge1.id()); @@ -214,9 +214,9 @@ void shouldUseADifferentEdge() { @Test void shouldReturnErrorWhenAddKeyIsNull() { assertThrows(NullPointerException.class, () -> { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, "reads", magazine); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine); edge.add(null, "Brazil"); }); } @@ -225,18 +225,18 @@ void shouldReturnErrorWhenAddKeyIsNull() { void shouldReturnErrorWhenAddValueIsNull() { assertThrows(NullPointerException.class, () -> { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, "reads", magazine); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine); edge.add("where", null); }); } @Test void shouldAddProperty() { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, "reads", magazine); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine); edge.add("where", "Brazil"); assertFalse(edge.isEmpty()); @@ -246,9 +246,9 @@ void shouldAddProperty() { @Test void shouldAddPropertyWithValue() { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, "reads", magazine); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine); edge.add("where", Value.of("Brazil")); assertFalse(edge.isEmpty()); @@ -260,9 +260,9 @@ void shouldAddPropertyWithValue() { @Test void shouldReturnErrorWhenRemoveNullKeyProperty() { assertThrows(NullPointerException.class, () -> { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, "reads", magazine); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine); edge.add("where", "Brazil"); @@ -273,9 +273,9 @@ void shouldReturnErrorWhenRemoveNullKeyProperty() { @Test void shouldRemoveProperty() { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, "reads", magazine); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine); edge.add("where", "Brazil"); assertEquals(1, edge.size()); assertFalse(edge.isEmpty()); @@ -286,9 +286,9 @@ void shouldRemoveProperty() { @Test void shouldFindProperty() { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, "reads", magazine); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine); edge.add("where", "Brazil"); Optional where = edge.get("where"); @@ -300,59 +300,59 @@ void shouldFindProperty() { @Test void shouldDeleteAnEdge() { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, "reads", magazine); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine); edge.delete(); - EdgeEntity newEdge = graphTemplate.edge(human, "reads", magazine); + EdgeEntity newEdge = tinkerpopTemplate.edge(human, "reads", magazine); assertNotEquals(edge.id(), newEdge.id()); - graphTemplate.deleteEdge(newEdge.id()); + tinkerpopTemplate.deleteEdge(newEdge.id()); } @Test void shouldReturnErrorWhenDeleteAnEdgeWithNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.delete((Iterable) null)); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.delete((Iterable) null)); } @Test void shouldDeleteAnEdge2() { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, "reads", magazine); + EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine); - graphTemplate.deleteEdge(edge.id()); + tinkerpopTemplate.deleteEdge(edge.id()); - EdgeEntity newEdge = graphTemplate.edge(human, "reads", magazine); + EdgeEntity newEdge = tinkerpopTemplate.edge(human, "reads", magazine); assertNotEquals(edge.id(), newEdge.id()); } @Test void shouldReturnErrorWhenFindEdgeWithNull() { - assertThrows(NullPointerException.class, () -> graphTemplate.edge(null)); + assertThrows(NullPointerException.class, () -> tinkerpopTemplate.edge(null)); } @Test void shouldFindAnEdge() { - Human human = graphTemplate.insert(Human.builder().withName("Poliana").withAge().build()); - Magazine magazine = graphTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); - EdgeEntity edge = graphTemplate.edge(human, "reads", magazine); + Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build()); + Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build()); + EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine); - Optional newEdge = graphTemplate.edge(edge.id()); + Optional newEdge = tinkerpopTemplate.edge(edge.id()); assertTrue(newEdge.isPresent()); assertEquals(edge.id(), newEdge.get().id()); - graphTemplate.deleteEdge(edge.id()); + tinkerpopTemplate.deleteEdge(edge.id()); } @Test void shouldNotFindAnEdge() { - Optional edgeEntity = graphTemplate.edge(-12L); + Optional edgeEntity = tinkerpopTemplate.edge(-12L); assertFalse(edgeEntity.isPresent()); } 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 5a2272e6c..3fec6315a 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 @@ -39,7 +39,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; @EnableAutoWeld -@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class}) +@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class}) @AddPackages(GraphProducer.class) @AddPackages(Reflections.class) @AddExtensions({EntityMetadataExtension.class, GraphExtension.class}) diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateProducerTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateProducerTest.java similarity index 90% rename from jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateProducerTest.java rename to jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateProducerTest.java index da107b0fc..dd4aedcbf 100644 --- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateProducerTest.java +++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateProducerTest.java @@ -31,11 +31,11 @@ import static org.junit.jupiter.api.Assertions.assertThrows; @EnableAutoWeld -@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class}) +@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class}) @AddPackages(GraphProducer.class) @AddPackages(Reflections.class) @AddExtensions({EntityMetadataExtension.class, GraphExtension.class}) -class GraphTemplateProducerTest { +class TinkerpopTemplateProducerTest { @Inject private GraphTemplateProducer producer; @@ -48,7 +48,7 @@ void shouldReturnErrorWhenManagerNull() { @Test void shouldReturnGraphTemplateWhenGetGraph() { Graph graph = Mockito.mock(Graph.class); - GraphTemplate template = producer.apply(graph); + TinkerpopTemplate template = producer.apply(graph); assertNotNull(template); } 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/TinkerpopTemplateTest.java similarity index 93% rename from jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateTest.java rename to jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateTest.java index ab810b047..64d9204b1 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/TinkerpopTemplateTest.java @@ -31,11 +31,11 @@ import static org.eclipse.jnosql.mapping.DatabaseType.GRAPH; @EnableAutoWeld -@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class}) +@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class}) @AddPackages(GraphProducer.class) @AddPackages(Reflections.class) @AddExtensions({EntityMetadataExtension.class, GraphExtension.class}) -class GraphTemplateTest { +class TinkerpopTemplateTest { @Inject private Template template; 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 aae0b7adc..1376e32b5 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,7 @@ import jakarta.inject.Inject; import org.apache.tinkerpop.gremlin.structure.Graph; import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphProducer; -import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphTemplate; +import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate; import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.GraphExtension; import org.eclipse.jnosql.mapping.core.Converters; import org.eclipse.jnosql.mapping.core.spi.EntityMetadataExtension; @@ -35,7 +35,7 @@ import static org.eclipse.jnosql.mapping.core.config.MappingConfigurations.GRAPH_PROVIDER; @EnableAutoWeld -@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class}) +@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class}) @AddPackages(GraphProducer.class) @AddPackages(Reflections.class) @AddExtensions({EntityMetadataExtension.class, GraphExtension.class}) diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/MagazineTemplate.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/MagazineTemplate.java index b8f4a510c..233c6a190 100644 --- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/MagazineTemplate.java +++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/entities/MagazineTemplate.java @@ -16,28 +16,28 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; -import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphTemplate; +import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate; import org.eclipse.jnosql.databases.tinkerpop.mapping.Transactional; @ApplicationScoped public class MagazineTemplate { @Inject - private GraphTemplate graphTemplate; + private TinkerpopTemplate tinkerpopTemplate; @Transactional public void insert(Magazine actor) { - graphTemplate.insert(actor); + tinkerpopTemplate.insert(actor); } @Transactional public void insertException(Magazine actor) { - graphTemplate.insert(actor); + tinkerpopTemplate.insert(actor); throw new NullPointerException("should get a rollback"); } public void normalInsertion(Magazine actor) { - graphTemplate.insert(actor); + tinkerpopTemplate.insert(actor); } } diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphCustomExtensionTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphCustomExtensionTest.java index 5bc45760d..3e7131cbb 100644 --- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphCustomExtensionTest.java +++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphCustomExtensionTest.java @@ -17,7 +17,7 @@ import jakarta.inject.Inject; import org.assertj.core.api.SoftAssertions; import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphProducer; -import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphTemplate; +import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate; import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human; import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.People; import org.eclipse.jnosql.mapping.Database; @@ -35,7 +35,7 @@ @EnableAutoWeld -@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class}) +@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class}) @AddPackages(GraphProducer.class) @AddPackages(Reflections.class) @AddExtensions({EntityMetadataExtension.class, GraphExtension.class}) diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphExtensionTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphExtensionTest.java index 9828f27b3..2d4e19d6c 100644 --- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphExtensionTest.java +++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphExtensionTest.java @@ -16,7 +16,7 @@ import jakarta.inject.Inject; import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphProducer; -import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphTemplate; +import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate; import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human; import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.HumanRepository; import org.eclipse.jnosql.mapping.Database; @@ -35,7 +35,7 @@ @EnableAutoWeld -@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class}) +@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class}) @AddPackages(GraphProducer.class) @AddPackages(Reflections.class) @AddExtensions({EntityMetadataExtension.class, GraphExtension.class}) @@ -52,10 +52,10 @@ class GraphExtensionTest { @Inject @Database(value = DatabaseType.GRAPH, provider = "graphRepositoryMock") - private GraphTemplate templateMock; + private TinkerpopTemplate templateMock; @Inject - private GraphTemplate template; + private TinkerpopTemplate template; @Test From be0b750cd5dc0fea80564c7eb40a182006503b32 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 20:42:13 +0000 Subject: [PATCH 22/43] feat: abstract tinkerpop template Signed-off-by: Otavio Santana --- .../databases/tinkerpop/mapping/AbstractTinkerpopTemplate.java | 3 ++- .../jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplate.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplate.java index 27ca3d493..7beaf38ad 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplate.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplate.java @@ -29,6 +29,7 @@ import org.eclipse.jnosql.databases.tinkerpop.communication.GraphTransactionUtil; import org.eclipse.jnosql.mapping.IdNotFoundException; import org.eclipse.jnosql.mapping.PreparedStatement; +import org.eclipse.jnosql.mapping.graph.AbstractGraphTemplate; import org.eclipse.jnosql.mapping.metadata.EntityMetadata; import org.eclipse.jnosql.mapping.metadata.FieldMetadata; import org.eclipse.jnosql.mapping.semistructured.AbstractSemiStructuredTemplate; @@ -50,7 +51,7 @@ import static java.util.Objects.requireNonNull; import static org.apache.tinkerpop.gremlin.structure.T.id; -abstract class AbstractTinkerpopTemplate extends AbstractSemiStructuredTemplate implements TinkerpopTemplate { +abstract class AbstractTinkerpopTemplate extends AbstractGraphTemplate implements TinkerpopTemplate { @SuppressWarnings("unchecked") private static final Function, GraphTraversal> INITIAL_VERTEX = diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java index 8a4f7cf4f..6a9e525e8 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java @@ -17,6 +17,7 @@ import org.apache.tinkerpop.gremlin.structure.Direction; import org.apache.tinkerpop.gremlin.structure.Transaction; import org.eclipse.jnosql.mapping.PreparedStatement; +import org.eclipse.jnosql.mapping.graph.GraphTemplate; import org.eclipse.jnosql.mapping.semistructured.SemiStructuredTemplate; import java.util.Collection; @@ -35,7 +36,7 @@ * * @see org.apache.tinkerpop.gremlin.structure.Graph */ -public interface TinkerpopTemplate extends SemiStructuredTemplate { +public interface TinkerpopTemplate extends GraphTemplate { /** * Deletes a {@link org.apache.tinkerpop.gremlin.structure.Vertex} From aa5877f80d5de92c1282f79a37e3896aaa4690da Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 20:51:19 +0000 Subject: [PATCH 23/43] test: create test scenarion Signed-off-by: Otavio Santana --- .../AbstractTinkerpopTemplateTest.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) 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 91f3a3ce5..ddd63f902 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 @@ -543,4 +543,50 @@ void shouldUpdateNullValues(){ assertNull(human.getName()); } + + @Test + void shouldCreateEdgeByGraphAPI() { + final Human otavio = getGraphTemplate().insert(Human.builder().withAge() + .withName("Otavio").build()); + + 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 edgeEntity = getGraphTemplate().edge(edge); + + SoftAssertions.assertSoftly(softly -> { + softly.assertThat(edgeEntity).isNotNull(); + softly.assertThat(edgeEntity.label()).isEqualTo("LOVES"); + softly.assertThat(edgeEntity.source()).isEqualTo(otavio); + softly.assertThat(edgeEntity.target()).isEqualTo(poliana); + }); + } + + @Test + void shouldCreateEdgeByGraphAPIWithProperties() { + final Human otavio = getGraphTemplate().insert(Human.builder().withAge() + .withName("Otavio").build()); + + 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) + .property("when", "2017") + .property("where", "Brazil") + .build(); + var edgeEntity = getGraphTemplate().edge(edge); + + SoftAssertions.assertSoftly(softly -> { + softly.assertThat(edgeEntity).isNotNull(); + softly.assertThat(edgeEntity.label()).isEqualTo("LOVES"); + softly.assertThat(edgeEntity.source()).isEqualTo(otavio); + softly.assertThat(edgeEntity.target()).isEqualTo(poliana); + softly.assertThat(edgeEntity.properties()).hasSize(2); + softly.assertThat(edgeEntity.property("when", String.class)).contains("2017"); + softly.assertThat(edgeEntity.property("where", String.class)).contains("Brazil"); + }); + } } From c1ab7dd217765a7ca72edb7d6eb66977ca402dc4 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 6 Mar 2025 20:52:29 +0000 Subject: [PATCH 24/43] docs: update changelo Signed-off-by: Otavio Santana --- CHANGELOG.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index a18ad12b8..7432ce129 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -12,6 +12,7 @@ and this project adheres to https://semver.org/spec/v2.0.0.html[Semantic Version - Include TCK tests - Include support to Neo4J +- Include Apache Tinkerpop support to Graph API === Changed From afc0527a38e059b979a54bab5bb41ac40ac903cb Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Fri, 7 Mar 2025 04:15:01 +0000 Subject: [PATCH 25/43] style: update imports Signed-off-by: Otavio Santana --- .../jnosql/databases/neo4j/integration/MagazineRepository.java | 1 - .../java/org/eclipse/jnosql/databases/neo4j/mapping/Music.java | 1 - .../jnosql/databases/neo4j/mapping/Neo4jRepositoryProxyTest.java | 1 - 3 files changed, 3 deletions(-) diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/MagazineRepository.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/MagazineRepository.java index 1a87a4d71..535a34015 100644 --- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/MagazineRepository.java +++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/MagazineRepository.java @@ -17,7 +17,6 @@ import jakarta.data.repository.Repository; import org.eclipse.jnosql.databases.neo4j.mapping.Neo4JRepository; -import org.eclipse.jnosql.mapping.NoSQLRepository; @Repository public interface MagazineRepository extends Neo4JRepository { diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Music.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Music.java index 24ab933a6..a998ddc8e 100644 --- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Music.java +++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Music.java @@ -17,7 +17,6 @@ import jakarta.nosql.Column; -import jakarta.nosql.Convert; import jakarta.nosql.Entity; import jakarta.nosql.Id; diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jRepositoryProxyTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jRepositoryProxyTest.java index 3a425b4f4..cece79de2 100644 --- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jRepositoryProxyTest.java +++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jRepositoryProxyTest.java @@ -16,7 +16,6 @@ import jakarta.data.repository.Param; import jakarta.inject.Inject; -import org.eclipse.jnosql.communication.semistructured.DeleteQuery; import org.eclipse.jnosql.mapping.core.Converters; import org.eclipse.jnosql.mapping.core.spi.EntityMetadataExtension; import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata; From 120aa0e511076765bfdde9b86dd4d4b7e4398a1a Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Fri, 7 Mar 2025 04:16:31 +0000 Subject: [PATCH 26/43] feat: decrease the construct Signed-off-by: Otavio Santana --- .../databases/neo4j/mapping/Neo4jRepositoryProxyTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jRepositoryProxyTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jRepositoryProxyTest.java index cece79de2..e006d5f25 100644 --- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jRepositoryProxyTest.java +++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jRepositoryProxyTest.java @@ -58,10 +58,11 @@ public class Neo4jRepositoryProxyTest { private HumanRepository personRepository; + @SuppressWarnings("rawtypes") @BeforeEach public void setUp() { this.template = Mockito.mock(Neo4JTemplate.class); - Neo4JRepositoryProxy handler = new Neo4JRepositoryProxy(template, + Neo4JRepositoryProxy handler = new Neo4JRepositoryProxy<>(template, HumanRepository.class, converters, entitiesMetadata); when(template.insert(any(Contact.class))).thenReturn(new Contact()); @@ -97,6 +98,7 @@ public void shouldFindByNameCQL() { verify(template).cypher("MATCH (p:Person) WHERE p.name = $1 RETURN p", Collections.singletonMap("name", "Ada")); } + @SuppressWarnings("rawtypes") @Test public void shouldFindByName2CQL() { ArgumentCaptor captor = ArgumentCaptor.forClass(Map.class); From 92db1a0630438c243530368b5adcd1c14bfe3614 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Fri, 7 Mar 2025 04:16:54 +0000 Subject: [PATCH 27/43] feat: update lambda expression Signed-off-by: Otavio Santana --- .../neo4j/communication/Neo4JDatabaseManagerTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java index a15b87577..709bb476c 100644 --- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java +++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java @@ -148,9 +148,7 @@ void shouldSelectLimit() { } var query = select().from(COLLECTION_NAME).limit(5).build(); var entities = entityManager.select(query).toList(); - SoftAssertions.assertSoftly(softly -> { - softly.assertThat(entities).hasSize(5); - }); + SoftAssertions.assertSoftly(softly -> softly.assertThat(entities).hasSize(5)); } @Test From d791189abb41f25859ed40f1c9a0cba20018909b Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Fri, 7 Mar 2025 04:24:13 +0000 Subject: [PATCH 28/43] feat: update and enhance time Signed-off-by: Otavio Santana --- .../Neo4JDatabaseManagerTest.java | 24 +-- .../GraphTemplateIntegrationTest.java | 150 ++++++++++++++++++ 2 files changed, 156 insertions(+), 18 deletions(-) create mode 100644 jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java index 709bb476c..cae60c295 100644 --- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java +++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JDatabaseManagerTest.java @@ -158,9 +158,7 @@ void shouldSelectStart() { } var query = select().from(COLLECTION_NAME).skip(5).build(); var entities = entityManager.select(query).toList(); - SoftAssertions.assertSoftly(softly -> { - softly.assertThat(entities).hasSize(5); - }); + SoftAssertions.assertSoftly(softly -> softly.assertThat(entities).hasSize(5)); } @Test @@ -170,9 +168,7 @@ void shouldSelectStartAndLimit() { } var query = select().from(COLLECTION_NAME).skip(5).limit(2).build(); var entities = entityManager.select(query).toList(); - SoftAssertions.assertSoftly(softly -> { - softly.assertThat(entities).hasSize(2); - }); + SoftAssertions.assertSoftly(softly -> softly.assertThat(entities).hasSize(2)); } @Test @@ -386,9 +382,7 @@ void shouldDeleteById() { entityManager.delete(deleteQuery); var query = select().from(COLLECTION_NAME).build(); var entities = entityManager.select(query).toList(); - SoftAssertions.assertSoftly(softly -> { - softly.assertThat(entities).isEmpty(); - }); + SoftAssertions.assertSoftly(softly -> softly.assertThat(entities).isEmpty()); } @Test @@ -531,9 +525,7 @@ void shouldCreateEdge() { ); var result = entityManager.executeQuery(cypher, parameters).toList(); - SoftAssertions.assertSoftly(softly -> { - softly.assertThat(result).isNotEmpty(); - }); + SoftAssertions.assertSoftly(softly -> softly.assertThat(result).isNotEmpty()); entityManager.remove(person1, "FRIEND", person2); } @@ -555,9 +547,7 @@ void shouldRemoveEdge() { Map parameters = Map.of("_id1", startNodeId, "_id2", targetNodeId); var result = entityManager.executeQuery(cypher, parameters).toList(); - SoftAssertions.assertSoftly(softly -> { - softly.assertThat(result).isEmpty(); - }); + SoftAssertions.assertSoftly(softly -> softly.assertThat(result).isEmpty()); } @Test @@ -575,9 +565,7 @@ void shouldDeleteEdgeById() { Map parameters = Map.of("id", edgeId); var result = entityManager.executeQuery(cypher, parameters).toList(); - SoftAssertions.assertSoftly(softly -> { - softly.assertThat(result).isEmpty(); - }); + SoftAssertions.assertSoftly(softly -> softly.assertThat(result).isEmpty()); } @Test diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java new file mode 100644 index 000000000..418b5ddfd --- /dev/null +++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2025 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.neo4j.integration; + +import jakarta.inject.Inject; +import org.assertj.core.api.SoftAssertions; +import org.eclipse.jnosql.databases.neo4j.communication.DatabaseContainer; +import org.eclipse.jnosql.databases.neo4j.communication.Neo4JConfigurations; +import org.eclipse.jnosql.databases.neo4j.mapping.Neo4JTemplate; +import org.eclipse.jnosql.mapping.Database; +import org.eclipse.jnosql.mapping.core.Converters; +import org.eclipse.jnosql.mapping.core.spi.EntityMetadataExtension; +import org.eclipse.jnosql.mapping.graph.Edge; +import org.eclipse.jnosql.mapping.graph.GraphTemplate; +import org.eclipse.jnosql.mapping.reflection.Reflections; +import org.eclipse.jnosql.mapping.semistructured.EntityConverter; +import org.jboss.weld.junit5.auto.AddExtensions; +import org.jboss.weld.junit5.auto.AddPackages; +import org.jboss.weld.junit5.auto.EnableAutoWeld; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfSystemProperty; + +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.eclipse.jnosql.communication.driver.IntegrationTest.MATCHES; +import static org.eclipse.jnosql.communication.driver.IntegrationTest.NAMED; + +@EnableAutoWeld +@AddPackages(value = {Database.class, EntityConverter.class, Neo4JTemplate.class}) +@AddPackages(Magazine.class) +@AddPackages(Reflections.class) +@AddPackages(Converters.class) +@AddExtensions({EntityMetadataExtension.class}) +@EnabledIfSystemProperty(named = NAMED, matches = MATCHES) +public class GraphTemplateIntegrationTest { + + static { + DatabaseContainer.INSTANCE.host(); + System.setProperty(Neo4JConfigurations.URI.get(), DatabaseContainer.INSTANCE.host()); + System.setProperty(Neo4JConfigurations.DATABASE.get(), "neo4j"); + } + + @Inject + private GraphTemplate template; + + @BeforeEach + void setUp() { + template.delete(Magazine.class).execute(); + } + + @Test + void shouldFindById() { + Magazine magazine = template.insert(new Magazine(null, "Effective Java", 1)); + + assertThat(template.find(Magazine.class, magazine.id())) + .isNotNull().get().isEqualTo(magazine); + } + + @Test + void shouldInsert() { + Magazine magazine = template.insert(new Magazine(null, "Effective Java", 1)); + + Optional optional = template.find(Magazine.class, magazine.id()); + assertThat(optional).isNotNull().isNotEmpty() + .get().isEqualTo(magazine); + } + + @Test + void shouldUpdate() { + Magazine magazine = template.insert(new Magazine(null, "Effective Java", 1)); + + Magazine updated = new Magazine(magazine.id(), magazine.title() + " updated", 2); + + assertThat(template.update(updated)) + .isNotNull() + .isNotEqualTo(magazine); + + assertThat(template.find(Magazine.class, magazine.id())) + .isNotNull().get().isEqualTo(updated); + + } + + @Test + void shouldDeleteById() { + Magazine magazine = template.insert(new Magazine(null, "Effective Java", 1)); + + template.delete(Magazine.class, magazine.id()); + assertThat(template.find(Magazine.class, magazine.id())) + .isNotNull().isEmpty(); + } + + @Test + void shouldDeleteAll(){ + for (int index = 0; index < 20; index++) { + Magazine magazine = template.insert(new Magazine(null, "Effective Java", 1)); + assertThat(magazine).isNotNull(); + } + + template.delete(Magazine.class).execute(); + assertThat(template.select(Magazine.class).result()).isEmpty(); + } + + @Test + void shouldCreateEdge() { + Magazine firstEdition = template.insert(new Magazine(null, "Effective Java", 1)); + Magazine secondEdition = template.insert(new Magazine(null, "Effective Java", 2)); + Edge edge = Edge.source(firstEdition).label("NEXT").target(secondEdition).property("year", 2025).build(); + Edge magazineEdge = template.edge(edge); + + SoftAssertions.assertSoftly(soft -> { + soft.assertThat(magazineEdge.source()).isEqualTo(firstEdition); + soft.assertThat(magazineEdge.target()).isEqualTo(secondEdition); + soft.assertThat(magazineEdge.label()).isEqualTo("NEXT"); + soft.assertThat(magazineEdge.property("year", Integer.class)).contains(2025); + soft.assertThat(magazineEdge.id()).isPresent(); + }); + } + + @Test + void shouldCreateEdgeFromNullId() { + Magazine firstEdition = new Magazine(null, "Effective Java", 1); + Magazine secondEdition = new Magazine(null, "Effective Java", 2); + Edge edge = Edge.source(firstEdition).label("NEXT").target(secondEdition).property("year", 2025).build(); + Edge magazineEdge = template.edge(edge); + + SoftAssertions.assertSoftly(soft -> { + soft.assertThat(magazineEdge.source()).isNotNull(); + soft.assertThat(magazineEdge.source().id()).isNotNull(); + soft.assertThat(magazineEdge.target()).isNotNull(); + soft.assertThat(magazineEdge.target().id()).isNotNull(); + soft.assertThat(magazineEdge.label()).isEqualTo("NEXT"); + soft.assertThat(magazineEdge.property("year", Integer.class)).contains(2025); + soft.assertThat(magazineEdge.id()).isPresent(); + }); + } +} From 50553f6c18675ad31dbff336288c85af41335367 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Fri, 7 Mar 2025 04:25:04 +0000 Subject: [PATCH 29/43] docs: ignore blank line Signed-off-by: Otavio Santana --- .../java/org/eclipse/jnosql/databases/neo4j/mapping/Cypher.java | 1 - 1 file changed, 1 deletion(-) diff --git a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Cypher.java b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Cypher.java index 80f26c066..2fae56157 100644 --- a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Cypher.java +++ b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/Cypher.java @@ -24,7 +24,6 @@ * Annotation for defining Cypher queries in Neo4J repositories. * This annotation allows users to specify a Cypher query directly on repository methods, * enabling custom query execution within {@code Neo4JRepository}. - * * Example usage: *
  * {@code

From 4af7713087871565bb6b57cdb6d924a0a2029e55 Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Fri, 7 Mar 2025 04:34:20 +0000
Subject: [PATCH 30/43] feat: update create graph configuration supplier

Signed-off-by: Otavio Santana 
---
 .../GraphConfigurationSupplier.java           | 44 +++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfigurationSupplier.java

diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfigurationSupplier.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfigurationSupplier.java
new file mode 100644
index 000000000..af248b537
--- /dev/null
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfigurationSupplier.java
@@ -0,0 +1,44 @@
+/*
+ *  Copyright (c) 2025 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.mapping.configuration;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.inject.Produces;
+import jakarta.inject.Inject;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.communication.graph.GraphDatabaseManager;
+import org.eclipse.jnosql.databases.tinkerpop.communication.TinkerpopGraphDatabaseManager;
+
+import java.util.function.Supplier;
+import java.util.logging.Logger;
+
+@ApplicationScoped
+class GraphConfigurationSupplier implements Supplier {
+
+    private static final Logger LOGGER = Logger.getLogger(GraphSupplier.class.getName());
+
+    @Inject
+    private GraphSupplier supplier;
+
+
+    @Override
+    @Produces
+    @ApplicationScoped
+    public GraphDatabaseManager get() {
+        LOGGER.fine(() -> "Loading the Graph configuration");
+        Graph graph = supplier.get();
+        return TinkerpopGraphDatabaseManager.of(graph);
+    }
+}

From c861e0917aab6b9b532c0188ffade3995676b672 Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Fri, 7 Mar 2025 04:35:06 +0000
Subject: [PATCH 31/43] feat: update stule at Graphconfiguration

Signed-off-by: Otavio Santana 
---
 .../mapping/configuration/GraphConfigurationSupplier.java        | 1 -
 1 file changed, 1 deletion(-)

diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfigurationSupplier.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfigurationSupplier.java
index af248b537..62a0d1569 100644
--- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfigurationSupplier.java
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfigurationSupplier.java
@@ -32,7 +32,6 @@ class GraphConfigurationSupplier implements Supplier {
     @Inject
     private GraphSupplier supplier;
 
-
     @Override
     @Produces
     @ApplicationScoped

From 5146f61ac4f5e4fbaba42daeabe26f6b9c68d131 Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Fri, 7 Mar 2025 04:45:21 +0000
Subject: [PATCH 32/43] feat: update define priority

Signed-off-by: Otavio Santana 
---
 .../jnosql/databases/neo4j/mapping/GraphManagerSupplier.java | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/GraphManagerSupplier.java b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/GraphManagerSupplier.java
index ea51a8230..35cde6429 100644
--- a/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/GraphManagerSupplier.java
+++ b/jnosql-neo4j/src/main/java/org/eclipse/jnosql/databases/neo4j/mapping/GraphManagerSupplier.java
@@ -14,9 +14,12 @@
  */
 package org.eclipse.jnosql.databases.neo4j.mapping;
 
+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.eclipse.jnosql.communication.Settings;
 import org.eclipse.jnosql.databases.neo4j.communication.Neo4JConfiguration;
 import org.eclipse.jnosql.databases.neo4j.communication.Neo4JDatabaseManager;
@@ -28,6 +31,8 @@
 import java.util.logging.Logger;
 
 @ApplicationScoped
+@Alternative
+@Priority(Interceptor.Priority.LIBRARY_BEFORE)
 class GraphManagerSupplier implements Supplier {
 
     private static final String DATABASE_DEFAULT = "neo4j";

From bd47ec0ead38810c5f7895b0abc141c6308d37b0 Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Fri, 7 Mar 2025 04:45:34 +0000
Subject: [PATCH 33/43] feat: update define integration

Signed-off-by: Otavio Santana 
---
 .../neo4j/integration/GraphTemplateIntegrationTest.java          | 1 +
 1 file changed, 1 insertion(+)

diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java
index 418b5ddfd..c5a2b6ba6 100644
--- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java
+++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java
@@ -42,6 +42,7 @@
 @EnableAutoWeld
 @AddPackages(value = {Database.class, EntityConverter.class, Neo4JTemplate.class})
 @AddPackages(Magazine.class)
+@AddPackages(GraphTemplate.class)
 @AddPackages(Reflections.class)
 @AddPackages(Converters.class)
 @AddExtensions({EntityMetadataExtension.class})

From 495dfa2f7aa09f5c58f60e5782224e15530561fe Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Fri, 7 Mar 2025 04:47:36 +0000
Subject: [PATCH 34/43] feat: generate issue on graph

Signed-off-by: Otavio Santana 
---
 .../integration/GraphTemplateIntegrationTest.java   | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java
index c5a2b6ba6..f23115e7f 100644
--- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java
+++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java
@@ -33,6 +33,7 @@
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
 
+import java.util.HashMap;
 import java.util.Optional;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -60,6 +61,7 @@ public class GraphTemplateIntegrationTest {
 
     @BeforeEach
     void setUp() {
+        removeAllEdges();
         template.delete(Magazine.class).execute();
     }
 
@@ -148,4 +150,15 @@ void shouldCreateEdgeFromNullId() {
             soft.assertThat(magazineEdge.id()).isPresent();
         });
     }
+
+    private void removeAllEdges() {
+        String cypher = "MATCH ()-[r]-() DELETE r";
+
+        try {
+            var entityManager = DatabaseContainer.INSTANCE.get("neo4j");
+            entityManager.executeQuery(cypher, new HashMap<>()).toList();
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to remove edges before node deletion", e);
+        }
+    }
 }

From 326f2d8f5af29551a8ecaa0cecbc967619e8db01 Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Fri, 7 Mar 2025 04:49:56 +0000
Subject: [PATCH 35/43] test: generate template integration

Signed-off-by: Otavio Santana 
---
 .../neo4j/integration/TemplateIntegrationTest.java  | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java
index 3cb7f4c7b..a38a1fab8 100644
--- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java
+++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java
@@ -32,6 +32,7 @@
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
 
+import java.util.HashMap;
 import java.util.Optional;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -58,6 +59,7 @@ public class TemplateIntegrationTest {
 
     @BeforeEach
     void setUp() {
+        removeAllEdges();
         template.delete(Magazine.class).execute();
     }
 
@@ -146,4 +148,15 @@ void shouldCreateEdgeFromNullId() {
             soft.assertThat(magazineEdge.id()).isPresent();
         });
     }
+
+    private void removeAllEdges() {
+        String cypher = "MATCH ()-[r]-() DELETE r";
+
+        try {
+            var entityManager = DatabaseContainer.INSTANCE.get("neo4j");
+            entityManager.executeQuery(cypher, new HashMap<>()).toList();
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to remove edges before node deletion", e);
+        }
+    }
 }

From ce0e7817f809a84fb1afb0e2a2e046e3a7cf08eb Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Fri, 7 Mar 2025 07:31:39 +0000
Subject: [PATCH 36/43] feat: update and create configuration

Signed-off-by: Otavio Santana 
---
 .../configuration/GraphConfiguration.java     |  27 ++
 ...ation.semistructured.DatabaseConfiguration |   1 +
 .../tinkerpop/mapping/GraphTemplateTest.java  | 360 ++++++++++++++++++
 3 files changed, 388 insertions(+)
 create mode 100644 jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfiguration.java
 create mode 100644 jnosql-tinkerpop/src/main/resources/META-INF/services/org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration
 create mode 100644 jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateTest.java

diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfiguration.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfiguration.java
new file mode 100644
index 000000000..57c7b2a0e
--- /dev/null
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfiguration.java
@@ -0,0 +1,27 @@
+/*
+ *  Copyright (c) 2025 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.mapping.configuration;
+
+import org.eclipse.jnosql.communication.Settings;
+import org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration;
+import org.eclipse.jnosql.communication.semistructured.DatabaseManagerFactory;
+
+public class GraphConfiguration implements DatabaseConfiguration {
+
+    @Override
+    public DatabaseManagerFactory apply(Settings settings) {
+        return null;
+    }
+}
diff --git a/jnosql-tinkerpop/src/main/resources/META-INF/services/org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration b/jnosql-tinkerpop/src/main/resources/META-INF/services/org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration
new file mode 100644
index 000000000..2c3e81f80
--- /dev/null
+++ b/jnosql-tinkerpop/src/main/resources/META-INF/services/org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration
@@ -0,0 +1 @@
+org.eclipse.jnosql.databases.neo4j.communication.Neo4JConfiguration
\ No newline at end of file
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
new file mode 100644
index 000000000..258e89965
--- /dev/null
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateTest.java
@@ -0,0 +1,360 @@
+/*
+ *  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.mapping;
+
+import jakarta.data.exceptions.EmptyResultException;
+import jakarta.inject.Inject;
+import org.eclipse.jnosql.communication.Value;
+import org.eclipse.jnosql.communication.semistructured.Element;
+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.GraphExtension;
+import org.eclipse.jnosql.mapping.core.Converters;
+import org.eclipse.jnosql.mapping.core.spi.EntityMetadataExtension;
+import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
+import org.jboss.weld.junit5.auto.AddExtensions;
+import org.jboss.weld.junit5.auto.AddPackages;
+import org.jboss.weld.junit5.auto.EnableAutoWeld;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.util.Optional;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+@EnableAutoWeld
+@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
+@AddPackages(GraphProducer.class)
+@AddPackages(Reflections.class)
+@AddExtensions({EntityMetadataExtension.class, GraphExtension.class})
+class EdgeEntityTest {
+
+
+    @Inject
+    private TinkerpopTemplate tinkerpopTemplate;
+
+
+    @Test
+    void shouldReturnErrorWhenInboundIsNull() {
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            Human human = Human.builder().withName("Poliana").withAge().build();
+            Magazine magazine = null;
+            tinkerpopTemplate.edge(human, "reads", magazine);
+        });
+    }
+
+    @Test
+    void shouldReturnErrorWhenOutboundIsNull() {
+        Assertions.assertThrows(IllegalStateException.class, () -> {
+            Human human = Human.builder().withName("Poliana").withAge().build();
+            Magazine magazine = Magazine.builder().withAge(2007).withName("The Shack").build();
+            tinkerpopTemplate.edge(human, "reads", magazine);
+        });
+    }
+
+    @Test
+    void shouldReturnErrorWhenLabelIsNull() {
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            Human human = Human.builder().withName("Poliana").withAge().build();
+            Magazine magazine = Magazine.builder().withAge(2007).withName("The Shack").build();
+            tinkerpopTemplate.edge(human, (String) null, magazine);
+        });
+    }
+
+    @Test
+    void shouldReturnNullWhenInboundIdIsNull() {
+        Assertions.assertThrows(EmptyResultException.class, () -> {
+            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);
+        });
+
+    }
+
+    @Test
+    void shouldReturnNullWhenOutboundIdIsNull() {
+        Assertions.assertThrows(IllegalStateException.class, () -> {
+            Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+            Magazine magazine = Magazine.builder().withAge(2007).withName("The Shack").build();
+            tinkerpopTemplate.edge(human, "reads", magazine);
+        });
+    }
+
+    @Test
+    void shouldReturnEntityNotFoundWhenOutBoundDidNotFound() {
+        Assertions.assertThrows( EmptyResultException.class, () -> {
+            Human human = Human.builder().withId(-10L).withName("Poliana").withAge().build();
+            Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+            tinkerpopTemplate.edge(human, "reads", magazine);
+        });
+    }
+
+    @Test
+    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();
+            tinkerpopTemplate.edge(human, "reads", magazine);
+        });
+    }
+
+    @Test
+    void shouldCreateAnEdge() {
+        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
+
+        assertEquals("reads", edge.label());
+        assertEquals(human, edge.outgoing());
+        assertEquals(magazine, edge.incoming());
+        assertTrue(edge.isEmpty());
+        assertNotNull(edge.id());
+    }
+
+    @Test
+    void shouldGetId() {
+        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
+
+        assertEquals("reads", edge.label());
+        assertEquals(human, edge.outgoing());
+        assertEquals(magazine, edge.incoming());
+        assertTrue(edge.isEmpty());
+        assertNotNull(edge.id());
+        final Long id = edge.id(Long.class);
+        assertNotNull(id);
+
+        assertEquals(id, edge.id(Integer.class).longValue());
+
+    }
+
+    @Test
+    void shouldCreateAnEdgeWithSupplier() {
+        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+        EdgeEntity edge = tinkerpopTemplate.edge(human, () -> "reads", magazine);
+
+        assertEquals("reads", edge.label());
+        assertEquals(human, edge.outgoing());
+        assertEquals(magazine, edge.incoming());
+        assertTrue(edge.isEmpty());
+        assertNotNull(edge.id());
+    }
+
+    @Test
+    void shouldUseAnEdge() {
+        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
+
+        EdgeEntity sameEdge = tinkerpopTemplate.edge(human, "reads", magazine);
+
+        assertEquals(edge.id(), sameEdge.id());
+        assertEquals(edge, sameEdge);
+    }
+
+    @Test
+    void shouldUseAnEdge2() {
+        Human poliana = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+        Human nilzete = tinkerpopTemplate.insert(Human.builder().withName("Nilzete").withAge().build());
+
+        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+        EdgeEntity edge = tinkerpopTemplate.edge(poliana, "reads", magazine);
+        EdgeEntity edge1 = tinkerpopTemplate.edge(nilzete, "reads", magazine);
+
+        EdgeEntity sameEdge = tinkerpopTemplate.edge(poliana, "reads", magazine);
+        EdgeEntity sameEdge1 = tinkerpopTemplate.edge(nilzete, "reads", magazine);
+
+        assertEquals(edge.id(), sameEdge.id());
+        assertEquals(edge, sameEdge);
+
+        assertEquals(edge1.id(), sameEdge1.id());
+        assertEquals(edge1, sameEdge1);
+
+    }
+
+    @Test
+    void shouldUseADifferentEdge() {
+        Human poliana = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+        Human nilzete = tinkerpopTemplate.insert(Human.builder().withName("Nilzete").withAge().build());
+
+        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+        EdgeEntity edge = tinkerpopTemplate.edge(poliana, "reads", magazine);
+        EdgeEntity edge1 = tinkerpopTemplate.edge(nilzete, "reads", magazine);
+
+        EdgeEntity sameEdge = tinkerpopTemplate.edge(poliana, "reads", magazine);
+        EdgeEntity sameEdge1 = tinkerpopTemplate.edge(nilzete, "reads", magazine);
+
+        assertNotEquals(edge.id(), edge1.id());
+        assertNotEquals(edge.id(), sameEdge1.id());
+
+        assertNotEquals(sameEdge1.id(), sameEdge.id());
+    }
+
+    @Test
+    void shouldReturnErrorWhenAddKeyIsNull() {
+        assertThrows(NullPointerException.class, () -> {
+            Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+            Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+            EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
+            edge.add(null, "Brazil");
+        });
+    }
+
+    @Test
+    void shouldReturnErrorWhenAddValueIsNull() {
+
+        assertThrows(NullPointerException.class, () -> {
+            Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+            Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+            EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
+            edge.add("where", null);
+        });
+    }
+
+    @Test
+    void shouldAddProperty() {
+        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
+        edge.add("where", "Brazil");
+
+        assertFalse(edge.isEmpty());
+        assertEquals(1, edge.size());
+        assertThat(edge.properties()).contains(Element.of("where", "Brazil"));
+    }
+
+    @Test
+    void shouldAddPropertyWithValue() {
+        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
+        edge.add("where", Value.of("Brazil"));
+
+        assertFalse(edge.isEmpty());
+        assertEquals(1, edge.size());
+        assertThat(edge.properties()).contains(Element.of("where", "Brazil"));
+    }
+
+
+    @Test
+    void shouldReturnErrorWhenRemoveNullKeyProperty() {
+        assertThrows(NullPointerException.class, () -> {
+            Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+            Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+            EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
+            edge.add("where", "Brazil");
+
+
+            assertFalse(edge.isEmpty());
+            edge.remove(null);
+        });
+    }
+
+    @Test
+    void shouldRemoveProperty() {
+        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
+        edge.add("where", "Brazil");
+        assertEquals(1, edge.size());
+        assertFalse(edge.isEmpty());
+        edge.remove("where");
+        assertTrue(edge.isEmpty());
+        assertEquals(0, edge.size());
+    }
+
+    @Test
+    void shouldFindProperty() {
+        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
+        edge.add("where", "Brazil");
+
+        Optional where = edge.get("where");
+        assertTrue(where.isPresent());
+        assertEquals("Brazil", where.get().get());
+        assertFalse(edge.get("not").isPresent());
+
+    }
+
+    @Test
+    void shouldDeleteAnEdge() {
+        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
+        edge.delete();
+
+        EdgeEntity newEdge = tinkerpopTemplate.edge(human, "reads", magazine);
+        assertNotEquals(edge.id(), newEdge.id());
+
+        tinkerpopTemplate.deleteEdge(newEdge.id());
+    }
+
+    @Test
+    void shouldReturnErrorWhenDeleteAnEdgeWithNull() {
+        assertThrows(NullPointerException.class, () -> tinkerpopTemplate.delete((Iterable) null));
+    }
+
+    @Test
+    void shouldDeleteAnEdge2() {
+        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+
+        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
+
+        tinkerpopTemplate.deleteEdge(edge.id());
+
+        EdgeEntity newEdge = tinkerpopTemplate.edge(human, "reads", magazine);
+        assertNotEquals(edge.id(), newEdge.id());
+    }
+
+
+    @Test
+    void shouldReturnErrorWhenFindEdgeWithNull() {
+        assertThrows(NullPointerException.class, () -> tinkerpopTemplate.edge(null));
+    }
+
+
+    @Test
+    void shouldFindAnEdge() {
+        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
+        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
+        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
+
+        Optional newEdge = tinkerpopTemplate.edge(edge.id());
+
+        assertTrue(newEdge.isPresent());
+        assertEquals(edge.id(), newEdge.get().id());
+
+        tinkerpopTemplate.deleteEdge(edge.id());
+    }
+
+    @Test
+    void shouldNotFindAnEdge() {
+        Optional edgeEntity = tinkerpopTemplate.edge(-12L);
+
+        assertFalse(edgeEntity.isPresent());
+    }
+
+}

From e5623fde6710d757471161689998bb948d2297aa Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Fri, 7 Mar 2025 07:38:09 +0000
Subject: [PATCH 37/43] feat: update  graphdatabas configuration

Signed-off-by: Otavio Santana 
---
 .../configuration/GraphConfiguration.java     |  27 --
 .../GraphDatabaseConfiguration.java           |  57 ++++
 ...ation.semistructured.DatabaseConfiguration |   2 +-
 .../tinkerpop/mapping/GraphTemplateTest.java  | 309 +-----------------
 4 files changed, 67 insertions(+), 328 deletions(-)
 delete mode 100644 jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfiguration.java
 create mode 100644 jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphDatabaseConfiguration.java

diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfiguration.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfiguration.java
deleted file mode 100644
index 57c7b2a0e..000000000
--- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfiguration.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- *  Copyright (c) 2025 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.mapping.configuration;
-
-import org.eclipse.jnosql.communication.Settings;
-import org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration;
-import org.eclipse.jnosql.communication.semistructured.DatabaseManagerFactory;
-
-public class GraphConfiguration implements DatabaseConfiguration {
-
-    @Override
-    public DatabaseManagerFactory apply(Settings settings) {
-        return null;
-    }
-}
diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphDatabaseConfiguration.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphDatabaseConfiguration.java
new file mode 100644
index 000000000..5e8a68622
--- /dev/null
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphDatabaseConfiguration.java
@@ -0,0 +1,57 @@
+/*
+ *  Copyright (c) 2025 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.mapping.configuration;
+
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.eclipse.jnosql.communication.Settings;
+import org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration;
+import org.eclipse.jnosql.communication.semistructured.DatabaseManager;
+import org.eclipse.jnosql.communication.semistructured.DatabaseManagerFactory;
+import org.eclipse.jnosql.databases.tinkerpop.communication.GraphConfiguration;
+import org.eclipse.jnosql.databases.tinkerpop.communication.TinkerpopGraphDatabaseManager;
+
+import java.util.logging.Logger;
+
+public class GraphDatabaseConfiguration implements DatabaseConfiguration {
+
+    private static Logger LOGGER = Logger.getLogger(GraphDatabaseConfiguration.class.getName());
+    @Override
+    public DatabaseManagerFactory apply(Settings settings) {
+        LOGGER.fine(() -> "Creating graph database manager");
+        var configuration = GraphConfiguration.getConfiguration();
+        var graph = configuration.apply(settings);
+        return new GraphDatabaseManagerFactory(graph);
+    }
+
+    static class GraphDatabaseManagerFactory implements DatabaseManagerFactory {
+
+        private final Graph graph;
+
+        GraphDatabaseManagerFactory(Graph graph) {
+            this.graph = graph;
+        }
+
+        @Override
+        public void close() {
+
+        }
+
+        @Override
+        public DatabaseManager apply(String database) {
+            LOGGER.fine(() -> "Creating graph database manager where we will ignore the database name: " + database);
+            return TinkerpopGraphDatabaseManager.of(graph);
+        }
+    }
+}
diff --git a/jnosql-tinkerpop/src/main/resources/META-INF/services/org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration b/jnosql-tinkerpop/src/main/resources/META-INF/services/org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration
index 2c3e81f80..451e301c6 100644
--- a/jnosql-tinkerpop/src/main/resources/META-INF/services/org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration
+++ b/jnosql-tinkerpop/src/main/resources/META-INF/services/org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration
@@ -1 +1 @@
-org.eclipse.jnosql.databases.neo4j.communication.Neo4JConfiguration
\ No newline at end of file
+org.eclipse.jnosql.databases.tinkerpop.mapping.configuration.GraphDatabaseConfiguration
\ No newline at end of file
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 258e89965..838467ced 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,7 @@
 
 import jakarta.data.exceptions.EmptyResultException;
 import jakarta.inject.Inject;
+import org.assertj.core.api.SoftAssertions;
 import org.eclipse.jnosql.communication.Value;
 import org.eclipse.jnosql.communication.semistructured.Element;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
@@ -23,6 +24,7 @@
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.GraphExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.spi.EntityMetadataExtension;
+import org.eclipse.jnosql.mapping.graph.GraphTemplate;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
@@ -46,315 +48,22 @@
 @AddPackages(GraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({EntityMetadataExtension.class, GraphExtension.class})
-class EdgeEntityTest {
+class GraphTemplateTest {
 
 
     @Inject
-    private TinkerpopTemplate tinkerpopTemplate;
+    private GraphTemplate template;
 
 
     @Test
     void shouldReturnErrorWhenInboundIsNull() {
-        Assertions.assertThrows(NullPointerException.class, () -> {
-            Human human = Human.builder().withName("Poliana").withAge().build();
-            Magazine magazine = null;
-            tinkerpopTemplate.edge(human, "reads", magazine);
-        });
-    }
-
-    @Test
-    void shouldReturnErrorWhenOutboundIsNull() {
-        Assertions.assertThrows(IllegalStateException.class, () -> {
-            Human human = Human.builder().withName("Poliana").withAge().build();
-            Magazine magazine = Magazine.builder().withAge(2007).withName("The Shack").build();
-            tinkerpopTemplate.edge(human, "reads", magazine);
-        });
-    }
-
-    @Test
-    void shouldReturnErrorWhenLabelIsNull() {
-        Assertions.assertThrows(NullPointerException.class, () -> {
-            Human human = Human.builder().withName("Poliana").withAge().build();
-            Magazine magazine = Magazine.builder().withAge(2007).withName("The Shack").build();
-            tinkerpopTemplate.edge(human, (String) null, magazine);
-        });
-    }
-
-    @Test
-    void shouldReturnNullWhenInboundIdIsNull() {
-        Assertions.assertThrows(EmptyResultException.class, () -> {
-            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);
-        });
-
-    }
+        var human = template.insert(Human.builder().withName("Poliana").withAge().build());
 
-    @Test
-    void shouldReturnNullWhenOutboundIdIsNull() {
-        Assertions.assertThrows(IllegalStateException.class, () -> {
-            Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-            Magazine magazine = Magazine.builder().withAge(2007).withName("The Shack").build();
-            tinkerpopTemplate.edge(human, "reads", magazine);
-        });
-    }
-
-    @Test
-    void shouldReturnEntityNotFoundWhenOutBoundDidNotFound() {
-        Assertions.assertThrows( EmptyResultException.class, () -> {
-            Human human = Human.builder().withId(-10L).withName("Poliana").withAge().build();
-            Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-            tinkerpopTemplate.edge(human, "reads", magazine);
+        SoftAssertions.assertSoftly(soft -> {
+            soft.assertThat(human).isNotNull();
+            soft.assertThat(human.getName()).isEqualTo("Poliana");
+            soft.assertThat(human.getAge()).isNotNull();
         });
     }
 
-    @Test
-    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();
-            tinkerpopTemplate.edge(human, "reads", magazine);
-        });
-    }
-
-    @Test
-    void shouldCreateAnEdge() {
-        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
-
-        assertEquals("reads", edge.label());
-        assertEquals(human, edge.outgoing());
-        assertEquals(magazine, edge.incoming());
-        assertTrue(edge.isEmpty());
-        assertNotNull(edge.id());
-    }
-
-    @Test
-    void shouldGetId() {
-        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
-
-        assertEquals("reads", edge.label());
-        assertEquals(human, edge.outgoing());
-        assertEquals(magazine, edge.incoming());
-        assertTrue(edge.isEmpty());
-        assertNotNull(edge.id());
-        final Long id = edge.id(Long.class);
-        assertNotNull(id);
-
-        assertEquals(id, edge.id(Integer.class).longValue());
-
-    }
-
-    @Test
-    void shouldCreateAnEdgeWithSupplier() {
-        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-        EdgeEntity edge = tinkerpopTemplate.edge(human, () -> "reads", magazine);
-
-        assertEquals("reads", edge.label());
-        assertEquals(human, edge.outgoing());
-        assertEquals(magazine, edge.incoming());
-        assertTrue(edge.isEmpty());
-        assertNotNull(edge.id());
-    }
-
-    @Test
-    void shouldUseAnEdge() {
-        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
-
-        EdgeEntity sameEdge = tinkerpopTemplate.edge(human, "reads", magazine);
-
-        assertEquals(edge.id(), sameEdge.id());
-        assertEquals(edge, sameEdge);
-    }
-
-    @Test
-    void shouldUseAnEdge2() {
-        Human poliana = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-        Human nilzete = tinkerpopTemplate.insert(Human.builder().withName("Nilzete").withAge().build());
-
-        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-        EdgeEntity edge = tinkerpopTemplate.edge(poliana, "reads", magazine);
-        EdgeEntity edge1 = tinkerpopTemplate.edge(nilzete, "reads", magazine);
-
-        EdgeEntity sameEdge = tinkerpopTemplate.edge(poliana, "reads", magazine);
-        EdgeEntity sameEdge1 = tinkerpopTemplate.edge(nilzete, "reads", magazine);
-
-        assertEquals(edge.id(), sameEdge.id());
-        assertEquals(edge, sameEdge);
-
-        assertEquals(edge1.id(), sameEdge1.id());
-        assertEquals(edge1, sameEdge1);
-
-    }
-
-    @Test
-    void shouldUseADifferentEdge() {
-        Human poliana = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-        Human nilzete = tinkerpopTemplate.insert(Human.builder().withName("Nilzete").withAge().build());
-
-        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-        EdgeEntity edge = tinkerpopTemplate.edge(poliana, "reads", magazine);
-        EdgeEntity edge1 = tinkerpopTemplate.edge(nilzete, "reads", magazine);
-
-        EdgeEntity sameEdge = tinkerpopTemplate.edge(poliana, "reads", magazine);
-        EdgeEntity sameEdge1 = tinkerpopTemplate.edge(nilzete, "reads", magazine);
-
-        assertNotEquals(edge.id(), edge1.id());
-        assertNotEquals(edge.id(), sameEdge1.id());
-
-        assertNotEquals(sameEdge1.id(), sameEdge.id());
-    }
-
-    @Test
-    void shouldReturnErrorWhenAddKeyIsNull() {
-        assertThrows(NullPointerException.class, () -> {
-            Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-            Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-            EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
-            edge.add(null, "Brazil");
-        });
-    }
-
-    @Test
-    void shouldReturnErrorWhenAddValueIsNull() {
-
-        assertThrows(NullPointerException.class, () -> {
-            Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-            Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-            EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
-            edge.add("where", null);
-        });
-    }
-
-    @Test
-    void shouldAddProperty() {
-        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
-        edge.add("where", "Brazil");
-
-        assertFalse(edge.isEmpty());
-        assertEquals(1, edge.size());
-        assertThat(edge.properties()).contains(Element.of("where", "Brazil"));
-    }
-
-    @Test
-    void shouldAddPropertyWithValue() {
-        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
-        edge.add("where", Value.of("Brazil"));
-
-        assertFalse(edge.isEmpty());
-        assertEquals(1, edge.size());
-        assertThat(edge.properties()).contains(Element.of("where", "Brazil"));
-    }
-
-
-    @Test
-    void shouldReturnErrorWhenRemoveNullKeyProperty() {
-        assertThrows(NullPointerException.class, () -> {
-            Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-            Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-            EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
-            edge.add("where", "Brazil");
-
-
-            assertFalse(edge.isEmpty());
-            edge.remove(null);
-        });
-    }
-
-    @Test
-    void shouldRemoveProperty() {
-        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
-        edge.add("where", "Brazil");
-        assertEquals(1, edge.size());
-        assertFalse(edge.isEmpty());
-        edge.remove("where");
-        assertTrue(edge.isEmpty());
-        assertEquals(0, edge.size());
-    }
-
-    @Test
-    void shouldFindProperty() {
-        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
-        edge.add("where", "Brazil");
-
-        Optional where = edge.get("where");
-        assertTrue(where.isPresent());
-        assertEquals("Brazil", where.get().get());
-        assertFalse(edge.get("not").isPresent());
-
-    }
-
-    @Test
-    void shouldDeleteAnEdge() {
-        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
-        edge.delete();
-
-        EdgeEntity newEdge = tinkerpopTemplate.edge(human, "reads", magazine);
-        assertNotEquals(edge.id(), newEdge.id());
-
-        tinkerpopTemplate.deleteEdge(newEdge.id());
-    }
-
-    @Test
-    void shouldReturnErrorWhenDeleteAnEdgeWithNull() {
-        assertThrows(NullPointerException.class, () -> tinkerpopTemplate.delete((Iterable) null));
-    }
-
-    @Test
-    void shouldDeleteAnEdge2() {
-        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-
-        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
-
-        tinkerpopTemplate.deleteEdge(edge.id());
-
-        EdgeEntity newEdge = tinkerpopTemplate.edge(human, "reads", magazine);
-        assertNotEquals(edge.id(), newEdge.id());
-    }
-
-
-    @Test
-    void shouldReturnErrorWhenFindEdgeWithNull() {
-        assertThrows(NullPointerException.class, () -> tinkerpopTemplate.edge(null));
-    }
-
-
-    @Test
-    void shouldFindAnEdge() {
-        Human human = tinkerpopTemplate.insert(Human.builder().withName("Poliana").withAge().build());
-        Magazine magazine = tinkerpopTemplate.insert(Magazine.builder().withAge(2007).withName("The Shack").build());
-        EdgeEntity edge = tinkerpopTemplate.edge(human, "reads", magazine);
-
-        Optional newEdge = tinkerpopTemplate.edge(edge.id());
-
-        assertTrue(newEdge.isPresent());
-        assertEquals(edge.id(), newEdge.get().id());
-
-        tinkerpopTemplate.deleteEdge(edge.id());
-    }
-
-    @Test
-    void shouldNotFindAnEdge() {
-        Optional edgeEntity = tinkerpopTemplate.edge(-12L);
-
-        assertFalse(edgeEntity.isPresent());
-    }
-
 }

From 6e451ef38a540341aa83bc209ae8c819e3fc2a46 Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Fri, 7 Mar 2025 07:38:19 +0000
Subject: [PATCH 38/43] feat: update logger using final

Signed-off-by: Otavio Santana 
---
 .../mapping/configuration/GraphDatabaseConfiguration.java      | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphDatabaseConfiguration.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphDatabaseConfiguration.java
index 5e8a68622..9c32c39b5 100644
--- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphDatabaseConfiguration.java
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphDatabaseConfiguration.java
@@ -26,7 +26,8 @@
 
 public class GraphDatabaseConfiguration implements DatabaseConfiguration {
 
-    private static Logger LOGGER = Logger.getLogger(GraphDatabaseConfiguration.class.getName());
+    private static final Logger LOGGER = Logger.getLogger(GraphDatabaseConfiguration.class.getName());
+
     @Override
     public DatabaseManagerFactory apply(Settings settings) {
         LOGGER.fine(() -> "Creating graph database manager");

From f910a0bb5c071d691f278758a6f7e67e572de664 Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Fri, 7 Mar 2025 07:39:21 +0000
Subject: [PATCH 39/43] feat: update wrapper configuration

Signed-off-by: Otavio Santana 
---
 .../mapping/configuration/GraphDatabaseConfiguration.java      | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphDatabaseConfiguration.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphDatabaseConfiguration.java
index 9c32c39b5..dd3460026 100644
--- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphDatabaseConfiguration.java
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphDatabaseConfiguration.java
@@ -24,6 +24,9 @@
 
 import java.util.logging.Logger;
 
+/**
+ * The {@link DatabaseConfiguration} wrapper to {@link GraphConfiguration}
+ */
 public class GraphDatabaseConfiguration implements DatabaseConfiguration {
 
     private static final Logger LOGGER = Logger.getLogger(GraphDatabaseConfiguration.class.getName());

From 6a961ee89a9fbf13839690fc0e612604d9069ddc Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Sat, 22 Mar 2025 06:53:42 +0000
Subject: [PATCH 40/43] feat: update graph api

Signed-off-by: Otavio Santana 
---
 .../neo4j/integration/GraphTemplateIntegrationTest.java       | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java
index f23115e7f..99897ca83 100644
--- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java
+++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java
@@ -21,10 +21,10 @@
 import org.eclipse.jnosql.databases.neo4j.mapping.Neo4JTemplate;
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.core.spi.EntityMetadataExtension;
 import org.eclipse.jnosql.mapping.graph.Edge;
 import org.eclipse.jnosql.mapping.graph.GraphTemplate;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
@@ -46,7 +46,7 @@
 @AddPackages(GraphTemplate.class)
 @AddPackages(Reflections.class)
 @AddPackages(Converters.class)
-@AddExtensions({EntityMetadataExtension.class})
+@AddExtensions({ReflectionEntityMetadataExtension.class})
 @EnabledIfSystemProperty(named = NAMED, matches = MATCHES)
 public class GraphTemplateIntegrationTest {
 

From 271386d0e1f05111db29bd4c205e79caa7c561c2 Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Sat, 22 Mar 2025 07:01:06 +0000
Subject: [PATCH 41/43] feat: fix imports and rebase issues

Signed-off-by: Otavio Santana 
---
 .../mapping/DefaultGraphTraversalSourceTemplateTest.java    | 6 +++---
 .../mapping/DefaultTinkerpopTemplateProducerTest.java       | 2 +-
 .../databases/tinkerpop/mapping/GraphTemplateTest.java      | 2 +-
 .../tinkerpop/mapping/TinkerpopTemplateProducerTest.java    | 4 ++--
 .../databases/tinkerpop/mapping/TinkerpopTemplateTest.java  | 4 ++--
 5 files changed, 9 insertions(+), 9 deletions(-)

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 af293287c..6008d4594 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
@@ -29,10 +29,10 @@
 @AddPackages(value = {Converters.class, EntityConverter.class, Transactional.class})
 @AddPackages({MagazineRepository.class, Reflections.class, GraphProducer.class})
 @AddExtensions({ReflectionEntityMetadataExtension.class, GraphExtension.class})
-class DefaultGraphTraversalSourceTemplateTest extends AbstractGraphTemplateTest {
+class DefaultGraphTraversalSourceTemplateTest extends AbstractTinkerpopTemplateTest {
 
     @Inject
-    private GraphTemplate graphTemplate;
+    private TinkerpopTemplate graphTemplate;
 
     @Inject
     private Graph graph;
@@ -43,7 +43,7 @@ protected Graph getGraph() {
     }
 
     @Override
-    protected GraphTemplate getGraphTemplate() {
+    protected TinkerpopTemplate getGraphTemplate() {
         return 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 5fec2f38f..e0c525102 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
@@ -32,7 +32,7 @@
 
 
 @EnableAutoWeld
-@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class})
+@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
 @AddPackages(GraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, GraphExtension.class})
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 1330b0318..a8235f767 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
@@ -31,7 +31,7 @@
 import static org.eclipse.jnosql.mapping.DatabaseType.GRAPH;
 
 @EnableAutoWeld
-@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class})
+@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
 @AddPackages(GraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, GraphExtension.class})
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 5b49bfa0f..fc30c55e7 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
@@ -31,7 +31,7 @@
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 @EnableAutoWeld
-@AddPackages(value = {Converters.class, EntityConverter.class, GraphTemplate.class})
+@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
 @AddPackages(GraphProducer.class)
 @AddPackages(Reflections.class)
 @AddExtensions({ReflectionEntityMetadataExtension.class, GraphExtension.class})
@@ -48,7 +48,7 @@ void shouldReturnErrorWhenManagerNull() {
     @Test
     void shouldReturnGraphTemplateWhenGetGraph() {
         Graph graph = Mockito.mock(Graph.class);
-        GraphTemplate template = producer.apply(graph);
+        TinkerpopTemplate template = producer.apply(graph);
         assertNotNull(template);
     }
 
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 64d9204b1..5f25d7a25 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
@@ -19,8 +19,8 @@
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.GraphExtension;
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.core.spi.EntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
@@ -34,7 +34,7 @@
 @AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class})
 @AddPackages(GraphProducer.class)
 @AddPackages(Reflections.class)
-@AddExtensions({EntityMetadataExtension.class, GraphExtension.class})
+@AddExtensions({ReflectionEntityMetadataExtension.class, GraphExtension.class})
 class TinkerpopTemplateTest {
 
     @Inject

From 58cab0cdda082717a88a6ce404c60ed7df247d0d Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Sat, 22 Mar 2025 07:01:31 +0000
Subject: [PATCH 42/43] style: organize imports

Signed-off-by: Otavio Santana 
---
 .../arangodb/integration/ArangoDBTemplateIntegrationTest.java  | 2 +-
 .../ArangoDBTemplateIntegrationUsingIdAnnotationTest.java      | 2 +-
 .../arangodb/integration/TemplateIntegrationTest.java          | 2 +-
 .../arangodb/mapping/ArangoDBDocumentRepositoryProxyTest.java  | 2 +-
 .../databases/arangodb/mapping/ArangoDBExtensionTest.java      | 2 +-
 .../arangodb/mapping/DefaultArangoDBTemplateTest.java          | 2 +-
 .../databases/arangodb/tck/ArangoDBTemplateSupplier.java       | 1 -
 .../integration/CassandraTemplateIntegrationTest.java          | 2 +-
 .../cassandra/integration/TemplateIntegrationTest.java         | 2 +-
 .../cassandra/mapping/CassandraColumnEntityConverterTest.java  | 2 +-
 .../databases/cassandra/mapping/CassandraExtensionTest.java    | 2 +-
 .../cassandra/mapping/CassandraRepositoryProxyTest.java        | 2 +-
 .../cassandra/mapping/DefaultCassandraTemplateTest.java        | 2 +-
 .../CouchbaseDocumentRepositoryIntegrationTest.java            | 2 +-
 .../integration/CouchbaseTemplateIntegrationTest.java          | 2 +-
 .../couchbase/integration/DocumentTemplateIntegrationTest.java | 2 +-
 .../couchbase/integration/TemplateIntegrationTest.java         | 2 +-
 .../mapping/CouchbaseDocumentRepositoryProxyTest.java          | 2 +-
 .../databases/couchbase/mapping/CouchbaseExtensionTest.java    | 2 +-
 .../couchbase/mapping/DefaultCouchbaseTemplateTest.java        | 2 +-
 .../dynamodb/integration/DynamoDBTemplateIntegrationTest.java  | 2 +-
 .../dynamodb/mapping/DefaultDynamoDBTemplateTest.java          | 2 +-
 .../databases/dynamodb/mapping/DynamoDBExtensionTest.java      | 2 +-
 .../dynamodb/mapping/DynamoDBRepositoryProxyTest.java          | 2 +-
 .../integration/ElasticsearchTemplateIntegrationTest.java      | 2 +-
 .../elasticsearch/integration/RepositoryIntegrationTest.java   | 2 +-
 .../elasticsearch/integration/TemplateIntegrationTest.java     | 2 +-
 .../mapping/DefaultElasticsearchTemplateTest.java              | 2 +-
 .../integration/HazelcastTemplateIntegrationTest.java          | 2 +-
 .../hazelcast/integration/KeyValueTemplateIntegrationTest.java | 2 +-
 .../hazelcast/mapping/DefaultHazelcastTemplateTest.java        | 2 +-
 .../databases/hazelcast/mapping/HazelcastExtensionTest.java    | 2 +-
 .../hazelcast/mapping/HazelcastRepositoryProxyTest.java        | 2 +-
 .../mongodb/integration/CustomRepositoryIntegrationTest.java   | 2 +-
 .../mongodb/integration/MongoDBTemplateIntegrationTest.java    | 2 +-
 .../mongodb/integration/RepositoryIntegrationTest.java         | 2 +-
 .../databases/mongodb/integration/TemplateIntegrationTest.java | 2 +-
 .../databases/mongodb/mapping/DefaultMongoDBTemplateTest.java  | 2 +-
 .../databases/mongodb/mapping/DocumentEntityConverterTest.java | 2 +-
 .../jnosql/databases/mongodb/mapping/MongoDBTemplateTest.java  | 2 +-
 .../databases/neo4j/communication/Neo4JQueryBuilderTest.java   | 2 +-
 .../databases/neo4j/integration/RepositoryIntegrationTest.java | 2 +-
 .../databases/neo4j/integration/TemplateIntegrationTest.java   | 2 +-
 .../databases/neo4j/mapping/DefaultNeo4JTemplateTest.java      | 2 +-
 .../jnosql/databases/neo4j/mapping/Neo4JTemplateTest.java      | 2 +-
 .../jnosql/databases/neo4j/mapping/Neo4jExtensionTest.java     | 2 +-
 .../databases/neo4j/mapping/Neo4jRepositoryProxyTest.java      | 2 +-
 .../oracle/integration/OracleNoSQLTemplateIntegrationTest.java | 2 +-
 .../oracle/integration/WineTemplateIntegrationTest.java        | 2 +-
 .../oracle/mapping/DefaultOracleNoSQLTemplateTest.java         | 2 +-
 .../jnosql/databases/oracle/mapping/OracleDBExtensionTest.java | 2 +-
 .../oracle/mapping/OracleDocumentRepositoryProxyTest.java      | 2 +-
 .../orientdb/integration/OrientDBTemplateIntegrationTest.java  | 2 +-
 .../orientdb/integration/TemplateIntegrationTest.java          | 2 +-
 .../orientdb/mapping/DefaultOrientDBTemplateTest.java          | 2 +-
 .../orientdb/mapping/OrientDBDocumentRepositoryProxyTest.java  | 2 +-
 .../databases/orientdb/mapping/OrientDBExtensionTest.java      | 2 +-
 .../solr/integration/SolrTemplateIntegrationTest.java          | 2 +-
 .../databases/solr/integration/TemplateIntegrationTest.java    | 2 +-
 .../jnosql/databases/solr/mapping/DefaultSolrTemplateTest.java | 2 +-
 .../jnosql/databases/solr/mapping/SolrExtensionTest.java       | 2 +-
 .../jnosql/databases/solr/mapping/SolrRepositoryProxyTest.java | 2 +-
 .../databases/tinkerpop/mapping/AbstractTinkerpopTemplate.java | 3 +--
 .../jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java  | 1 -
 .../jnosql/databases/tinkerpop/mapping/spi/TemplateBean.java   | 2 +-
 .../databases/tinkerpop/mapping/DefaultEdgeTraversalTest.java  | 2 +-
 .../mapping/DefaultGraphTraversalSourceTemplateTest.java       | 2 +-
 .../mapping/DefaultTinkerpopTemplateProducerTest.java          | 2 +-
 .../tinkerpop/mapping/DefaultValueMapTraversalTest.java        | 2 +-
 .../tinkerpop/mapping/DefaultVertexTraversalTest.java          | 2 +-
 .../jnosql/databases/tinkerpop/mapping/EdgeEntityTest.java     | 2 +-
 .../jnosql/databases/tinkerpop/mapping/GraphTemplateTest.java  | 2 +-
 .../databases/tinkerpop/mapping/MagazineTemplateTest.java      | 2 +-
 .../tinkerpop/mapping/TinkerpopTemplateProducerTest.java       | 2 +-
 .../tinkerpop/mapping/configuration/GraphSupplierTest.java     | 2 +-
 .../tinkerpop/mapping/spi/GraphCustomExtensionTest.java        | 2 +-
 .../databases/tinkerpop/mapping/spi/GraphExtensionTest.java    | 2 +-
 77 files changed, 75 insertions(+), 78 deletions(-)

diff --git a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/integration/ArangoDBTemplateIntegrationTest.java b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/integration/ArangoDBTemplateIntegrationTest.java
index 550bd517e..ef5664732 100644
--- a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/integration/ArangoDBTemplateIntegrationTest.java
+++ b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/integration/ArangoDBTemplateIntegrationTest.java
@@ -25,10 +25,10 @@
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/integration/ArangoDBTemplateIntegrationUsingIdAnnotationTest.java b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/integration/ArangoDBTemplateIntegrationUsingIdAnnotationTest.java
index 25038352a..9ea595d19 100644
--- a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/integration/ArangoDBTemplateIntegrationUsingIdAnnotationTest.java
+++ b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/integration/ArangoDBTemplateIntegrationUsingIdAnnotationTest.java
@@ -25,10 +25,10 @@
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/integration/TemplateIntegrationTest.java b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/integration/TemplateIntegrationTest.java
index d76a684ed..3e86f3527 100644
--- a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/integration/TemplateIntegrationTest.java
+++ b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/integration/TemplateIntegrationTest.java
@@ -22,10 +22,10 @@
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/mapping/ArangoDBDocumentRepositoryProxyTest.java b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/mapping/ArangoDBDocumentRepositoryProxyTest.java
index cf04fb974..0444c63b4 100644
--- a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/mapping/ArangoDBDocumentRepositoryProxyTest.java
+++ b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/mapping/ArangoDBDocumentRepositoryProxyTest.java
@@ -18,12 +18,12 @@
 import jakarta.inject.Inject;
 import org.assertj.core.api.Assertions;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.keyvalue.spi.KeyValueExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/mapping/ArangoDBExtensionTest.java b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/mapping/ArangoDBExtensionTest.java
index b086cc731..64f93d554 100644
--- a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/mapping/ArangoDBExtensionTest.java
+++ b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/mapping/ArangoDBExtensionTest.java
@@ -16,10 +16,10 @@
 
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.Database;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.keyvalue.spi.KeyValueExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
 import org.jboss.weld.junit5.auto.EnableAutoWeld;
diff --git a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/mapping/DefaultArangoDBTemplateTest.java b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/mapping/DefaultArangoDBTemplateTest.java
index 68b05d08e..bf1101181 100644
--- a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/mapping/DefaultArangoDBTemplateTest.java
+++ b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/mapping/DefaultArangoDBTemplateTest.java
@@ -23,11 +23,11 @@
 import org.eclipse.jnosql.databases.arangodb.communication.ArangoDBDocumentManager;
 import org.eclipse.jnosql.databases.arangodb.communication.Human;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.eclipse.jnosql.mapping.semistructured.EventPersistManager;
 import org.jboss.weld.junit5.auto.AddExtensions;
diff --git a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/tck/ArangoDBTemplateSupplier.java b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/tck/ArangoDBTemplateSupplier.java
index 8cc7f449c..398f8d11b 100644
--- a/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/tck/ArangoDBTemplateSupplier.java
+++ b/jnosql-arangodb/src/test/java/org/eclipse/jnosql/databases/arangodb/tck/ArangoDBTemplateSupplier.java
@@ -18,7 +18,6 @@
 import jakarta.enterprise.inject.se.SeContainerInitializer;
 import jakarta.enterprise.inject.spi.CDI;
 import jakarta.nosql.Template;
-
 import org.eclipse.jnosql.databases.arangodb.communication.ArangoDBConfigurations;
 import org.eclipse.jnosql.databases.arangodb.communication.DocumentDatabase;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
diff --git a/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/integration/CassandraTemplateIntegrationTest.java b/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/integration/CassandraTemplateIntegrationTest.java
index 79e9606d3..9263657f0 100644
--- a/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/integration/CassandraTemplateIntegrationTest.java
+++ b/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/integration/CassandraTemplateIntegrationTest.java
@@ -25,8 +25,8 @@
 import org.eclipse.jnosql.mapping.column.spi.ColumnExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/integration/TemplateIntegrationTest.java b/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/integration/TemplateIntegrationTest.java
index dffdfbbfc..60e888ef3 100644
--- a/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/integration/TemplateIntegrationTest.java
+++ b/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/integration/TemplateIntegrationTest.java
@@ -25,8 +25,8 @@
 import org.eclipse.jnosql.mapping.column.spi.ColumnExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/CassandraColumnEntityConverterTest.java b/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/CassandraColumnEntityConverterTest.java
index 8bc989b18..09724c275 100644
--- a/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/CassandraColumnEntityConverterTest.java
+++ b/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/CassandraColumnEntityConverterTest.java
@@ -32,8 +32,8 @@
 import org.eclipse.jnosql.mapping.column.ColumnTemplate;
 import org.eclipse.jnosql.mapping.column.spi.ColumnExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/CassandraExtensionTest.java b/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/CassandraExtensionTest.java
index ce299fd0c..c5ac7e85a 100644
--- a/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/CassandraExtensionTest.java
+++ b/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/CassandraExtensionTest.java
@@ -18,8 +18,8 @@
 import org.eclipse.jnosql.mapping.column.ColumnTemplate;
 import org.eclipse.jnosql.mapping.column.spi.ColumnExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/CassandraRepositoryProxyTest.java b/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/CassandraRepositoryProxyTest.java
index 839e6e55d..8440c31f6 100644
--- a/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/CassandraRepositoryProxyTest.java
+++ b/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/CassandraRepositoryProxyTest.java
@@ -20,9 +20,9 @@
 import org.eclipse.jnosql.mapping.column.ColumnTemplate;
 import org.eclipse.jnosql.mapping.column.spi.ColumnExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/DefaultCassandraTemplateTest.java b/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/DefaultCassandraTemplateTest.java
index 36ec7eefc..114ddde0a 100644
--- a/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/DefaultCassandraTemplateTest.java
+++ b/jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/mapping/DefaultCassandraTemplateTest.java
@@ -28,9 +28,9 @@
 import org.eclipse.jnosql.mapping.column.ColumnTemplate;
 import org.eclipse.jnosql.mapping.column.spi.ColumnExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.eclipse.jnosql.mapping.semistructured.EventPersistManager;
 import org.jboss.weld.junit5.auto.AddExtensions;
diff --git a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/CouchbaseDocumentRepositoryIntegrationTest.java b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/CouchbaseDocumentRepositoryIntegrationTest.java
index b8391b36b..08b5d5cc4 100644
--- a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/CouchbaseDocumentRepositoryIntegrationTest.java
+++ b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/CouchbaseDocumentRepositoryIntegrationTest.java
@@ -22,10 +22,10 @@
 import org.eclipse.jnosql.databases.couchbase.mapping.CouchbaseExtension;
 import org.eclipse.jnosql.databases.couchbase.mapping.CouchbaseTemplate;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/CouchbaseTemplateIntegrationTest.java b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/CouchbaseTemplateIntegrationTest.java
index 6f9591715..e2a980072 100644
--- a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/CouchbaseTemplateIntegrationTest.java
+++ b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/CouchbaseTemplateIntegrationTest.java
@@ -22,10 +22,10 @@
 import org.eclipse.jnosql.databases.couchbase.communication.Database;
 import org.eclipse.jnosql.databases.couchbase.mapping.CouchbaseTemplate;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/DocumentTemplateIntegrationTest.java b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/DocumentTemplateIntegrationTest.java
index 2196ed749..62e430a8b 100644
--- a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/DocumentTemplateIntegrationTest.java
+++ b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/DocumentTemplateIntegrationTest.java
@@ -20,10 +20,10 @@
 import org.eclipse.jnosql.databases.couchbase.communication.CouchbaseUtil;
 import org.eclipse.jnosql.databases.couchbase.communication.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/TemplateIntegrationTest.java b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/TemplateIntegrationTest.java
index 1ba6321f9..b6aa4da68 100644
--- a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/TemplateIntegrationTest.java
+++ b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/integration/TemplateIntegrationTest.java
@@ -21,10 +21,10 @@
 import org.eclipse.jnosql.databases.couchbase.communication.CouchbaseUtil;
 import org.eclipse.jnosql.databases.couchbase.communication.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/mapping/CouchbaseDocumentRepositoryProxyTest.java b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/mapping/CouchbaseDocumentRepositoryProxyTest.java
index f6b79923b..cbb02b16c 100644
--- a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/mapping/CouchbaseDocumentRepositoryProxyTest.java
+++ b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/mapping/CouchbaseDocumentRepositoryProxyTest.java
@@ -18,12 +18,12 @@
 import jakarta.data.repository.Param;
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.keyvalue.AbstractKeyValueTemplate;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/mapping/CouchbaseExtensionTest.java b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/mapping/CouchbaseExtensionTest.java
index de62c9ac0..cbbb32241 100644
--- a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/mapping/CouchbaseExtensionTest.java
+++ b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/mapping/CouchbaseExtensionTest.java
@@ -16,11 +16,11 @@
 
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.keyvalue.AbstractKeyValueTemplate;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/mapping/DefaultCouchbaseTemplateTest.java b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/mapping/DefaultCouchbaseTemplateTest.java
index 5f5e4d994..0a4980e7b 100644
--- a/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/mapping/DefaultCouchbaseTemplateTest.java
+++ b/jnosql-couchbase/src/test/java/org/eclipse/jnosql/databases/couchbase/mapping/DefaultCouchbaseTemplateTest.java
@@ -21,12 +21,12 @@
 import org.eclipse.jnosql.communication.semistructured.Element;
 import org.eclipse.jnosql.databases.couchbase.communication.CouchbaseDocumentManager;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.keyvalue.AbstractKeyValueTemplate;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.eclipse.jnosql.mapping.semistructured.EventPersistManager;
 import org.jboss.weld.junit5.auto.AddExtensions;
diff --git a/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/integration/DynamoDBTemplateIntegrationTest.java b/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/integration/DynamoDBTemplateIntegrationTest.java
index a53530d43..a52a8e61d 100644
--- a/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/integration/DynamoDBTemplateIntegrationTest.java
+++ b/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/integration/DynamoDBTemplateIntegrationTest.java
@@ -22,9 +22,9 @@
 import org.eclipse.jnosql.databases.dynamodb.mapping.DynamoDBExtension;
 import org.eclipse.jnosql.databases.dynamodb.mapping.DynamoDBTemplate;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/mapping/DefaultDynamoDBTemplateTest.java b/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/mapping/DefaultDynamoDBTemplateTest.java
index 20809c884..16f095a3a 100644
--- a/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/mapping/DefaultDynamoDBTemplateTest.java
+++ b/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/mapping/DefaultDynamoDBTemplateTest.java
@@ -21,10 +21,10 @@
 import org.eclipse.jnosql.communication.semistructured.DeleteQuery;
 import org.eclipse.jnosql.databases.dynamodb.communication.DynamoDBDatabaseManager;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.eclipse.jnosql.mapping.semistructured.EventPersistManager;
 import org.jboss.weld.junit5.auto.AddExtensions;
diff --git a/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/mapping/DynamoDBExtensionTest.java b/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/mapping/DynamoDBExtensionTest.java
index 5cc21b270..14ea76034 100644
--- a/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/mapping/DynamoDBExtensionTest.java
+++ b/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/mapping/DynamoDBExtensionTest.java
@@ -17,9 +17,9 @@
 
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
 import org.jboss.weld.junit5.auto.EnableAutoWeld;
diff --git a/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/mapping/DynamoDBRepositoryProxyTest.java b/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/mapping/DynamoDBRepositoryProxyTest.java
index 1dc86ebf6..279d1a214 100644
--- a/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/mapping/DynamoDBRepositoryProxyTest.java
+++ b/jnosql-dynamodb/src/test/java/org/eclipse/jnosql/databases/dynamodb/mapping/DynamoDBRepositoryProxyTest.java
@@ -19,10 +19,10 @@
 import jakarta.inject.Inject;
 import org.assertj.core.api.Assertions;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/ElasticsearchTemplateIntegrationTest.java b/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/ElasticsearchTemplateIntegrationTest.java
index d03a173f0..6f915710a 100644
--- a/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/ElasticsearchTemplateIntegrationTest.java
+++ b/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/ElasticsearchTemplateIntegrationTest.java
@@ -23,10 +23,10 @@
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/RepositoryIntegrationTest.java b/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/RepositoryIntegrationTest.java
index 77487a44b..cf64ab022 100644
--- a/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/RepositoryIntegrationTest.java
+++ b/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/RepositoryIntegrationTest.java
@@ -23,10 +23,10 @@
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/TemplateIntegrationTest.java b/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/TemplateIntegrationTest.java
index 5d13fa653..67d025342 100644
--- a/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/TemplateIntegrationTest.java
+++ b/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/TemplateIntegrationTest.java
@@ -22,10 +22,10 @@
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/mapping/DefaultElasticsearchTemplateTest.java b/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/mapping/DefaultElasticsearchTemplateTest.java
index d2b9baaa5..eb1033bf5 100644
--- a/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/mapping/DefaultElasticsearchTemplateTest.java
+++ b/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/mapping/DefaultElasticsearchTemplateTest.java
@@ -23,11 +23,11 @@
 import org.eclipse.jnosql.communication.semistructured.Element;
 import org.eclipse.jnosql.databases.elasticsearch.communication.ElasticsearchDocumentManager;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.eclipse.jnosql.mapping.semistructured.EventPersistManager;
 import org.jboss.weld.junit5.auto.AddExtensions;
diff --git a/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/integration/HazelcastTemplateIntegrationTest.java b/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/integration/HazelcastTemplateIntegrationTest.java
index 7683312f3..e9d3328d9 100644
--- a/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/integration/HazelcastTemplateIntegrationTest.java
+++ b/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/integration/HazelcastTemplateIntegrationTest.java
@@ -19,10 +19,10 @@
 import org.eclipse.jnosql.databases.hazelcast.mapping.HazelcastTemplate;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.keyvalue.KeyValueEntityConverter;
 import org.eclipse.jnosql.mapping.keyvalue.spi.KeyValueExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
 import org.jboss.weld.junit5.auto.EnableAutoWeld;
diff --git a/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/integration/KeyValueTemplateIntegrationTest.java b/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/integration/KeyValueTemplateIntegrationTest.java
index 489cee41e..316baa7dd 100644
--- a/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/integration/KeyValueTemplateIntegrationTest.java
+++ b/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/integration/KeyValueTemplateIntegrationTest.java
@@ -19,11 +19,11 @@
 import org.eclipse.jnosql.databases.hazelcast.mapping.HazelcastTemplate;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.keyvalue.KeyValueEntityConverter;
 import org.eclipse.jnosql.mapping.keyvalue.KeyValueTemplate;
 import org.eclipse.jnosql.mapping.keyvalue.spi.KeyValueExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
 import org.jboss.weld.junit5.auto.EnableAutoWeld;
diff --git a/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/mapping/DefaultHazelcastTemplateTest.java b/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/mapping/DefaultHazelcastTemplateTest.java
index d1393fb01..14c48fed7 100644
--- a/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/mapping/DefaultHazelcastTemplateTest.java
+++ b/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/mapping/DefaultHazelcastTemplateTest.java
@@ -16,10 +16,10 @@
 
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.keyvalue.AbstractKeyValueTemplate;
 import org.eclipse.jnosql.mapping.keyvalue.spi.KeyValueExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
 import org.jboss.weld.junit5.auto.EnableAutoWeld;
diff --git a/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/mapping/HazelcastExtensionTest.java b/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/mapping/HazelcastExtensionTest.java
index dac38abd9..7b2e157f8 100644
--- a/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/mapping/HazelcastExtensionTest.java
+++ b/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/mapping/HazelcastExtensionTest.java
@@ -16,10 +16,10 @@
 
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.keyvalue.AbstractKeyValueTemplate;
 import org.eclipse.jnosql.mapping.keyvalue.spi.KeyValueExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
 import org.jboss.weld.junit5.auto.EnableAutoWeld;
diff --git a/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/mapping/HazelcastRepositoryProxyTest.java b/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/mapping/HazelcastRepositoryProxyTest.java
index 7d2a57f51..71851ac7b 100644
--- a/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/mapping/HazelcastRepositoryProxyTest.java
+++ b/jnosql-hazelcast/src/test/java/org/eclipse/jnosql/databases/hazelcast/mapping/HazelcastRepositoryProxyTest.java
@@ -17,11 +17,11 @@
 import jakarta.data.repository.Param;
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.keyvalue.AbstractKeyValueTemplate;
 import org.eclipse.jnosql.mapping.keyvalue.spi.KeyValueExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
 import org.jboss.weld.junit5.auto.EnableAutoWeld;
diff --git a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/CustomRepositoryIntegrationTest.java b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/CustomRepositoryIntegrationTest.java
index 566a17bb7..beb5c9bee 100644
--- a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/CustomRepositoryIntegrationTest.java
+++ b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/CustomRepositoryIntegrationTest.java
@@ -29,10 +29,10 @@
 import org.eclipse.jnosql.mapping.DatabaseType;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/MongoDBTemplateIntegrationTest.java b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/MongoDBTemplateIntegrationTest.java
index 17a7e9847..0975a7118 100644
--- a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/MongoDBTemplateIntegrationTest.java
+++ b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/MongoDBTemplateIntegrationTest.java
@@ -22,10 +22,10 @@
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/RepositoryIntegrationTest.java b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/RepositoryIntegrationTest.java
index ea79a91d2..4b534b369 100644
--- a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/RepositoryIntegrationTest.java
+++ b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/RepositoryIntegrationTest.java
@@ -22,10 +22,10 @@
 import org.eclipse.jnosql.mapping.DatabaseType;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/TemplateIntegrationTest.java b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/TemplateIntegrationTest.java
index 206457fec..3f4df7e7f 100644
--- a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/TemplateIntegrationTest.java
+++ b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/integration/TemplateIntegrationTest.java
@@ -22,10 +22,10 @@
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/mapping/DefaultMongoDBTemplateTest.java b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/mapping/DefaultMongoDBTemplateTest.java
index 4260c88eb..d20311074 100644
--- a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/mapping/DefaultMongoDBTemplateTest.java
+++ b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/mapping/DefaultMongoDBTemplateTest.java
@@ -25,12 +25,12 @@
 import org.eclipse.jnosql.communication.semistructured.Element;
 import org.eclipse.jnosql.databases.mongodb.communication.MongoDBDocumentManager;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.metadata.EntityMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.eclipse.jnosql.mapping.semistructured.EventPersistManager;
 import org.jboss.weld.junit5.auto.AddExtensions;
diff --git a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/mapping/DocumentEntityConverterTest.java b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/mapping/DocumentEntityConverterTest.java
index eccc1896e..022b17dc1 100644
--- a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/mapping/DocumentEntityConverterTest.java
+++ b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/mapping/DocumentEntityConverterTest.java
@@ -19,10 +19,10 @@
 import org.bson.types.ObjectId;
 import org.eclipse.jnosql.communication.semistructured.CommunicationEntity;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/mapping/MongoDBTemplateTest.java b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/mapping/MongoDBTemplateTest.java
index fd20ac262..f9c9a057e 100644
--- a/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/mapping/MongoDBTemplateTest.java
+++ b/jnosql-mongodb/src/test/java/org/eclipse/jnosql/databases/mongodb/mapping/MongoDBTemplateTest.java
@@ -16,10 +16,10 @@
 
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JQueryBuilderTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JQueryBuilderTest.java
index cb9cf9ac1..52eabb497 100644
--- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JQueryBuilderTest.java
+++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/communication/Neo4JQueryBuilderTest.java
@@ -18,8 +18,8 @@
 
 import org.eclipse.jnosql.communication.semistructured.CriteriaCondition;
 import org.eclipse.jnosql.communication.semistructured.DeleteQuery;
-import org.eclipse.jnosql.communication.semistructured.SelectQuery;
 import org.eclipse.jnosql.communication.semistructured.Element;
+import org.eclipse.jnosql.communication.semistructured.SelectQuery;
 import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/RepositoryIntegrationTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/RepositoryIntegrationTest.java
index 36d7d65c2..8c8f1b460 100644
--- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/RepositoryIntegrationTest.java
+++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/RepositoryIntegrationTest.java
@@ -22,8 +22,8 @@
 import org.eclipse.jnosql.databases.neo4j.mapping.Neo4JTemplate;
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java
index 1c25854b7..206fc93ad 100644
--- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java
+++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/TemplateIntegrationTest.java
@@ -20,8 +20,8 @@
 import org.eclipse.jnosql.databases.neo4j.mapping.Neo4JTemplate;
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplateTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplateTest.java
index 365e81e2b..066680cca 100644
--- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplateTest.java
+++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/DefaultNeo4JTemplateTest.java
@@ -22,9 +22,9 @@
 import org.eclipse.jnosql.communication.semistructured.Element;
 import org.eclipse.jnosql.databases.neo4j.communication.Neo4JDatabaseManager;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.eclipse.jnosql.mapping.semistructured.EventPersistManager;
 import org.jboss.weld.junit5.auto.AddExtensions;
diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4JTemplateTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4JTemplateTest.java
index 11568e17b..84bc15e18 100644
--- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4JTemplateTest.java
+++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4JTemplateTest.java
@@ -16,8 +16,8 @@
 
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jExtensionTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jExtensionTest.java
index fc6266932..59c78f026 100644
--- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jExtensionTest.java
+++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jExtensionTest.java
@@ -16,8 +16,8 @@
 
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jRepositoryProxyTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jRepositoryProxyTest.java
index 9298cfd05..95678467c 100644
--- a/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jRepositoryProxyTest.java
+++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/mapping/Neo4jRepositoryProxyTest.java
@@ -17,9 +17,9 @@
 import jakarta.data.repository.Param;
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/integration/OracleNoSQLTemplateIntegrationTest.java b/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/integration/OracleNoSQLTemplateIntegrationTest.java
index fa6a80305..048e5e51e 100644
--- a/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/integration/OracleNoSQLTemplateIntegrationTest.java
+++ b/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/integration/OracleNoSQLTemplateIntegrationTest.java
@@ -22,10 +22,10 @@
 import org.eclipse.jnosql.databases.oracle.mapping.OracleNoSQLTemplate;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/integration/WineTemplateIntegrationTest.java b/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/integration/WineTemplateIntegrationTest.java
index 624eade41..9037cff6d 100644
--- a/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/integration/WineTemplateIntegrationTest.java
+++ b/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/integration/WineTemplateIntegrationTest.java
@@ -22,10 +22,10 @@
 import org.eclipse.jnosql.databases.oracle.mapping.OracleNoSQLTemplate;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/mapping/DefaultOracleNoSQLTemplateTest.java b/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/mapping/DefaultOracleNoSQLTemplateTest.java
index abf4bb528..9a682d87e 100644
--- a/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/mapping/DefaultOracleNoSQLTemplateTest.java
+++ b/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/mapping/DefaultOracleNoSQLTemplateTest.java
@@ -22,11 +22,11 @@
 import org.eclipse.jnosql.communication.semistructured.Element;
 import org.eclipse.jnosql.databases.oracle.communication.OracleNoSQLDocumentManager;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.eclipse.jnosql.mapping.semistructured.EventPersistManager;
 import org.jboss.weld.junit5.auto.AddExtensions;
diff --git a/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/mapping/OracleDBExtensionTest.java b/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/mapping/OracleDBExtensionTest.java
index d96e79b56..41aaafdba 100644
--- a/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/mapping/OracleDBExtensionTest.java
+++ b/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/mapping/OracleDBExtensionTest.java
@@ -16,10 +16,10 @@
 
 import jakarta.inject.Inject;
 import jakarta.nosql.Convert;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.keyvalue.spi.KeyValueExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
 import org.jboss.weld.junit5.auto.EnableAutoWeld;
diff --git a/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/mapping/OracleDocumentRepositoryProxyTest.java b/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/mapping/OracleDocumentRepositoryProxyTest.java
index 466444382..6dc33e789 100644
--- a/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/mapping/OracleDocumentRepositoryProxyTest.java
+++ b/jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/mapping/OracleDocumentRepositoryProxyTest.java
@@ -18,12 +18,12 @@
 import jakarta.inject.Inject;
 import org.assertj.core.api.Assertions;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.keyvalue.spi.KeyValueExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/integration/OrientDBTemplateIntegrationTest.java b/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/integration/OrientDBTemplateIntegrationTest.java
index 5410e843c..0f939a99b 100644
--- a/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/integration/OrientDBTemplateIntegrationTest.java
+++ b/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/integration/OrientDBTemplateIntegrationTest.java
@@ -21,10 +21,10 @@
 import org.eclipse.jnosql.databases.orientdb.mapping.OrientDBTemplate;
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/integration/TemplateIntegrationTest.java b/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/integration/TemplateIntegrationTest.java
index ca38a1665..820bfc52b 100644
--- a/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/integration/TemplateIntegrationTest.java
+++ b/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/integration/TemplateIntegrationTest.java
@@ -20,10 +20,10 @@
 import org.eclipse.jnosql.databases.orientdb.communication.OrientDBDocumentConfigurations;
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/mapping/DefaultOrientDBTemplateTest.java b/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/mapping/DefaultOrientDBTemplateTest.java
index ab612332a..c7d902fb8 100644
--- a/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/mapping/DefaultOrientDBTemplateTest.java
+++ b/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/mapping/DefaultOrientDBTemplateTest.java
@@ -24,11 +24,11 @@
 import org.eclipse.jnosql.databases.orientdb.communication.OrientDBLiveCallback;
 import org.eclipse.jnosql.databases.orientdb.communication.OrientDBLiveCreateCallback;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.eclipse.jnosql.mapping.semistructured.EventPersistManager;
 import org.jboss.weld.junit5.auto.AddExtensions;
diff --git a/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/mapping/OrientDBDocumentRepositoryProxyTest.java b/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/mapping/OrientDBDocumentRepositoryProxyTest.java
index 82f4bd949..d2f920e62 100644
--- a/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/mapping/OrientDBDocumentRepositoryProxyTest.java
+++ b/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/mapping/OrientDBDocumentRepositoryProxyTest.java
@@ -18,11 +18,11 @@
 import jakarta.data.repository.Param;
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/mapping/OrientDBExtensionTest.java b/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/mapping/OrientDBExtensionTest.java
index 7cb37c055..691bd6d9b 100644
--- a/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/mapping/OrientDBExtensionTest.java
+++ b/jnosql-orientdb/src/test/java/org/eclipse/jnosql/databases/orientdb/mapping/OrientDBExtensionTest.java
@@ -16,10 +16,10 @@
 
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/integration/SolrTemplateIntegrationTest.java b/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/integration/SolrTemplateIntegrationTest.java
index 7d6324ae7..ff011ca34 100644
--- a/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/integration/SolrTemplateIntegrationTest.java
+++ b/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/integration/SolrTemplateIntegrationTest.java
@@ -23,10 +23,10 @@
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/integration/TemplateIntegrationTest.java b/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/integration/TemplateIntegrationTest.java
index 1e5c5ac2c..86a87b6d5 100644
--- a/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/integration/TemplateIntegrationTest.java
+++ b/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/integration/TemplateIntegrationTest.java
@@ -21,10 +21,10 @@
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
 import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/mapping/DefaultSolrTemplateTest.java b/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/mapping/DefaultSolrTemplateTest.java
index a9e471be1..b29c63abc 100644
--- a/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/mapping/DefaultSolrTemplateTest.java
+++ b/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/mapping/DefaultSolrTemplateTest.java
@@ -20,11 +20,11 @@
 import org.eclipse.jnosql.communication.semistructured.Element;
 import org.eclipse.jnosql.databases.solr.communication.SolrDocumentManager;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.eclipse.jnosql.mapping.semistructured.EventPersistManager;
 import org.jboss.weld.junit5.auto.AddExtensions;
diff --git a/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/mapping/SolrExtensionTest.java b/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/mapping/SolrExtensionTest.java
index 50b7a94cf..d3a93ae6f 100644
--- a/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/mapping/SolrExtensionTest.java
+++ b/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/mapping/SolrExtensionTest.java
@@ -16,10 +16,10 @@
 
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/mapping/SolrRepositoryProxyTest.java b/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/mapping/SolrRepositoryProxyTest.java
index 7d1e91ab5..db3177b96 100644
--- a/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/mapping/SolrRepositoryProxyTest.java
+++ b/jnosql-solr/src/test/java/org/eclipse/jnosql/databases/solr/mapping/SolrRepositoryProxyTest.java
@@ -16,11 +16,11 @@
 
 import jakarta.inject.Inject;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.document.DocumentTemplate;
 import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
 import org.eclipse.jnosql.mapping.metadata.EntitiesMetadata;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplate.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplate.java
index 7beaf38ad..6621ea5a2 100644
--- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplate.java
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/AbstractTinkerpopTemplate.java
@@ -25,14 +25,13 @@
 import org.apache.tinkerpop.gremlin.structure.Transaction;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.eclipse.jnosql.databases.tinkerpop.communication.CommunicationEntityConverter;
-import org.eclipse.jnosql.databases.tinkerpop.communication.TinkerpopGraphDatabaseManager;
 import org.eclipse.jnosql.databases.tinkerpop.communication.GraphTransactionUtil;
+import org.eclipse.jnosql.databases.tinkerpop.communication.TinkerpopGraphDatabaseManager;
 import org.eclipse.jnosql.mapping.IdNotFoundException;
 import org.eclipse.jnosql.mapping.PreparedStatement;
 import org.eclipse.jnosql.mapping.graph.AbstractGraphTemplate;
 import org.eclipse.jnosql.mapping.metadata.EntityMetadata;
 import org.eclipse.jnosql.mapping.metadata.FieldMetadata;
-import org.eclipse.jnosql.mapping.semistructured.AbstractSemiStructuredTemplate;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java
index 6a9e525e8..4356f2f6d 100644
--- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java
@@ -18,7 +18,6 @@
 import org.apache.tinkerpop.gremlin.structure.Transaction;
 import org.eclipse.jnosql.mapping.PreparedStatement;
 import org.eclipse.jnosql.mapping.graph.GraphTemplate;
-import org.eclipse.jnosql.mapping.semistructured.SemiStructuredTemplate;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TemplateBean.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TemplateBean.java
index bf75c93ab..406f44217 100644
--- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TemplateBean.java
+++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/TemplateBean.java
@@ -17,8 +17,8 @@
 import jakarta.enterprise.context.spi.CreationalContext;
 import jakarta.nosql.Template;
 import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.GraphTemplateProducer;
+import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate;
 import org.eclipse.jnosql.mapping.DatabaseQualifier;
 import org.eclipse.jnosql.mapping.DatabaseType;
 import org.eclipse.jnosql.mapping.core.spi.AbstractBean;
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 cea5b7b26..4bc2d29b7 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
@@ -23,8 +23,8 @@
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Magazine;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.GraphExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
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 6008d4594..86a2d8a68 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
@@ -18,8 +18,8 @@
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.GraphExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
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 e0c525102..39fb30eef 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
@@ -18,8 +18,8 @@
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.GraphExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
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 5d603d8f0..b7b0f0970 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
@@ -18,8 +18,8 @@
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Human;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.GraphExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
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 06b92cc50..b2725f13c 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
@@ -22,8 +22,8 @@
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Magazine;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.GraphExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
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 ead7afb38..a6d9ae0a1 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
@@ -22,8 +22,8 @@
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.Magazine;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.GraphExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
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 a8235f767..96c67909b 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
@@ -19,8 +19,8 @@
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.GraphExtension;
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
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 c0e9b438a..5d7142eed 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
@@ -22,8 +22,8 @@
 import org.eclipse.jnosql.databases.tinkerpop.mapping.entities.MagazineTemplate;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.GraphExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
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 fc30c55e7..37c17c2e7 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
@@ -18,8 +18,8 @@
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.GraphExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
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 b77264b78..2b4cbac84 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
@@ -20,8 +20,8 @@
 import org.eclipse.jnosql.databases.tinkerpop.mapping.TinkerpopTemplate;
 import org.eclipse.jnosql.databases.tinkerpop.mapping.spi.GraphExtension;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphCustomExtensionTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphCustomExtensionTest.java
index fe0918d5b..88bd3642f 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphCustomExtensionTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphCustomExtensionTest.java
@@ -23,8 +23,8 @@
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.DatabaseType;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;
diff --git a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphExtensionTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphExtensionTest.java
index 6cc630dc9..e646840b2 100644
--- a/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphExtensionTest.java
+++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/spi/GraphExtensionTest.java
@@ -22,8 +22,8 @@
 import org.eclipse.jnosql.mapping.Database;
 import org.eclipse.jnosql.mapping.DatabaseType;
 import org.eclipse.jnosql.mapping.core.Converters;
-import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.reflection.Reflections;
+import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
 import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
 import org.jboss.weld.junit5.auto.AddExtensions;
 import org.jboss.weld.junit5.auto.AddPackages;

From 8e537f87cd05881eaaca5cf24694cec7673addc8 Mon Sep 17 00:00:00 2001
From: Otavio Santana 
Date: Sat, 22 Mar 2025 07:08:37 +0000
Subject: [PATCH 43/43] docs: udpate changelog

Signed-off-by: Otavio Santana 
---
 CHANGELOG.adoc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc
index 7432ce129..8f70454c1 100644
--- a/CHANGELOG.adoc
+++ b/CHANGELOG.adoc
@@ -21,6 +21,7 @@ and this project adheres to https://semver.org/spec/v2.0.0.html[Semantic Version
 - Update DynamoDB driver 2.29.45
 - Update ArangoDb driver to 7.17.0
 - At repositories params, use the Param annotation from Jakarta Data API.
+- Rename at tinkerpop `GraphTempalte`to `TinkerPopTemplate`
 
 === Fixed