diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index a18ad12b8..8f70454c1 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 @@ -20,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 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/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} 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..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 @@ -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,7 +250,90 @@ 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) { + 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"); + + 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"; + + 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); + } + } + + private CommunicationEntity ensureEntityExists(CommunicationEntity entity) { + return entity.find(ID).filter(this::entityExists).map(id -> entity).orElseGet(() -> insert(entity)); + } + + 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.get())); + var exists = result.single().get("exists").asBoolean(); + LOGGER.fine(() -> "Checking if entity exists with ID: " + id + " result: " + exists); + return exists; + } + } @Override public void close() { 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}. 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 { +} 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
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..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,25 +20,22 @@
 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;
 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;
 
 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 AbstractSemiStructuredTemplate implements Neo4JTemplate {
-
-    private static final Logger LOGGER = Logger.getLogger(DefaultNeo4JTemplate.class.getName());
+class DefaultNeo4JTemplate extends AbstractGraphTemplate implements Neo4JTemplate {
 
     private Instance manager;
 
@@ -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();
     }
 
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/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"; 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..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. * @@ -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); } 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..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 @@ -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 @@ -160,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 @@ -172,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 @@ -388,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 @@ -533,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); } @@ -557,11 +547,64 @@ void shouldRemoveEdge() { Map parameters = Map.of("_id1", startNodeId, "_id2", targetNodeId); var result = entityManager.executeQuery(cypher, parameters).toList(); + SoftAssertions.assertSoftly(softly -> softly.assertThat(result).isEmpty()); + } + + @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(result).isEmpty(); + softly.assertThat(retrievedEdge).isPresent(); + softly.assertThat(retrievedEdge.get().label()).isEqualTo("FRIEND"); + softly.assertThat(retrievedEdge.get().properties()).containsEntry("since", 2020L); }); } + @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(); 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/GraphTemplateIntegrationTest.java b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java new file mode 100644 index 000000000..99897ca83 --- /dev/null +++ b/jnosql-neo4j/src/test/java/org/eclipse/jnosql/databases/neo4j/integration/GraphTemplateIntegrationTest.java @@ -0,0 +1,164 @@ +/* + * 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.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; +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.HashMap; +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(GraphTemplate.class) +@AddPackages(Reflections.class) +@AddPackages(Converters.class) +@AddExtensions({ReflectionEntityMetadataExtension.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() { + removeAllEdges(); + 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(); + }); + } + + 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); + } + } +} 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/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 a3ef885df..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 @@ -18,14 +18,13 @@ 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; 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; @@ -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 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/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 e113d6980..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 @@ -16,11 +16,10 @@ 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.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; @@ -59,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()); @@ -98,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); 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/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} 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 59% 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..9a309e664 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 @@ -16,24 +16,30 @@ 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; 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.HashMap; 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; 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 +50,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; } @@ -167,4 +173,100 @@ 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) { + 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")).get()) + .orElseThrow(() -> new EmptyResultException("Source entity not found")); + + Vertex targetVertex = findVertexById(target.find(ID_PROPERTY) + .orElseThrow(() -> new CommunicationException("Target entity must have an ID")).get()) + .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) { + 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(); + } + } 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 { +} 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/AbstractTinkerpopTemplate.java similarity index 95% 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 2b49f6218..6621ea5a2 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 @@ -25,13 +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.GraphDatabaseManager; 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; @@ -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 AbstractGraphTemplate implements TinkerpopTemplate { @SuppressWarnings("unchecked") private static final Function, GraphTraversal> INITIAL_VERTEX = @@ -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/DefaultTinkerpopTemplate.java similarity index 80% 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 eefe02480..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 @@ -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; @@ -31,32 +31,32 @@ @Default @ApplicationScoped @Database(GRAPH) -class DefaultGraphTemplate extends AbstractGraphTemplate { +class DefaultTinkerpopTemplate extends AbstractTinkerpopTemplate { private EntityConverter converter; - private GraphDatabaseManager manager; + private TinkerpopGraphDatabaseManager manager; private EventPersistManager eventManager; private EntitiesMetadata entities; private Converters converters; 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; this.entities = entities; this.converters = converters; - this.manager = GraphDatabaseManager.of(graph); + this.manager = TinkerpopGraphDatabaseManager.of(graph); } /** * Constructor for CDI */ @Deprecated - DefaultGraphTemplate() {} + DefaultTinkerpopTemplate() {} @Override protected EntityConverter converter() { @@ -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/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 37a4ee1c5..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 @@ -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; @@ -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; @@ -70,20 +70,20 @@ 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) { + public ProducerTinkerpopTemplate(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; } - ProducerGraphTemplate() { + ProducerTinkerpopTemplate() { this(null, null, null, null, null); } @@ -93,7 +93,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/GraphTemplate.java b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplate.java similarity index 98% 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..4356f2f6d 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 @@ -17,7 +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.semistructured.SemiStructuredTemplate; +import org.eclipse.jnosql.mapping.graph.GraphTemplate; import java.util.Collection; import java.util.List; @@ -35,7 +35,7 @@ * * @see org.apache.tinkerpop.gremlin.structure.Graph */ -public interface GraphTemplate extends SemiStructuredTemplate { +public interface TinkerpopTemplate extends GraphTemplate { /** * Deletes a {@link org.apache.tinkerpop.gremlin.structure.Vertex} 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..62a0d1569 --- /dev/null +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphConfigurationSupplier.java @@ -0,0 +1,43 @@ +/* + * 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); + } +} 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..dd3460026 --- /dev/null +++ b/jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/mapping/configuration/GraphDatabaseConfiguration.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.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; + +/** + * The {@link DatabaseConfiguration} wrapper to {@link GraphConfiguration} + */ +public class GraphDatabaseConfiguration implements DatabaseConfiguration { + + private static final 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/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..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.GraphTemplate; 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; @@ -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/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..451e301c6 --- /dev/null +++ b/jnosql-tinkerpop/src/main/resources/META-INF/services/org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration @@ -0,0 +1 @@ +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/communication/DefaultGraphDatabaseManagerTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManagerTest.java similarity index 86% 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..6e7c5e5ee 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 @@ -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; @@ -44,18 +45,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 +77,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 +103,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(); }); } @@ -427,8 +428,65 @@ 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()); + + CommunicationEdge communicationEdge = entityManager.edge(person1, "FRIEND", person2, Map.of()); + + entityManager.remove(person1, "FRIEND", person2); + + var edges = entityManager.findEdgeById(communicationEdge.id()); + + 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); 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 90% 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..ddd63f902 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() { @@ -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"); + }); + } } 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 3251d6144..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; @@ -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({ReflectionEntityMetadataExtension.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 af293287c..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; @@ -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/DefaultGraphTemplateProducerTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultTinkerpopTemplateProducerTest.java similarity index 95% 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 5fec2f38f..39fb30eef 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 @@ -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; @@ -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/DefaultValueMapTraversalTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/DefaultValueMapTraversalTest.java index 295e16629..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; @@ -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({ReflectionEntityMetadataExtension.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 4162021fe..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; @@ -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({ReflectionEntityMetadataExtension.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 0a8e184b6..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; @@ -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({ReflectionEntityMetadataExtension.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/GraphTemplateTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/GraphTemplateTest.java index 1330b0318..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; @@ -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/MagazineTemplateTest.java b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/MagazineTemplateTest.java index c80097dfa..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; @@ -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({ReflectionEntityMetadataExtension.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 92% 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 5b49bfa0f..37c17c2e7 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 @@ -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; @@ -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 new file mode 100644 index 000000000..5f25d7a25 --- /dev/null +++ b/jnosql-tinkerpop/src/test/java/org/eclipse/jnosql/databases/tinkerpop/mapping/TinkerpopTemplateTest.java @@ -0,0 +1,57 @@ +/* + * 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.inject.Inject; +import jakarta.nosql.Template; +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.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; +import org.jboss.weld.junit5.auto.EnableAutoWeld; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import static org.eclipse.jnosql.mapping.DatabaseType.GRAPH; + +@EnableAutoWeld +@AddPackages(value = {Converters.class, EntityConverter.class, TinkerpopTemplate.class}) +@AddPackages(GraphProducer.class) +@AddPackages(Reflections.class) +@AddExtensions({ReflectionEntityMetadataExtension.class, GraphExtension.class}) +class TinkerpopTemplateTest { + + @Inject + private Template template; + + @Inject + @Database(GRAPH) + private Template qualifier; + + + @Test + void shouldInjectTemplate() { + Assertions.assertNotNull(template); + } + + @Test + void shouldInjectQualifier() { + Assertions.assertNotNull(qualifier); + } +} 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 faaa8ce22..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 @@ -17,11 +17,11 @@ 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.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; @@ -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({ReflectionEntityMetadataExtension.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 0a278d6ea..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 @@ -17,14 +17,14 @@ 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; 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; @@ -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({ReflectionEntityMetadataExtension.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 a4e849a90..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 @@ -16,14 +16,14 @@ 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; 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; @@ -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({ReflectionEntityMetadataExtension.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