From e33830af26c9eb106be4447e669cf87961f57f93 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 27 Mar 2025 19:19:51 +0000 Subject: [PATCH 1/8] chore: update structure on template Signed-off-by: Otavio Santana --- .../jnosql/databases/neo4j/mapping/GraphManagerSupplier.java | 4 ++-- .../neo4j/integration/RepositoryIntegrationTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) 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 35cde6429..e66614a69 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 @@ -19,6 +19,7 @@ import jakarta.enterprise.inject.Alternative; import jakarta.enterprise.inject.Disposes; import jakarta.enterprise.inject.Produces; +import jakarta.enterprise.inject.Typed; import jakarta.interceptor.Interceptor; import org.eclipse.jnosql.communication.Settings; import org.eclipse.jnosql.databases.neo4j.communication.Neo4JConfiguration; @@ -31,8 +32,6 @@ import java.util.logging.Logger; @ApplicationScoped -@Alternative -@Priority(Interceptor.Priority.LIBRARY_BEFORE) class GraphManagerSupplier implements Supplier { private static final String DATABASE_DEFAULT = "neo4j"; @@ -42,6 +41,7 @@ class GraphManagerSupplier implements Supplier { @Override @Produces @ApplicationScoped + @Typed(Neo4JDatabaseManager.class) public Neo4JDatabaseManager get() { LOGGER.fine(() -> "Creating a Neo4JDatabaseManager bean"); Settings settings = MicroProfileSettings.INSTANCE; 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 8c8f1b460..023e78fed 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 @@ -51,7 +51,7 @@ public class RepositoryIntegrationTest { } @Inject - private MagazineRepository repository; + private MagazineRepository repository; @Test void shouldSave() { From 49377cacf3bfd6ddf3aa10a5e2f5885375710385 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Fri, 28 Mar 2025 07:19:06 +0000 Subject: [PATCH 2/8] chore: update neo4j driver Signed-off-by: Otavio Santana --- .../neo4j/integration/GraphTemplateIntegrationTest.java | 4 ++++ 1 file changed, 4 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 99897ca83..1a13c9637 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 @@ -17,10 +17,12 @@ 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.Neo4JConfiguration; 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.config.MappingConfigurations; import org.eclipse.jnosql.mapping.graph.Edge; import org.eclipse.jnosql.mapping.graph.GraphTemplate; import org.eclipse.jnosql.mapping.reflection.Reflections; @@ -54,6 +56,8 @@ public class GraphTemplateIntegrationTest { DatabaseContainer.INSTANCE.host(); System.setProperty(Neo4JConfigurations.URI.get(), DatabaseContainer.INSTANCE.host()); System.setProperty(Neo4JConfigurations.DATABASE.get(), "neo4j"); + System.setProperty(MappingConfigurations.GRAPH_PROVIDER.get(), Neo4JConfiguration.class.getName()); + System.setProperty(MappingConfigurations.GRAPH_DATABASE.get(), "neo4j"); } @Inject From 45b5f4124afa93574a20b6b1d981097c9641215a Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Fri, 28 Mar 2025 07:19:53 +0000 Subject: [PATCH 3/8] style remove imports not used at Graph manager supplier Signed-off-by: Otavio Santana --- .../jnosql/databases/neo4j/mapping/GraphManagerSupplier.java | 3 --- 1 file changed, 3 deletions(-) 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 e66614a69..8b7c6c196 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,13 +14,10 @@ */ 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.enterprise.inject.Typed; -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; From 2651c7cf9cffd6765eba500eb589e7f1e14b60c5 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Fri, 28 Mar 2025 07:20:14 +0000 Subject: [PATCH 4/8] chore: use var at gramamanager supplier Signed-off-by: Otavio Santana --- .../jnosql/databases/neo4j/mapping/GraphManagerSupplier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 8b7c6c196..de3e200ab 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 @@ -43,7 +43,7 @@ public Neo4JDatabaseManager get() { LOGGER.fine(() -> "Creating a Neo4JDatabaseManager bean"); Settings settings = MicroProfileSettings.INSTANCE; var configuration = new Neo4JConfiguration(); - Neo4JDatabaseManagerFactory managerFactory = configuration.apply(settings); + var managerFactory = configuration.apply(settings); var database = settings.getOrDefault("database", DATABASE_DEFAULT); LOGGER.fine(() -> "Creating a Neo4JDatabaseManager bean with database: " + database); return managerFactory.apply(database); From 2a20dd7095b9efa7da4b74257a09611181bf96f7 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Fri, 28 Mar 2025 07:20:26 +0000 Subject: [PATCH 5/8] chore: udpate graph manager supplier Signed-off-by: Otavio Santana --- .../jnosql/databases/neo4j/mapping/GraphManagerSupplier.java | 1 - 1 file changed, 1 deletion(-) 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 de3e200ab..609ec126e 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 @@ -21,7 +21,6 @@ import org.eclipse.jnosql.communication.Settings; import org.eclipse.jnosql.databases.neo4j.communication.Neo4JConfiguration; import org.eclipse.jnosql.databases.neo4j.communication.Neo4JDatabaseManager; -import org.eclipse.jnosql.databases.neo4j.communication.Neo4JDatabaseManagerFactory; import org.eclipse.jnosql.mapping.core.config.MicroProfileSettings; import java.util.function.Supplier; From c2985fb5cfee1f38bf826b9797f0708ddfe7b70e Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Fri, 28 Mar 2025 07:21:39 +0000 Subject: [PATCH 6/8] chore: update graph manager supplier Signed-off-by: Otavio Santana --- .../jnosql/databases/neo4j/mapping/GraphManagerSupplier.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 609ec126e..21a88d898 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 @@ -21,6 +21,7 @@ import org.eclipse.jnosql.communication.Settings; import org.eclipse.jnosql.databases.neo4j.communication.Neo4JConfiguration; import org.eclipse.jnosql.databases.neo4j.communication.Neo4JDatabaseManager; +import org.eclipse.jnosql.mapping.core.config.MappingConfigurations; import org.eclipse.jnosql.mapping.core.config.MicroProfileSettings; import java.util.function.Supplier; @@ -43,7 +44,7 @@ public Neo4JDatabaseManager get() { Settings settings = MicroProfileSettings.INSTANCE; var configuration = new Neo4JConfiguration(); var managerFactory = configuration.apply(settings); - var database = settings.getOrDefault("database", DATABASE_DEFAULT); + var database = settings.getOrDefault(MappingConfigurations.GRAPH_DATABASE, DATABASE_DEFAULT); LOGGER.fine(() -> "Creating a Neo4JDatabaseManager bean with database: " + database); return managerFactory.apply(database); } From e62f21c54b4b2885c78bde0437d8ab34888d5ecb Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Fri, 28 Mar 2025 07:39:33 +0000 Subject: [PATCH 7/8] chore: generate database configuration adapter Signed-off-by: Otavio Santana --- .../DatabaseConfigurationAdapter.java | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DatabaseConfigurationAdapter.java diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DatabaseConfigurationAdapter.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DatabaseConfigurationAdapter.java new file mode 100644 index 000000000..604606781 --- /dev/null +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DatabaseConfigurationAdapter.java @@ -0,0 +1,61 @@ +/* + * 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.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 java.util.logging.Logger; + +public class DatabaseConfigurationAdapter implements DatabaseConfiguration { + + + private static final Logger LOGGER = Logger.getLogger(DatabaseConfigurationAdapter.class.getName()); + + @Override + public DatabaseManagerFactory apply(Settings settings) { + LOGGER.fine(() -> "Creating graph database manager based on settings and GraphConfiguration SPI"); + var configuration = GraphConfiguration.getConfiguration(); + var graph = configuration.apply(settings); + return GraphDatabaseManagerFactory.of(graph); + } + + static class GraphDatabaseManagerFactory implements DatabaseManagerFactory { + + private final Graph graph; + + private 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); + } + + public static GraphDatabaseManagerFactory of(Graph graph) { + return new GraphDatabaseManagerFactory(graph); + } + } +} From 3bc56439fae46dd760abb94022a969f61bf024a0 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Fri, 28 Mar 2025 07:42:11 +0000 Subject: [PATCH 8/8] chore: udpate configuration Signed-off-by: Otavio Santana --- .../communication/DatabaseConfigurationAdapter.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DatabaseConfigurationAdapter.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DatabaseConfigurationAdapter.java index 604606781..86697c883 100644 --- a/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DatabaseConfigurationAdapter.java +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DatabaseConfigurationAdapter.java @@ -22,6 +22,11 @@ import java.util.logging.Logger; +/** + * Adapter class that integrates both DatabaseConfiguration and GraphConfiguration. + * This class is responsible for creating a DatabaseManagerFactory based on the provided settings. + * It utilizes the GraphConfiguration SPI to create a Graph instance and then wraps it in a DatabaseManagerFactory. + */ public class DatabaseConfigurationAdapter implements DatabaseConfiguration {