diff --git a/src/main/java/org/springframework/data/neo4j/config/Neo4jConfigurationSupport.java b/src/main/java/org/springframework/data/neo4j/config/Neo4jConfigurationSupport.java index 918e8e347..c2926c61c 100644 --- a/src/main/java/org/springframework/data/neo4j/config/Neo4jConfigurationSupport.java +++ b/src/main/java/org/springframework/data/neo4j/config/Neo4jConfigurationSupport.java @@ -25,9 +25,11 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; import org.springframework.core.type.filter.AnnotationTypeFilter; +import org.springframework.data.annotation.Persistent; import org.springframework.data.neo4j.core.convert.Neo4jConversions; import org.springframework.data.neo4j.core.mapping.Neo4jMappingContext; import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.RelationshipProperties; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; @@ -115,6 +117,8 @@ abstract class Neo4jConfigurationSupport { ClassPathScanningCandidateComponentProvider componentProvider = new ClassPathScanningCandidateComponentProvider( false); componentProvider.addIncludeFilter(new AnnotationTypeFilter(Node.class)); + componentProvider.addIncludeFilter(new AnnotationTypeFilter(Persistent.class)); + componentProvider.addIncludeFilter(new AnnotationTypeFilter(RelationshipProperties.class)); ClassLoader classLoader = Neo4jConfigurationSupport.class.getClassLoader(); for (BeanDefinition candidate : componentProvider.findCandidateComponents(basePackage)) { diff --git a/src/main/java/org/springframework/data/neo4j/core/mapping/DefaultNeo4jPersistentEntity.java b/src/main/java/org/springframework/data/neo4j/core/mapping/DefaultNeo4jPersistentEntity.java index ca1a53a27..d81b0ef52 100644 --- a/src/main/java/org/springframework/data/neo4j/core/mapping/DefaultNeo4jPersistentEntity.java +++ b/src/main/java/org/springframework/data/neo4j/core/mapping/DefaultNeo4jPersistentEntity.java @@ -29,6 +29,7 @@ import java.util.UUID; import java.util.stream.Collectors; import java.util.stream.Stream; +import org.springframework.data.annotation.Persistent; import org.springframework.data.mapping.Association; import org.springframework.data.mapping.PropertyHandler; import org.springframework.data.mapping.model.BasicPersistentEntity; @@ -89,7 +90,7 @@ final class DefaultNeo4jPersistentEntity extends BasicPersistentEntity information) { super(information); - this.isExplicitEntity = this.isAnnotationPresent(Node.class); + this.isExplicitEntity = this.isAnnotationPresent(Node.class) || this.isAnnotationPresent(Persistent.class); this.primaryLabel = computePrimaryLabel(); this.additionalLabels = Lazy.of(this::computeAdditionalLabels); this.graphProperties = Lazy.of(this::computeGraphProperties); diff --git a/src/main/java/org/springframework/data/neo4j/core/mapping/DefaultNeo4jPersistentProperty.java b/src/main/java/org/springframework/data/neo4j/core/mapping/DefaultNeo4jPersistentProperty.java index 45c60bda8..1be5efec3 100644 --- a/src/main/java/org/springframework/data/neo4j/core/mapping/DefaultNeo4jPersistentProperty.java +++ b/src/main/java/org/springframework/data/neo4j/core/mapping/DefaultNeo4jPersistentProperty.java @@ -23,6 +23,7 @@ import org.neo4j.driver.Values; import org.springframework.data.mapping.Association; import org.springframework.data.mapping.MappingException; import org.springframework.data.mapping.PersistentEntity; +import org.springframework.data.mapping.PersistentProperty; import org.springframework.data.mapping.model.AnnotationBasedPersistentProperty; import org.springframework.data.mapping.model.Property; import org.springframework.data.mapping.model.SimpleTypeHolder; @@ -95,31 +96,30 @@ final class DefaultNeo4jPersistentProperty extends AnnotationBasedPersistentProp Class type = getRelationshipPropertiesTargetType(getActualType()); obverseOwner = this.mappingContext.getPersistentEntity(type); relationshipPropertiesClass = this.mappingContext.getPersistentEntity(getActualType()); - } else if (dynamicAssociation) { - - TypeInformation mapValueType = this.getTypeInformation().getMapValueType(); - - boolean relationshipPropertiesCollection = - this.mappingContext.getPersistentEntity(mapValueType.getActualType().getType()) - .isRelationshipPropertiesEntity(); - - boolean relationshipPropertiesScalar = - mapValueType.getType().isAnnotationPresent(RelationshipProperties.class); - - if (relationshipPropertiesCollection) { - Class type = getRelationshipPropertiesTargetType(mapValueType.getActualType().getType()); - obverseOwner = this.mappingContext.getPersistentEntity(type); - relationshipPropertiesClass = this.mappingContext - .getPersistentEntity(mapValueType.getComponentType().getType()); - - } else if (relationshipPropertiesScalar) { - obverseOwner = this.mappingContext.getPersistentEntity(this.getAssociationTargetType()); - relationshipPropertiesClass = this.mappingContext.getPersistentEntity(mapValueType.getType()); - } else { - obverseOwner = this.mappingContext.getPersistentEntity(this.getAssociationTargetType()); - } } else { - obverseOwner = this.mappingContext.getPersistentEntity(this.getAssociationTargetType()); + Class associationTargetType = this.getAssociationTargetType(); + obverseOwner = this.mappingContext.addPersistentEntity(associationTargetType).get(); + if (dynamicAssociation) { + + TypeInformation mapValueType = this.getTypeInformation().getMapValueType(); + + boolean relationshipPropertiesCollection = + this.mappingContext.getPersistentEntity(mapValueType.getActualType().getType()) + .isRelationshipPropertiesEntity(); + + boolean relationshipPropertiesScalar = + mapValueType.getType().isAnnotationPresent(RelationshipProperties.class); + + if (relationshipPropertiesCollection) { + Class type = getRelationshipPropertiesTargetType(mapValueType.getActualType().getType()); + obverseOwner = this.mappingContext.getPersistentEntity(type); + relationshipPropertiesClass = this.mappingContext + .getPersistentEntity(mapValueType.getComponentType().getType()); + + } else if (relationshipPropertiesScalar) { + relationshipPropertiesClass = this.mappingContext.getPersistentEntity(mapValueType.getType()); + } + } } Relationship outgoingRelationship = this.findAnnotation(Relationship.class); @@ -154,12 +154,11 @@ final class DefaultNeo4jPersistentProperty extends AnnotationBasedPersistentProp @NonNull private Class getRelationshipPropertiesTargetType(Class relationshipPropertiesType) { - Neo4jPersistentProperty persistentProperty = this.mappingContext.getPersistentEntity(relationshipPropertiesType) - .getPersistentProperty(TargetNode.class); - if (persistentProperty == null) { - throw new MappingException("Missing @TargetNode declaration in " + relationshipPropertiesType); - } - return persistentProperty.getType(); + return this.mappingContext.addPersistentEntity(relationshipPropertiesType) + .map(entity -> entity.getPersistentProperty(TargetNode.class)) + .map(PersistentProperty::getType) + .orElseThrow( + () -> new MappingException("Missing @TargetNode declaration in " + relationshipPropertiesType)); } @Override diff --git a/src/main/java/org/springframework/data/neo4j/core/mapping/Neo4jMappingContext.java b/src/main/java/org/springframework/data/neo4j/core/mapping/Neo4jMappingContext.java index 0b1b35a0b..aaf39130b 100644 --- a/src/main/java/org/springframework/data/neo4j/core/mapping/Neo4jMappingContext.java +++ b/src/main/java/org/springframework/data/neo4j/core/mapping/Neo4jMappingContext.java @@ -179,11 +179,11 @@ public final class Neo4jMappingContext extends AbstractMappingContext superclass = typeInformation.getType().getSuperclass(); if (isValidParentNode(superclass)) { - Neo4jPersistentEntity parentNodeDescription = getPersistentEntity(superclass); - if (parentNodeDescription != null) { + addPersistentEntity(superclass).ifPresent(parentNodeDescription -> { parentNodeDescription.addChildNodeDescription(newEntity); newEntity.setParentNodeDescription(parentNodeDescription); - } + }); + } return newEntity; diff --git a/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jRepositoryConfigurationExtension.java b/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jRepositoryConfigurationExtension.java index c8ab43fbf..b15094a4e 100644 --- a/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jRepositoryConfigurationExtension.java +++ b/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jRepositoryConfigurationExtension.java @@ -16,13 +16,16 @@ package org.springframework.data.neo4j.repository.config; import java.lang.annotation.Annotation; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import org.apiguardian.api.API; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; +import org.springframework.data.annotation.Persistent; import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.RelationshipProperties; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.support.Neo4jRepositoryFactoryBean; import org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport; @@ -83,7 +86,7 @@ public final class Neo4jRepositoryConfigurationExtension extends RepositoryConfi @Override protected Collection> getIdentifyingAnnotations() { - return Collections.singleton(Node.class); + return Arrays.asList(Node.class, RelationshipProperties.class, Persistent.class); } @Override diff --git a/src/main/java/org/springframework/data/neo4j/repository/config/ReactiveNeo4jRepositoryConfigurationExtension.java b/src/main/java/org/springframework/data/neo4j/repository/config/ReactiveNeo4jRepositoryConfigurationExtension.java index 17394e81d..de4097d6f 100644 --- a/src/main/java/org/springframework/data/neo4j/repository/config/ReactiveNeo4jRepositoryConfigurationExtension.java +++ b/src/main/java/org/springframework/data/neo4j/repository/config/ReactiveNeo4jRepositoryConfigurationExtension.java @@ -16,13 +16,16 @@ package org.springframework.data.neo4j.repository.config; import java.lang.annotation.Annotation; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import org.apiguardian.api.API; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; +import org.springframework.data.annotation.Persistent; import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.RelationshipProperties; import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; import org.springframework.data.neo4j.repository.support.ReactiveNeo4jRepositoryFactoryBean; import org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport; @@ -83,7 +86,7 @@ public final class ReactiveNeo4jRepositoryConfigurationExtension extends Reposit @Override protected Collection> getIdentifyingAnnotations() { - return Collections.singleton(Node.class); + return Arrays.asList(Node.class, RelationshipProperties.class, Persistent.class); } @Override diff --git a/src/main/java/org/springframework/data/neo4j/repository/query/DtoInstantiatingConverter.java b/src/main/java/org/springframework/data/neo4j/repository/query/DtoInstantiatingConverter.java index 24ca92ab8..4667ee044 100644 --- a/src/main/java/org/springframework/data/neo4j/repository/query/DtoInstantiatingConverter.java +++ b/src/main/java/org/springframework/data/neo4j/repository/query/DtoInstantiatingConverter.java @@ -74,7 +74,8 @@ class DtoInstantiatingConverter implements Converter sourceEntity = context.getRequiredPersistentEntity(entityInstance.getClass()); PersistentPropertyAccessor sourceAccessor = sourceEntity.getPropertyAccessor(entityInstance); - PersistentEntity targetEntity = context.getRequiredPersistentEntity(targetType); + + PersistentEntity targetEntity = context.addPersistentEntity(targetType).get(); PreferredConstructor> constructor = targetEntity .getPersistenceConstructor(); diff --git a/src/test/java/org/springframework/data/neo4j/core/mapping/DefaultNeo4jPersistentEntityTest.java b/src/test/java/org/springframework/data/neo4j/core/mapping/DefaultNeo4jPersistentEntityTest.java index bc27f0eab..5a3ba68ff 100644 --- a/src/test/java/org/springframework/data/neo4j/core/mapping/DefaultNeo4jPersistentEntityTest.java +++ b/src/test/java/org/springframework/data/neo4j/core/mapping/DefaultNeo4jPersistentEntityTest.java @@ -386,6 +386,7 @@ class DefaultNeo4jPersistentEntityTest { private String name; } + @Node static class TypeWithInvalidDynamicRelationshipMappings1 { @Id private String id; @@ -395,6 +396,7 @@ class DefaultNeo4jPersistentEntityTest { private Map bikes2; } + @Node static class TypeWithInvalidDynamicRelationshipMappings2 { @Id private String id; @@ -404,6 +406,7 @@ class DefaultNeo4jPersistentEntityTest { private Map> bikes2; } + @Node static class TypeWithInvalidDynamicRelationshipMappings3 { @Id private String id; @@ -413,11 +416,13 @@ class DefaultNeo4jPersistentEntityTest { private Map> bikes2; } + @Node static class EntityWithCorrectRelationshipProperties { @Id private String id; @Relationship HasTargetNodeRelationshipProperties rel; } + @Node static class EntityWithInCorrectRelationshipProperties { @Id private String id; @Relationship HasNoTargetNodeRelationshipProperties rel; diff --git a/src/test/java/org/springframework/data/neo4j/core/mapping/Neo4jMappingContextTest.java b/src/test/java/org/springframework/data/neo4j/core/mapping/Neo4jMappingContextTest.java index f03dbe144..cd1a77b5f 100644 --- a/src/test/java/org/springframework/data/neo4j/core/mapping/Neo4jMappingContextTest.java +++ b/src/test/java/org/springframework/data/neo4j/core/mapping/Neo4jMappingContextTest.java @@ -298,6 +298,7 @@ class Neo4jMappingContextTest { @Property(name = "firstName") String first_name; } + @Node static class SomeOtherClass { } @@ -318,6 +319,7 @@ class Neo4jMappingContextTest { } } + @Node static class BikeNode { @Id private String id; @@ -334,6 +336,7 @@ class Neo4jMappingContextTest { Map funnyDynamicProperties; } + @Node static class EnumRelNode { @Id private String id; @@ -343,6 +346,7 @@ class Neo4jMappingContextTest { Map relEA; } + @Node static class TripNode { @Id private String id; @@ -350,11 +354,13 @@ class Neo4jMappingContextTest { String name; } + @Node static class InvalidId { @Id @GeneratedValue @Property("getMappingFunctionFor") private String id; } + @Node static class InvalidIdType { @Id @GeneratedValue private String id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/conversion_imperative/CustomTypesIT.java b/src/test/java/org/springframework/data/neo4j/integration/conversion_imperative/CustomTypesIT.java new file mode 100644 index 000000000..a155d1446 --- /dev/null +++ b/src/test/java/org/springframework/data/neo4j/integration/conversion_imperative/CustomTypesIT.java @@ -0,0 +1,214 @@ +/* + * Copyright 2011-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.neo4j.integration.conversion_imperative; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.atomic.AtomicLong; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.neo4j.driver.Driver; +import org.neo4j.driver.Result; +import org.neo4j.driver.Session; +import org.neo4j.driver.SessionConfig; +import org.neo4j.driver.TransactionWork; +import org.neo4j.driver.Values; +import org.neo4j.driver.summary.ResultSummary; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.convert.converter.GenericConverter; +import org.springframework.data.neo4j.config.AbstractNeo4jConfig; +import org.springframework.data.neo4j.core.Neo4jOperations; +import org.springframework.data.neo4j.core.convert.Neo4jConversions; +import org.springframework.data.neo4j.integration.shared.conversion.PersonWithCustomId; +import org.springframework.data.neo4j.integration.shared.conversion.ThingWithCustomTypes; +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; +import org.springframework.data.neo4j.repository.query.Query; +import org.springframework.data.neo4j.test.Neo4jExtension.Neo4jConnectionSupport; +import org.springframework.data.neo4j.test.Neo4jIntegrationTest; +import org.springframework.data.repository.query.Param; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * @author Gerrit Meier + */ +@Neo4jIntegrationTest +public class CustomTypesIT { + + protected static Neo4jConnectionSupport neo4jConnectionSupport; + + private final AtomicLong customIdValueGenerator = new AtomicLong(); + + private final Driver driver; + + private final Neo4jOperations neo4jOperations; + + @Autowired + public CustomTypesIT(Driver driver, Neo4jOperations neo4jOperations) { + this.driver = driver; + this.neo4jOperations = neo4jOperations; + } + + SessionConfig getSessionConfig() { + return SessionConfig.defaultConfig(); + } + + TransactionWork createPersonWithCustomId(PersonWithCustomId.PersonId assignedId) { + + return tx -> tx.run("CREATE (n:PersonWithCustomId) SET n.id = $id ", + Values.parameters("id", assignedId.getId())).consume(); + } + + @BeforeEach + void setupData() { + try (Session session = driver.session()) { + session.writeTransaction(transaction -> { + transaction.run("MATCH (n) detach delete n").consume(); + transaction.run("CREATE (:CustomTypes{customType:'XYZ'})").consume(); + return null; + }); + } + } + + @Test + void deleteByCustomId() { + + PersonWithCustomId.PersonId id = new PersonWithCustomId.PersonId(customIdValueGenerator.incrementAndGet()); + try (Session session = driver.session(getSessionConfig())) { + session.writeTransaction(createPersonWithCustomId(id)); + } + + assertThat(neo4jOperations.count(PersonWithCustomId.class)).isEqualTo(1L); + neo4jOperations.deleteById(id, PersonWithCustomId.class); + + try (Session session = driver.session(getSessionConfig())) { + Result result = session.run("MATCH (p:PersonWithCustomId) return count(p) as count"); + assertThat(result.single().get("count").asLong()).isEqualTo(0); + } + } + + @Test + void deleteAllByCustomId() { + + List ids = Stream.generate(customIdValueGenerator::incrementAndGet) + .map(PersonWithCustomId.PersonId::new) + .limit(2) + .collect(Collectors.toList()); + try ( + Session session = driver.session(getSessionConfig()); + ) { + ids.forEach(id -> session.writeTransaction(createPersonWithCustomId(id))); + } + + assertThat(neo4jOperations.count(PersonWithCustomId.class)).isEqualTo(2L); + neo4jOperations.deleteAllById(ids, PersonWithCustomId.class); + + try (Session session = driver.session(getSessionConfig())) { + Result result = session.run("MATCH (p:PersonWithCustomId) return count(p) as count"); + assertThat(result.single().get("count").asLong()).isEqualTo(0); + } + } + + @Test + void findByConvertedCustomType(@Autowired EntityWithCustomTypePropertyRepository repository) { + + assertThat(repository.findByCustomType(ThingWithCustomTypes.CustomType.of("XYZ"))).isNotNull(); + } + + @Test + void findByConvertedCustomTypeWithCustomQuery(@Autowired EntityWithCustomTypePropertyRepository repository) { + + assertThat(repository.findByCustomTypeCustomQuery(ThingWithCustomTypes.CustomType.of("XYZ"))).isNotNull(); + } + + @Test + void findByConvertedCustomTypeWithSpELPropertyAccessQuery( + @Autowired EntityWithCustomTypePropertyRepository repository) { + + assertThat(repository.findByCustomTypeCustomSpELPropertyAccessQuery(ThingWithCustomTypes.CustomType.of("XYZ"))) + .isNotNull(); + } + + @Test + void findByConvertedCustomTypeWithSpELObjectQuery(@Autowired EntityWithCustomTypePropertyRepository repository) { + + assertThat(repository.findByCustomTypeSpELObjectQuery(ThingWithCustomTypes.CustomType.of("XYZ"))).isNotNull(); + } + + @Test + void findByConvertedDifferentTypeWithSpELObjectQuery(@Autowired EntityWithCustomTypePropertyRepository repository) { + + assertThat(repository.findByDifferentTypeCustomQuery(ThingWithCustomTypes.DifferentType.of("XYZ"))).isNotNull(); + } + + interface EntityWithCustomTypePropertyRepository extends Neo4jRepository { + + ThingWithCustomTypes findByCustomType(ThingWithCustomTypes.CustomType customType); + + @Query("MATCH (c:CustomTypes) WHERE c.customType = $customType return c") + ThingWithCustomTypes findByCustomTypeCustomQuery(@Param("customType") ThingWithCustomTypes.CustomType customType); + + @Query("MATCH (c:CustomTypes) WHERE c.customType = $differentType return c") + ThingWithCustomTypes findByDifferentTypeCustomQuery( + @Param("differentType") ThingWithCustomTypes.DifferentType differentType); + + @Query("MATCH (c:CustomTypes) WHERE c.customType = :#{#customType.value} return c") + ThingWithCustomTypes findByCustomTypeCustomSpELPropertyAccessQuery( + @Param("customType") ThingWithCustomTypes.CustomType customType); + + @Query("MATCH (c:CustomTypes) WHERE c.customType = :#{#customType} return c") + ThingWithCustomTypes findByCustomTypeSpELObjectQuery( + @Param("customType") ThingWithCustomTypes.CustomType customType); + } + + @Configuration + @EnableTransactionManagement + @EnableNeo4jRepositories(considerNestedRepositories = true) + static class Config extends AbstractNeo4jConfig { + + @Bean + @Override + public Driver driver() { + return neo4jConnectionSupport.getDriver(); + } + + @Bean + @Override + public Neo4jConversions neo4jConversions() { + Set additionalConverters = new HashSet<>(); + additionalConverters.add(new ThingWithCustomTypes.CustomTypeConverter()); + additionalConverters.add(new ThingWithCustomTypes.DifferentTypeConverter()); + additionalConverters.add(new PersonWithCustomId.CustomPersonIdConverter()); + + return new Neo4jConversions(additionalConverters); + } + + @Override // needed here because there is no implicit registration of entities upfront some methods under test + protected Collection getMappingBasePackages() { + return Collections.singletonList(ThingWithCustomTypes.class.getPackage().getName()); + } + } +} diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/ImperativeCompositePropertiesIT.java b/src/test/java/org/springframework/data/neo4j/integration/conversion_imperative/ImperativeCompositePropertiesIT.java similarity index 90% rename from src/test/java/org/springframework/data/neo4j/integration/imperative/ImperativeCompositePropertiesIT.java rename to src/test/java/org/springframework/data/neo4j/integration/conversion_imperative/ImperativeCompositePropertiesIT.java index 9af97a37f..06412bce4 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/ImperativeCompositePropertiesIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/conversion_imperative/ImperativeCompositePropertiesIT.java @@ -13,12 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.imperative; +package org.springframework.data.neo4j.integration.conversion_imperative; import static org.assertj.core.api.Assertions.assertThat; -import java.util.Collections; - import org.junit.jupiter.api.Test; import org.neo4j.driver.Driver; import org.springframework.beans.factory.annotation.Autowired; @@ -26,15 +24,17 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; import org.springframework.data.neo4j.core.convert.Neo4jConversions; -import org.springframework.data.neo4j.integration.shared.CompositePropertiesITBase; -import org.springframework.data.neo4j.integration.shared.ThingWithCompositeProperties; -import org.springframework.data.neo4j.integration.shared.ThingWithCustomTypes; +import org.springframework.data.neo4j.integration.shared.conversion.CompositePropertiesITBase; +import org.springframework.data.neo4j.integration.shared.conversion.ThingWithCompositeProperties; +import org.springframework.data.neo4j.integration.shared.conversion.ThingWithCustomTypes; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jExtension; import org.springframework.data.neo4j.test.Neo4jIntegrationTest; import org.springframework.transaction.annotation.EnableTransactionManagement; +import java.util.Collections; + /** * @author Michael J. Simons * @soundtrack Die Toten Hosen - Learning English, Lesson Two diff --git a/src/test/java/org/springframework/data/neo4j/integration/Neo4jConversionsIT.java b/src/test/java/org/springframework/data/neo4j/integration/conversion_imperative/Neo4jConversionsIT.java similarity index 97% rename from src/test/java/org/springframework/data/neo4j/integration/Neo4jConversionsIT.java rename to src/test/java/org/springframework/data/neo4j/integration/conversion_imperative/Neo4jConversionsIT.java index c4f68d261..d059f2a11 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/Neo4jConversionsIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/conversion_imperative/Neo4jConversionsIT.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration; +package org.springframework.data.neo4j.integration.conversion_imperative; import static org.assertj.core.api.Assertions.assertThat; @@ -41,7 +41,7 @@ import org.springframework.core.convert.TypeDescriptor; import org.springframework.core.convert.support.DefaultConversionService; import org.springframework.data.convert.ConverterBuilder; import org.springframework.data.neo4j.core.convert.Neo4jConversions; -import org.springframework.data.neo4j.integration.shared.Neo4jConversionsITBase; +import org.springframework.data.neo4j.integration.shared.conversion.Neo4jConversionsITBase; import org.springframework.data.neo4j.test.Neo4jExtension; /** diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/TypeConversionIT.java b/src/test/java/org/springframework/data/neo4j/integration/conversion_imperative/TypeConversionIT.java similarity index 93% rename from src/test/java/org/springframework/data/neo4j/integration/imperative/TypeConversionIT.java rename to src/test/java/org/springframework/data/neo4j/integration/conversion_imperative/TypeConversionIT.java index adbacf8e2..03c93c87b 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/TypeConversionIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/conversion_imperative/TypeConversionIT.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.imperative; +package org.springframework.data.neo4j.integration.conversion_imperative; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; @@ -55,14 +55,14 @@ import org.springframework.data.mapping.MappingException; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; import org.springframework.data.neo4j.core.convert.ConvertWith; import org.springframework.data.neo4j.core.convert.Neo4jConversions; -import org.springframework.data.neo4j.integration.shared.Neo4jConversionsITBase; -import org.springframework.data.neo4j.integration.shared.ThingWithAllAdditionalTypes; -import org.springframework.data.neo4j.integration.shared.ThingWithAllCypherTypes; -import org.springframework.data.neo4j.integration.shared.ThingWithAllSpatialTypes; -import org.springframework.data.neo4j.integration.shared.ThingWithCompositeProperties; -import org.springframework.data.neo4j.integration.shared.ThingWithCustomTypes; -import org.springframework.data.neo4j.integration.shared.ThingWithNonExistingPrimitives; -import org.springframework.data.neo4j.integration.shared.ThingWithUUIDID; +import org.springframework.data.neo4j.integration.shared.conversion.Neo4jConversionsITBase; +import org.springframework.data.neo4j.integration.shared.conversion.ThingWithAllAdditionalTypes; +import org.springframework.data.neo4j.integration.shared.common.ThingWithAllCypherTypes; +import org.springframework.data.neo4j.integration.shared.common.ThingWithAllSpatialTypes; +import org.springframework.data.neo4j.integration.shared.conversion.ThingWithCompositeProperties; +import org.springframework.data.neo4j.integration.shared.conversion.ThingWithCustomTypes; +import org.springframework.data.neo4j.integration.shared.common.ThingWithNonExistingPrimitives; +import org.springframework.data.neo4j.integration.shared.common.ThingWithUUIDID; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jIntegrationTest; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveCompositePropertiesIT.java b/src/test/java/org/springframework/data/neo4j/integration/conversion_reactive/ReactiveCompositePropertiesIT.java similarity index 91% rename from src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveCompositePropertiesIT.java rename to src/test/java/org/springframework/data/neo4j/integration/conversion_reactive/ReactiveCompositePropertiesIT.java index 40d635f8d..572e6c710 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveCompositePropertiesIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/conversion_reactive/ReactiveCompositePropertiesIT.java @@ -13,10 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.reactive; +package org.springframework.data.neo4j.integration.conversion_reactive; import static org.assertj.core.api.Assertions.assertThat; +import org.springframework.data.neo4j.core.convert.Neo4jConversions; +import org.springframework.data.neo4j.integration.shared.conversion.ThingWithCustomTypes; import reactor.test.StepVerifier; import java.util.ArrayList; @@ -30,10 +32,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; -import org.springframework.data.neo4j.core.convert.Neo4jConversions; -import org.springframework.data.neo4j.integration.shared.CompositePropertiesITBase; -import org.springframework.data.neo4j.integration.shared.ThingWithCompositeProperties; -import org.springframework.data.neo4j.integration.shared.ThingWithCustomTypes; +import org.springframework.data.neo4j.integration.shared.conversion.CompositePropertiesITBase; +import org.springframework.data.neo4j.integration.shared.conversion.ThingWithCompositeProperties; import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jExtension; @@ -118,5 +118,6 @@ class ReactiveCompositePropertiesIT extends CompositePropertiesITBase { public Neo4jConversions neo4jConversions() { return new Neo4jConversions(Collections.singleton(new ThingWithCustomTypes.CustomTypeConverter())); } + } } diff --git a/src/test/java/org/springframework/data/neo4j/integration/conversion_reactive/ReactiveCustomTypesIT.java b/src/test/java/org/springframework/data/neo4j/integration/conversion_reactive/ReactiveCustomTypesIT.java new file mode 100644 index 000000000..d586d9c95 --- /dev/null +++ b/src/test/java/org/springframework/data/neo4j/integration/conversion_reactive/ReactiveCustomTypesIT.java @@ -0,0 +1,206 @@ +/* + * Copyright 2011-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.neo4j.integration.conversion_reactive; + +import static org.assertj.core.api.Assertions.assertThat; + +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.atomic.AtomicLong; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.neo4j.driver.Driver; +import org.neo4j.driver.Result; +import org.neo4j.driver.Session; +import org.neo4j.driver.SessionConfig; +import org.neo4j.driver.TransactionWork; +import org.neo4j.driver.Values; +import org.neo4j.driver.summary.ResultSummary; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.convert.converter.GenericConverter; +import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; +import org.springframework.data.neo4j.core.ReactiveNeo4jOperations; +import org.springframework.data.neo4j.core.convert.Neo4jConversions; +import org.springframework.data.neo4j.integration.shared.conversion.PersonWithCustomId; +import org.springframework.data.neo4j.integration.shared.conversion.ThingWithCustomTypes; +import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; +import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; +import org.springframework.data.neo4j.repository.query.Query; +import org.springframework.data.neo4j.test.Neo4jExtension; +import org.springframework.data.neo4j.test.Neo4jIntegrationTest; +import org.springframework.data.repository.query.Param; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * @author Gerrit Meier + */ +@Neo4jIntegrationTest +public class ReactiveCustomTypesIT { + + protected static Neo4jExtension.Neo4jConnectionSupport neo4jConnectionSupport; + + private final AtomicLong customIdValueGenerator = new AtomicLong(); + + private final Driver driver; + + private final ReactiveNeo4jOperations neo4jOperations; + + @Autowired + public ReactiveCustomTypesIT(Driver driver, ReactiveNeo4jOperations neo4jOperations) { + this.driver = driver; + this.neo4jOperations = neo4jOperations; + } + + @BeforeEach + void setup() { + try (Session session = driver.session()) { + session.writeTransaction(transaction -> { + transaction.run("MATCH (n) detach delete n"); + transaction.run("CREATE (:CustomTypes{customType:'XYZ'})"); + return null; + }); + } + } + + SessionConfig getSessionConfig() { + return SessionConfig.defaultConfig(); + } + + @Test + void findByConvertedCustomType(@Autowired EntityWithCustomTypePropertyRepository repository) { + StepVerifier.create(repository.findByCustomType(ThingWithCustomTypes.CustomType.of("XYZ"))).expectNextCount(1) + .verifyComplete(); + } + + @Test + void findByConvertedCustomTypeWithCustomQuery(@Autowired EntityWithCustomTypePropertyRepository repository) { + StepVerifier.create(repository.findByCustomTypeCustomQuery(ThingWithCustomTypes.CustomType.of("XYZ"))) + .expectNextCount(1).verifyComplete(); + } + + @Test + void findByConvertedCustomTypeWithSpELPropertyAccessQuery( + @Autowired EntityWithCustomTypePropertyRepository repository) { + + StepVerifier + .create(repository.findByCustomTypeCustomSpELPropertyAccessQuery(ThingWithCustomTypes.CustomType.of("XYZ"))) + .expectNextCount(1).verifyComplete(); + } + + @Test + void findByConvertedCustomTypeWithSpELObjectQuery(@Autowired EntityWithCustomTypePropertyRepository repository) { + StepVerifier.create(repository.findByCustomTypeSpELObjectQuery(ThingWithCustomTypes.CustomType.of("XYZ"))) + .expectNextCount(1).verifyComplete(); + } + + TransactionWork createPersonWithCustomId(PersonWithCustomId.PersonId assignedId) { + + return tx -> tx.run("CREATE (n:PersonWithCustomId) SET n.id = $id ", Values.parameters("id", assignedId.getId())) + .consume(); + } + + @Test + void deleteByCustomId() { + + PersonWithCustomId.PersonId id = new PersonWithCustomId.PersonId(customIdValueGenerator.incrementAndGet()); + try (Session session = driver.session(getSessionConfig())) { + session.writeTransaction(createPersonWithCustomId(id)); + } + + StepVerifier.create(neo4jOperations.count(PersonWithCustomId.class)).expectNext(1L).verifyComplete(); + + StepVerifier.create(neo4jOperations.deleteById(id, PersonWithCustomId.class)).verifyComplete(); + + try (Session session = driver.session(getSessionConfig())) { + Result result = session.run("MATCH (p:PersonWithCustomId) return count(p) as count"); + assertThat(result.single().get("count").asLong()).isEqualTo(0); + } + } + + @Test + void deleteAllByCustomId() { + + List ids = Stream.generate(customIdValueGenerator::incrementAndGet) + .map(PersonWithCustomId.PersonId::new).limit(2).collect(Collectors.toList()); + try (Session session = driver.session(getSessionConfig());) { + ids.forEach(id -> session.writeTransaction(createPersonWithCustomId(id))); + } + + StepVerifier.create(neo4jOperations.count(PersonWithCustomId.class)).expectNext(2L).verifyComplete(); + + StepVerifier.create(neo4jOperations.deleteAllById(ids, PersonWithCustomId.class)).verifyComplete(); + + try (Session session = driver.session(getSessionConfig())) { + Result result = session.run("MATCH (p:PersonWithCustomId) return count(p) as count"); + assertThat(result.single().get("count").asLong()).isEqualTo(0); + } + } + + interface EntityWithCustomTypePropertyRepository extends ReactiveNeo4jRepository { + + Mono findByCustomType(ThingWithCustomTypes.CustomType customType); + + @Query("MATCH (c:CustomTypes) WHERE c.customType = $customType return c") + Mono findByCustomTypeCustomQuery( + @Param("customType") ThingWithCustomTypes.CustomType customType); + + @Query("MATCH (c:CustomTypes) WHERE c.customType = :#{#customType.value} return c") + Mono findByCustomTypeCustomSpELPropertyAccessQuery( + @Param("customType") ThingWithCustomTypes.CustomType customType); + + @Query("MATCH (c:CustomTypes) WHERE c.customType = :#{#customType} return c") + Mono findByCustomTypeSpELObjectQuery( + @Param("customType") ThingWithCustomTypes.CustomType customType); + } + + @Configuration + @EnableReactiveNeo4jRepositories(considerNestedRepositories = true) + @EnableTransactionManagement + static class Config extends AbstractReactiveNeo4jConfig { + + @Bean + public Driver driver() { + return neo4jConnectionSupport.getDriver(); + } + + @Override + protected Collection getMappingBasePackages() { + return Collections.singletonList(ThingWithCustomTypes.class.getPackage().getName()); + } + + @Override + public Neo4jConversions neo4jConversions() { + Set additionalConverters = new HashSet<>(); + additionalConverters.add(new ThingWithCustomTypes.CustomTypeConverter()); + additionalConverters.add(new ThingWithCustomTypes.DifferentTypeConverter()); + additionalConverters.add(new PersonWithCustomId.CustomPersonIdConverter()); + + return new Neo4jConversions(additionalConverters); + } + + } +} diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveTypeConversionIT.java b/src/test/java/org/springframework/data/neo4j/integration/conversion_reactive/ReactiveTypeConversionIT.java similarity index 93% rename from src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveTypeConversionIT.java rename to src/test/java/org/springframework/data/neo4j/integration/conversion_reactive/ReactiveTypeConversionIT.java index 3bb8be5e1..2a86da564 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveTypeConversionIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/conversion_reactive/ReactiveTypeConversionIT.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.reactive; +package org.springframework.data.neo4j.integration.conversion_reactive; import static org.assertj.core.api.Assertions.assertThat; @@ -33,8 +33,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; import org.springframework.data.neo4j.core.convert.Neo4jConversions; -import org.springframework.data.neo4j.integration.shared.ThingWithCustomTypes; -import org.springframework.data.neo4j.integration.shared.ThingWithUUIDID; +import org.springframework.data.neo4j.integration.shared.conversion.ThingWithCustomTypes; +import org.springframework.data.neo4j.integration.shared.common.ThingWithUUIDID; import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jExtension; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/AuditingIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/AuditingIT.java index 79d39c087..451ae01dc 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/AuditingIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/AuditingIT.java @@ -17,6 +17,8 @@ package org.springframework.data.neo4j.integration.imperative; import static org.assertj.core.api.Assertions.assertThat; +import java.util.Collection; +import java.util.Collections; import java.util.Optional; import org.junit.jupiter.api.Test; @@ -28,9 +30,9 @@ import org.springframework.data.auditing.DateTimeProvider; import org.springframework.data.domain.AuditorAware; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; import org.springframework.data.neo4j.config.EnableNeo4jAuditing; -import org.springframework.data.neo4j.integration.shared.AuditingITBase; -import org.springframework.data.neo4j.integration.shared.ImmutableAuditableThing; -import org.springframework.data.neo4j.integration.shared.ImmutableAuditableThingWithGeneratedId; +import org.springframework.data.neo4j.integration.shared.common.AuditingITBase; +import org.springframework.data.neo4j.integration.shared.common.ImmutableAuditableThing; +import org.springframework.data.neo4j.integration.shared.common.ImmutableAuditableThingWithGeneratedId; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -136,6 +138,11 @@ class AuditingIT extends AuditingITBase { return () -> Optional.of("A user"); } + @Override + protected Collection getMappingBasePackages() { + return Collections.singleton(ImmutableAuditableThing.class.getPackage().getName()); + } + @Bean public DateTimeProvider fixedDateTimeProvider() { return () -> Optional.of(DEFAULT_CREATION_AND_MODIFICATION_DATE); diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/CallbacksIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/CallbacksIT.java index 43c0de954..ddd77629b 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/CallbacksIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/CallbacksIT.java @@ -27,8 +27,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; import org.springframework.data.neo4j.integration.imperative.repositories.ThingRepository; -import org.springframework.data.neo4j.integration.shared.CallbacksITBase; -import org.springframework.data.neo4j.integration.shared.ThingWithAssignedId; +import org.springframework.data.neo4j.integration.shared.common.CallbacksITBase; +import org.springframework.data.neo4j.integration.shared.common.ThingWithAssignedId; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.repository.event.BeforeBindCallback; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/CausalClusterLoadTestIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/CausalClusterLoadTestIT.java index 5a8e99efe..a031d1ec5 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/CausalClusterLoadTestIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/CausalClusterLoadTestIT.java @@ -41,7 +41,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; import org.springframework.data.neo4j.core.Neo4jClient; -import org.springframework.data.neo4j.integration.shared.ThingWithSequence; +import org.springframework.data.neo4j.integration.shared.common.ThingWithSequence; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.test.CausalClusterIntegrationTest; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/CustomBaseRepositoryIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/CustomBaseRepositoryIT.java index 43c0760a5..d1a86ba4c 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/CustomBaseRepositoryIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/CustomBaseRepositoryIT.java @@ -31,7 +31,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; import org.springframework.data.neo4j.core.Neo4jOperations; -import org.springframework.data.neo4j.integration.shared.PersonWithAllConstructor; +import org.springframework.data.neo4j.integration.shared.common.PersonWithAllConstructor; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.repository.support.Neo4jEntityInformation; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/DefaultNeo4jEntityConverterIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/DefaultNeo4jEntityConverterIT.java deleted file mode 100644 index 7f7b22a38..000000000 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/DefaultNeo4jEntityConverterIT.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright 2011-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.data.neo4j.integration.imperative; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; - -import org.junit.jupiter.api.Test; -import org.neo4j.driver.Driver; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.neo4j.config.AbstractNeo4jConfig; -import org.springframework.data.neo4j.core.schema.Id; -import org.springframework.data.neo4j.core.schema.Node; -import org.springframework.data.neo4j.core.schema.Property; -import org.springframework.data.neo4j.core.schema.Relationship; -import org.springframework.data.neo4j.repository.Neo4jRepository; -import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; -import org.springframework.data.neo4j.test.Neo4jExtension; -import org.springframework.data.neo4j.test.Neo4jIntegrationTest; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -/** - * @author Davide Fantuzzi - * @author Andrea Santurbano - */ -@Neo4jIntegrationTest -class DefaultNeo4jEntityConverterIT { - - protected static Neo4jExtension.Neo4jConnectionSupport neo4jConnectionSupport; - - @Test - void itShouldReturnsAllTheRelatedEntities(@Autowired Entity2Repository entity2Repository) { - Entity1 firstEntity1 = new Entity1("1-2-3"); - Entity1 secondEntity1 = new Entity1("4-5-6"); - Set entity1List = new HashSet<>(Arrays.asList(firstEntity1, secondEntity1)); - Entity2 entity2 = new Entity2("7-8-9", entity1List); - - entity2Repository.save(entity2); - Optional optionalEntity2 = entity2Repository.findById(entity2.id); - - assertThat(optionalEntity2).isPresent(); - assertThat(optionalEntity2).map(e -> e.entity1List).contains(entity1List); - } - - @Node - private static class Entity1 { - @Id @Property("my_internal_id") private final String id; - - Entity1(String id) { - this.id = id; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Entity1 entity1 = (Entity1) o; - return Objects.equals(id, entity1.id); - } - - @Override - public int hashCode() { - return Objects.hash(id); - } - - @Override - public String toString() { - return "Entity1{" + "id='" + id + '\'' + '}'; - } - } - - @Node - private static class Entity2 { - @Id private final String id; - - @Relationship(value = "REL", direction = Relationship.Direction.INCOMING) private final Set entity1List; - - Entity2(String id, Set entity1List) { - this.id = id; - this.entity1List = entity1List; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Entity2 entity2 = (Entity2) o; - return Objects.equals(id, entity2.id) && Objects.equals(entity1List, entity2.entity1List); - } - - @Override - public int hashCode() { - return Objects.hash(id, entity1List); - } - - @Override - public String toString() { - return "Entity2{" + "id='" + id + '\'' + ", entity1List=" + entity1List + '}'; - } - } - - @Repository - interface Entity2Repository extends Neo4jRepository {} - - @Configuration - @EnableNeo4jRepositories(considerNestedRepositories = true) - @EnableTransactionManagement - static class Config extends AbstractNeo4jConfig { - - @Bean - public Driver driver() { - return neo4jConnectionSupport.getDriver(); - } - - } -} diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/DynamicLabelsIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/DynamicLabelsIT.java index e85f15146..630710393 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/DynamicLabelsIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/DynamicLabelsIT.java @@ -44,16 +44,16 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; import org.springframework.data.neo4j.core.Neo4jTemplate; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.DynamicLabelsWithMultipleNodeLabels; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.DynamicLabelsWithNodeLabel; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.ExtendedBaseClass1; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.InheritedSimpleDynamicLabels; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.SimpleDynamicLabels; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.SimpleDynamicLabelsCtor; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.SimpleDynamicLabelsWithBusinessId; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.SimpleDynamicLabelsWithBusinessIdAndVersion; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.SimpleDynamicLabelsWithVersion; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.SuperNode; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.DynamicLabelsWithMultipleNodeLabels; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.DynamicLabelsWithNodeLabel; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.ExtendedBaseClass1; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.InheritedSimpleDynamicLabels; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.SimpleDynamicLabels; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.SimpleDynamicLabelsCtor; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.SimpleDynamicLabelsWithBusinessId; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.SimpleDynamicLabelsWithBusinessIdAndVersion; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.SimpleDynamicLabelsWithVersion; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.SuperNode; import org.springframework.data.neo4j.test.Neo4jExtension; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/DynamicRelationshipsIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/DynamicRelationshipsIT.java index c6fa84b5d..a15b80413 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/DynamicRelationshipsIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/DynamicRelationshipsIT.java @@ -31,18 +31,18 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; -import org.springframework.data.neo4j.integration.shared.Club; -import org.springframework.data.neo4j.integration.shared.ClubRelationship; -import org.springframework.data.neo4j.integration.shared.DynamicRelationshipsITBase; -import org.springframework.data.neo4j.integration.shared.Hobby; -import org.springframework.data.neo4j.integration.shared.HobbyRelationship; -import org.springframework.data.neo4j.integration.shared.Person; -import org.springframework.data.neo4j.integration.shared.PersonWithRelatives; -import org.springframework.data.neo4j.integration.shared.PersonWithRelatives.TypeOfClub; -import org.springframework.data.neo4j.integration.shared.PersonWithRelatives.TypeOfHobby; -import org.springframework.data.neo4j.integration.shared.PersonWithRelatives.TypeOfPet; -import org.springframework.data.neo4j.integration.shared.PersonWithRelatives.TypeOfRelative; -import org.springframework.data.neo4j.integration.shared.Pet; +import org.springframework.data.neo4j.integration.shared.common.Club; +import org.springframework.data.neo4j.integration.shared.common.ClubRelationship; +import org.springframework.data.neo4j.integration.shared.common.DynamicRelationshipsITBase; +import org.springframework.data.neo4j.integration.shared.common.Hobby; +import org.springframework.data.neo4j.integration.shared.common.HobbyRelationship; +import org.springframework.data.neo4j.integration.shared.common.Person; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelatives; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelatives.TypeOfClub; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelatives.TypeOfHobby; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelatives.TypeOfPet; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelatives.TypeOfRelative; +import org.springframework.data.neo4j.integration.shared.common.Pet; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.repository.query.Query; import org.springframework.data.repository.CrudRepository; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/ExceptionTranslationIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/ExceptionTranslationIT.java index 79b9bc8c3..c6701d22f 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/ExceptionTranslationIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/ExceptionTranslationIT.java @@ -36,9 +36,7 @@ import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; import org.springframework.data.neo4j.core.Neo4jClient; -import org.springframework.data.neo4j.core.schema.GeneratedValue; -import org.springframework.data.neo4j.core.schema.Id; -import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.integration.shared.common.SimplePerson; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.repository.support.Neo4jPersistenceExceptionTranslator; @@ -110,22 +108,6 @@ class ExceptionTranslationIT { "Node\\(\\d+\\) already exists with label `SimplePerson` and property `name` = '[\\w\\s]+'; Error code 'Neo.ClientError.Schema.ConstraintValidationFailed'"); } - @Node - static class SimplePerson { - - @Id @GeneratedValue private Long id; - - private String name; - - SimplePerson(String name) { - this.name = name; - } - - public String getName() { - return name; - } - } - interface SimplePersonRepository extends Neo4jRepository {} @Repository diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/IdGeneratorsIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/IdGeneratorsIT.java index 215c206a1..efc516385 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/IdGeneratorsIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/IdGeneratorsIT.java @@ -30,9 +30,9 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; import org.springframework.data.neo4j.core.schema.IdGenerator; -import org.springframework.data.neo4j.integration.shared.IdGeneratorsITBase; -import org.springframework.data.neo4j.integration.shared.ThingWithGeneratedId; -import org.springframework.data.neo4j.integration.shared.ThingWithIdGeneratedByBean; +import org.springframework.data.neo4j.integration.shared.common.IdGeneratorsITBase; +import org.springframework.data.neo4j.integration.shared.common.ThingWithGeneratedId; +import org.springframework.data.neo4j.integration.shared.common.ThingWithIdGeneratedByBean; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.repository.CrudRepository; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/Neo4jOperationsIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/Neo4jOperationsIT.java index 153d88e1b..21af0219f 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/Neo4jOperationsIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/Neo4jOperationsIT.java @@ -24,10 +24,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.concurrent.atomic.AtomicLong; import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.stream.Stream; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -41,19 +38,15 @@ import org.neo4j.driver.Result; import org.neo4j.driver.Session; import org.neo4j.driver.SessionConfig; import org.neo4j.driver.Transaction; -import org.neo4j.driver.TransactionWork; import org.neo4j.driver.Value; import org.neo4j.driver.Values; -import org.neo4j.driver.summary.ResultSummary; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; import org.springframework.data.neo4j.core.Neo4jOperations; -import org.springframework.data.neo4j.core.convert.Neo4jConversions; -import org.springframework.data.neo4j.integration.shared.PersonWithAllConstructor; -import org.springframework.data.neo4j.integration.shared.PersonWithCustomId; -import org.springframework.data.neo4j.integration.shared.ThingWithGeneratedId; +import org.springframework.data.neo4j.integration.shared.common.PersonWithAllConstructor; +import org.springframework.data.neo4j.integration.shared.common.ThingWithGeneratedId; import org.springframework.data.neo4j.test.Neo4jExtension.Neo4jConnectionSupport; import org.springframework.data.neo4j.test.Neo4jIntegrationTest; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -73,7 +66,6 @@ class Neo4jOperationsIT { private final Driver driver; private final Neo4jOperations neo4jOperations; - private final AtomicLong customIdValueGenerator = new AtomicLong(); private Long person1Id; private Long person2Id; @@ -288,50 +280,6 @@ class Neo4jOperationsIT { } } - TransactionWork createPersonWithCustomId(PersonWithCustomId.PersonId assignedId) { - - return tx -> tx.run("CREATE (n:PersonWithCustomId) SET n.id = $id ", - Values.parameters("id", assignedId.getId())).consume(); - } - - @Test - void deleteByCustomId() { - - PersonWithCustomId.PersonId id = new PersonWithCustomId.PersonId(customIdValueGenerator.incrementAndGet()); - try (Session session = driver.session(getSessionConfig())) { - session.writeTransaction(createPersonWithCustomId(id)); - } - - assertThat(neo4jOperations.count(PersonWithCustomId.class)).isEqualTo(1L); - neo4jOperations.deleteById(id, PersonWithCustomId.class); - - try (Session session = driver.session(getSessionConfig())) { - Result result = session.run("MATCH (p:PersonWithCustomId) return count(p) as count"); - assertThat(result.single().get("count").asLong()).isEqualTo(0); - } - } - - @Test - void deleteAllByCustomId() { - - List ids = Stream.generate(customIdValueGenerator::incrementAndGet) - .map(PersonWithCustomId.PersonId::new) - .limit(2) - .collect(Collectors.toList()); - try ( - Session session = driver.session(getSessionConfig()); - ) { - ids.forEach(id -> session.writeTransaction(createPersonWithCustomId(id))); - } - - assertThat(neo4jOperations.count(PersonWithCustomId.class)).isEqualTo(2L); - neo4jOperations.deleteAllById(ids, PersonWithCustomId.class); - - try (Session session = driver.session(getSessionConfig())) { - Result result = session.run("MATCH (p:PersonWithCustomId) return count(p) as count"); - assertThat(result.single().get("count").asLong()).isEqualTo(0); - } - } @Configuration @EnableTransactionManagement @@ -343,11 +291,11 @@ class Neo4jOperationsIT { return neo4jConnectionSupport.getDriver(); } - @Bean - @Override - public Neo4jConversions neo4jConversions() { - return new Neo4jConversions(Collections.singletonList(new PersonWithCustomId.CustomPersonIdConverter())); - } +// @Bean +// @Override +// public Neo4jConversions neo4jConversions() { +// return new Neo4jConversions(Collections.singletonList(new PersonWithCustomId.CustomPersonIdConverter())); +// } @Override // needed here because there is no implicit registration of entities upfront some methods under test protected Collection getMappingBasePackages() { diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/OptimisticLockingIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/OptimisticLockingIT.java index 6d1ed4317..4598cd80a 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/OptimisticLockingIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/OptimisticLockingIT.java @@ -33,8 +33,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.dao.OptimisticLockingFailureException; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; -import org.springframework.data.neo4j.integration.shared.VersionedThing; -import org.springframework.data.neo4j.integration.shared.VersionedThingWithAssignedId; +import org.springframework.data.neo4j.integration.shared.common.VersionedThing; +import org.springframework.data.neo4j.integration.shared.common.VersionedThingWithAssignedId; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jExtension; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/ProjectionIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/ProjectionIT.java index 317a4dcc0..cece428bc 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/ProjectionIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/ProjectionIT.java @@ -28,10 +28,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; -import org.springframework.data.neo4j.integration.shared.NamesOnly; -import org.springframework.data.neo4j.integration.shared.NamesOnlyDto; -import org.springframework.data.neo4j.integration.shared.Person; -import org.springframework.data.neo4j.integration.shared.PersonSummary; +import org.springframework.data.neo4j.integration.shared.common.NamesOnly; +import org.springframework.data.neo4j.integration.shared.common.NamesOnlyDto; +import org.springframework.data.neo4j.integration.shared.common.Person; +import org.springframework.data.neo4j.integration.shared.common.PersonSummary; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jExtension; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/RelationshipsAsConstructorParametersIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/RelationshipsAsConstructorParametersIT.java index 2b35892d4..34e7484bc 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/RelationshipsAsConstructorParametersIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/RelationshipsAsConstructorParametersIT.java @@ -29,7 +29,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; import org.springframework.data.neo4j.core.Neo4jTemplate; -import org.springframework.data.neo4j.integration.shared.RelationshipsAsConstructorParametersEntities; +import org.springframework.data.neo4j.integration.shared.common.RelationshipsAsConstructorParametersEntities; import org.springframework.data.neo4j.test.Neo4jExtension; import org.springframework.data.neo4j.test.Neo4jIntegrationTest; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/RelationshipsIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/RelationshipsIT.java index a78ac908d..201d29430 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/RelationshipsIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/RelationshipsIT.java @@ -31,9 +31,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; -import org.springframework.data.neo4j.integration.shared.Multiple1O1Relationships; -import org.springframework.data.neo4j.integration.shared.MultipleRelationshipsThing; -import org.springframework.data.neo4j.integration.shared.RelationshipsITBase; +import org.springframework.data.neo4j.integration.shared.common.Multiple1O1Relationships; +import org.springframework.data.neo4j.integration.shared.common.MultipleRelationshipsThing; +import org.springframework.data.neo4j.integration.shared.common.RelationshipsITBase; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.repository.CrudRepository; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/RepositoryIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/RepositoryIT.java index 5da2c1ac1..6480c6a8b 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/RepositoryIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/RepositoryIT.java @@ -29,11 +29,9 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.StreamSupport; @@ -58,7 +56,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.ConverterNotFoundException; -import org.springframework.core.convert.converter.GenericConverter; import org.springframework.data.domain.Example; import org.springframework.data.domain.ExampleMatcher; import org.springframework.data.domain.ExampleMatcher.StringMatcher; @@ -79,42 +76,42 @@ import org.springframework.data.neo4j.core.DatabaseSelection; import org.springframework.data.neo4j.core.DatabaseSelectionProvider; import org.springframework.data.neo4j.core.Neo4jTemplate; import org.springframework.data.neo4j.core.convert.Neo4jConversions; +import org.springframework.data.neo4j.core.mapping.Neo4jMappingContext; import org.springframework.data.neo4j.integration.imperative.repositories.PersonRepository; import org.springframework.data.neo4j.integration.imperative.repositories.ThingRepository; -import org.springframework.data.neo4j.integration.shared.AltHobby; -import org.springframework.data.neo4j.integration.shared.AltLikedByPersonRelationship; -import org.springframework.data.neo4j.integration.shared.AltPerson; -import org.springframework.data.neo4j.integration.shared.AnotherThingWithAssignedId; -import org.springframework.data.neo4j.integration.shared.BidirectionalEnd; -import org.springframework.data.neo4j.integration.shared.BidirectionalStart; -import org.springframework.data.neo4j.integration.shared.Club; -import org.springframework.data.neo4j.integration.shared.ClubRelationship; -import org.springframework.data.neo4j.integration.shared.DeepRelationships; -import org.springframework.data.neo4j.integration.shared.DtoPersonProjection; -import org.springframework.data.neo4j.integration.shared.DtoPersonProjectionContainingAdditionalFields; -import org.springframework.data.neo4j.integration.shared.EntityWithConvertedId; -import org.springframework.data.neo4j.integration.shared.ExtendedParentNode; -import org.springframework.data.neo4j.integration.shared.Friend; -import org.springframework.data.neo4j.integration.shared.FriendshipRelationship; -import org.springframework.data.neo4j.integration.shared.Hobby; -import org.springframework.data.neo4j.integration.shared.ImmutablePerson; -import org.springframework.data.neo4j.integration.shared.Inheritance; -import org.springframework.data.neo4j.integration.shared.KotlinPerson; -import org.springframework.data.neo4j.integration.shared.LikesHobbyRelationship; -import org.springframework.data.neo4j.integration.shared.MultipleLabels; -import org.springframework.data.neo4j.integration.shared.ParentNode; -import org.springframework.data.neo4j.integration.shared.PersonWithAllConstructor; -import org.springframework.data.neo4j.integration.shared.PersonWithNoConstructor; -import org.springframework.data.neo4j.integration.shared.PersonWithRelationship; -import org.springframework.data.neo4j.integration.shared.PersonWithRelationshipWithProperties; -import org.springframework.data.neo4j.integration.shared.PersonWithRelationshipWithProperties2; -import org.springframework.data.neo4j.integration.shared.PersonWithWither; -import org.springframework.data.neo4j.integration.shared.Pet; -import org.springframework.data.neo4j.integration.shared.SimilarThing; -import org.springframework.data.neo4j.integration.shared.ThingWithAssignedId; -import org.springframework.data.neo4j.integration.shared.ThingWithCustomTypes; -import org.springframework.data.neo4j.integration.shared.ThingWithGeneratedId; -import org.springframework.data.neo4j.integration.shared.WorksInClubRelationship; +import org.springframework.data.neo4j.integration.shared.common.KotlinPerson; +import org.springframework.data.neo4j.integration.shared.common.AltHobby; +import org.springframework.data.neo4j.integration.shared.common.AltLikedByPersonRelationship; +import org.springframework.data.neo4j.integration.shared.common.AltPerson; +import org.springframework.data.neo4j.integration.shared.common.AnotherThingWithAssignedId; +import org.springframework.data.neo4j.integration.shared.common.BidirectionalEnd; +import org.springframework.data.neo4j.integration.shared.common.BidirectionalStart; +import org.springframework.data.neo4j.integration.shared.common.Club; +import org.springframework.data.neo4j.integration.shared.common.ClubRelationship; +import org.springframework.data.neo4j.integration.shared.common.DeepRelationships; +import org.springframework.data.neo4j.integration.shared.common.DtoPersonProjection; +import org.springframework.data.neo4j.integration.shared.common.DtoPersonProjectionContainingAdditionalFields; +import org.springframework.data.neo4j.integration.shared.common.EntityWithConvertedId; +import org.springframework.data.neo4j.integration.shared.common.ExtendedParentNode; +import org.springframework.data.neo4j.integration.shared.common.Friend; +import org.springframework.data.neo4j.integration.shared.common.FriendshipRelationship; +import org.springframework.data.neo4j.integration.shared.common.Hobby; +import org.springframework.data.neo4j.integration.shared.common.ImmutablePerson; +import org.springframework.data.neo4j.integration.shared.common.Inheritance; +import org.springframework.data.neo4j.integration.shared.common.LikesHobbyRelationship; +import org.springframework.data.neo4j.integration.shared.common.MultipleLabels; +import org.springframework.data.neo4j.integration.shared.common.ParentNode; +import org.springframework.data.neo4j.integration.shared.common.PersonWithAllConstructor; +import org.springframework.data.neo4j.integration.shared.common.PersonWithNoConstructor; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelationship; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelationshipWithProperties; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelationshipWithProperties2; +import org.springframework.data.neo4j.integration.shared.common.PersonWithWither; +import org.springframework.data.neo4j.integration.shared.common.Pet; +import org.springframework.data.neo4j.integration.shared.common.SimilarThing; +import org.springframework.data.neo4j.integration.shared.common.ThingWithAssignedId; +import org.springframework.data.neo4j.integration.shared.common.ThingWithGeneratedId; +import org.springframework.data.neo4j.integration.shared.common.WorksInClubRelationship; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.repository.query.BoundingBox; @@ -3121,47 +3118,6 @@ class RepositoryIT { } } - @Nested - class Converter extends IntegrationTestBase { - - @Override - void setupData(Transaction transaction) { - transaction.run("CREATE (:CustomTypes{customType:'XYZ'})"); - } - - @Test - void findByConvertedCustomType(@Autowired EntityWithCustomTypePropertyRepository repository) { - - assertThat(repository.findByCustomType(ThingWithCustomTypes.CustomType.of("XYZ"))).isNotNull(); - } - - @Test - void findByConvertedCustomTypeWithCustomQuery(@Autowired EntityWithCustomTypePropertyRepository repository) { - - assertThat(repository.findByCustomTypeCustomQuery(ThingWithCustomTypes.CustomType.of("XYZ"))).isNotNull(); - } - - @Test - void findByConvertedCustomTypeWithSpELPropertyAccessQuery( - @Autowired EntityWithCustomTypePropertyRepository repository) { - - assertThat(repository.findByCustomTypeCustomSpELPropertyAccessQuery(ThingWithCustomTypes.CustomType.of("XYZ"))) - .isNotNull(); - } - - @Test - void findByConvertedCustomTypeWithSpELObjectQuery(@Autowired EntityWithCustomTypePropertyRepository repository) { - - assertThat(repository.findByCustomTypeSpELObjectQuery(ThingWithCustomTypes.CustomType.of("XYZ"))).isNotNull(); - } - - @Test - void findByConvertedDifferentTypeWithSpELObjectQuery(@Autowired EntityWithCustomTypePropertyRepository repository) { - - assertThat(repository.findByDifferentTypeCustomQuery(ThingWithCustomTypes.DifferentType.of("XYZ"))).isNotNull(); - } - } - /** * The tests in this class ensure that in case of an inheritance scenario no DTO is projected but the extending class * is used. If it wasn't the case, we wouldn't find the relationship nor the other attribute. @@ -3283,26 +3239,6 @@ class RepositoryIT { interface EntityWithConvertedIdRepository extends Neo4jRepository {} - interface EntityWithCustomTypePropertyRepository extends Neo4jRepository { - - ThingWithCustomTypes findByCustomType(ThingWithCustomTypes.CustomType customType); - - @Query("MATCH (c:CustomTypes) WHERE c.customType = $customType return c") - ThingWithCustomTypes findByCustomTypeCustomQuery(@Param("customType") ThingWithCustomTypes.CustomType customType); - - @Query("MATCH (c:CustomTypes) WHERE c.customType = $differentType return c") - ThingWithCustomTypes findByDifferentTypeCustomQuery( - @Param("differentType") ThingWithCustomTypes.DifferentType differentType); - - @Query("MATCH (c:CustomTypes) WHERE c.customType = :#{#customType.value} return c") - ThingWithCustomTypes findByCustomTypeCustomSpELPropertyAccessQuery( - @Param("customType") ThingWithCustomTypes.CustomType customType); - - @Query("MATCH (c:CustomTypes) WHERE c.customType = :#{#customType} return c") - ThingWithCustomTypes findByCustomTypeSpELObjectQuery( - @Param("customType") ThingWithCustomTypes.CustomType customType); - } - interface HobbyWithRelationshipWithPropertiesRepository extends Neo4jRepository { @Query("MATCH (p:AltPerson)-[l:LIKES]->(h:AltHobby) WHERE id(p) = $personId RETURN h, collect(l), collect(p)") @@ -3378,17 +3314,18 @@ class RepositoryIT { } @Override - public Neo4jConversions neo4jConversions() { - Set additionalConverters = new HashSet<>(); - additionalConverters.add(new ThingWithCustomTypes.CustomTypeConverter()); - additionalConverters.add(new ThingWithCustomTypes.DifferentTypeConverter()); - - return new Neo4jConversions(additionalConverters); + protected Collection getMappingBasePackages() { + return Arrays.asList(PersonWithAllConstructor.class.getPackage().getName()); } - @Override - protected Collection getMappingBasePackages() { - return Collections.singletonList(PersonWithAllConstructor.class.getPackage().getName()); + @Bean + public Neo4jMappingContext neo4jMappingContext(Neo4jConversions neo4JConversions) throws ClassNotFoundException { + + Neo4jMappingContext mappingContext = new Neo4jMappingContext(neo4JConversions); + mappingContext.setInitialEntitySet(getInitialEntitySet()); + mappingContext.setStrict(true); + + return mappingContext; } @Bean diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/StringlyTypedDynamicRelationshipsIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/StringlyTypedDynamicRelationshipsIT.java index 22346ac4b..5b5eec34e 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/StringlyTypedDynamicRelationshipsIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/StringlyTypedDynamicRelationshipsIT.java @@ -31,14 +31,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; -import org.springframework.data.neo4j.integration.shared.Club; -import org.springframework.data.neo4j.integration.shared.ClubRelationship; -import org.springframework.data.neo4j.integration.shared.DynamicRelationshipsITBase; -import org.springframework.data.neo4j.integration.shared.Hobby; -import org.springframework.data.neo4j.integration.shared.HobbyRelationship; -import org.springframework.data.neo4j.integration.shared.Person; -import org.springframework.data.neo4j.integration.shared.PersonWithStringlyTypedRelatives; -import org.springframework.data.neo4j.integration.shared.Pet; +import org.springframework.data.neo4j.integration.shared.common.Club; +import org.springframework.data.neo4j.integration.shared.common.ClubRelationship; +import org.springframework.data.neo4j.integration.shared.common.DynamicRelationshipsITBase; +import org.springframework.data.neo4j.integration.shared.common.Hobby; +import org.springframework.data.neo4j.integration.shared.common.HobbyRelationship; +import org.springframework.data.neo4j.integration.shared.common.Person; +import org.springframework.data.neo4j.integration.shared.common.PersonWithStringlyTypedRelatives; +import org.springframework.data.neo4j.integration.shared.common.Pet; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.repository.query.Query; import org.springframework.data.repository.CrudRepository; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/TransactionManagerMixedDatabasesTest.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/TransactionManagerMixedDatabasesTest.java index 4305922d5..b624157c4 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/TransactionManagerMixedDatabasesTest.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/TransactionManagerMixedDatabasesTest.java @@ -46,7 +46,7 @@ import org.springframework.data.neo4j.core.DatabaseSelectionProvider; import org.springframework.data.neo4j.core.Neo4jClient; import org.springframework.data.neo4j.core.transaction.Neo4jTransactionManager; import org.springframework.data.neo4j.integration.imperative.repositories.PersonRepository; -import org.springframework.data.neo4j.integration.shared.PersonWithAllConstructor; +import org.springframework.data.neo4j.integration.shared.common.PersonWithAllConstructor; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/repositories/PersonRepository.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/repositories/PersonRepository.java index 7ff78b62d..5d6dc9835 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/repositories/PersonRepository.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/repositories/PersonRepository.java @@ -30,13 +30,13 @@ import org.springframework.data.geo.Box; import org.springframework.data.geo.Circle; import org.springframework.data.geo.Distance; import org.springframework.data.geo.Polygon; -import org.springframework.data.neo4j.integration.shared.DtoPersonProjection; -import org.springframework.data.neo4j.integration.shared.DtoPersonProjectionContainingAdditionalFields; -import org.springframework.data.neo4j.integration.shared.PersonProjection; -import org.springframework.data.neo4j.integration.shared.PersonWithAllConstructor; -import org.springframework.data.neo4j.integration.shared.PersonWithNoConstructor; -import org.springframework.data.neo4j.integration.shared.PersonWithWither; -import org.springframework.data.neo4j.integration.shared.ThingWithGeneratedId; +import org.springframework.data.neo4j.integration.shared.common.DtoPersonProjection; +import org.springframework.data.neo4j.integration.shared.common.DtoPersonProjectionContainingAdditionalFields; +import org.springframework.data.neo4j.integration.shared.common.PersonProjection; +import org.springframework.data.neo4j.integration.shared.common.PersonWithAllConstructor; +import org.springframework.data.neo4j.integration.shared.common.PersonWithNoConstructor; +import org.springframework.data.neo4j.integration.shared.common.PersonWithWither; +import org.springframework.data.neo4j.integration.shared.common.ThingWithGeneratedId; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.query.BoundingBox; import org.springframework.data.neo4j.repository.query.Query; diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/repositories/ThingRepository.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/repositories/ThingRepository.java index 620b8eeb2..1035dd43f 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/repositories/ThingRepository.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/repositories/ThingRepository.java @@ -17,7 +17,7 @@ package org.springframework.data.neo4j.integration.imperative.repositories; import java.util.List; -import org.springframework.data.neo4j.integration.shared.ThingWithAssignedId; +import org.springframework.data.neo4j.integration.shared.common.ThingWithAssignedId; import org.springframework.data.neo4j.repository.query.Query; import org.springframework.data.repository.CrudRepository; diff --git a/src/test/java/org/springframework/data/neo4j/integration/kotlin/KotlinIT.java b/src/test/java/org/springframework/data/neo4j/integration/kotlin/KotlinIT.java index 68ea1d053..4b50534ad 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/kotlin/KotlinIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/kotlin/KotlinIT.java @@ -27,10 +27,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractNeo4jConfig; -import org.springframework.data.neo4j.integration.shared.KotlinClub; -import org.springframework.data.neo4j.integration.shared.KotlinClubRelationship; -import org.springframework.data.neo4j.integration.shared.KotlinPerson; -import org.springframework.data.neo4j.integration.shared.KotlinRepository; +import org.springframework.data.neo4j.integration.shared.common.KotlinClub; +import org.springframework.data.neo4j.integration.shared.common.KotlinClubRelationship; +import org.springframework.data.neo4j.integration.shared.common.KotlinPerson; +import org.springframework.data.neo4j.integration.shared.common.KotlinRepository; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jExtension.Neo4jConnectionSupport; import org.springframework.data.neo4j.test.Neo4jIntegrationTest; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/CustomReactiveBaseRepositoryIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/CustomReactiveBaseRepositoryIT.java index 8ff1b91c1..d9ee2dad4 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/CustomReactiveBaseRepositoryIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/CustomReactiveBaseRepositoryIT.java @@ -31,7 +31,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; import org.springframework.data.neo4j.core.ReactiveNeo4jOperations; -import org.springframework.data.neo4j.integration.shared.PersonWithAllConstructor; +import org.springframework.data.neo4j.integration.shared.common.PersonWithAllConstructor; import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.repository.support.Neo4jEntityInformation; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveAuditingIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveAuditingIT.java index 445533e66..e4b698fcb 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveAuditingIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveAuditingIT.java @@ -34,9 +34,9 @@ import org.springframework.data.auditing.DateTimeProvider; import org.springframework.data.domain.ReactiveAuditorAware; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; import org.springframework.data.neo4j.config.EnableReactiveNeo4jAuditing; -import org.springframework.data.neo4j.integration.shared.AuditingITBase; -import org.springframework.data.neo4j.integration.shared.ImmutableAuditableThing; -import org.springframework.data.neo4j.integration.shared.ImmutableAuditableThingWithGeneratedId; +import org.springframework.data.neo4j.integration.shared.common.AuditingITBase; +import org.springframework.data.neo4j.integration.shared.common.ImmutableAuditableThing; +import org.springframework.data.neo4j.integration.shared.common.ImmutableAuditableThingWithGeneratedId; import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jExtension; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveCallbacksIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveCallbacksIT.java index 678d24285..c2593ff6b 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveCallbacksIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveCallbacksIT.java @@ -31,8 +31,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; import org.springframework.data.neo4j.integration.reactive.repositories.ReactiveThingRepository; -import org.springframework.data.neo4j.integration.shared.CallbacksITBase; -import org.springframework.data.neo4j.integration.shared.ThingWithAssignedId; +import org.springframework.data.neo4j.integration.shared.common.CallbacksITBase; +import org.springframework.data.neo4j.integration.shared.common.ThingWithAssignedId; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.repository.event.ReactiveBeforeBindCallback; import org.springframework.data.neo4j.test.Neo4jExtension; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveCausalClusterLoadTestIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveCausalClusterLoadTestIT.java index 83b15f3e0..ca3463838 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveCausalClusterLoadTestIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveCausalClusterLoadTestIT.java @@ -44,7 +44,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; import org.springframework.data.neo4j.core.ReactiveNeo4jClient; -import org.springframework.data.neo4j.integration.shared.ThingWithSequence; +import org.springframework.data.neo4j.integration.shared.common.ThingWithSequence; import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.test.CausalClusterIntegrationTest; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveDynamicLabelsIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveDynamicLabelsIT.java index be12a7239..002ec9267 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveDynamicLabelsIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveDynamicLabelsIT.java @@ -46,16 +46,16 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; import org.springframework.data.neo4j.core.ReactiveNeo4jTemplate; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.DynamicLabelsWithMultipleNodeLabels; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.DynamicLabelsWithNodeLabel; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.ExtendedBaseClass1; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.InheritedSimpleDynamicLabels; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.SimpleDynamicLabels; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.SimpleDynamicLabelsCtor; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.SimpleDynamicLabelsWithBusinessId; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.SimpleDynamicLabelsWithBusinessIdAndVersion; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.SimpleDynamicLabelsWithVersion; -import org.springframework.data.neo4j.integration.shared.EntitiesWithDynamicLabels.SuperNode; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.DynamicLabelsWithMultipleNodeLabels; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.DynamicLabelsWithNodeLabel; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.ExtendedBaseClass1; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.InheritedSimpleDynamicLabels; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.SimpleDynamicLabels; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.SimpleDynamicLabelsCtor; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.SimpleDynamicLabelsWithBusinessId; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.SimpleDynamicLabelsWithBusinessIdAndVersion; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.SimpleDynamicLabelsWithVersion; +import org.springframework.data.neo4j.integration.shared.common.EntitiesWithDynamicLabels.SuperNode; import org.springframework.data.neo4j.test.Neo4jExtension; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveDynamicRelationshipsIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveDynamicRelationshipsIT.java index dc8b99482..c9c31beab 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveDynamicRelationshipsIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveDynamicRelationshipsIT.java @@ -18,12 +18,12 @@ package org.springframework.data.neo4j.integration.reactive; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assumptions.assumeThat; -import org.springframework.data.neo4j.integration.shared.Club; -import org.springframework.data.neo4j.integration.shared.ClubRelationship; -import org.springframework.data.neo4j.integration.shared.Hobby; -import org.springframework.data.neo4j.integration.shared.HobbyRelationship; -import org.springframework.data.neo4j.integration.shared.PersonWithRelatives.TypeOfClub; -import org.springframework.data.neo4j.integration.shared.PersonWithRelatives.TypeOfHobby; +import org.springframework.data.neo4j.integration.shared.common.Club; +import org.springframework.data.neo4j.integration.shared.common.ClubRelationship; +import org.springframework.data.neo4j.integration.shared.common.Hobby; +import org.springframework.data.neo4j.integration.shared.common.HobbyRelationship; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelatives.TypeOfClub; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelatives.TypeOfHobby; import reactor.test.StepVerifier; import java.util.ArrayList; @@ -40,12 +40,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; -import org.springframework.data.neo4j.integration.shared.DynamicRelationshipsITBase; -import org.springframework.data.neo4j.integration.shared.Person; -import org.springframework.data.neo4j.integration.shared.PersonWithRelatives; -import org.springframework.data.neo4j.integration.shared.PersonWithRelatives.TypeOfPet; -import org.springframework.data.neo4j.integration.shared.PersonWithRelatives.TypeOfRelative; -import org.springframework.data.neo4j.integration.shared.Pet; +import org.springframework.data.neo4j.integration.shared.common.DynamicRelationshipsITBase; +import org.springframework.data.neo4j.integration.shared.common.Person; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelatives; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelatives.TypeOfPet; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelatives.TypeOfRelative; +import org.springframework.data.neo4j.integration.shared.common.Pet; import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jExtension; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveExceptionTranslationIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveExceptionTranslationIT.java index 9e3b13ea0..50990bd29 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveExceptionTranslationIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveExceptionTranslationIT.java @@ -36,9 +36,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; import org.springframework.data.neo4j.core.ReactiveNeo4jClient; -import org.springframework.data.neo4j.core.schema.GeneratedValue; -import org.springframework.data.neo4j.core.schema.Id; -import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.integration.shared.common.SimplePerson; import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.repository.support.Neo4jPersistenceExceptionTranslator; @@ -137,22 +135,6 @@ class ReactiveExceptionTranslationIT { } } - @Node - static class SimplePerson { - - @Id @GeneratedValue private Long id; - - private String name; - - SimplePerson(String name) { - this.name = name; - } - - public String getName() { - return name; - } - } - interface SimplePersonRepository extends ReactiveNeo4jRepository {} @Repository diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveIdGeneratorsIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveIdGeneratorsIT.java index 1cd24ad87..17557c3bb 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveIdGeneratorsIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveIdGeneratorsIT.java @@ -35,9 +35,9 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; import org.springframework.data.neo4j.core.schema.IdGenerator; -import org.springframework.data.neo4j.integration.shared.IdGeneratorsITBase; -import org.springframework.data.neo4j.integration.shared.ThingWithGeneratedId; -import org.springframework.data.neo4j.integration.shared.ThingWithIdGeneratedByBean; +import org.springframework.data.neo4j.integration.shared.common.IdGeneratorsITBase; +import org.springframework.data.neo4j.integration.shared.common.ThingWithGeneratedId; +import org.springframework.data.neo4j.integration.shared.common.ThingWithIdGeneratedByBean; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jExtension; import org.springframework.data.repository.reactive.ReactiveCrudRepository; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveNeo4jOperationsIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveNeo4jOperationsIT.java index 6be7dbe2b..1ba740f8c 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveNeo4jOperationsIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveNeo4jOperationsIT.java @@ -26,10 +26,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.stream.Stream; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; @@ -44,19 +41,15 @@ import org.neo4j.driver.Result; import org.neo4j.driver.Session; import org.neo4j.driver.SessionConfig; import org.neo4j.driver.Transaction; -import org.neo4j.driver.TransactionWork; import org.neo4j.driver.Value; import org.neo4j.driver.Values; -import org.neo4j.driver.summary.ResultSummary; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; import org.springframework.data.neo4j.core.ReactiveNeo4jOperations; -import org.springframework.data.neo4j.core.convert.Neo4jConversions; -import org.springframework.data.neo4j.integration.shared.PersonWithAllConstructor; -import org.springframework.data.neo4j.integration.shared.PersonWithCustomId; -import org.springframework.data.neo4j.integration.shared.ThingWithGeneratedId; +import org.springframework.data.neo4j.integration.shared.common.PersonWithAllConstructor; +import org.springframework.data.neo4j.integration.shared.common.ThingWithGeneratedId; import org.springframework.data.neo4j.test.Neo4jExtension; import org.springframework.data.neo4j.test.Neo4jExtension.Neo4jConnectionSupport; import org.springframework.data.neo4j.test.Neo4jIntegrationTest; @@ -77,7 +70,6 @@ class ReactiveNeo4jOperationsIT { private final Driver driver; private final ReactiveNeo4jOperations neo4jOperations; - private final AtomicLong customIdValueGenerator = new AtomicLong(); private Long person1Id; private Long person2Id; @@ -275,33 +267,6 @@ class ReactiveNeo4jOperationsIT { } } - TransactionWork createPersonWithCustomId(PersonWithCustomId.PersonId assignedId) { - - return tx -> tx.run("CREATE (n:PersonWithCustomId) SET n.id = $id ", - Values.parameters("id", assignedId.getId())).consume(); - } - - @Test - void deleteByCustomId() { - - PersonWithCustomId.PersonId id = new PersonWithCustomId.PersonId(customIdValueGenerator.incrementAndGet()); - try (Session session = driver.session(getSessionConfig())) { - session.writeTransaction(createPersonWithCustomId(id)); - } - - StepVerifier.create(neo4jOperations.count(PersonWithCustomId.class)) - .expectNext(1L) - .verifyComplete(); - - StepVerifier.create(neo4jOperations.deleteById(id, PersonWithCustomId.class)) - .verifyComplete(); - - try (Session session = driver.session(getSessionConfig())) { - Result result = session.run("MATCH (p:PersonWithCustomId) return count(p) as count"); - assertThat(result.single().get("count").asLong()).isEqualTo(0); - } - } - @Test void deleteAllById() { @@ -315,32 +280,6 @@ class ReactiveNeo4jOperationsIT { } } - @Test - void deleteAllByCustomId() { - - List ids = Stream.generate(customIdValueGenerator::incrementAndGet) - .map(PersonWithCustomId.PersonId::new) - .limit(2) - .collect(Collectors.toList()); - try ( - Session session = driver.session(getSessionConfig()); - ) { - ids.forEach(id -> session.writeTransaction(createPersonWithCustomId(id))); - } - - StepVerifier.create(neo4jOperations.count(PersonWithCustomId.class)) - .expectNext(2L) - .verifyComplete(); - - StepVerifier.create(neo4jOperations.deleteAllById(ids, PersonWithCustomId.class)) - .verifyComplete(); - - try (Session session = driver.session(getSessionConfig())) { - Result result = session.run("MATCH (p:PersonWithCustomId) return count(p) as count"); - assertThat(result.single().get("count").asLong()).isEqualTo(0); - } - } - @Configuration @EnableTransactionManagement static class Config extends AbstractReactiveNeo4jConfig { @@ -350,12 +289,6 @@ class ReactiveNeo4jOperationsIT { return neo4jConnectionSupport.getDriver(); } - @Bean - @Override - public Neo4jConversions neo4jConversions() { - return new Neo4jConversions(Collections.singletonList(new PersonWithCustomId.CustomPersonIdConverter())); - } - @Override // needed here because there is no implicit registration of entities upfront some methods under test protected Collection getMappingBasePackages() { return Collections.singletonList(PersonWithAllConstructor.class.getPackage().getName()); diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveOptimisticLockingIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveOptimisticLockingIT.java index ac6dfda31..6eff4e26b 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveOptimisticLockingIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveOptimisticLockingIT.java @@ -36,8 +36,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.dao.OptimisticLockingFailureException; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; -import org.springframework.data.neo4j.integration.shared.VersionedThing; -import org.springframework.data.neo4j.integration.shared.VersionedThingWithAssignedId; +import org.springframework.data.neo4j.integration.shared.common.VersionedThing; +import org.springframework.data.neo4j.integration.shared.common.VersionedThingWithAssignedId; import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jExtension; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveProjectionIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveProjectionIT.java index 31d63b6f1..a432334dd 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveProjectionIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveProjectionIT.java @@ -30,10 +30,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; -import org.springframework.data.neo4j.integration.shared.NamesOnly; -import org.springframework.data.neo4j.integration.shared.NamesOnlyDto; -import org.springframework.data.neo4j.integration.shared.Person; -import org.springframework.data.neo4j.integration.shared.PersonSummary; +import org.springframework.data.neo4j.integration.shared.common.NamesOnly; +import org.springframework.data.neo4j.integration.shared.common.NamesOnlyDto; +import org.springframework.data.neo4j.integration.shared.common.Person; +import org.springframework.data.neo4j.integration.shared.common.PersonSummary; import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jExtension; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveRelationshipsIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveRelationshipsIT.java index 5762d1885..42b9e29ed 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveRelationshipsIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveRelationshipsIT.java @@ -32,8 +32,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; -import org.springframework.data.neo4j.integration.shared.MultipleRelationshipsThing; -import org.springframework.data.neo4j.integration.shared.RelationshipsITBase; +import org.springframework.data.neo4j.integration.shared.common.MultipleRelationshipsThing; +import org.springframework.data.neo4j.integration.shared.common.RelationshipsITBase; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jExtension; import org.springframework.data.repository.reactive.ReactiveCrudRepository; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveRepositoryIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveRepositoryIT.java index 8b37072d2..dbe21b6cd 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveRepositoryIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveRepositoryIT.java @@ -19,9 +19,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.tuple; -import org.springframework.data.neo4j.integration.shared.AltLikedByPersonRelationship; -import org.springframework.data.neo4j.integration.shared.AltPerson; -import org.springframework.data.neo4j.integration.shared.WorksInClubRelationship; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -32,11 +29,9 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -61,7 +56,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.ConverterNotFoundException; -import org.springframework.core.convert.converter.GenericConverter; import org.springframework.data.domain.Example; import org.springframework.data.domain.ExampleMatcher; import org.springframework.data.domain.PageRequest; @@ -69,28 +63,29 @@ import org.springframework.data.domain.Sort; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; import org.springframework.data.neo4j.core.DatabaseSelection; import org.springframework.data.neo4j.core.ReactiveDatabaseSelectionProvider; -import org.springframework.data.neo4j.core.convert.Neo4jConversions; import org.springframework.data.neo4j.integration.reactive.repositories.ReactivePersonRepository; import org.springframework.data.neo4j.integration.reactive.repositories.ReactiveThingRepository; -import org.springframework.data.neo4j.integration.shared.AltHobby; -import org.springframework.data.neo4j.integration.shared.AnotherThingWithAssignedId; -import org.springframework.data.neo4j.integration.shared.BidirectionalEnd; -import org.springframework.data.neo4j.integration.shared.BidirectionalStart; -import org.springframework.data.neo4j.integration.shared.Club; -import org.springframework.data.neo4j.integration.shared.DeepRelationships; -import org.springframework.data.neo4j.integration.shared.EntityWithConvertedId; -import org.springframework.data.neo4j.integration.shared.Hobby; -import org.springframework.data.neo4j.integration.shared.ImmutablePerson; -import org.springframework.data.neo4j.integration.shared.LikesHobbyRelationship; -import org.springframework.data.neo4j.integration.shared.MultipleLabels; -import org.springframework.data.neo4j.integration.shared.PersonWithAllConstructor; -import org.springframework.data.neo4j.integration.shared.PersonWithRelationship; -import org.springframework.data.neo4j.integration.shared.PersonWithRelationshipWithProperties; -import org.springframework.data.neo4j.integration.shared.Pet; -import org.springframework.data.neo4j.integration.shared.SimilarThing; -import org.springframework.data.neo4j.integration.shared.ThingWithAssignedId; -import org.springframework.data.neo4j.integration.shared.ThingWithCustomTypes; -import org.springframework.data.neo4j.integration.shared.ThingWithGeneratedId; +import org.springframework.data.neo4j.integration.shared.common.AltHobby; +import org.springframework.data.neo4j.integration.shared.common.AltLikedByPersonRelationship; +import org.springframework.data.neo4j.integration.shared.common.AltPerson; +import org.springframework.data.neo4j.integration.shared.common.AnotherThingWithAssignedId; +import org.springframework.data.neo4j.integration.shared.common.BidirectionalEnd; +import org.springframework.data.neo4j.integration.shared.common.BidirectionalStart; +import org.springframework.data.neo4j.integration.shared.common.Club; +import org.springframework.data.neo4j.integration.shared.common.DeepRelationships; +import org.springframework.data.neo4j.integration.shared.common.EntityWithConvertedId; +import org.springframework.data.neo4j.integration.shared.common.Hobby; +import org.springframework.data.neo4j.integration.shared.common.ImmutablePerson; +import org.springframework.data.neo4j.integration.shared.common.LikesHobbyRelationship; +import org.springframework.data.neo4j.integration.shared.common.MultipleLabels; +import org.springframework.data.neo4j.integration.shared.common.PersonWithAllConstructor; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelationship; +import org.springframework.data.neo4j.integration.shared.common.PersonWithRelationshipWithProperties; +import org.springframework.data.neo4j.integration.shared.common.Pet; +import org.springframework.data.neo4j.integration.shared.common.SimilarThing; +import org.springframework.data.neo4j.integration.shared.common.ThingWithAssignedId; +import org.springframework.data.neo4j.integration.shared.common.ThingWithGeneratedId; +import org.springframework.data.neo4j.integration.shared.common.WorksInClubRelationship; import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.repository.query.Query; @@ -2202,52 +2197,6 @@ class ReactiveRepositoryIT { } - @Nested - class Converter extends ReactiveIntegrationTestBase { - - @Test - void findByConvertedCustomType(@Autowired EntityWithCustomTypePropertyRepository repository) { - try (Session session = createSession()) { - session.run("CREATE (:CustomTypes{customType:'XYZ'})"); - } - - StepVerifier.create(repository.findByCustomType(ThingWithCustomTypes.CustomType.of("XYZ"))).expectNextCount(1) - .verifyComplete(); - } - - @Test - void findByConvertedCustomTypeWithCustomQuery(@Autowired EntityWithCustomTypePropertyRepository repository) { - try (Session session = createSession()) { - session.run("CREATE (:CustomTypes{customType:'XYZ'})"); - } - - StepVerifier.create(repository.findByCustomTypeCustomQuery(ThingWithCustomTypes.CustomType.of("XYZ"))) - .expectNextCount(1).verifyComplete(); - } - - @Test - void findByConvertedCustomTypeWithSpELPropertyAccessQuery( - @Autowired EntityWithCustomTypePropertyRepository repository) { - try (Session session = createSession()) { - session.run("CREATE (:CustomTypes{customType:'XYZ'})"); - } - - StepVerifier - .create(repository.findByCustomTypeCustomSpELPropertyAccessQuery(ThingWithCustomTypes.CustomType.of("XYZ"))) - .expectNextCount(1).verifyComplete(); - } - - @Test - void findByConvertedCustomTypeWithSpELObjectQuery(@Autowired EntityWithCustomTypePropertyRepository repository) { - try (Session session = createSession()) { - session.run("CREATE (:CustomTypes{customType:'XYZ'})"); - } - - StepVerifier.create(repository.findByCustomTypeSpELObjectQuery(ThingWithCustomTypes.CustomType.of("XYZ"))) - .expectNextCount(1).verifyComplete(); - } - } - interface BidirectionalStartRepository extends ReactiveNeo4jRepository {} interface BidirectionalEndRepository extends ReactiveNeo4jRepository {} @@ -2309,23 +2258,6 @@ class ReactiveRepositoryIT { interface EntityWithConvertedIdRepository extends ReactiveNeo4jRepository {} - interface EntityWithCustomTypePropertyRepository extends ReactiveNeo4jRepository { - - Mono findByCustomType(ThingWithCustomTypes.CustomType customType); - - @Query("MATCH (c:CustomTypes) WHERE c.customType = $customType return c") - Mono findByCustomTypeCustomQuery( - @Param("customType") ThingWithCustomTypes.CustomType customType); - - @Query("MATCH (c:CustomTypes) WHERE c.customType = :#{#customType.value} return c") - Mono findByCustomTypeCustomSpELPropertyAccessQuery( - @Param("customType") ThingWithCustomTypes.CustomType customType); - - @Query("MATCH (c:CustomTypes) WHERE c.customType = :#{#customType} return c") - Mono findByCustomTypeSpELObjectQuery( - @Param("customType") ThingWithCustomTypes.CustomType customType); - } - @SpringJUnitConfig(ReactiveRepositoryIT.Config.class) static abstract class ReactiveIntegrationTestBase { @@ -2373,14 +2305,6 @@ class ReactiveRepositoryIT { return neo4jConnectionSupport.getDriver(); } - @Override - public Neo4jConversions neo4jConversions() { - Set additionalConverters = new HashSet<>(); - additionalConverters.add(new ThingWithCustomTypes.CustomTypeConverter()); - - return new Neo4jConversions(additionalConverters); - } - @Override protected Collection getMappingBasePackages() { return Collections.singletonList(PersonWithAllConstructor.class.getPackage().getName()); diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveStringlyTypeDynamicRelationshipsIT.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveStringlyTypeDynamicRelationshipsIT.java index 7be956161..dded8e548 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveStringlyTypeDynamicRelationshipsIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveStringlyTypeDynamicRelationshipsIT.java @@ -18,10 +18,10 @@ package org.springframework.data.neo4j.integration.reactive; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assumptions.assumeThat; -import org.springframework.data.neo4j.integration.shared.Club; -import org.springframework.data.neo4j.integration.shared.ClubRelationship; -import org.springframework.data.neo4j.integration.shared.Hobby; -import org.springframework.data.neo4j.integration.shared.HobbyRelationship; +import org.springframework.data.neo4j.integration.shared.common.Club; +import org.springframework.data.neo4j.integration.shared.common.ClubRelationship; +import org.springframework.data.neo4j.integration.shared.common.Hobby; +import org.springframework.data.neo4j.integration.shared.common.HobbyRelationship; import reactor.test.StepVerifier; import java.util.ArrayList; @@ -38,10 +38,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.AbstractReactiveNeo4jConfig; -import org.springframework.data.neo4j.integration.shared.DynamicRelationshipsITBase; -import org.springframework.data.neo4j.integration.shared.Person; -import org.springframework.data.neo4j.integration.shared.PersonWithStringlyTypedRelatives; -import org.springframework.data.neo4j.integration.shared.Pet; +import org.springframework.data.neo4j.integration.shared.common.DynamicRelationshipsITBase; +import org.springframework.data.neo4j.integration.shared.common.Person; +import org.springframework.data.neo4j.integration.shared.common.PersonWithStringlyTypedRelatives; +import org.springframework.data.neo4j.integration.shared.common.Pet; import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.data.neo4j.test.Neo4jExtension; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveTransactionManagerMixedDatabasesTest.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveTransactionManagerMixedDatabasesTest.java index 5463c544c..7f2e5c38f 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveTransactionManagerMixedDatabasesTest.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveTransactionManagerMixedDatabasesTest.java @@ -47,7 +47,7 @@ import org.springframework.data.neo4j.core.ReactiveDatabaseSelectionProvider; import org.springframework.data.neo4j.core.ReactiveNeo4jClient; import org.springframework.data.neo4j.core.transaction.ReactiveNeo4jTransactionManager; import org.springframework.data.neo4j.integration.reactive.repositories.ReactivePersonRepository; -import org.springframework.data.neo4j.integration.shared.PersonWithAllConstructor; +import org.springframework.data.neo4j.integration.shared.common.PersonWithAllConstructor; import org.springframework.data.neo4j.repository.config.EnableReactiveNeo4jRepositories; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/repositories/ReactivePersonRepository.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/repositories/ReactivePersonRepository.java index ce7e2a756..fb85d73a3 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/repositories/ReactivePersonRepository.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/repositories/ReactivePersonRepository.java @@ -19,10 +19,10 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import org.springframework.data.domain.Pageable; -import org.springframework.data.neo4j.integration.shared.DtoPersonProjection; -import org.springframework.data.neo4j.integration.shared.PersonProjection; -import org.springframework.data.neo4j.integration.shared.PersonWithAllConstructor; -import org.springframework.data.neo4j.integration.shared.ThingWithGeneratedId; +import org.springframework.data.neo4j.integration.shared.common.DtoPersonProjection; +import org.springframework.data.neo4j.integration.shared.common.PersonProjection; +import org.springframework.data.neo4j.integration.shared.common.PersonWithAllConstructor; +import org.springframework.data.neo4j.integration.shared.common.ThingWithGeneratedId; import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository; import org.springframework.data.neo4j.repository.query.Query; import org.springframework.data.neo4j.types.GeographicPoint2d; diff --git a/src/test/java/org/springframework/data/neo4j/integration/reactive/repositories/ReactiveThingRepository.java b/src/test/java/org/springframework/data/neo4j/integration/reactive/repositories/ReactiveThingRepository.java index a63ca80fe..d935f4e58 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/reactive/repositories/ReactiveThingRepository.java +++ b/src/test/java/org/springframework/data/neo4j/integration/reactive/repositories/ReactiveThingRepository.java @@ -17,7 +17,7 @@ package org.springframework.data.neo4j.integration.reactive.repositories; import reactor.core.publisher.Mono; -import org.springframework.data.neo4j.integration.shared.ThingWithAssignedId; +import org.springframework.data.neo4j.integration.shared.common.ThingWithAssignedId; import org.springframework.data.neo4j.repository.query.Query; import org.springframework.data.repository.reactive.ReactiveCrudRepository; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/AbstractNamedThing.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AbstractNamedThing.java similarity index 92% rename from src/test/java/org/springframework/data/neo4j/integration/shared/AbstractNamedThing.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/AbstractNamedThing.java index 9992e82b2..e755109d8 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/AbstractNamedThing.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AbstractNamedThing.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; /** * @author Michael J. Simons diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/AltHobby.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AltHobby.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/AltHobby.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/AltHobby.java index 9aa9c44fa..760045bb5 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/AltHobby.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AltHobby.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.ArrayList; import java.util.List; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/AltLikedByPersonRelationship.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AltLikedByPersonRelationship.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/AltLikedByPersonRelationship.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/AltLikedByPersonRelationship.java index fa9097452..574a2f33b 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/AltLikedByPersonRelationship.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AltLikedByPersonRelationship.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.RelationshipProperties; import org.springframework.data.neo4j.core.schema.TargetNode; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/AltPerson.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AltPerson.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/AltPerson.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/AltPerson.java index 169770bbf..71a5879ae 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/AltPerson.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AltPerson.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/AnotherThingWithAssignedId.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AnotherThingWithAssignedId.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/AnotherThingWithAssignedId.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/AnotherThingWithAssignedId.java index ee84b3d4c..ca2306513 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/AnotherThingWithAssignedId.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AnotherThingWithAssignedId.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.Objects; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/AuditableThing.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AuditableThing.java similarity index 92% rename from src/test/java/org/springframework/data/neo4j/integration/shared/AuditableThing.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/AuditableThing.java index 855efda69..7153eaf91 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/AuditableThing.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AuditableThing.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.time.LocalDateTime; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/AuditingITBase.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AuditingITBase.java similarity index 98% rename from src/test/java/org/springframework/data/neo4j/integration/shared/AuditingITBase.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/AuditingITBase.java index 04b5a8717..bc8980c0e 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/AuditingITBase.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/AuditingITBase.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import static org.assertj.core.api.Assertions.assertThat; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/BidirectionalEnd.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/BidirectionalEnd.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/BidirectionalEnd.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/BidirectionalEnd.java index 0192b19c2..159594126 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/BidirectionalEnd.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/BidirectionalEnd.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/BidirectionalStart.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/BidirectionalStart.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/BidirectionalStart.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/BidirectionalStart.java index a4f58055d..d30a6e51e 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/BidirectionalStart.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/BidirectionalStart.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.Set; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/CallbacksITBase.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/CallbacksITBase.java similarity index 97% rename from src/test/java/org/springframework/data/neo4j/integration/shared/CallbacksITBase.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/CallbacksITBase.java index b79dcdd87..4eb2b11a7 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/CallbacksITBase.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/CallbacksITBase.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import static org.assertj.core.api.Assertions.assertThat; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/Club.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Club.java similarity index 94% rename from src/test/java/org/springframework/data/neo4j/integration/shared/Club.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/Club.java index 0611c1fe3..9348302a9 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/Club.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Club.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ClubRelationship.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ClubRelationship.java similarity index 94% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ClubRelationship.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ClubRelationship.java index 26d4d1edf..e40f7d18d 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ClubRelationship.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ClubRelationship.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.RelationshipProperties; import org.springframework.data.neo4j.core.schema.TargetNode; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/DeepRelationships.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/DeepRelationships.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/DeepRelationships.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/DeepRelationships.java index 29d12bf93..24230f9d2 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/DeepRelationships.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/DeepRelationships.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/DtoPersonProjection.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/DtoPersonProjection.java similarity index 92% rename from src/test/java/org/springframework/data/neo4j/integration/shared/DtoPersonProjection.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/DtoPersonProjection.java index 115b77cf6..64123a103 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/DtoPersonProjection.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/DtoPersonProjection.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import lombok.Value; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/DtoPersonProjectionContainingAdditionalFields.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/DtoPersonProjectionContainingAdditionalFields.java similarity index 93% rename from src/test/java/org/springframework/data/neo4j/integration/shared/DtoPersonProjectionContainingAdditionalFields.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/DtoPersonProjectionContainingAdditionalFields.java index ea490687d..49e9813fd 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/DtoPersonProjectionContainingAdditionalFields.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/DtoPersonProjectionContainingAdditionalFields.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import lombok.Value; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/DynamicRelationshipsITBase.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/DynamicRelationshipsITBase.java similarity index 97% rename from src/test/java/org/springframework/data/neo4j/integration/shared/DynamicRelationshipsITBase.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/DynamicRelationshipsITBase.java index f73c3c407..46be6a007 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/DynamicRelationshipsITBase.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/DynamicRelationshipsITBase.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/EntitiesWithDynamicLabels.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/EntitiesWithDynamicLabels.java similarity index 98% rename from src/test/java/org/springframework/data/neo4j/integration/shared/EntitiesWithDynamicLabels.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/EntitiesWithDynamicLabels.java index 817768315..30810ff33 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/EntitiesWithDynamicLabels.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/EntitiesWithDynamicLabels.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.Set; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/EntityWithConvertedId.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/EntityWithConvertedId.java similarity index 89% rename from src/test/java/org/springframework/data/neo4j/integration/shared/EntityWithConvertedId.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/EntityWithConvertedId.java index 8dec86233..933c0ddf5 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/EntityWithConvertedId.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/EntityWithConvertedId.java @@ -13,13 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; /** * @author Gerrit Meier */ +@Node public class EntityWithConvertedId { @Id private IdentifyingEnum identifyingEnum; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ExtendedParentNode.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ExtendedParentNode.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ExtendedParentNode.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ExtendedParentNode.java index c0b93b2fa..33e0853d0 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ExtendedParentNode.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ExtendedParentNode.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.List; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/Friend.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Friend.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/Friend.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/Friend.java index a3bed7702..5dcfb4cf5 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/Friend.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Friend.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/FriendshipRelationship.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/FriendshipRelationship.java similarity index 94% rename from src/test/java/org/springframework/data/neo4j/integration/shared/FriendshipRelationship.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/FriendshipRelationship.java index ba0044e29..59fb69118 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/FriendshipRelationship.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/FriendshipRelationship.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.RelationshipProperties; import org.springframework.data.neo4j.core.schema.TargetNode; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/Hobby.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Hobby.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/Hobby.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/Hobby.java index a5095e262..5138f0c24 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/Hobby.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Hobby.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.Objects; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/HobbyRelationship.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/HobbyRelationship.java similarity index 94% rename from src/test/java/org/springframework/data/neo4j/integration/shared/HobbyRelationship.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/HobbyRelationship.java index 50422f6b8..8e2c50a8b 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/HobbyRelationship.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/HobbyRelationship.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.RelationshipProperties; import org.springframework.data.neo4j.core.schema.TargetNode; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/IdGeneratorsITBase.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/IdGeneratorsITBase.java similarity index 97% rename from src/test/java/org/springframework/data/neo4j/integration/shared/IdGeneratorsITBase.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/IdGeneratorsITBase.java index ed62beaa8..e8c0f8f3c 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/IdGeneratorsITBase.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/IdGeneratorsITBase.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import static org.assertj.core.api.Assertions.assertThat; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ImmutableAuditableThing.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ImmutableAuditableThing.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ImmutableAuditableThing.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ImmutableAuditableThing.java index 6a4df9664..5ad06f961 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ImmutableAuditableThing.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ImmutableAuditableThing.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import lombok.AllArgsConstructor; import lombok.Value; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ImmutableAuditableThingWithGeneratedId.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ImmutableAuditableThingWithGeneratedId.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ImmutableAuditableThingWithGeneratedId.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ImmutableAuditableThingWithGeneratedId.java index 4da1fd9ac..9c991b12b 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ImmutableAuditableThingWithGeneratedId.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ImmutableAuditableThingWithGeneratedId.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import lombok.AllArgsConstructor; import lombok.Value; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ImmutablePerson.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ImmutablePerson.java similarity index 94% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ImmutablePerson.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ImmutablePerson.java index 1b5418bf7..915d50d4f 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ImmutablePerson.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ImmutablePerson.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; /** * @author Gerrit Meier diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/Inheritance.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Inheritance.java similarity index 98% rename from src/test/java/org/springframework/data/neo4j/integration/shared/Inheritance.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/Inheritance.java index f9a768681..be7b6c3c1 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/Inheritance.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Inheritance.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.List; import java.util.Objects; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/LikesHobbyRelationship.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/LikesHobbyRelationship.java similarity index 97% rename from src/test/java/org/springframework/data/neo4j/integration/shared/LikesHobbyRelationship.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/LikesHobbyRelationship.java index dc9bf4f9d..fac55fa69 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/LikesHobbyRelationship.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/LikesHobbyRelationship.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.time.LocalDate; import java.util.Objects; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/Multiple1O1Relationships.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Multiple1O1Relationships.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/Multiple1O1Relationships.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/Multiple1O1Relationships.java index d4367d1c2..6c826cf70 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/Multiple1O1Relationships.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Multiple1O1Relationships.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/MultipleLabels.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/MultipleLabels.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/MultipleLabels.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/MultipleLabels.java index 329a748e7..5aa2b5bb4 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/MultipleLabels.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/MultipleLabels.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/MultipleRelationshipsThing.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/MultipleRelationshipsThing.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/MultipleRelationshipsThing.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/MultipleRelationshipsThing.java index 72f8d6a08..4f29b6b9f 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/MultipleRelationshipsThing.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/MultipleRelationshipsThing.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.List; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/NamesOnly.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/NamesOnly.java similarity index 92% rename from src/test/java/org/springframework/data/neo4j/integration/shared/NamesOnly.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/NamesOnly.java index 04d5131e0..1cbe039f3 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/NamesOnly.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/NamesOnly.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.beans.factory.annotation.Value; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/NamesOnlyDto.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/NamesOnlyDto.java similarity index 93% rename from src/test/java/org/springframework/data/neo4j/integration/shared/NamesOnlyDto.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/NamesOnlyDto.java index f04f31a4c..9c39784e0 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/NamesOnlyDto.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/NamesOnlyDto.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; /** * @author Gerrit Meier diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ParentNode.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ParentNode.java similarity index 94% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ParentNode.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ParentNode.java index 72a148f3a..89fda8d86 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ParentNode.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ParentNode.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/Person.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Person.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/Person.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/Person.java index 27b19404b..d0017b21f 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/Person.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Person.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonProjection.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonProjection.java similarity index 92% rename from src/test/java/org/springframework/data/neo4j/integration/shared/PersonProjection.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonProjection.java index b79062e03..8d04bb028 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonProjection.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonProjection.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; /** * @author Gerrit Meier diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonSummary.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonSummary.java similarity index 92% rename from src/test/java/org/springframework/data/neo4j/integration/shared/PersonSummary.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonSummary.java index e2a58f3fc..7fb3575c5 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonSummary.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonSummary.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; /** * @author Gerrit Meier diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithAllConstructor.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithAllConstructor.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithAllConstructor.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithAllConstructor.java index fda412cd3..82ddaf58d 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithAllConstructor.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithAllConstructor.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithNoConstructor.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithNoConstructor.java similarity index 94% rename from src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithNoConstructor.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithNoConstructor.java index 21a471f58..c824196e6 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithNoConstructor.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithNoConstructor.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import lombok.Getter; import lombok.Setter; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithRelationship.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithRelationship.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithRelationship.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithRelationship.java index 602434284..25f718aac 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithRelationship.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithRelationship.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.List; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithRelationshipWithProperties.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithRelationshipWithProperties.java similarity index 97% rename from src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithRelationshipWithProperties.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithRelationshipWithProperties.java index 69643f55a..098be7cdc 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithRelationshipWithProperties.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithRelationshipWithProperties.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.List; import java.util.Set; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithRelationshipWithProperties2.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithRelationshipWithProperties2.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithRelationshipWithProperties2.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithRelationshipWithProperties2.java index a5e0a66fb..b680dc67c 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithRelationshipWithProperties2.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithRelationshipWithProperties2.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.Set; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithRelatives.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithRelatives.java similarity index 97% rename from src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithRelatives.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithRelatives.java index 1fc5df0a1..aa9d275a2 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithRelatives.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithRelatives.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.HashMap; import java.util.List; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithStringlyTypedRelatives.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithStringlyTypedRelatives.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithStringlyTypedRelatives.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithStringlyTypedRelatives.java index 0c4c86597..c9d26b631 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithStringlyTypedRelatives.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithStringlyTypedRelatives.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.HashMap; import java.util.List; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithWither.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithWither.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithWither.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithWither.java index 06247578a..c0cdd6f8d 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithWither.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/PersonWithWither.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import lombok.Getter; import lombok.Setter; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/Pet.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Pet.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/Pet.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/Pet.java index ceb40a123..2af2618fc 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/Pet.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Pet.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import lombok.EqualsAndHashCode; import lombok.Getter; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/RelationshipsAsConstructorParametersEntities.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/RelationshipsAsConstructorParametersEntities.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/RelationshipsAsConstructorParametersEntities.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/RelationshipsAsConstructorParametersEntities.java index 30d8d4a08..26a696d84 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/RelationshipsAsConstructorParametersEntities.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/RelationshipsAsConstructorParametersEntities.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/RelationshipsITBase.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/RelationshipsITBase.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/RelationshipsITBase.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/RelationshipsITBase.java index 106e0c9bc..944042eb7 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/RelationshipsITBase.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/RelationshipsITBase.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.junit.jupiter.api.BeforeEach; import org.neo4j.driver.Driver; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/SimilarThing.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/SimilarThing.java similarity index 97% rename from src/test/java/org/springframework/data/neo4j/integration/shared/SimilarThing.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/SimilarThing.java index bb7c7e245..1b1b39698 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/SimilarThing.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/SimilarThing.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.List; import java.util.Objects; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/common/SimplePerson.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/SimplePerson.java new file mode 100644 index 000000000..044e60417 --- /dev/null +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/SimplePerson.java @@ -0,0 +1,41 @@ +/* + * Copyright 2011-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.neo4j.integration.shared.common; + +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; + +/** + * @author Gerrit Meier + */ +@Node +public class SimplePerson { + + @Id + @GeneratedValue + private Long id; + + private String name; + + public SimplePerson(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/TestSequenceGenerator.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/TestSequenceGenerator.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/TestSequenceGenerator.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/TestSequenceGenerator.java index a422b07a4..f928c795a 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/TestSequenceGenerator.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/TestSequenceGenerator.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.concurrent.atomic.AtomicInteger; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithAllCypherTypes.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithAllCypherTypes.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithAllCypherTypes.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithAllCypherTypes.java index 45067fcf5..cf2cb3c32 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithAllCypherTypes.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithAllCypherTypes.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithAllSpatialTypes.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithAllSpatialTypes.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithAllSpatialTypes.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithAllSpatialTypes.java index 389b3f352..7c6d4be74 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithAllSpatialTypes.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithAllSpatialTypes.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithAssignedId.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithAssignedId.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithAssignedId.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithAssignedId.java index d04a38287..d6910b578 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithAssignedId.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithAssignedId.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.List; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithGeneratedId.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithGeneratedId.java similarity index 94% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithGeneratedId.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithGeneratedId.java index afc987b71..34a9e3047 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithGeneratedId.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithGeneratedId.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithIdGeneratedByBean.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithIdGeneratedByBean.java similarity index 94% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithIdGeneratedByBean.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithIdGeneratedByBean.java index 4b8317ba1..1ac9b3346 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithIdGeneratedByBean.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithIdGeneratedByBean.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithNonExistingPrimitives.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithNonExistingPrimitives.java similarity index 94% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithNonExistingPrimitives.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithNonExistingPrimitives.java index b33ad83eb..8980eae84 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithNonExistingPrimitives.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithNonExistingPrimitives.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithSequence.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithSequence.java similarity index 94% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithSequence.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithSequence.java index 578c75592..eeef18ae2 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithSequence.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithSequence.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithUUIDID.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithUUIDID.java similarity index 95% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithUUIDID.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithUUIDID.java index 9a149d4c8..ee7fa7dee 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithUUIDID.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/ThingWithUUIDID.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.UUID; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/VersionedThing.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/VersionedThing.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/VersionedThing.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/VersionedThing.java index 85199ed79..09b785841 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/VersionedThing.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/VersionedThing.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.List; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/VersionedThingWithAssignedId.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/VersionedThingWithAssignedId.java similarity index 96% rename from src/test/java/org/springframework/data/neo4j/integration/shared/VersionedThingWithAssignedId.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/VersionedThingWithAssignedId.java index dc80f0187..3c1092ebb 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/VersionedThingWithAssignedId.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/VersionedThingWithAssignedId.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import java.util.List; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/WorksInClubRelationship.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/WorksInClubRelationship.java similarity index 94% rename from src/test/java/org/springframework/data/neo4j/integration/shared/WorksInClubRelationship.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/common/WorksInClubRelationship.java index 1391e62d8..9ca6be708 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/WorksInClubRelationship.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/WorksInClubRelationship.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.common; import org.springframework.data.neo4j.core.schema.RelationshipProperties; import org.springframework.data.neo4j.core.schema.TargetNode; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/CompositePropertiesITBase.java b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/CompositePropertiesITBase.java similarity index 98% rename from src/test/java/org/springframework/data/neo4j/integration/shared/CompositePropertiesITBase.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/conversion/CompositePropertiesITBase.java index 6d22d2e39..ffad01644 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/CompositePropertiesITBase.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/CompositePropertiesITBase.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.conversion; import static org.assertj.core.api.Assertions.assertThat; @@ -28,6 +28,7 @@ import org.neo4j.driver.Record; import org.neo4j.driver.Session; import org.neo4j.driver.types.Node; import org.neo4j.driver.types.Relationship; +import org.springframework.data.neo4j.integration.shared.common.Club; import org.springframework.data.neo4j.test.Neo4jExtension; /** diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/Neo4jConversionsITBase.java b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/Neo4jConversionsITBase.java similarity index 98% rename from src/test/java/org/springframework/data/neo4j/integration/shared/Neo4jConversionsITBase.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/conversion/Neo4jConversionsITBase.java index 1a69a5bea..c55d68969 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/Neo4jConversionsITBase.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/Neo4jConversionsITBase.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.conversion; import lombok.Builder; @@ -48,7 +48,7 @@ import org.junit.jupiter.api.BeforeAll; import org.neo4j.driver.Session; import org.neo4j.driver.Values; import org.springframework.data.geo.Point; -import org.springframework.data.neo4j.integration.shared.ThingWithAllAdditionalTypes.SomeEnum; +import org.springframework.data.neo4j.integration.shared.conversion.ThingWithAllAdditionalTypes.SomeEnum; import org.springframework.data.neo4j.test.Neo4jExtension; import org.springframework.data.neo4j.types.CartesianPoint2d; import org.springframework.data.neo4j.types.CartesianPoint3d; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithCustomId.java b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/PersonWithCustomId.java similarity index 94% rename from src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithCustomId.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/conversion/PersonWithCustomId.java index 08aa3bbb1..6bff895fb 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/PersonWithCustomId.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/PersonWithCustomId.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.conversion; import lombok.Value; @@ -25,12 +25,14 @@ import org.neo4j.driver.Values; import org.springframework.core.convert.TypeDescriptor; import org.springframework.core.convert.converter.GenericConverter; import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; /** * @author Rosetta Roberts * @author Michael J. Simons */ @Value +@Node public class PersonWithCustomId { /** diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/RelationshipWithCompositeProperties.java b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/RelationshipWithCompositeProperties.java similarity index 93% rename from src/test/java/org/springframework/data/neo4j/integration/shared/RelationshipWithCompositeProperties.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/conversion/RelationshipWithCompositeProperties.java index 40a8cece9..fc9181c8f 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/RelationshipWithCompositeProperties.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/RelationshipWithCompositeProperties.java @@ -13,13 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.conversion; import java.util.Map; import org.springframework.data.neo4j.core.schema.CompositeProperty; import org.springframework.data.neo4j.core.schema.RelationshipProperties; import org.springframework.data.neo4j.core.schema.TargetNode; +import org.springframework.data.neo4j.integration.shared.common.Club; /** * Just a holder for composite properties on relationships. diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithAllAdditionalTypes.java b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/ThingWithAllAdditionalTypes.java similarity index 97% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithAllAdditionalTypes.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/conversion/ThingWithAllAdditionalTypes.java index 5860c63d6..63246fb70 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithAllAdditionalTypes.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/ThingWithAllAdditionalTypes.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.conversion; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithCompositeProperties.java b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/ThingWithCompositeProperties.java similarity index 98% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithCompositeProperties.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/conversion/ThingWithCompositeProperties.java index 08e777513..6f6dfc6d6 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithCompositeProperties.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/ThingWithCompositeProperties.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.conversion; import java.time.LocalDate; import java.util.HashMap; diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithCustomTypes.java b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/ThingWithCustomTypes.java similarity index 98% rename from src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithCustomTypes.java rename to src/test/java/org/springframework/data/neo4j/integration/shared/conversion/ThingWithCustomTypes.java index b5a6a94fb..d83643647 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/ThingWithCustomTypes.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/conversion/ThingWithCustomTypes.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared; +package org.springframework.data.neo4j.integration.shared.conversion; import java.util.Date; import java.util.HashSet; diff --git a/src/test/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactoryTest.java b/src/test/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactoryTest.java index 5b51a8d29..c697d7c5f 100644 --- a/src/test/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactoryTest.java +++ b/src/test/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactoryTest.java @@ -37,9 +37,9 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.data.geo.Point; import org.springframework.data.neo4j.core.Neo4jTemplate; import org.springframework.data.neo4j.core.mapping.Neo4jMappingContext; -import org.springframework.data.neo4j.integration.shared.ThingWithAllAdditionalTypes; -import org.springframework.data.neo4j.integration.shared.ThingWithAllCypherTypes; -import org.springframework.data.neo4j.integration.shared.ThingWithCompositeProperties; +import org.springframework.data.neo4j.integration.shared.conversion.ThingWithAllAdditionalTypes; +import org.springframework.data.neo4j.integration.shared.common.ThingWithAllCypherTypes; +import org.springframework.data.neo4j.integration.shared.conversion.ThingWithCompositeProperties; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.repository.core.RepositoryInformation; diff --git a/src/test/kotlin/org/springframework/data/neo4j/integration/imperative/ImmutableRelationshipsIT.kt b/src/test/kotlin/org/springframework/data/neo4j/integration/imperative/ImmutableRelationshipsIT.kt index fa1be695d..cc8e565c7 100644 --- a/src/test/kotlin/org/springframework/data/neo4j/integration/imperative/ImmutableRelationshipsIT.kt +++ b/src/test/kotlin/org/springframework/data/neo4j/integration/imperative/ImmutableRelationshipsIT.kt @@ -27,6 +27,8 @@ import org.springframework.data.neo4j.core.schema.GeneratedValue import org.springframework.data.neo4j.core.schema.Id import org.springframework.data.neo4j.core.schema.Node import org.springframework.data.neo4j.core.schema.Relationship +import org.springframework.data.neo4j.integration.shared.common.DeviceEntity +import org.springframework.data.neo4j.integration.shared.common.ImmutableKotlinPerson import org.springframework.data.neo4j.repository.Neo4jRepository import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories import org.springframework.data.neo4j.test.Neo4jExtension @@ -122,26 +124,3 @@ class ImmutableRelationshipsIT @Autowired constructor( interface DeviceRepository : Neo4jRepository interface ImmutableKotlinPersonRepository : Neo4jRepository - -@Node -data class DeviceEntity( - @Id - val deviceId: String, - val phoneNumber: String, - @Relationship(type = "LATEST_LOCATION", direction = Relationship.Direction.OUTGOING) - val location: LocationEntity? -) - -@Node -data class LocationEntity( - @Id - @GeneratedValue - val locationId: Long? = null, - val latitude: Double, - val longitude: Double, - @Relationship(type = "PREVIOUS_LOCATION", direction = Relationship.Direction.OUTGOING) - val previousLocation: LocationEntity? -) - -@Node -data class ImmutableKotlinPerson(@Id val name: String, val wasOnboardedBy: List) diff --git a/src/test/kotlin/org/springframework/data/neo4j/integration/shared/common/ImmutableRelationships.kt b/src/test/kotlin/org/springframework/data/neo4j/integration/shared/common/ImmutableRelationships.kt new file mode 100644 index 000000000..f44a11ff4 --- /dev/null +++ b/src/test/kotlin/org/springframework/data/neo4j/integration/shared/common/ImmutableRelationships.kt @@ -0,0 +1,47 @@ +/* + * Copyright 2011-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.neo4j.integration.shared.common + +import org.springframework.data.neo4j.core.schema.GeneratedValue +import org.springframework.data.neo4j.core.schema.Id +import org.springframework.data.neo4j.core.schema.Node +import org.springframework.data.neo4j.core.schema.Relationship + +/** + * @author Gerrit Meier + */ +@Node +data class DeviceEntity( + @Id + val deviceId: String, + val phoneNumber: String, + @Relationship(type = "LATEST_LOCATION", direction = Relationship.Direction.OUTGOING) + val location: LocationEntity? +) + +@Node +data class LocationEntity( + @Id + @GeneratedValue + val locationId: Long? = null, + val latitude: Double, + val longitude: Double, + @Relationship(type = "PREVIOUS_LOCATION", direction = Relationship.Direction.OUTGOING) + val previousLocation: LocationEntity? +) + +@Node +data class ImmutableKotlinPerson(@Id val name: String, val wasOnboardedBy: List) diff --git a/src/test/kotlin/org/springframework/data/neo4j/integration/shared/KotlinPerson.kt b/src/test/kotlin/org/springframework/data/neo4j/integration/shared/common/KotlinPerson.kt similarity index 95% rename from src/test/kotlin/org/springframework/data/neo4j/integration/shared/KotlinPerson.kt rename to src/test/kotlin/org/springframework/data/neo4j/integration/shared/common/KotlinPerson.kt index bf515a82a..083edde79 100644 --- a/src/test/kotlin/org/springframework/data/neo4j/integration/shared/KotlinPerson.kt +++ b/src/test/kotlin/org/springframework/data/neo4j/integration/shared/common/KotlinPerson.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared +package org.springframework.data.neo4j.integration.shared.common import org.springframework.data.neo4j.core.schema.GeneratedValue import org.springframework.data.neo4j.core.schema.Id diff --git a/src/test/kotlin/org/springframework/data/neo4j/integration/shared/KotlinRepository.kt b/src/test/kotlin/org/springframework/data/neo4j/integration/shared/common/KotlinRepository.kt similarity index 92% rename from src/test/kotlin/org/springframework/data/neo4j/integration/shared/KotlinRepository.kt rename to src/test/kotlin/org/springframework/data/neo4j/integration/shared/common/KotlinRepository.kt index 03b08cf04..d32565a82 100644 --- a/src/test/kotlin/org/springframework/data/neo4j/integration/shared/KotlinRepository.kt +++ b/src/test/kotlin/org/springframework/data/neo4j/integration/shared/common/KotlinRepository.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.data.neo4j.integration.shared +package org.springframework.data.neo4j.integration.shared.common import org.springframework.data.neo4j.repository.Neo4jRepository