From e43330e3e6caca6cbc17c0e83f6d079d23bc763c Mon Sep 17 00:00:00 2001 From: "Michael J. Simons" Date: Mon, 23 Jul 2018 12:30:40 +0200 Subject: [PATCH] DATAGRAPH-1103 - Apply Spring Data Code Formatting Settings. This commit applied the Spring Data Code Formatting Settings https://github.com/spring-projects/spring-data-build/tree/37b34a56ceb710b756529bfdb5d2b2f4952b24fd/etc/ide through the Eclipse Code Formatter for IDEA. # Conflicts: # pom.xml # spring-data-neo4j/pom.xml --- pom.xml | 359 +++++++-------- spring-data-neo4j/pom.xml | 321 +++++++------- .../data/neo4j/annotation/Depth.java | 3 +- .../annotation/EnableBookmarkManagement.java | 15 +- .../neo4j/annotation/EnableNeo4jAuditing.java | 9 +- .../data/neo4j/annotation/Query.java | 28 +- .../data/neo4j/annotation/QueryResult.java | 8 +- .../data/neo4j/annotation/UseBookmark.java | 13 +- .../data/neo4j/bookmark/BookmarkInfo.java | 3 +- .../BookmarkManagementConfiguration.java | 17 +- .../bookmark/BookmarkOperationPointcut.java | 8 +- .../bookmark/CaffeineBookmarkManager.java | 11 +- .../MetaDataDrivenConversionService.java | 140 +++--- .../data/neo4j/conversion/PointConverter.java | 45 +- .../exception/Neo4jErrorStatusCodes.java | 12 +- .../neo4j/mapping/Neo4jMappingContext.java | 148 +++---- .../neo4j/mapping/Neo4jPersistentEntity.java | 70 ++- .../mapping/Neo4jPersistentProperty.java | 106 ++--- .../neo4j/repository/Neo4jRepository.java | 6 +- .../cdi/Neo4jCdiRepositoryBean.java | 64 +-- .../cdi/Neo4jCdiRepositoryExtension.java | 125 +++--- .../config/EnableNeo4jRepositories.java | 159 +++---- .../config/Neo4jAuditingEventListener.java | 6 +- .../config/Neo4jAuditingRegistrar.java | 5 +- .../Neo4jIsNewAwareAuditingHandler.java | 3 +- .../Neo4jMappingContextFactoryBean.java | 11 +- .../config/Neo4jRepositoriesRegistrar.java | 4 +- .../query/AbstractGraphRepositoryQuery.java | 1 + .../query/CustomResultConverter.java | 6 +- .../query/GraphParameterAccessor.java | 5 +- .../repository/query/GraphParameters.java | 8 +- .../GraphParametersParameterAccessor.java | 3 +- .../repository/query/GraphQueryExecution.java | 18 +- .../repository/query/GraphQueryMethod.java | 175 ++++---- .../query/GraphRepositoryQuery.java | 11 +- .../data/neo4j/repository/query/Query.java | 13 +- .../repository/query/QueryResultProxy.java | 66 +-- .../query/derived/CypherFinderQuery.java | 118 ++--- .../derived/DerivedGraphRepositoryQuery.java | 3 +- .../query/derived/DerivedQueryBuilder.java | 3 + .../query/derived/DerivedQueryCreator.java | 5 +- .../query/derived/DerivedQueryDefinition.java | 8 +- .../builder/BooleanComparisonBuilder.java | 1 - .../builder/DistanceComparisonBuilder.java | 7 +- .../derived/builder/ExistsFilterBuilder.java | 1 - .../derived/builder/IsNullFilterBuilder.java | 25 +- .../builder/PropertyComparisonBuilder.java | 1 - .../support/GraphEntityInformation.java | 59 ++- .../support/Neo4jRepositoryFactory.java | 5 +- .../support/Neo4jRepositoryFactoryBean.java | 10 +- .../support/SimpleNeo4jRepository.java | 5 +- .../transaction/Neo4jTransactionManager.java | 82 ++-- .../transaction/SessionFactoryUtils.java | 52 +-- .../data/neo4j/transaction/SessionHolder.java | 11 +- .../transaction/SharedSessionCreator.java | 39 +- .../data/neo4j/util/IterableUtils.java | 395 +++++++++-------- .../web/support/AsyncRequestInterceptor.java | 24 +- .../web/support/OpenSessionInViewFilter.java | 64 ++- .../support/OpenSessionInViewInterceptor.java | 40 +- .../JavaConfigurationAuditingTests.java | 10 +- .../data/neo4j/auditing/domain/User.java | 19 +- .../auditing/repository/UserRepository.java | 3 +- .../bookmark/BookmarkManagementTest.java | 17 +- .../data/neo4j/domain/sample/Role.java | 4 +- .../neo4j/domain/sample/SampleEntity.java | 3 +- .../data/neo4j/domain/sample/User.java | 13 +- .../data/neo4j/events/EventPublisher.java | 3 +- .../Neo4jModificationEventListener.java | 3 +- .../data/neo4j/events/PostDeleteEvent.java | 2 +- .../data/neo4j/events/PreDeleteEvent.java | 2 +- .../neo4j/examples/friends/FriendService.java | 3 +- .../neo4j/examples/friends/FriendTests.java | 12 +- .../neo4j/examples/friends/domain/Person.java | 9 +- .../examples/galaxy/GalaxyServiceTests.java | 24 +- .../examples/galaxy/WorldRepositoryTests.java | 113 +++-- .../neo4j/examples/galaxy/domain/World.java | 157 +++---- .../examples/galaxy/repo/WorldRepository.java | 10 +- .../galaxy/service/GalaxyService.java | 11 +- .../neo4j/examples/jsr303/JSR303Tests.java | 34 +- .../examples/jsr303/WebConfiguration.java | 10 +- .../jsr303/controller/AdultController.java | 42 +- .../neo4j/examples/jsr303/domain/Adult.java | 16 +- .../examples/jsr303/repo/AdultRepository.java | 3 +- .../examples/jsr303/service/AdultService.java | 9 +- .../movies/MoviesIntegrationTests.java | 175 ++++---- .../domain/AbstractAnnotatedEntity.java | 3 +- .../movies/domain/AbstractEntity.java | 8 +- .../neo4j/examples/movies/domain/Actor.java | 45 +- .../neo4j/examples/movies/domain/Cinema.java | 24 +- .../movies/domain/CinemaAndBlockbuster.java | 2 + .../domain/CinemaAndBlockbusterName.java | 1 + .../examples/movies/domain/Director.java | 3 +- .../neo4j/examples/movies/domain/Genre.java | 31 +- .../neo4j/examples/movies/domain/Movie.java | 45 +- .../neo4j/examples/movies/domain/Person.java | 7 +- .../neo4j/examples/movies/domain/Rating.java | 112 +++-- .../examples/movies/domain/ReleasedMovie.java | 45 +- .../examples/movies/domain/TempMovie.java | 40 +- .../neo4j/examples/movies/domain/User.java | 100 ++--- .../domain/queryresult/CinemaQueryResult.java | 31 +- .../CinemaQueryResultInterface.java | 8 +- .../CinemaQueryResultInterfaceImpl.java | 3 +- .../EntityWrappingQueryResult.java | 57 ++- .../movies/domain/queryresult/Gender.java | 2 +- .../queryresult/RichUserQueryResult.java | 38 +- .../domain/queryresult/UserQueryResult.java | 107 +++-- .../queryresult/UserQueryResultObject.java | 32 +- .../AbstractAnnotatedEntityRepository.java | 3 +- .../movies/repo/AbstractEntityRepository.java | 3 +- .../examples/movies/repo/ActorRepository.java | 5 +- .../movies/repo/CinemaRepository.java | 3 +- .../examples/movies/repo/GenreRepository.java | 3 +- .../movies/repo/TempMovieRepository.java | 3 +- .../movies/repo/UnmanagedUserPojo.java | 14 +- .../examples/movies/repo/UserRepository.java | 114 ++--- .../examples/movies/service/UserService.java | 18 +- .../movies/service/UserServiceImpl.java | 56 ++- .../examples/restaurants/RestaurantTests.java | 64 ++- .../examples/restaurants/domain/Diner.java | 7 +- .../restaurants/domain/Restaurant.java | 26 +- .../repo/RestaurantRepository.java | 2 - .../extensions/CustomGraphRepositoryImpl.java | 3 +- .../CustomGraphRepositoryTests.java | 8 +- .../extensions/CustomNeo4jRepository.java | 5 +- .../data/neo4j/extensions/UserRepository.java | 3 +- .../data/neo4j/extensions/domain/User.java | 2 +- .../conversion/ConversionServiceTests.java | 71 ++- .../conversion/JavaElementRepository.java | 2 +- .../conversion/PensionRepository.java | 2 +- .../conversion/SiteMemberRepository.java | 2 +- .../SpringBigIntegerToBooleanConverter.java | 7 +- .../SpringBooleanToBigIntegerConverter.java | 7 +- .../SpringByteArrayToIntegerConverter.java | 3 +- .../SpringIntegerToByteArrayConverter.java | 4 +- ...pringIntegerToMonetaryAmountConverter.java | 8 +- .../SpringLongToMonetaryAmountConverter.java | 8 +- ...pringMonetaryAmountToIntegerConverter.java | 8 +- .../SpringMonetaryAmountToLongConverter.java | 8 +- ...SpringMonetaryAmountToNumberConverter.java | 8 +- ...onetaryAmountToNumberConverterFactory.java | 28 +- ...SpringNumberToMonetaryAmountConverter.java | 8 +- .../conversion/domain/JavaElement.java | 52 ++- .../conversion/domain/MonetaryAmount.java | 60 +-- .../conversion/domain/PensionPlan.java | 56 ++- .../conversion/domain/SiteMember.java | 47 +- .../data/neo4j/queries/DerivedQueryTests.java | 184 ++++---- .../DerivedRelationshipEntityQueryTests.java | 76 ++-- .../data/neo4j/queries/Java8SupportTests.java | 16 +- .../data/neo4j/queries/PagedQueryTests.java | 97 +++-- .../data/neo4j/queries/ProjectionTests.java | 32 +- .../neo4j/queries/QueryIntegrationTests.java | 83 ++-- .../neo4j/queries/QueryReturnTypesTests.java | 19 +- .../ProgrammaticRepositoryTests.java | 3 +- .../neo4j/repositories/RepoScanningTests.java | 10 +- .../RepositoryDefinitionTests.java | 8 +- .../data/neo4j/repositories/domain/Movie.java | 20 +- .../data/neo4j/repositories/domain/User.java | 46 +- .../repositories/repo/MovieRepository.java | 4 +- .../support/GraphRepositoryFactoryTests.java | 1 - .../data/neo4j/repository/Contact.java | 6 +- .../repository/Neo4jRepositoryTests.java | 8 +- .../repository/cdi/CdiExtensionTests.java | 11 +- .../repository/cdi/CdiPersonRepository.java | 6 +- .../repository/cdi/Neo4jCdiProducer.java | 5 +- .../cdi/Neo4jRepositoryExtensionTests.java | 5 +- .../neo4j/repository/cdi/OtherQualifier.java | 5 +- .../data/neo4j/repository/cdi/PersonDB.java | 5 +- .../repository/cdi/RepositoryClient.java | 11 +- .../cdi/SamplePersonRepositoryCustom.java | 2 +- .../cdi/SamplePersonRepositoryImpl.java | 8 +- .../config/RepositoriesJavaConfigTests.java | 11 +- .../query/GraphQueryExecutionTests.java | 11 +- .../repository/sample/UserRepository.java | 63 ++- ...tTransactionDisablingIntegrationTests.java | 5 +- .../Neo4jRepositoryFactoryBeanTests.java | 12 +- .../support/TransactionalRepositoryTests.java | 7 +- .../TemplateApplicationEventTests.java | 106 +++-- .../template/TestNeo4jEventListener.java | 6 +- .../transaction/BookmarkTransactionTests.java | 29 +- .../Neo4jTransactionManagerTests.java | 410 +++++++++--------- .../transaction/SessionFactoryUtilsTests.java | 8 +- .../SharedSessionCreatorTests.java | 1 - .../TransactionalEventListenerTests.java | 62 ++- .../ExtendedTransactionsTests.java | 16 +- .../TransactionIntegrationTests.java | 13 +- .../TransactionRollbackTests.java | 20 +- .../data/neo4j/transactions/domain/User.java | 47 +- .../transactions/repo/UserRepository.java | 2 +- .../transactions/service/BusinessService.java | 43 +- .../neo4j/transactions/service/ServiceA.java | 23 +- .../neo4j/transactions/service/ServiceB.java | 28 +- .../transactions/service/WrapperService.java | 59 ++- .../data/neo4j/web/WebIntegrationTests.java | 41 +- ...ApplicationContextWebIntegrationTests.java | 38 +- .../neo4j/web/controller/UserController.java | 82 ++-- .../data/neo4j/web/domain/Cinema.java | 45 +- .../data/neo4j/web/domain/Genre.java | 38 +- .../data/neo4j/web/domain/User.java | 89 ++-- .../data/neo4j/web/service/UserService.java | 8 +- .../neo4j/web/service/UserServiceImpl.java | 11 +- .../web/support/OpenSessionInViewTests.java | 19 +- 201 files changed, 3467 insertions(+), 3702 deletions(-) diff --git a/pom.xml b/pom.xml index 2018e39d2..d5d9014e7 100644 --- a/pom.xml +++ b/pom.xml @@ -1,192 +1,193 @@ - + - 4.0.0 + 4.0.0 - org.springframework.data - spring-data-neo4j-parent - 5.0.9.BUILD-SNAPSHOT - pom + org.springframework.data + spring-data-neo4j-parent + 5.0.9.BUILD-SNAPSHOT + pom - Spring Data Neo4j - Neo4j support for Spring Data - http://projects.spring.io/spring-data-neo4j + Spring Data Neo4j + Neo4j support for Spring Data + http://projects.spring.io/spring-data-neo4j - - org.springframework.data.build - spring-data-parent - 2.0.9.BUILD-SNAPSHOT - + + org.springframework.data.build + spring-data-parent + 2.0.9.BUILD-SNAPSHOT + - - spring-data-neo4j - spring-data-neo4j-distribution - + + spring-data-neo4j + spring-data-neo4j-distribution + - - multi - spring-data-neo4j - 3.0.4 - 2.0.9.BUILD-SNAPSHOT - 1.8 - + + multi + spring-data-neo4j + 3.0.4 + 2.0.9.BUILD-SNAPSHOT + 1.8 + - - - vbickers - Vince Bickers - vince at graphaware.com - GraphAware - http://www.graphaware.com - - Developer - - GMT - - - atg - Adam George - adam at graphaware.com - GraphAware - http://www.graphaware.com - - Developer - - GMT - - - bachmanm - Michal Bachman - michal at graphaware.com - GraphAware - http://www.graphaware.com - - Developer - - GMT - - - lmisquitta - Luanne Misquitta - luanne at graphaware.com - GraphAware - http://www.graphaware.com - - Developer - - +5:30 - - - mangrish - Mark Angrish - mark at graphaware.com - GraphAware - http://www.graphaware.com - - Developer - - +11 - - - jasperblues - Jasper Blues - jasper at graphaware.com - GraphAware - http://www.graphaware.com - - Developer - - +8 - - - mhunger - Michael Hunger - michael.hunger at neotechnology.com - Neo Technology - http://www.neotechnology.com - - Project Lead - - +1 - - - ogierke - Oliver Gierke - ogierke at gopivotal.com - Pivotal - http://www.spring.io - - Developer - - +1 - - - trisberg - Thomas Risberg - trisberg at gopivotal.com - Pivotal - http://www.spring.io - - Developer - - -5 - - - mpollack - Mark Pollack - mpollack at gopivotal.com - Pivotal - http://www.spring.io - - Developer - - -5 - - + + + vbickers + Vince Bickers + vince at graphaware.com + GraphAware + http://www.graphaware.com + + Developer + + GMT + + + atg + Adam George + adam at graphaware.com + GraphAware + http://www.graphaware.com + + Developer + + GMT + + + bachmanm + Michal Bachman + michal at graphaware.com + GraphAware + http://www.graphaware.com + + Developer + + GMT + + + lmisquitta + Luanne Misquitta + luanne at graphaware.com + GraphAware + http://www.graphaware.com + + Developer + + +5:30 + + + mangrish + Mark Angrish + mark at graphaware.com + GraphAware + http://www.graphaware.com + + Developer + + +11 + + + jasperblues + Jasper Blues + jasper at graphaware.com + GraphAware + http://www.graphaware.com + + Developer + + +8 + + + mhunger + Michael Hunger + michael.hunger at neotechnology.com + Neo Technology + http://www.neotechnology.com + + Project Lead + + +1 + + + ogierke + Oliver Gierke + ogierke at gopivotal.com + Pivotal + http://www.spring.io + + Developer + + +1 + + + trisberg + Thomas Risberg + trisberg at gopivotal.com + Pivotal + http://www.spring.io + + Developer + + -5 + + + mpollack + Mark Pollack + mpollack at gopivotal.com + Pivotal + http://www.spring.io + + Developer + + -5 + + - - - release - - - - org.jfrog.buildinfo - artifactory-maven-plugin - false - - - - - + + + release + + + + org.jfrog.buildinfo + artifactory-maven-plugin + false + + + + + - - - neo4j - http://m2.neo4j.org/content/repositories/releases - - true - always - - - - neo4j-snapshots - http://m2.neo4j.org/content/repositories/snapshots - - true - always - - - - spring-libs-snapshot - https://repo.spring.io/libs-snapshot - - + + + neo4j + http://m2.neo4j.org/content/repositories/releases + + true + always + + + + neo4j-snapshots + http://m2.neo4j.org/content/repositories/snapshots + + true + always + + + + spring-libs-snapshot + https://repo.spring.io/libs-snapshot + + - - - spring-plugins-release - https://repo.spring.io/plugins-release - - + + + spring-plugins-release + https://repo.spring.io/plugins-release + + diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml index 955d0bf3b..a8d68a3cc 100644 --- a/spring-data-neo4j/pom.xml +++ b/spring-data-neo4j/pom.xml @@ -12,189 +12,190 @@ ~ --> - + - 4.0.0 + 4.0.0 - spring-data-neo4j + spring-data-neo4j - Spring Data Neo4J - Core - Neo4J support for Spring Data + Spring Data Neo4J - Core + Neo4J support for Spring Data - - org.springframework.data - spring-data-neo4j-parent - 5.0.9.BUILD-SNAPSHOT - ../pom.xml - + + org.springframework.data + spring-data-neo4j-parent + 5.0.9.BUILD-SNAPSHOT + ../pom.xml + - - ogm-bolt.properties - 2.2 - spring.data.neo4j - ${basedir}/.. - + + ogm-bolt.properties + 2.2 + spring.data.neo4j + ${basedir}/.. + - + - - - org.springframework - spring-tx - - - org.springframework - spring-context - - - org.springframework - spring-beans - - - org.springframework - spring-core - - - commons-logging - commons-logging - - - - - org.slf4j - jcl-over-slf4j - ${slf4j} - compile - - - org.springframework - spring-web - compile - true - + + + org.springframework + spring-tx + + + org.springframework + spring-context + + + org.springframework + spring-beans + + + org.springframework + spring-core + + + commons-logging + commons-logging + + + + + org.slf4j + jcl-over-slf4j + ${slf4j} + compile + + + org.springframework + spring-web + compile + true + - - - ${project.groupId} - spring-data-commons - ${springdata.commons} - + + + ${project.groupId} + spring-data-commons + ${springdata.commons} + - - - - org.apache.geronimo.specs - geronimo-jcdi_2.0_spec - 1.0.1 - test - + + + + org.apache.geronimo.specs + geronimo-jcdi_2.0_spec + 1.0.1 + test + - - javax.interceptor - javax.interceptor-api - 1.2.1 - test - + + javax.interceptor + javax.interceptor-api + 1.2.1 + test + - - javax.enterprise - cdi-api - ${cdi} - provided - true - + + javax.enterprise + cdi-api + ${cdi} + provided + true + - - javax.annotation - javax.annotation-api - ${javax-annotation-api} - test - + + javax.annotation + javax.annotation-api + ${javax-annotation-api} + test + - - org.apache.openwebbeans - openwebbeans-se - ${webbeans} - test - + + org.apache.openwebbeans + openwebbeans-se + ${webbeans} + test + - - javax.servlet - javax.servlet-api - 3.1.0 - compile - true - + + javax.servlet + javax.servlet-api + 3.1.0 + compile + true + - - - javax.validation - validation-api - ${validation} - true - + + + javax.validation + validation-api + ${validation} + true + - - org.hibernate - hibernate-validator - 5.1.2.Final - test - + + org.hibernate + hibernate-validator + 5.1.2.Final + test + - - org.glassfish - javax.el - 3.0.0 - test - + + org.glassfish + javax.el + 3.0.0 + test + - - - com.github.ben-manes.caffeine - caffeine - 2.5.2 - true - + + + com.github.ben-manes.caffeine + caffeine + 2.5.2 + true + - - - org.neo4j - neo4j-ogm-core - ${neo4j.ogm.version} - + + + org.neo4j + neo4j-ogm-core + ${neo4j.ogm.version} + - - org.neo4j - neo4j-ogm-bolt-driver - ${neo4j.ogm.version} - + + org.neo4j + neo4j-ogm-bolt-driver + ${neo4j.ogm.version} + - - org.neo4j - neo4j-ogm-test - ${neo4j.ogm.version} - test - - - org.neo4j - neo4j-security-enterprise - - - + + org.neo4j + neo4j-ogm-test + ${neo4j.ogm.version} + test + + + org.neo4j + neo4j-security-enterprise + + + - - com.fasterxml.jackson.core - jackson-databind - ${jackson} - test - + + com.fasterxml.jackson.core + jackson-databind + ${jackson} + test + - - org.springframework - spring-webmvc - test - + + org.springframework + spring-webmvc + test + - + diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/Depth.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/Depth.java index d1a24598a..2c8cb1716 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/Depth.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/Depth.java @@ -23,10 +23,11 @@ import org.springframework.data.annotation.QueryAnnotation; /** * Specifies the depth of the query. Used with derived finders. + * * @author Luanne Misquitta */ @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.PARAMETER, ElementType.METHOD}) +@Target({ ElementType.PARAMETER, ElementType.METHOD }) @QueryAnnotation @Documented public @interface Depth { diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/EnableBookmarkManagement.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/EnableBookmarkManagement.java index 84f73874f..17b76aaa2 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/EnableBookmarkManagement.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/EnableBookmarkManagement.java @@ -13,19 +13,22 @@ package org.springframework.data.neo4j.annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + import org.springframework.context.annotation.Import; import org.springframework.data.neo4j.bookmark.BookmarkManagementConfiguration; -import java.lang.annotation.*; - /** * Enables bookmark management *

* Bean implementing {@link org.springframework.data.neo4j.bookmark.BookmarkManager} interface needs to exist in the - * context. Default implementation {@link org.springframework.data.neo4j.bookmark.CaffeineBookmarkManager} exists. - * Use scope of the bean to control how bookmarks are managed. - * singleton - suitable for application wide bookmarks, e.g. fat clients - * request,session - suitable for web applications + * context. Default implementation {@link org.springframework.data.neo4j.bookmark.CaffeineBookmarkManager} exists. Use + * scope of the bean to control how bookmarks are managed. singleton - suitable for application wide bookmarks, e.g. fat + * clients request,session - suitable for web applications *

* NOTE: Only usable with OGM Bolt driver. * diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/EnableNeo4jAuditing.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/EnableNeo4jAuditing.java index f8b4c6885..87890880f 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/EnableNeo4jAuditing.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/EnableNeo4jAuditing.java @@ -13,13 +13,18 @@ package org.springframework.data.neo4j.annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + import org.springframework.context.annotation.Import; import org.springframework.data.auditing.DateTimeProvider; import org.springframework.data.domain.AuditorAware; import org.springframework.data.neo4j.repository.config.Neo4jAuditingRegistrar; -import java.lang.annotation.*; - /** * Annotation to enable auditing in MongoDB via annotation configuration. * diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/Query.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/Query.java index cdfcd8b38..dc928bd03 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/Query.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/Query.java @@ -13,9 +13,13 @@ package org.springframework.data.neo4j.annotation; -import org.springframework.data.annotation.QueryAnnotation; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; -import java.lang.annotation.*; +import org.springframework.data.annotation.QueryAnnotation; /** * Annotation to declare finder queries directly on repository methods. @@ -29,16 +33,16 @@ import java.lang.annotation.*; @Documented public @interface Query { - static final String CLASS = "org.springframework.data.neo4j.annotation.Query"; - static final String VALUE = "value"; + static final String CLASS = "org.springframework.data.neo4j.annotation.Query"; + static final String VALUE = "value"; - /** - * Defines the Cypher query to be executed when the annotated method is called. - */ - String value() default ""; + /** + * Defines the Cypher query to be executed when the annotated method is called. + */ + String value() default ""; - /** - * @return simpler count-query to be executed for @{see Pageable}-support - */ - String countQuery() default ""; + /** + * @return simpler count-query to be executed for @{see Pageable}-support + */ + String countQuery() default ""; } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/QueryResult.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/QueryResult.java index 6ceaef64e..5bd09f427 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/QueryResult.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/QueryResult.java @@ -13,7 +13,11 @@ package org.springframework.data.neo4j.annotation; -import java.lang.annotation.*; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; /** * Annotation to be applied to interfaces and classes onto which arbitrary Cypher query results are to be mapped. @@ -25,6 +29,6 @@ import java.lang.annotation.*; @Documented public @interface QueryResult { - // no annotation properties needed + // no annotation properties needed } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/UseBookmark.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/UseBookmark.java index cbcb8d813..84c86bf72 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/UseBookmark.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/UseBookmark.java @@ -13,20 +13,23 @@ package org.springframework.data.neo4j.annotation; -import java.lang.annotation.*; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; /** * Indicates that a transactional operation will use bookmarks that are currently stored in BookmarkManager when - * creating Neo4j session. - * Must be used on a method with @Transactional annotation. - * May be used on class - applies to all methods or on specific methods. + * creating Neo4j session. Must be used on a method with @Transactional annotation. May be used on class - applies to + * all methods or on specific methods. *

* * @author Frantisek Hartman * @see EnableBookmarkManagement */ @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.TYPE, ElementType.METHOD}) +@Target({ ElementType.TYPE, ElementType.METHOD }) @Documented public @interface UseBookmark { diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/BookmarkInfo.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/BookmarkInfo.java index 6978ff2d9..8c795a692 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/BookmarkInfo.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/BookmarkInfo.java @@ -26,8 +26,7 @@ public class BookmarkInfo implements Serializable { private boolean useBookmark; private Collection bookmarks; - public BookmarkInfo() { - } + public BookmarkInfo() {} public BookmarkInfo(boolean useBookmark) { this.useBookmark = true; diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/BookmarkManagementConfiguration.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/BookmarkManagementConfiguration.java index 6a74d2807..3e05c4e6f 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/BookmarkManagementConfiguration.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/BookmarkManagementConfiguration.java @@ -21,16 +21,14 @@ import org.springframework.context.annotation.Role; /** * Configuration used by @{@link org.springframework.data.neo4j.annotation.EnableBookmarkManagement} *

- * Note on bookmark management implementation: - * The implementation closely follows implementation of @EnableTransactionManagement or @EnableCaching, with simplified - * pointcut. + * Note on bookmark management implementation: The implementation closely follows implementation + * of @EnableTransactionManagement or @EnableCaching, with simplified pointcut. *

- * The bookmark interceptor will set BookmarkInfo thread local when a methods is annotated with @UseBookmark. - * It is executed before transactional advice (see setOrder(0) ). - * Neo4j transaction manager then uses {@link BookmarkManager} bean to retrieve currently stored bookmarks and begins - * new transaction using these bookmarks. - * After commit new bookmark is stored in the BookmarkManager, replacing the bookmarks used to begin the transaction. - * The user needs to provide the BookmarkManager bean. + * The bookmark interceptor will set BookmarkInfo thread local when a methods is annotated with @UseBookmark. It is + * executed before transactional advice (see setOrder(0) ). Neo4j transaction manager then uses {@link BookmarkManager} + * bean to retrieve currently stored bookmarks and begins new transaction using these bookmarks. After commit new + * bookmark is stored in the BookmarkManager, replacing the bookmarks used to begin the transaction. The user needs to + * provide the BookmarkManager bean. * * @author Frantisek Hartman */ @@ -46,7 +44,6 @@ public class BookmarkManagementConfiguration { return advisor; } - @Bean @Role(BeanDefinition.ROLE_INFRASTRUCTURE) public BookmarkInterceptor bookmarkInterceptor() { diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/BookmarkOperationPointcut.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/BookmarkOperationPointcut.java index 7237e37cf..c9a084459 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/BookmarkOperationPointcut.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/BookmarkOperationPointcut.java @@ -13,11 +13,11 @@ package org.springframework.data.neo4j.bookmark; +import java.lang.reflect.Method; + import org.springframework.aop.support.StaticMethodMatcherPointcut; import org.springframework.data.neo4j.annotation.UseBookmark; -import java.lang.reflect.Method; - /** * Pointcut for methods marked with @{@link UseBookmark} * @@ -33,7 +33,7 @@ public class BookmarkOperationPointcut extends StaticMethodMatcherPointcut { // method matches if @UseBookmark is on class, is true and not on method or // @UseBookmark is on method and is true // it is needed to cover @UseBookmark on class and @UseBookmark(false) on method - return ((classAnnotation != null) && classAnnotation.value() && methodAnnotation == null) || - ((methodAnnotation != null) && methodAnnotation.value()); + return ((classAnnotation != null) && classAnnotation.value() && methodAnnotation == null) + || ((methodAnnotation != null) && methodAnnotation.value()); } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/CaffeineBookmarkManager.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/CaffeineBookmarkManager.java index 19a7d8809..e96bf70e0 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/CaffeineBookmarkManager.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/bookmark/CaffeineBookmarkManager.java @@ -13,13 +13,13 @@ package org.springframework.data.neo4j.bookmark; -import com.github.benmanes.caffeine.cache.Cache; -import com.github.benmanes.caffeine.cache.Caffeine; - import java.util.Collection; import java.util.HashSet; import java.util.concurrent.TimeUnit; +import com.github.benmanes.caffeine.cache.Cache; +import com.github.benmanes.caffeine.cache.Caffeine; + /** * Implementation of the bookmark manager using Caffeine cache *

@@ -32,10 +32,7 @@ public class CaffeineBookmarkManager implements BookmarkManager { private final Cache cache; public CaffeineBookmarkManager() { - cache = Caffeine.newBuilder() - .maximumSize(10_000) - .expireAfterWrite(1, TimeUnit.MINUTES) - .build(); + cache = Caffeine.newBuilder().maximumSize(10_000).expireAfterWrite(1, TimeUnit.MINUTES).build(); } /** diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/conversion/MetaDataDrivenConversionService.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/conversion/MetaDataDrivenConversionService.java index dc3c63bb0..ab0e609f9 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/conversion/MetaDataDrivenConversionService.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/conversion/MetaDataDrivenConversionService.java @@ -13,23 +13,22 @@ package org.springframework.data.neo4j.conversion; +import java.lang.reflect.ParameterizedType; + import org.neo4j.ogm.metadata.ClassInfo; import org.neo4j.ogm.metadata.FieldInfo; import org.neo4j.ogm.metadata.MetaData; -import org.neo4j.ogm.metadata.MethodInfo; import org.neo4j.ogm.typeconversion.AttributeConverter; import org.neo4j.ogm.typeconversion.ConversionCallback; import org.neo4j.ogm.typeconversion.ProxyAttributeConverter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.core.convert.support.GenericConversionService; import org.springframework.core.convert.converter.Converter; - -import java.lang.reflect.ParameterizedType; +import org.springframework.core.convert.support.GenericConversionService; /** - * Specialisation of {@link GenericConversionService} that creates Spring-compatible converters from those known by the mapping - * {@link MetaData}, allowing the OGM type converters to be reused throughout a Spring application. + * Specialisation of {@link GenericConversionService} that creates Spring-compatible converters from those known by the + * mapping {@link MetaData}, allowing the OGM type converters to be reused throughout a Spring application. * * @author Adam George * @author Luanne Misquitta @@ -37,80 +36,77 @@ import java.lang.reflect.ParameterizedType; */ public class MetaDataDrivenConversionService extends GenericConversionService implements ConversionCallback { - private static final Logger logger = LoggerFactory.getLogger(MetaDataDrivenConversionService.class); + private static final Logger logger = LoggerFactory.getLogger(MetaDataDrivenConversionService.class); - /** - * Constructs a new {@link MetaDataDrivenConversionService} based on the given {@link MetaData}. - * - * @param metaData The OGM {@link MetaData} from which to elicit type converters configured in the underlying object-graph - * mapping layer - */ - public MetaDataDrivenConversionService(MetaData metaData) { - metaData.registerConversionCallback(this); + /** + * Constructs a new {@link MetaDataDrivenConversionService} based on the given {@link MetaData}. + * + * @param metaData The OGM {@link MetaData} from which to elicit type converters configured in the underlying + * object-graph mapping layer + */ + public MetaDataDrivenConversionService(MetaData metaData) { + metaData.registerConversionCallback(this); - for (ClassInfo classInfo : metaData.persistentEntities()) { - for (FieldInfo fieldInfo : classInfo.propertyFields()) { - if (fieldInfo.hasPropertyConverter()) { - addWrappedConverter(fieldInfo.getPropertyConverter()); - } - } - } - } + for (ClassInfo classInfo : metaData.persistentEntities()) { + for (FieldInfo fieldInfo : classInfo.propertyFields()) { + if (fieldInfo.hasPropertyConverter()) { + addWrappedConverter(fieldInfo.getPropertyConverter()); + } + } + } + } - @SuppressWarnings({ "unchecked", "rawtypes" }) - private void addWrappedConverter(final AttributeConverter attributeConverter) { - if (attributeConverter instanceof ProxyAttributeConverter) { - return; - } + @SuppressWarnings({ "unchecked", "rawtypes" }) + private void addWrappedConverter(final AttributeConverter attributeConverter) { + if (attributeConverter instanceof ProxyAttributeConverter) { + return; + } - Converter toGraphConverter = new Converter() { - @Override - public Object convert(Object source) { - return attributeConverter.toGraphProperty(source); - } - }; - Converter toEntityConverter = new Converter() { - @Override - public Object convert(Object source) { - return attributeConverter.toEntityAttribute(source); - } - }; + Converter toGraphConverter = new Converter() { + @Override + public Object convert(Object source) { + return attributeConverter.toGraphProperty(source); + } + }; + Converter toEntityConverter = new Converter() { + @Override + public Object convert(Object source) { + return attributeConverter.toEntityAttribute(source); + } + }; + ParameterizedType pt = (ParameterizedType) attributeConverter.getClass().getGenericInterfaces()[0]; + Class sourceType, targetType; + if (pt.getActualTypeArguments()[0] instanceof Class) { + sourceType = (Class) pt.getActualTypeArguments()[0]; + } else { // the argument may be a Collection for example + sourceType = (Class) ((ParameterizedType) pt.getActualTypeArguments()[0]).getActualTypeArguments()[0]; + } - ParameterizedType pt = (ParameterizedType) attributeConverter.getClass().getGenericInterfaces()[0]; - Class sourceType, targetType; - if (pt.getActualTypeArguments()[0] instanceof Class) { - sourceType = (Class) pt.getActualTypeArguments()[0]; - } - else { //the argument may be a Collection for example - sourceType = (Class)((ParameterizedType) pt.getActualTypeArguments()[0]).getActualTypeArguments()[0]; - } + if (pt.getActualTypeArguments()[1] instanceof Class) { + targetType = (Class) pt.getActualTypeArguments()[1]; + } else { + targetType = (Class) ((ParameterizedType) pt.getActualTypeArguments()[1]).getActualTypeArguments()[1]; - if (pt.getActualTypeArguments()[1] instanceof Class) { - targetType = (Class) pt.getActualTypeArguments()[1]; - } - else { - targetType = (Class)((ParameterizedType) pt.getActualTypeArguments()[1]).getActualTypeArguments()[1]; + } - } + if (canConvert(sourceType, targetType) && canConvert(targetType, sourceType)) { + logger.info("Not adding Spring-compatible converter for " + attributeConverter.getClass() + + " because one that does the same job has already been registered with the ConversionService."); + } else { + // It could be argued that this is wrong as it potentially overrides a registered converted that doesn't handle + // both directions, but I've decided that it's better to ensure the same converter is used for load and save. + addConverter(sourceType, targetType, toGraphConverter); + addConverter(targetType, sourceType, toEntityConverter); + } + } - if (canConvert(sourceType, targetType) && canConvert(targetType, sourceType)) { - logger.info("Not adding Spring-compatible converter for " + attributeConverter.getClass() - + " because one that does the same job has already been registered with the ConversionService."); - } else { - // It could be argued that this is wrong as it potentially overrides a registered converted that doesn't handle - // both directions, but I've decided that it's better to ensure the same converter is used for load and save. - addConverter(sourceType, targetType, toGraphConverter); - addConverter(targetType, sourceType, toEntityConverter); - } - } - - @Override - public T convert(Class targetType, Object value) { - if (value == null) { - return null; - } - return convert(value, targetType); - } + @Override + public T convert(Class targetType, Object value) { + if (value == null) { + return null; + } + return convert(value, targetType); + } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/conversion/PointConverter.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/conversion/PointConverter.java index f434e5236..e2be97b50 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/conversion/PointConverter.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/conversion/PointConverter.java @@ -11,15 +11,14 @@ * */ - package org.springframework.data.neo4j.conversion; -import org.neo4j.ogm.typeconversion.CompositeAttributeConverter; -import org.springframework.data.geo.Point; - import java.util.HashMap; import java.util.Map; +import org.neo4j.ogm.typeconversion.CompositeAttributeConverter; +import org.springframework.data.geo.Point; + /** * Converts latitude and longitude properties on a node entity to an instance of Point and vice-versa. * @@ -28,24 +27,24 @@ import java.util.Map; */ public class PointConverter implements CompositeAttributeConverter { - @Override - public Map toGraphProperties(Point point) { - Map properties = new HashMap<>(); - if (point != null) { - properties.put("latitude", point.getX()); - properties.put("longitude", point.getY()); - } - return properties; - } + @Override + public Map toGraphProperties(Point point) { + Map properties = new HashMap<>(); + if (point != null) { + properties.put("latitude", point.getX()); + properties.put("longitude", point.getY()); + } + return properties; + } - @Override - public Point toEntityAttribute(Map map) { - Double latitude = (Double) map.get("latitude"); - Double longitude = (Double) map.get("longitude"); - if (latitude != null && longitude != null) { - return new Point(latitude, longitude); - } - return null; - } + @Override + public Point toEntityAttribute(Map map) { + Double latitude = (Double) map.get("latitude"); + Double longitude = (Double) map.get("longitude"); + if (latitude != null && longitude != null) { + return new Point(latitude, longitude); + } + return null; + } -} \ No newline at end of file +} diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/exception/Neo4jErrorStatusCodes.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/exception/Neo4jErrorStatusCodes.java index f58de89d8..92f7021ea 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/exception/Neo4jErrorStatusCodes.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/exception/Neo4jErrorStatusCodes.java @@ -60,14 +60,18 @@ public class Neo4jErrorStatusCodes { errors.put("Neo.ClientError.Statement.SemanticError", NonTransientDataAccessException.class); errors.put("Neo.ClientError.Statement.SyntaxError", InvalidDataAccessResourceUsageException.class); errors.put("Neo.ClientError.Statement.TypeError", InvalidDataAccessResourceUsageException.class); - errors.put("Neo.ClientError.Transaction.ForbiddenDueToTransactionType", InvalidDataAccessResourceUsageException.class); - errors.put("Neo.ClientError.Transaction.TransactionAccessedConcurrently", InvalidDataAccessResourceUsageException.class); - errors.put("Neo.ClientError.Transaction.TransactionEventHandlerFailed", InvalidDataAccessResourceUsageException.class); + errors.put("Neo.ClientError.Transaction.ForbiddenDueToTransactionType", + InvalidDataAccessResourceUsageException.class); + errors.put("Neo.ClientError.Transaction.TransactionAccessedConcurrently", + InvalidDataAccessResourceUsageException.class); + errors.put("Neo.ClientError.Transaction.TransactionEventHandlerFailed", + InvalidDataAccessResourceUsageException.class); errors.put("Neo.ClientError.Transaction.TransactionHookFailed", InvalidDataAccessResourceUsageException.class); errors.put("Neo.ClientError.Transaction.TransactionMarkedAsFailed", ConcurrencyFailureException.class); errors.put("Neo.ClientError.Transaction.TransactionNotFound", InvalidDataAccessResourceUsageException.class); errors.put("Neo.ClientError.Transaction.TransactionTerminated", InvalidDataAccessResourceUsageException.class); - errors.put("Neo.ClientError.Transaction.TransactionValidationFailed", InvalidDataAccessResourceUsageException.class); + errors.put("Neo.ClientError.Transaction.TransactionValidationFailed", + InvalidDataAccessResourceUsageException.class); errors.put("Neo.DatabaseError.General.IndexCorruptionDetected", DataAccessResourceFailureException.class); errors.put("Neo.DatabaseError.General.SchemaCorruptionDetected", DataAccessResourceFailureException.class); errors.put("Neo.DatabaseError.General.UnknownError", UncategorizedDataAccessException.class); diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jMappingContext.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jMappingContext.java index 0da874d68..a396a5aa2 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jMappingContext.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jMappingContext.java @@ -12,10 +12,14 @@ */ package org.springframework.data.neo4j.mapping; +import static java.util.Collections.*; + +import java.lang.reflect.Field; + import org.neo4j.ogm.annotation.typeconversion.Convert; -import org.neo4j.ogm.metadata.MetaData; import org.neo4j.ogm.metadata.ClassInfo; import org.neo4j.ogm.metadata.FieldInfo; +import org.neo4j.ogm.metadata.MetaData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.mapping.context.AbstractMappingContext; @@ -23,18 +27,10 @@ import org.springframework.data.mapping.model.Property; import org.springframework.data.mapping.model.SimpleTypeHolder; import org.springframework.data.util.TypeInformation; -import java.beans.PropertyDescriptor; -import java.lang.reflect.Field; -import java.util.Objects; - -import static java.util.Collections.singleton; - /** - * This class implements Spring Data's MappingContext interface, scavenging the required data from the OGM's metadata in order - * to for SDN to play nicely with Spring Data REST. - * - * The main thing to note is that this class is effectively a container shim for {@code ClassInfo} objects. We don't reload all - * the mapping information again. + * This class implements Spring Data's MappingContext interface, scavenging the required data from the OGM's metadata in + * order to for SDN to play nicely with Spring Data REST. The main thing to note is that this class is effectively a + * container shim for {@code ClassInfo} objects. We don't reload all the mapping information again. * * @author Vince Bickers * @author Adam George @@ -43,80 +39,84 @@ import static java.util.Collections.singleton; */ public class Neo4jMappingContext extends AbstractMappingContext, Neo4jPersistentProperty> { - private static final Logger logger = LoggerFactory.getLogger(Neo4jMappingContext.class); + private static final Logger logger = LoggerFactory.getLogger(Neo4jMappingContext.class); - private final MetaData metaData; + private final MetaData metaData; - /** - * Constructs a new {@link Neo4jMappingContext} based on the persistent entities in the given {@link MetaData}. - * - * @param metaData The OGM {@link MetaData} from which to extract the persistent entities - */ - public Neo4jMappingContext(MetaData metaData) { - this.metaData = metaData; - metaData.persistentEntities().stream().filter(k -> k.getUnderlyingClass() != null).forEach(k -> addPersistentEntity(k.getUnderlyingClass())); - logger.info("Neo4jMappingContext initialisation completed"); - } + /** + * Constructs a new {@link Neo4jMappingContext} based on the persistent entities in the given {@link MetaData}. + * + * @param metaData The OGM {@link MetaData} from which to extract the persistent entities + */ + public Neo4jMappingContext(MetaData metaData) { + this.metaData = metaData; + metaData.persistentEntities().stream().filter(k -> k.getUnderlyingClass() != null) + .forEach(k -> addPersistentEntity(k.getUnderlyingClass())); + logger.info("Neo4jMappingContext initialisation completed"); + } - @Override - protected Neo4jPersistentEntity createPersistentEntity(TypeInformation typeInformation) { - logger.debug("Creating Neo4jPersistentEntity from type information: {}", typeInformation); - return new Neo4jPersistentEntity<>(typeInformation); - } + @Override + protected Neo4jPersistentEntity createPersistentEntity(TypeInformation typeInformation) { + logger.debug("Creating Neo4jPersistentEntity from type information: {}", typeInformation); + return new Neo4jPersistentEntity<>(typeInformation); + } - @Override - protected Neo4jPersistentProperty createPersistentProperty(Property property, Neo4jPersistentEntity owner, SimpleTypeHolder simpleTypeHolder) { + @Override + protected Neo4jPersistentProperty createPersistentProperty(Property property, Neo4jPersistentEntity owner, + SimpleTypeHolder simpleTypeHolder) { - ClassInfo owningClassInfo = this.metaData.classInfo(owner.getType().getName()); + ClassInfo owningClassInfo = this.metaData.classInfo(owner.getType().getName()); - Field propertyField = property.getField().orElse(null); + Field propertyField = property.getField().orElse(null); - if (!property.isFieldBacked() && owningClassInfo != null) { - FieldInfo fieldInfo = owningClassInfo.propertyFieldByName(property.getName()); - if (fieldInfo == null) { - fieldInfo = owningClassInfo.relationshipFieldByName(property.getName()); - } - if (fieldInfo != null) { - propertyField = owningClassInfo.getField(fieldInfo); - } else { - // there is no field, probably because descriptor gave us a field name derived from a getter - logger.debug("Couldn't resolve a concrete field corresponding to property {} on {} ", - property.getName(), owningClassInfo.name()); - } - } + if (!property.isFieldBacked() && owningClassInfo != null) { + FieldInfo fieldInfo = owningClassInfo.propertyFieldByName(property.getName()); + if (fieldInfo == null) { + fieldInfo = owningClassInfo.relationshipFieldByName(property.getName()); + } + if (fieldInfo != null) { + propertyField = owningClassInfo.getField(fieldInfo); + } else { + // there is no field, probably because descriptor gave us a field name derived from a getter + logger.debug("Couldn't resolve a concrete field corresponding to property {} on {} ", property.getName(), + owningClassInfo.name()); + } + } - return new Neo4jPersistentProperty(owningClassInfo, property, owner, - updateSimpleTypeHolder(simpleTypeHolder, propertyField)); - } + return new Neo4jPersistentProperty(owningClassInfo, property, owner, + updateSimpleTypeHolder(simpleTypeHolder, propertyField)); + } - private SimpleTypeHolder updateSimpleTypeHolder(SimpleTypeHolder currentSimpleTypeHolder, Field field) { - if (field == null) { - return currentSimpleTypeHolder; - } + private SimpleTypeHolder updateSimpleTypeHolder(SimpleTypeHolder currentSimpleTypeHolder, Field field) { + if (field == null) { + return currentSimpleTypeHolder; + } - final Class fieldType = field.getType().isArray() ? field.getType().getComponentType() : field.getType(); + final Class fieldType = field.getType().isArray() ? field.getType().getComponentType() : field.getType(); - if (shouldUpdateSimpleTypes(currentSimpleTypeHolder, field, fieldType)) { - SimpleTypeHolder updatedSimpleTypeHolder = new SimpleTypeHolder(singleton(fieldType), currentSimpleTypeHolder); - setSimpleTypeHolder(updatedSimpleTypeHolder); - return updatedSimpleTypeHolder; - } - return currentSimpleTypeHolder; - } + if (shouldUpdateSimpleTypes(currentSimpleTypeHolder, field, fieldType)) { + SimpleTypeHolder updatedSimpleTypeHolder = new SimpleTypeHolder(singleton(fieldType), currentSimpleTypeHolder); + setSimpleTypeHolder(updatedSimpleTypeHolder); + return updatedSimpleTypeHolder; + } + return currentSimpleTypeHolder; + } - private boolean shouldUpdateSimpleTypes(SimpleTypeHolder currentSimpleTypeHolder, Field field, Class rawFieldType) { - if (field.isAnnotationPresent(Convert.class)) { - return true; - } + private boolean shouldUpdateSimpleTypes(SimpleTypeHolder currentSimpleTypeHolder, Field field, + Class rawFieldType) { + if (field.isAnnotationPresent(Convert.class)) { + return true; + } - if (currentSimpleTypeHolder.isSimpleType(rawFieldType) || rawFieldType.isInterface()) { - return false; - } - if (this.metaData.classInfo(rawFieldType.getName()) == null) { - logger.info("No class information found in OGM meta-data for {} so treating as simple type for SD Commons", rawFieldType); - return true; - } - return false; - } + if (currentSimpleTypeHolder.isSimpleType(rawFieldType) || rawFieldType.isInterface()) { + return false; + } + if (this.metaData.classInfo(rawFieldType.getName()) == null) { + logger.info("No class information found in OGM meta-data for {} so treating as simple type for SD Commons", + rawFieldType); + return true; + } + return false; + } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jPersistentEntity.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jPersistentEntity.java index 01317edab..7eba25edd 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jPersistentEntity.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jPersistentEntity.java @@ -12,8 +12,6 @@ */ package org.springframework.data.neo4j.mapping; -import java.util.Optional; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.mapping.PersistentProperty; @@ -21,22 +19,20 @@ import org.springframework.data.mapping.model.BasicPersistentEntity; import org.springframework.data.util.TypeInformation; /** - * This class implements Spring Data's PersistentEntity interface, scavenging the required data from the OGM's mapping classes - * in order to for SDN to play nicely with Spring Data REST. - * - * The main thing to note is that this class is effectively a shim for ClassInfo. We don't reload all the mapping information - * again. + * This class implements Spring Data's PersistentEntity interface, scavenging the required data from the OGM's mapping + * classes in order to for SDN to play nicely with Spring Data REST. The main thing to note is that this class is + * effectively a shim for ClassInfo. We don't reload all the mapping information again. *

* These attributes do not appear to be used/needed for SDN 4 to inter-operate correctly with SD-REST: *

*
    - *
  • typeAlias
  • - *
  • typeInformation
  • - *
  • preferredConstructor (we always use the default constructor)
  • - *
  • versionProperty
  • + *
  • typeAlias
  • + *
  • typeInformation
  • + *
  • preferredConstructor (we always use the default constructor)
  • + *
  • versionProperty
  • *
- * Consequently their associated getter methods always return default values of null or [true|false] However, because these - * method calls are not expected, we also log a warning message if they get invoked + * Consequently their associated getter methods always return default values of null or [true|false] However, because + * these method calls are not expected, we also log a warning message if they get invoked * * @author Vince Bickers * @author Adam George @@ -45,33 +41,33 @@ import org.springframework.data.util.TypeInformation; */ public class Neo4jPersistentEntity extends BasicPersistentEntity { - private static final Logger logger = LoggerFactory.getLogger(Neo4jPersistentEntity.class); + private static final Logger logger = LoggerFactory.getLogger(Neo4jPersistentEntity.class); - /** - * Constructs a new {@link Neo4jPersistentEntity} based on the given type information. - * - * @param information The {@link TypeInformation} upon which to base this persistent entity. - */ - public Neo4jPersistentEntity(TypeInformation information) { - super(information); - } + /** + * Constructs a new {@link Neo4jPersistentEntity} based on the given type information. + * + * @param information The {@link TypeInformation} upon which to base this persistent entity. + */ + public Neo4jPersistentEntity(TypeInformation information) { + super(information); + } - @Override - public boolean hasVersionProperty() { - logger.debug("[entity].hasVersionProperty() returns false"); // by design - return false; - } + @Override + public boolean hasVersionProperty() { + logger.debug("[entity].hasVersionProperty() returns false"); // by design + return false; + } - @Override - public Neo4jPersistentProperty getVersionProperty() { - logger.debug("[entity].getVersionProperty() returns null"); // by design - return null; - } + @Override + public Neo4jPersistentProperty getVersionProperty() { + logger.debug("[entity].getVersionProperty() returns null"); // by design + return null; + } - @Override - public boolean isVersionProperty(PersistentProperty property) { - logger.debug("[entity].isIdProperty({}) returns false", property); // again, by design - return false; - } + @Override + public boolean isVersionProperty(PersistentProperty property) { + logger.debug("[entity].isIdProperty({}) returns false", property); // again, by design + return false; + } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jPersistentProperty.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jPersistentProperty.java index 1d663c652..95b13fb86 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jPersistentProperty.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jPersistentProperty.java @@ -27,11 +27,10 @@ import org.springframework.data.mapping.model.SimpleTypeHolder; import org.springframework.data.neo4j.annotation.QueryResult; /** - * This class implements Spring Data's PersistentProperty interface, scavenging the required data from the - * OGM's mapping classes in order to for SDN to play nicely with Spring Data REST. - * The main thing to note is that this class is effectively a shim for FieldInfo. We don't reload - * all the mapping information again. - * We do not yet support getter/setter access to entity properties. + * This class implements Spring Data's PersistentProperty interface, scavenging the required data from the OGM's mapping + * classes in order to for SDN to play nicely with Spring Data REST. The main thing to note is that this class is + * effectively a shim for FieldInfo. We don't reload all the mapping information again. We do not yet support + * getter/setter access to entity properties. *

* These attributes do not appear to be used/needed for SDN 4 to inter-operate correctly with SD-REST: *

@@ -42,8 +41,8 @@ import org.springframework.data.neo4j.annotation.QueryResult; *
  • isTransient (we never supply transient classes to the Spring mapping context)
  • *
  • isWritable (we don't currently support read-only fields)
  • * - * Consequently their associated getter methods always return default values of null or [true|false] - * However, because these method calls are not expected, we also log a warning message if they get invoked + * Consequently their associated getter methods always return default values of null or [true|false] However, because + * these method calls are not expected, we also log a warning message if they get invoked * * @author Vince Bickers * @author Adam George @@ -58,46 +57,51 @@ public class Neo4jPersistentProperty extends AnnotationBasedPersistentProperty owner, SimpleTypeHolder simpleTypeHolder) { - super(property, owner, simpleTypeHolder); - if (owningClassInfo == null) { - logger.warn("Owning ClassInfo is null for property: {}", property); - } - if ((owningClassInfo !=null && owningClassInfo.getUnderlyingClass()!=null && simpleTypeHolder.isSimpleType(owningClassInfo.getUnderlyingClass())) - || owner.getType().isEnum()) { //TODO refactor all these null checks - this.isIdProperty = false; - } - else { - this.isIdProperty = resolveWhetherIdProperty(owningClassInfo, property); - } - } + /** + * Constructs a new {@link Neo4jPersistentProperty} based on the given arguments. + * + * @param owningClassInfo The {@link ClassInfo} of the object of which the property field is a member + * @param property The property + * @param owner The owning {@link PersistentEntity} that corresponds to the given {@code ClassInfo} + * @param simpleTypeHolder The {@link SimpleTypeHolder} that dictates whether the type of this property is considered + * simple or not + */ + public Neo4jPersistentProperty(ClassInfo owningClassInfo, Property property, + PersistentEntity owner, SimpleTypeHolder simpleTypeHolder) { + super(property, owner, simpleTypeHolder); + if (owningClassInfo == null) { + logger.warn("Owning ClassInfo is null for property: {}", property); + } + if ((owningClassInfo != null && owningClassInfo.getUnderlyingClass() != null + && simpleTypeHolder.isSimpleType(owningClassInfo.getUnderlyingClass())) || owner.getType().isEnum()) { // TODO + // refactor + // all + // these + // null + // checks + this.isIdProperty = false; + } else { + this.isIdProperty = resolveWhetherIdProperty(owningClassInfo, property); + } + } - private static boolean resolveWhetherIdProperty(ClassInfo owningClassInfo, Property property) { - if (owningClassInfo == null || owningClassInfo.isInterface() || owningClassInfo.annotationsInfo().get(QueryResult.class.getName()) != null || owningClassInfo.isEnum()) { - // no ID properties on @QueryResult or non-concrete objects - return false; - } else { - try { - return property.getField() // - .filter(field ->owningClassInfo.getField(owningClassInfo.identityField()).equals(field)) // - .isPresent();} - catch (MetadataException noIdentityField) { - logger.warn("No identity field found for class of type: {} when creating persistent property for : {}", - owningClassInfo.name(), property); - return false; - } - } - } + private static boolean resolveWhetherIdProperty(ClassInfo owningClassInfo, Property property) { + if (owningClassInfo == null || owningClassInfo.isInterface() + || owningClassInfo.annotationsInfo().get(QueryResult.class.getName()) != null || owningClassInfo.isEnum()) { + // no ID properties on @QueryResult or non-concrete objects + return false; + } else { + try { + return property.getField() // + .filter(field -> owningClassInfo.getField(owningClassInfo.identityField()).equals(field)) // + .isPresent(); + } catch (MetadataException noIdentityField) { + logger.warn("No identity field found for class of type: {} when creating persistent property for : {}", + owningClassInfo.name(), property); + return false; + } + } + } @Override public boolean isIdProperty() { @@ -123,8 +127,8 @@ public class Neo4jPersistentProperty extends AnnotationBasedPersistentProperty * This implementation works by looking for non-transient members annotated with @Relationship. *

    @@ -133,10 +137,8 @@ public class Neo4jPersistentProperty extends AnnotationBasedPersistentProperty extends PagingAndSo /** * Returns a {@link Page} of entities meeting the paging restriction provided in the {@code Pageable} object. - * {@link Page#getTotalPages()} returns an estimation of the total number of pages and should not be relied upon for accuracy. + * {@link Page#getTotalPages()} returns an estimation of the total number of pages and should not be relied upon for + * accuracy. * * @param pageable * @return a page of entities @@ -66,7 +67,8 @@ public interface Neo4jRepository extends PagingAndSo /** * Returns a {@link Page} of entities meeting the paging restriction provided in the {@code Pageable} object. - * {@link Page#getTotalPages()} returns an estimation of the total number of pages and should not be relied upon for accuracy. + * {@link Page#getTotalPages()} returns an estimation of the total number of pages and should not be relied upon for + * accuracy. * * @param pageable * @param depth diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/cdi/Neo4jCdiRepositoryBean.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/cdi/Neo4jCdiRepositoryBean.java index cbc6c288a..179036a33 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/cdi/Neo4jCdiRepositoryBean.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/cdi/Neo4jCdiRepositoryBean.java @@ -16,17 +16,18 @@ package org.springframework.data.neo4j.repository.cdi; -import org.neo4j.ogm.session.Session; -import org.springframework.data.neo4j.repository.support.Neo4jRepositoryFactory; -import org.springframework.data.repository.cdi.CdiRepositoryBean; -import org.springframework.data.repository.config.CustomRepositoryImplementationDetector; +import java.lang.annotation.Annotation; +import java.util.Optional; +import java.util.Set; import javax.enterprise.context.spi.CreationalContext; import javax.enterprise.inject.spi.Bean; import javax.enterprise.inject.spi.BeanManager; -import java.lang.annotation.Annotation; -import java.util.Optional; -import java.util.Set; + +import org.neo4j.ogm.session.Session; +import org.springframework.data.neo4j.repository.support.Neo4jRepositoryFactory; +import org.springframework.data.repository.cdi.CdiRepositoryBean; +import org.springframework.data.repository.config.CustomRepositoryImplementationDetector; /** * {@link org.springframework.data.repository.cdi.CdiRepositoryBean} to create Neo4j repository instances via CDI. @@ -35,33 +36,34 @@ import java.util.Set; * @since 4.2 */ public class Neo4jCdiRepositoryBean extends CdiRepositoryBean { - private final Bean sessionBean; + private final Bean sessionBean; - /** - * Creates a new {@link Neo4jCdiRepositoryBean}. - * - * @param sessionBean must not be {@literal null}. - * @param qualifiers must not be {@literal null}. - * @param repositoryType must not be {@literal null}. - * @param beanManager must not be {@literal null}. - * @param detector detector for the custom {@link org.springframework.data.repository.Repository} implementations - * {@link CustomRepositoryImplementationDetector}, can be {@literal null}. - */ - public Neo4jCdiRepositoryBean(Bean sessionBean, Set qualifiers, Class repositoryType, - BeanManager beanManager, Optional detector) { - super(qualifiers, repositoryType, beanManager, detector); - this.sessionBean = sessionBean; - } + /** + * Creates a new {@link Neo4jCdiRepositoryBean}. + * + * @param sessionBean must not be {@literal null}. + * @param qualifiers must not be {@literal null}. + * @param repositoryType must not be {@literal null}. + * @param beanManager must not be {@literal null}. + * @param detector detector for the custom {@link org.springframework.data.repository.Repository} implementations + * {@link CustomRepositoryImplementationDetector}, can be {@literal null}. + */ + public Neo4jCdiRepositoryBean(Bean sessionBean, Set qualifiers, Class repositoryType, + BeanManager beanManager, Optional detector) { + super(qualifiers, repositoryType, beanManager, detector); + this.sessionBean = sessionBean; + } - @Override - protected T create(CreationalContext creationalContext, Class repositoryType, Optional customImplementation) { + @Override + protected T create(CreationalContext creationalContext, Class repositoryType, + Optional customImplementation) { - Session session = getDependencyInstance(sessionBean, Session.class); + Session session = getDependencyInstance(sessionBean, Session.class); - Neo4jRepositoryFactory factory = new Neo4jRepositoryFactory(session); + Neo4jRepositoryFactory factory = new Neo4jRepositoryFactory(session); - return customImplementation // - .map(impl -> factory.getRepository(repositoryType, impl)) // - .orElseGet(() -> factory.getRepository(repositoryType)); - } + return customImplementation // + .map(impl -> factory.getRepository(repositoryType, impl)) // + .orElseGet(() -> factory.getRepository(repositoryType)); + } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/cdi/Neo4jCdiRepositoryExtension.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/cdi/Neo4jCdiRepositoryExtension.java index 621b7aa0d..16c78d4ef 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/cdi/Neo4jCdiRepositoryExtension.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/cdi/Neo4jCdiRepositoryExtension.java @@ -16,18 +16,6 @@ package org.springframework.data.neo4j.repository.cdi; -import org.neo4j.ogm.session.Session; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.data.repository.cdi.CdiRepositoryBean; -import org.springframework.data.repository.cdi.CdiRepositoryExtensionSupport; - -import javax.enterprise.event.Observes; -import javax.enterprise.inject.UnsatisfiedResolutionException; -import javax.enterprise.inject.spi.AfterBeanDiscovery; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; -import javax.enterprise.inject.spi.ProcessBean; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.util.HashMap; @@ -37,6 +25,19 @@ import java.util.Map.Entry; import java.util.Optional; import java.util.Set; +import javax.enterprise.event.Observes; +import javax.enterprise.inject.UnsatisfiedResolutionException; +import javax.enterprise.inject.spi.AfterBeanDiscovery; +import javax.enterprise.inject.spi.Bean; +import javax.enterprise.inject.spi.BeanManager; +import javax.enterprise.inject.spi.ProcessBean; + +import org.neo4j.ogm.session.Session; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.data.repository.cdi.CdiRepositoryBean; +import org.springframework.data.repository.cdi.CdiRepositoryExtensionSupport; + /** * CDI extension to export Neo4j repositories. * @@ -45,68 +46,66 @@ import java.util.Set; */ public class Neo4jCdiRepositoryExtension extends CdiRepositoryExtensionSupport { - private static final Logger LOG = LoggerFactory.getLogger(Neo4jCdiRepositoryExtension.class); - private final Map, Bean> sessions = new HashMap, Bean>(); + private static final Logger LOG = LoggerFactory.getLogger(Neo4jCdiRepositoryExtension.class); + private final Map, Bean> sessions = new HashMap, Bean>(); - public Neo4jCdiRepositoryExtension() { - LOG.info("Activating CDI extension for Spring Data Neo4j repositories."); - } + public Neo4jCdiRepositoryExtension() { + LOG.info("Activating CDI extension for Spring Data Neo4j repositories."); + } - @SuppressWarnings("unchecked") - void processBean(@Observes ProcessBean processBean) { - Bean bean = processBean.getBean(); + @SuppressWarnings("unchecked") + void processBean(@Observes ProcessBean processBean) { + Bean bean = processBean.getBean(); - for (Type type : bean.getTypes()) { - if (type instanceof Class && Session.class.isAssignableFrom((Class) type)) { + for (Type type : bean.getTypes()) { + if (type instanceof Class && Session.class.isAssignableFrom((Class) type)) { - if (LOG.isDebugEnabled()) { - LOG.debug(String.format("Discovered %s with qualifiers %s.", Session.class.getName(), - bean.getQualifiers())); - } + if (LOG.isDebugEnabled()) { + LOG.debug(String.format("Discovered %s with qualifiers %s.", Session.class.getName(), bean.getQualifiers())); + } - sessions.put(new HashSet(bean.getQualifiers()), (Bean) bean); - } - } - } + sessions.put(new HashSet(bean.getQualifiers()), (Bean) bean); + } + } + } - void afterBeanDiscovery(@Observes AfterBeanDiscovery afterBeanDiscovery, BeanManager beanManager) { + void afterBeanDiscovery(@Observes AfterBeanDiscovery afterBeanDiscovery, BeanManager beanManager) { - for (Entry, Set> entry : getRepositoryTypes()) { + for (Entry, Set> entry : getRepositoryTypes()) { - Class repositoryType = entry.getKey(); - Set qualifiers = entry.getValue(); + Class repositoryType = entry.getKey(); + Set qualifiers = entry.getValue(); - // Create the bean representing the repository. - CdiRepositoryBean repositoryBean = createRepositoryBean(repositoryType, qualifiers, beanManager); - if (LOG.isInfoEnabled()) { - LOG.info(String.format("Registering bean for %s with qualifiers %s.", repositoryType.getName(), - qualifiers)); - } + // Create the bean representing the repository. + CdiRepositoryBean repositoryBean = createRepositoryBean(repositoryType, qualifiers, beanManager); + if (LOG.isInfoEnabled()) { + LOG.info(String.format("Registering bean for %s with qualifiers %s.", repositoryType.getName(), qualifiers)); + } - // Register the bean to the container. - registerBean(repositoryBean); - afterBeanDiscovery.addBean(repositoryBean); - } - } + // Register the bean to the container. + registerBean(repositoryBean); + afterBeanDiscovery.addBean(repositoryBean); + } + } - /** - * Creates a {@link Bean}. - * - * @param The type of the repository. - * @param repositoryType The class representing the repository. - * @param beanManager The BeanManager instance. - * @return The bean. - */ - private CdiRepositoryBean createRepositoryBean(Class repositoryType, Set qualifiers, - BeanManager beanManager) { - Bean sessionBean = this.sessions.get(qualifiers); + /** + * Creates a {@link Bean}. + * + * @param The type of the repository. + * @param repositoryType The class representing the repository. + * @param beanManager The BeanManager instance. + * @return The bean. + */ + private CdiRepositoryBean createRepositoryBean(Class repositoryType, Set qualifiers, + BeanManager beanManager) { + Bean sessionBean = this.sessions.get(qualifiers); - if (sessionBean == null) { - throw new UnsatisfiedResolutionException(String.format( - "Unable to resolve a bean for '%s' with qualifiers %s.", Session.class.getName(), qualifiers)); - } + if (sessionBean == null) { + throw new UnsatisfiedResolutionException( + String.format("Unable to resolve a bean for '%s' with qualifiers %s.", Session.class.getName(), qualifiers)); + } - return new Neo4jCdiRepositoryBean(sessionBean, qualifiers, repositoryType, beanManager, - Optional.of(getCustomImplementationDetector())); - } + return new Neo4jCdiRepositoryBean(sessionBean, qualifiers, repositoryType, beanManager, + Optional.of(getCustomImplementationDetector())); + } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/EnableNeo4jRepositories.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/EnableNeo4jRepositories.java index 2daef0cb2..14c67dfb0 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/EnableNeo4jRepositories.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/EnableNeo4jRepositories.java @@ -13,7 +13,12 @@ package org.springframework.data.neo4j.repository.config; -import java.lang.annotation.*; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; import org.neo4j.ogm.session.SessionFactory; import org.springframework.context.annotation.ComponentScan; @@ -37,93 +42,93 @@ import org.springframework.transaction.PlatformTransactionManager; @Import(Neo4jRepositoriesRegistrar.class) public @interface EnableNeo4jRepositories { - /** - * Alias for the {@link #basePackages()} attribute. Allows for more concise annotation declarations e.g.: - * {@code @EnableExperimentalNeo4jRepositories("org.my.pkg")} instead of - * {@code @EnableExperimentalNeo4jRepositories(basePackages="org.my.pkg")}. - */ - String[] value() default {}; + /** + * Alias for the {@link #basePackages()} attribute. Allows for more concise annotation declarations e.g.: + * {@code @EnableExperimentalNeo4jRepositories("org.my.pkg")} instead of + * {@code @EnableExperimentalNeo4jRepositories(basePackages="org.my.pkg")}. + */ + String[] value() default {}; - /** - * Base packages to scan for annotated components. {@link #value()} is an alias for (and mutually exclusive with) this - * attribute. Use {@link #basePackageClasses()} for a type-safe alternative to String-based package names. - */ - String[] basePackages() default {}; + /** + * Base packages to scan for annotated components. {@link #value()} is an alias for (and mutually exclusive with) this + * attribute. Use {@link #basePackageClasses()} for a type-safe alternative to String-based package names. + */ + String[] basePackages() default {}; - /** - * Type-safe alternative to {@link #basePackages()} for specifying the packages to scan for annotated components. The - * package of each class specified will be scanned. Consider creating a special no-op marker class or interface in - * each package that serves no purpose other than being referenced by this attribute. - */ - Class[] basePackageClasses() default {}; + /** + * Type-safe alternative to {@link #basePackages()} for specifying the packages to scan for annotated components. The + * package of each class specified will be scanned. Consider creating a special no-op marker class or interface in + * each package that serves no purpose other than being referenced by this attribute. + */ + Class[] basePackageClasses() default {}; - /** - * Specifies which types are eligible for component scanning. Further narrows the set of candidate components from - * everything in {@link #basePackages()} to everything in the base packages that matches the given filter or filters. - */ - ComponentScan.Filter[] includeFilters() default {}; + /** + * Specifies which types are eligible for component scanning. Further narrows the set of candidate components from + * everything in {@link #basePackages()} to everything in the base packages that matches the given filter or filters. + */ + ComponentScan.Filter[] includeFilters() default {}; - /** - * Specifies which types are not eligible for component scanning. - */ - ComponentScan.Filter[] excludeFilters() default {}; + /** + * Specifies which types are not eligible for component scanning. + */ + ComponentScan.Filter[] excludeFilters() default {}; - /** - * Returns the postfix to be used when looking up custom repository implementations. Defaults to {@literal Impl}. So - * for a repository named {@code PersonRepository} the corresponding implementation class will be looked up scanning - * for {@code PersonRepositoryImpl}. - */ - String repositoryImplementationPostfix() default "Impl"; + /** + * Returns the postfix to be used when looking up custom repository implementations. Defaults to {@literal Impl}. So + * for a repository named {@code PersonRepository} the corresponding implementation class will be looked up scanning + * for {@code PersonRepositoryImpl}. + */ + String repositoryImplementationPostfix() default "Impl"; - /** - * Configures the location of where to find the Spring Data named queries properties file. Will default to - * {@code META-INFO/neo4j-named-queries.properties}. - */ - String namedQueriesLocation() default ""; + /** + * Configures the location of where to find the Spring Data named queries properties file. Will default to + * {@code META-INFO/neo4j-named-queries.properties}. + */ + String namedQueriesLocation() default ""; - /** - * Returns the key of the {@link QueryLookupStrategy} to be used for lookup queries for query methods. Defaults to - * {@link org.springframework.data.repository.query.QueryLookupStrategy.Key#CREATE_IF_NOT_FOUND}. - */ - QueryLookupStrategy.Key queryLookupStrategy() default QueryLookupStrategy.Key.CREATE_IF_NOT_FOUND; + /** + * Returns the key of the {@link QueryLookupStrategy} to be used for lookup queries for query methods. Defaults to + * {@link org.springframework.data.repository.query.QueryLookupStrategy.Key#CREATE_IF_NOT_FOUND}. + */ + QueryLookupStrategy.Key queryLookupStrategy() default QueryLookupStrategy.Key.CREATE_IF_NOT_FOUND; - /** - * Returns the {@link org.springframework.beans.factory.FactoryBean} class to be used for each repository instance. Defaults to - * {@link Neo4jRepositoryFactoryBean}. - */ - Class repositoryFactoryBeanClass() default Neo4jRepositoryFactoryBean.class; + /** + * Returns the {@link org.springframework.beans.factory.FactoryBean} class to be used for each repository instance. + * Defaults to {@link Neo4jRepositoryFactoryBean}. + */ + Class repositoryFactoryBeanClass() default Neo4jRepositoryFactoryBean.class; - /** - * Configure the repository base class to be used to create repository proxies for this particular configuration. - * - * @return - */ - Class repositoryBaseClass() default DefaultRepositoryBaseClass.class; + /** + * Configure the repository base class to be used to create repository proxies for this particular configuration. + * + * @return + */ + Class repositoryBaseClass() default DefaultRepositoryBaseClass.class; - /** - * Configures the name of the {@link SessionFactory} bean definition to be used to create repositories - * discovered through this annotation. Defaults to {@code sessionFactory}. - */ - String sessionFactoryRef() default "sessionFactory"; + /** + * Configures the name of the {@link SessionFactory} bean definition to be used to create repositories discovered + * through this annotation. Defaults to {@code sessionFactory}. + */ + String sessionFactoryRef() default "sessionFactory"; - /** - * Configures the name of the {@link PlatformTransactionManager} bean definition to be used to create repositories - * discovered through this annotation. Defaults to {@code transactionManager}. - */ - String transactionManagerRef() default "transactionManager"; + /** + * Configures the name of the {@link PlatformTransactionManager} bean definition to be used to create repositories + * discovered through this annotation. Defaults to {@code transactionManager}. + */ + String transactionManagerRef() default "transactionManager"; - /** - * Configures whether nested repository-interfaces (e.g. defined as inner classes) should be discovered by the - * repositories infrastructure. - */ - boolean considerNestedRepositories() default false; + /** + * Configures whether nested repository-interfaces (e.g. defined as inner classes) should be discovered by the + * repositories infrastructure. + */ + boolean considerNestedRepositories() default false; - /** - * Configures whether to enable default transactions for Spring Data Neo4j repositories. Defaults to {@literal true}. If - * disabled, repositories must be used behind a facade that's configuring transactions (e.g. using Spring's annotation - * driven transaction facilities) or repository methods have to be used to demarcate transactions. - * - * @return whether to enable default transactions, defaults to {@literal true}. - */ - boolean enableDefaultTransactions() default true; + /** + * Configures whether to enable default transactions for Spring Data Neo4j repositories. Defaults to {@literal true}. + * If disabled, repositories must be used behind a facade that's configuring transactions (e.g. using Spring's + * annotation driven transaction facilities) or repository methods have to be used to demarcate transactions. + * + * @return whether to enable default transactions, defaults to {@literal true}. + */ + boolean enableDefaultTransactions() default true; } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jAuditingEventListener.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jAuditingEventListener.java index 056756cd6..e8484f4af 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jAuditingEventListener.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jAuditingEventListener.java @@ -35,11 +35,11 @@ public class Neo4jAuditingEventListener extends EventListenerAdapter implements * Creates a new {@link Neo4jAuditingEventListener} using the given {@link MappingContext} and {@link AuditingHandler} * provided by the given {@link ObjectFactory}. This constructor does an additional registration to the * {@link SessionFactory}. Therefore the {@link SessionFactory} must already be instantiated. - * + * * @param auditingHandlerFactory must not be {@literal null}. */ public Neo4jAuditingEventListener(ObjectFactory auditingHandlerFactory, - SessionFactory sessionFactory) { + SessionFactory sessionFactory) { Assert.notNull(auditingHandlerFactory, "IsNewAwareAuditingHandler must not be null!"); this.auditingHandlerFactory = auditingHandlerFactory; @@ -50,7 +50,7 @@ public class Neo4jAuditingEventListener extends EventListenerAdapter implements /** * Constructor used for creating an instance in the {@link Neo4jAuditingRegistrar} to get registered in the session * "manually". The registration is done within the {@link Neo4jAuditingBeanFactoryPostProcessor}. - * + * * @param auditingHandlerFactory {@link AuditingHandler} to hook into the {@code preSave} phase for auditing. */ public Neo4jAuditingEventListener(ObjectFactory auditingHandlerFactory) { diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jAuditingRegistrar.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jAuditingRegistrar.java index 3742b567a..cef097a39 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jAuditingRegistrar.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jAuditingRegistrar.java @@ -47,7 +47,8 @@ public class Neo4jAuditingRegistrar extends AuditingBeanDefinitionRegistrarSuppo BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(Neo4jIsNewAwareAuditingHandler.class); - BeanDefinitionBuilder definition = BeanDefinitionBuilder.genericBeanDefinition(Neo4jMappingContextFactoryBean.class); + BeanDefinitionBuilder definition = BeanDefinitionBuilder + .genericBeanDefinition(Neo4jMappingContextFactoryBean.class); definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_CONSTRUCTOR); builder.addConstructorArgValue(definition.getBeanDefinition()); @@ -56,7 +57,7 @@ public class Neo4jAuditingRegistrar extends AuditingBeanDefinitionRegistrarSuppo @Override protected void registerAuditListenerBeanDefinition(BeanDefinition auditingHandlerDefinition, - BeanDefinitionRegistry registry) { + BeanDefinitionRegistry registry) { Assert.notNull(auditingHandlerDefinition, "BeanDefinition must not be null!"); Assert.notNull(registry, "BeanDefinitionRegistry must not be null!"); diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jIsNewAwareAuditingHandler.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jIsNewAwareAuditingHandler.java index 9432ac4bc..c16986ac5 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jIsNewAwareAuditingHandler.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jIsNewAwareAuditingHandler.java @@ -33,7 +33,8 @@ public class Neo4jIsNewAwareAuditingHandler extends IsNewAwareAuditingHandler { private IsNewStrategyFactory isNewStrategyFactory; - public Neo4jIsNewAwareAuditingHandler(MappingContext, ? extends PersistentProperty> mappingContext) { + public Neo4jIsNewAwareAuditingHandler( + MappingContext, ? extends PersistentProperty> mappingContext) { this(new PersistentEntities(Collections.singletonList(mappingContext))); } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jMappingContextFactoryBean.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jMappingContextFactoryBean.java index fe22b316d..236368c5d 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jMappingContextFactoryBean.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/config/Neo4jMappingContextFactoryBean.java @@ -13,7 +13,6 @@ package org.springframework.data.neo4j.repository.config; - import org.neo4j.ogm.session.SessionFactory; import org.springframework.beans.BeansException; import org.springframework.beans.factory.FactoryBean; @@ -28,8 +27,8 @@ import org.springframework.data.neo4j.mapping.Neo4jMappingContext; * * @author Mark Angrish */ -class Neo4jMappingContextFactoryBean extends AbstractFactoryBean implements - ApplicationContextAware { +class Neo4jMappingContextFactoryBean extends AbstractFactoryBean + implements ApplicationContextAware { private ListableBeanFactory beanFactory; @@ -52,9 +51,9 @@ class Neo4jMappingContextFactoryBean extends AbstractFactoryBean { - private final MetaData metaData; private final Class returnedType; @@ -48,8 +47,9 @@ class CustomResultConverter implements Converter { } SingleUseEntityMapper mapper = new SingleUseEntityMapper(metaData, new EntityFactory(metaData)); if (returnedType.isInterface()) { - Class[] interfaces = new Class[]{returnedType}; - return newProxyInstance(returnedType.getClassLoader(), interfaces, new QueryResultProxy((Map) source)); + Class[] interfaces = new Class[] { returnedType }; + return newProxyInstance(returnedType.getClassLoader(), interfaces, + new QueryResultProxy((Map) source)); } return mapper.map(returnedType, (Map) source); } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphParameterAccessor.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphParameterAccessor.java index 04b1c1413..ebec113ec 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphParameterAccessor.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphParameterAccessor.java @@ -24,13 +24,16 @@ import org.springframework.data.repository.query.ParameterAccessor; public interface GraphParameterAccessor extends ParameterAccessor { /** - * Gets the loading depth value of the {@link org.springframework.data.neo4j.annotation.Depth} annotated method parameter. + * Gets the loading depth value of the {@link org.springframework.data.neo4j.annotation.Depth} annotated method + * parameter. + * * @return the depth value */ int getDepth(); /** * Get OGM specific sort order translated from method parameters. + * * @return The sort order */ SortOrder getOgmSort(); diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphParameters.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphParameters.java index efa90cdc6..b7e1d5fca 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphParameters.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphParameters.java @@ -61,8 +61,8 @@ public class GraphParameters extends Parameters iterator = result.iterator(); - if (! iterator.hasNext()) { + if (!iterator.hasNext()) { return null; } Object ret = iterator.next(); @@ -144,9 +144,9 @@ public interface GraphQueryExecution { List result; long count; if (query.isFilterQuery()) { - result = (List) session.loadAll(type, query.getFilters(), accessor.getOgmSort() - , query.getPagination(pageable, false), accessor.getDepth()); - count = session.count(type, query.getFilters()); + result = (List) session.loadAll(type, query.getFilters(), accessor.getOgmSort(), + query.getPagination(pageable, false), accessor.getDepth()); + count = session.count(type, query.getFilters()); } else { if (type.getAnnotation(QueryResult.class) != null) { result = (List) session.query(query.getCypherQuery(pageable, false), query.getParameters()).queryResults(); @@ -185,8 +185,8 @@ public interface GraphQueryExecution { List result; if (query.isFilterQuery()) { // For a slice, need one extra result to determine if there is a next page - result = (List) session.loadAll(type, query.getFilters(), accessor.getOgmSort() - , query.getPagination(pageable, true), accessor.getDepth()); + result = (List) session.loadAll(type, query.getFilters(), accessor.getOgmSort(), + query.getPagination(pageable, true), accessor.getDepth()); } else { String cypherQuery = query.getCypherQuery(pageable, true); if (type.getAnnotation(QueryResult.class) != null) { diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphQueryMethod.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphQueryMethod.java index 0083a81f9..5d69d05c4 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphQueryMethod.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphQueryMethod.java @@ -33,107 +33,106 @@ import org.springframework.util.StringUtils; */ public class GraphQueryMethod extends QueryMethod { - private final Method method; - private final Query queryAnnotation; - private final Integer queryDepthParamIndex; + private final Method method; + private final Query queryAnnotation; + private final Integer queryDepthParamIndex; - public GraphQueryMethod(Method method, RepositoryMetadata metadata, ProjectionFactory factory) { - super(method, metadata, factory); - this.method = method; - this.queryAnnotation = method.getAnnotation(Query.class); - this.queryDepthParamIndex = getQueryDepthParamIndex(method); - Integer queryDepth = getStaticQueryDepth(method); - if (queryDepth !=null && queryDepthParamIndex!=null) { - throw new IllegalArgumentException(method.getName() + " cannot have both a method @Depth and a parameter @Depth"); - } + public GraphQueryMethod(Method method, RepositoryMetadata metadata, ProjectionFactory factory) { + super(method, metadata, factory); + this.method = method; + this.queryAnnotation = method.getAnnotation(Query.class); + this.queryDepthParamIndex = getQueryDepthParamIndex(method); + Integer queryDepth = getStaticQueryDepth(method); + if (queryDepth != null && queryDepthParamIndex != null) { + throw new IllegalArgumentException(method.getName() + " cannot have both a method @Depth and a parameter @Depth"); + } - } + } - @Override - protected Parameters createParameters(Method method) { - return new GraphParameters(method); - } + @Override + protected Parameters createParameters(Method method) { + return new GraphParameters(method); + } - @Override - public GraphParameters getParameters() { - return (GraphParameters) super.getParameters(); - } + @Override + public GraphParameters getParameters() { + return (GraphParameters) super.getParameters(); + } - public String getQuery() { - return queryAnnotation.value(); - } + public String getQuery() { + return queryAnnotation.value(); + } - public Method getMethod() { - return method; - } + public Method getMethod() { + return method; + } - /** - * Returns the name of the named query this method belongs to. - * - * @return - */ - public String getNamedQueryName() { - return String.format("%s.%s", getDomainClass().getSimpleName(), method.getName()); - } + /** + * Returns the name of the named query this method belongs to. + * + * @return + */ + public String getNamedQueryName() { + return String.format("%s.%s", getDomainClass().getSimpleName(), method.getName()); + } - public Integer getQueryDepthParamIndex() { - return queryDepthParamIndex; - } + public Integer getQueryDepthParamIndex() { + return queryDepthParamIndex; + } - private Integer getQueryDepthParamIndex(Method method) { - Annotation[][] annotations = method.getParameterAnnotations(); - for (int i = 0; i < annotations.length; i++) { - if (annotations[i].length > 0) { - for (Annotation annotation : annotations[i]) { - if (annotation.annotationType() == Depth.class) { - if (method.getParameterTypes()[i] == Integer.class || method.getParameterTypes()[i] == int.class) { - return i; - } - else { - throw new IllegalArgumentException("Depth parameter in " + method.getName() + " must be an integer"); - } - } - } - } - } - /* - //Java 8 only - Parameter[] parameters = method.getParameters(); - for (int i = 0; i < method.getParameterCount(); i++) { - if (parameters[i].isAnnotationPresent(Depth.class)) { - if (parameters[i].getType() == Integer.class || parameters[i].getType() == int.class) { - return i; - } - else { - throw new IllegalArgumentException("Depth parameter in " + method.getName() + " must be an integer"); - } - } - }*/ - return null; - } + private Integer getQueryDepthParamIndex(Method method) { + Annotation[][] annotations = method.getParameterAnnotations(); + for (int i = 0; i < annotations.length; i++) { + if (annotations[i].length > 0) { + for (Annotation annotation : annotations[i]) { + if (annotation.annotationType() == Depth.class) { + if (method.getParameterTypes()[i] == Integer.class || method.getParameterTypes()[i] == int.class) { + return i; + } else { + throw new IllegalArgumentException("Depth parameter in " + method.getName() + " must be an integer"); + } + } + } + } + } + /* + //Java 8 only + Parameter[] parameters = method.getParameters(); + for (int i = 0; i < method.getParameterCount(); i++) { + if (parameters[i].isAnnotationPresent(Depth.class)) { + if (parameters[i].getType() == Integer.class || parameters[i].getType() == int.class) { + return i; + } + else { + throw new IllegalArgumentException("Depth parameter in " + method.getName() + " must be an integer"); + } + } + }*/ + return null; + } - private Integer getStaticQueryDepth(Method method) { - if (method.isAnnotationPresent(Depth.class)) { - return method.getAnnotation(Depth.class).value(); - } - return null; - } + private Integer getStaticQueryDepth(Method method) { + if (method.isAnnotationPresent(Depth.class)) { + return method.getAnnotation(Depth.class).value(); + } + return null; + } - public String getCountQueryString() { - return queryAnnotation != null ? queryAnnotation.countQuery() : null; - } + public String getCountQueryString() { + return queryAnnotation != null ? queryAnnotation.countQuery() : null; + } - public boolean hasAnnotatedQuery() { - return getAnnotatedQuery() != null; - } + public boolean hasAnnotatedQuery() { + return getAnnotatedQuery() != null; + } - private String getAnnotatedQuery() { + private String getAnnotatedQuery() { - String query = (String) AnnotationUtils.getValue(getQueryAnnotation()); - return StringUtils.hasText(query) ? query : null; - } + String query = (String) AnnotationUtils.getValue(getQueryAnnotation()); + return StringUtils.hasText(query) ? query : null; + } - private Query getQueryAnnotation() { - return AnnotatedElementUtils.findMergedAnnotation(method, Query.class); - } + private Query getQueryAnnotation() { + return AnnotatedElementUtils.findMergedAnnotation(method, Query.class); + } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphRepositoryQuery.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphRepositoryQuery.java index 2864eb8c6..c47cedb0a 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphRepositoryQuery.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/GraphRepositoryQuery.java @@ -26,7 +26,6 @@ package org.springframework.data.neo4j.repository.query; - import java.util.HashMap; import java.util.Map; @@ -40,7 +39,6 @@ import org.springframework.data.repository.query.Parameters; import org.springframework.data.repository.query.RepositoryQuery; import org.springframework.data.repository.query.ResultProcessor; - /** * Specialisation of {@link RepositoryQuery} that handles mapping to object annotated with @Query. * @@ -76,8 +74,9 @@ public class GraphRepositoryQuery extends AbstractGraphRepositoryQuery { Object result = getExecution(accessor).execute(query, processor.getReturnedType().getReturnedType()); - return Result.class.equals(returnType) - ? result : processor.processResult(result, new CustomResultConverter(getMetaData(), processor.getReturnedType().getReturnedType())); + return Result.class.equals(returnType) ? result + : processor.processResult(result, + new CustomResultConverter(getMetaData(), processor.getReturnedType().getReturnedType())); } protected Query getQuery(Object[] parameters) { @@ -113,9 +112,9 @@ public class GraphRepositoryQuery extends AbstractGraphRepositoryQuery { private Object getParameterValue(Object parameter) { - //The parameter might be an entity, try to resolve its id + // The parameter might be an entity, try to resolve its id Object parameterValue = session.resolveGraphIdFor(parameter); - if (parameterValue == null) { //Either not an entity or not persisted + if (parameterValue == null) { // Either not an entity or not persisted parameterValue = parameter; } return parameterValue; diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/Query.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/Query.java index 902547b89..2691ee39c 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/Query.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/Query.java @@ -37,9 +37,8 @@ import org.springframework.data.neo4j.util.PagingAndSortingUtils; import org.springframework.util.Assert; /** - * Represents an OGM query. Can hold either cypher queries or filter definitions. - * Also in charge of adding pagination / sort to the string based queries as OGM does not support - * pagination and sort on those. + * Represents an OGM query. Can hold either cypher queries or filter definitions. Also in charge of adding pagination / + * sort to the string based queries as OGM does not support pagination and sort on those. * * @author Nicolas Mervaillie */ @@ -102,7 +101,7 @@ public class Query { sort = pageable.getSort(); } if (sort != Sort.unsorted()) { - //Custom queries in the OGM do not support pageable + // Custom queries in the OGM do not support pageable result = addSorting(result, sort); } result = addPaging(result, pageable, forSlicing); @@ -110,7 +109,7 @@ public class Query { } public String getCypherQuery(Sort sort) { - //Custom queries in the OGM do not support pageable + // Custom queries in the OGM do not support pageable String result = cypherQuery; if (sort != Sort.unsorted()) { result = addSorting(cypherQuery, sort); @@ -119,7 +118,7 @@ public class Query { } private String addPaging(String cypherQuery, Pageable pageable, boolean forSlicing) { - //Custom queries in the OGM do not support pageable + // Custom queries in the OGM do not support pageable cypherQuery = formatBaseQuery(cypherQuery); cypherQuery = cypherQuery + SKIP_LIMIT; parameters.put(SKIP, pageable.getPageNumber() * pageable.getPageSize()); @@ -163,7 +162,7 @@ public class Query { } public Pagination getPagination(Pageable pageable, boolean forSlicing) { - Pagination pagination = new Pagination(pageable.getPageNumber(), pageable.getPageSize() + ((forSlicing)?1:0)); + Pagination pagination = new Pagination(pageable.getPageNumber(), pageable.getPageSize() + ((forSlicing) ? 1 : 0)); pagination.setOffset(pageable.getPageNumber() * pageable.getPageSize()); return pagination; } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/QueryResultProxy.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/QueryResultProxy.java index b5f593027..eead8f1c8 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/QueryResultProxy.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/QueryResultProxy.java @@ -13,17 +13,17 @@ package org.springframework.data.neo4j.repository.query; -import org.neo4j.ogm.annotation.Property; -import org.neo4j.ogm.session.Utils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.neo4j.ogm.annotation.Property; +import org.neo4j.ogm.session.Utils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * Method {@link InvocationHandler} used for proxy objects that implement arbitrary interfaces annotated with * @QueryResult. @@ -32,41 +32,41 @@ import java.util.regex.Pattern; */ class QueryResultProxy implements InvocationHandler { - private static final Logger log = LoggerFactory.getLogger(QueryResultProxy.class); + private static final Logger log = LoggerFactory.getLogger(QueryResultProxy.class); - private static final Pattern beanGetterPattern = Pattern.compile("^(is|get)(\\w+)"); + private static final Pattern beanGetterPattern = Pattern.compile("^(is|get)(\\w+)"); - private final Map data; + private final Map data; - QueryResultProxy(Map queryResults) { - this.data = queryResults; - } + QueryResultProxy(Map queryResults) { + this.data = queryResults; + } - @Override - public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - if (isNotTraditionalGetter(method)) { - log.warn("QueryResult interface method " + method.getName() - + " doesn't appear to be a getter and therefore may not return the correct result."); - } + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + if (isNotTraditionalGetter(method)) { + log.warn("QueryResult interface method " + method.getName() + + " doesn't appear to be a getter and therefore may not return the correct result."); + } - if (method.isAnnotationPresent(Property.class)) { - Property annotation = method.getAnnotation(Property.class); - return Utils.coerceTypes(method.getReturnType(), data.get(annotation.name())); - } + if (method.isAnnotationPresent(Property.class)) { + Property annotation = method.getAnnotation(Property.class); + return Utils.coerceTypes(method.getReturnType(), data.get(annotation.name())); + } - Matcher matcher = beanGetterPattern.matcher(method.getName()); - if (matcher.matches()) { - String propertyKey = matcher.group(2); - propertyKey = propertyKey.substring(0, 1).toLowerCase().concat(propertyKey.substring(1)); - return Utils.coerceTypes(method.getReturnType(),data.get(propertyKey)); - } + Matcher matcher = beanGetterPattern.matcher(method.getName()); + if (matcher.matches()) { + String propertyKey = matcher.group(2); + propertyKey = propertyKey.substring(0, 1).toLowerCase().concat(propertyKey.substring(1)); + return Utils.coerceTypes(method.getReturnType(), data.get(propertyKey)); + } - return Utils.coerceTypes(method.getReturnType(), data.get(method.getName())); - } + return Utils.coerceTypes(method.getReturnType(), data.get(method.getName())); + } - private boolean isNotTraditionalGetter(Method method) { - return method.getParameterTypes().length != 0 || Void.class.equals(method.getReturnType()) - || (!method.getName().startsWith("get") && !method.getName().startsWith("is")); - } + private boolean isNotTraditionalGetter(Method method) { + return method.getParameterTypes().length != 0 || Void.class.equals(method.getReturnType()) + || (!method.getName().startsWith("get") && !method.getName().startsWith("is")); + } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/CypherFinderQuery.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/CypherFinderQuery.java index 75108542d..cb079c144 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/CypherFinderQuery.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/CypherFinderQuery.java @@ -12,11 +12,21 @@ */ package org.springframework.data.neo4j.repository.query.derived; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Stack; import org.neo4j.ogm.cypher.BooleanOperator; import org.neo4j.ogm.cypher.Filter; -import org.springframework.data.neo4j.repository.query.derived.builder.*; +import org.springframework.data.neo4j.repository.query.derived.builder.BetweenComparisonBuilder; +import org.springframework.data.neo4j.repository.query.derived.builder.BooleanComparisonBuilder; +import org.springframework.data.neo4j.repository.query.derived.builder.DistanceComparisonBuilder; +import org.springframework.data.neo4j.repository.query.derived.builder.ExistsFilterBuilder; +import org.springframework.data.neo4j.repository.query.derived.builder.FilterBuilder; +import org.springframework.data.neo4j.repository.query.derived.builder.IsNullFilterBuilder; +import org.springframework.data.neo4j.repository.query.derived.builder.PropertyComparisonBuilder; import org.springframework.data.repository.query.parser.Part; /** @@ -28,64 +38,64 @@ import org.springframework.data.repository.query.parser.Part; */ public class CypherFinderQuery implements DerivedQueryDefinition { - private Class entityType; - private Part basePart; - private List filterBuilders = new ArrayList<>(); + private Class entityType; + private Part basePart; + private List filterBuilders = new ArrayList<>(); - CypherFinderQuery(Class entityType, Part basePart) { - this.entityType = entityType; - this.basePart = basePart; - } + CypherFinderQuery(Class entityType, Part basePart) { + this.entityType = entityType; + this.basePart = basePart; + } - @Override - public Part getBasePart() { //because the OR is handled in a weird way. Luanne, explain better - return basePart; - } + @Override + public Part getBasePart() { // because the OR is handled in a weird way. Luanne, explain better + return basePart; + } - @Override - public List getFilters(Map params) { + @Override + public List getFilters(Map params) { - // buiding a stack of parameter values, so that the builders can pull them - // according to their needs (zero, one or more parameters) - // avoids to manage a current parameter index state here. - Stack parametersStack = new Stack<>(); - if (!params.isEmpty()) { - Integer maxParameterIndex = Collections.max(params.keySet()); - for (int i = 0; i <= maxParameterIndex; i++) { - parametersStack.add(0, params.get(i)); - } - } + // buiding a stack of parameter values, so that the builders can pull them + // according to their needs (zero, one or more parameters) + // avoids to manage a current parameter index state here. + Stack parametersStack = new Stack<>(); + if (!params.isEmpty()) { + Integer maxParameterIndex = Collections.max(params.keySet()); + for (int i = 0; i <= maxParameterIndex; i++) { + parametersStack.add(0, params.get(i)); + } + } - List filters = new ArrayList<>(); - for (FilterBuilder filterBuilder : filterBuilders) { - filters.addAll(filterBuilder.build(parametersStack)); - } - return filters; - } + List filters = new ArrayList<>(); + for (FilterBuilder filterBuilder : filterBuilders) { + filters.addAll(filterBuilder.build(parametersStack)); + } + return filters; + } - @Override - public void addPart(Part part, BooleanOperator booleanOperator) { + @Override + public void addPart(Part part, BooleanOperator booleanOperator) { - FilterBuilder builder = builderForPart(part, booleanOperator); - filterBuilders.add(builder); - } + FilterBuilder builder = builderForPart(part, booleanOperator); + filterBuilders.add(builder); + } - private FilterBuilder builderForPart(Part part, BooleanOperator booleanOperator) { - switch (part.getType()) { - case NEAR: - return new DistanceComparisonBuilder(part, booleanOperator, entityType); - case BETWEEN: - return new BetweenComparisonBuilder(part, booleanOperator, entityType); - case IS_NULL: - case IS_NOT_NULL: - return new IsNullFilterBuilder(part, booleanOperator, entityType); - case EXISTS: - return new ExistsFilterBuilder(part, booleanOperator, entityType); - case TRUE: - case FALSE: - return new BooleanComparisonBuilder(part, booleanOperator, entityType); - default: - return new PropertyComparisonBuilder(part, booleanOperator, entityType); - } - } + private FilterBuilder builderForPart(Part part, BooleanOperator booleanOperator) { + switch (part.getType()) { + case NEAR: + return new DistanceComparisonBuilder(part, booleanOperator, entityType); + case BETWEEN: + return new BetweenComparisonBuilder(part, booleanOperator, entityType); + case IS_NULL: + case IS_NOT_NULL: + return new IsNullFilterBuilder(part, booleanOperator, entityType); + case EXISTS: + return new ExistsFilterBuilder(part, booleanOperator, entityType); + case TRUE: + case FALSE: + return new BooleanComparisonBuilder(part, booleanOperator, entityType); + default: + return new PropertyComparisonBuilder(part, booleanOperator, entityType); + } + } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedGraphRepositoryQuery.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedGraphRepositoryQuery.java index 39c437e0d..5ebf5ee2b 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedGraphRepositoryQuery.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedGraphRepositoryQuery.java @@ -95,7 +95,8 @@ public class DerivedGraphRepositoryQuery extends AbstractGraphRepositoryQuery { } /** - * Sets values from parameters supplied by the finder on {@link org.neo4j.ogm.cypher.Filter} built by the {@link GraphQueryMethod} + * Sets values from parameters supplied by the finder on {@link org.neo4j.ogm.cypher.Filter} built by the + * {@link GraphQueryMethod} * * @param parameters parameter values supplied by the finder method * @return List of Parameter with values set diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedQueryBuilder.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedQueryBuilder.java index fc9709fd4..5cb3210d6 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedQueryBuilder.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedQueryBuilder.java @@ -31,6 +31,7 @@ public class DerivedQueryBuilder { /** * Add a part as a parameter to the graph query. + * * @param part the Part to be added * @param booleanOperator the {@link BooleanOperator} to be used when appending the parameter to the query. */ @@ -40,6 +41,7 @@ public class DerivedQueryBuilder { /** * Add criteria from an intermediate builder to the query + * * @param fromBuilder the intermediate builder * @param booleanOperator the {@link BooleanOperator} to be used when appending the criteria to the query */ @@ -49,6 +51,7 @@ public class DerivedQueryBuilder { /** * Builds the final query + * * @return the final query */ public DerivedQueryDefinition buildQuery() { diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedQueryCreator.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedQueryCreator.java index 2b845278d..8d30c549c 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedQueryCreator.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedQueryCreator.java @@ -11,17 +11,16 @@ * */ - package org.springframework.data.neo4j.repository.query.derived; +import java.util.Iterator; + import org.neo4j.ogm.cypher.BooleanOperator; import org.springframework.data.domain.Sort; import org.springframework.data.repository.query.parser.AbstractQueryCreator; import org.springframework.data.repository.query.parser.Part; import org.springframework.data.repository.query.parser.PartTree; -import java.util.Iterator; - /** * An {@link AbstractQueryCreator} that builds a graph query. * diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedQueryDefinition.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedQueryDefinition.java index 4b19a7473..efd7670f7 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedQueryDefinition.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedQueryDefinition.java @@ -21,9 +21,8 @@ import org.neo4j.ogm.cypher.Filter; import org.springframework.data.repository.query.parser.Part; /** - * The graph query created based on a derived query. + * The graph query created based on a derived query. /** * -/** * @author Luanne Misquitta * @author Nicolas Mervaillie */ @@ -31,19 +30,22 @@ public interface DerivedQueryDefinition { /** * Add a part as a parameter to the graph query. - * @param part the Part to be added + * + * @param part the Part to be added * @param booleanOperator the {@link BooleanOperator} to be used when appending the parameter to the query. */ void addPart(Part part, BooleanOperator booleanOperator); /** * Get the base part i.e. the first parameter of the graph query. + * * @return Part representing the base of the query. */ Part getBasePart(); /** * Gets all cypher filters for this query + * * @return The OGM filters with bound parameter values */ List getFilters(Map params); diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/BooleanComparisonBuilder.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/BooleanComparisonBuilder.java index 50ac42500..f29858b55 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/BooleanComparisonBuilder.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/BooleanComparisonBuilder.java @@ -11,7 +11,6 @@ * */ - package org.springframework.data.neo4j.repository.query.derived.builder; import static org.springframework.data.repository.query.parser.Part.Type.*; diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/DistanceComparisonBuilder.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/DistanceComparisonBuilder.java index 660b6480c..38d8ddc5a 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/DistanceComparisonBuilder.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/DistanceComparisonBuilder.java @@ -11,7 +11,6 @@ * */ - package org.springframework.data.neo4j.repository.query.derived.builder; import java.util.Collections; @@ -54,7 +53,8 @@ public class DistanceComparisonBuilder extends FilterBuilder { distance = (Distance) secondArg; point = (Point) firstArg; } else { - throw new IllegalArgumentException("findNear requires an argument of type Distance and an argument of type Point"); + throw new IllegalArgumentException( + "findNear requires an argument of type Distance and an argument of type Point"); } double meters; @@ -66,7 +66,8 @@ public class DistanceComparisonBuilder extends FilterBuilder { meters = distance.getValue(); } - DistanceFromPoint distanceFromPoint = new DistanceFromPoint(point.getX(), point.getY(), distance.getValue() * meters); + DistanceFromPoint distanceFromPoint = new DistanceFromPoint(point.getX(), point.getY(), + distance.getValue() * meters); DistanceComparison distanceComparison = new DistanceComparison(distanceFromPoint); Filter filter = new Filter(distanceComparison, ComparisonOperator.LESS_THAN); diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/ExistsFilterBuilder.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/ExistsFilterBuilder.java index 6617bd80c..4cdb2fc4b 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/ExistsFilterBuilder.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/ExistsFilterBuilder.java @@ -1,6 +1,5 @@ package org.springframework.data.neo4j.repository.query.derived.builder; - import java.util.Collections; import java.util.List; import java.util.Stack; diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/IsNullFilterBuilder.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/IsNullFilterBuilder.java index e51d3104e..bee7e1668 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/IsNullFilterBuilder.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/IsNullFilterBuilder.java @@ -11,7 +11,6 @@ * */ - package org.springframework.data.neo4j.repository.query.derived.builder; import static org.springframework.data.repository.query.parser.Part.Type.*; @@ -31,19 +30,19 @@ import org.springframework.data.repository.query.parser.Part; */ public class IsNullFilterBuilder extends FilterBuilder { - public IsNullFilterBuilder(Part part, BooleanOperator booleanOperator, Class entityType) { - super(part, booleanOperator, entityType); - } + public IsNullFilterBuilder(Part part, BooleanOperator booleanOperator, Class entityType) { + super(part, booleanOperator, entityType); + } - @Override - public List build(Stack params) { - Filter filter = new Filter(propertyName(), ComparisonOperator.IS_NULL); - filter.setOwnerEntityType(entityType); - filter.setBooleanOperator(booleanOperator); - filter.setNegated(isNegated() || part.getType() == IS_NOT_NULL); - setNestedAttributes(part, filter); + @Override + public List build(Stack params) { + Filter filter = new Filter(propertyName(), ComparisonOperator.IS_NULL); + filter.setOwnerEntityType(entityType); + filter.setBooleanOperator(booleanOperator); + filter.setNegated(isNegated() || part.getType() == IS_NOT_NULL); + setNestedAttributes(part, filter); - return Collections.singletonList(filter); - } + return Collections.singletonList(filter); + } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/PropertyComparisonBuilder.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/PropertyComparisonBuilder.java index 063f0e4d4..f560b50cc 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/PropertyComparisonBuilder.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/builder/PropertyComparisonBuilder.java @@ -45,7 +45,6 @@ public class PropertyComparisonBuilder extends FilterBuilder { return Collections.singletonList(filter); } - private ComparisonOperator convertToComparisonOperator(Part.Type type) { switch (type) { case AFTER: diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/GraphEntityInformation.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/GraphEntityInformation.java index 9b5c2f2b8..27fd1c7fe 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/GraphEntityInformation.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/GraphEntityInformation.java @@ -13,55 +13,52 @@ package org.springframework.data.neo4j.repository.support; -import org.neo4j.ogm.metadata.MetaData; +import java.io.Serializable; + import org.neo4j.ogm.metadata.ClassInfo; import org.neo4j.ogm.metadata.FieldInfo; -import org.neo4j.ogm.metadata.reflect.EntityAccessManager; +import org.neo4j.ogm.metadata.MetaData; import org.springframework.data.repository.core.support.AbstractEntityInformation; -import java.io.Serializable; -import java.util.Optional; - /** * @author Mark Angrish * @author Mark Paluch */ public class GraphEntityInformation extends AbstractEntityInformation { - private final MetaData metaData; + private final MetaData metaData; - public GraphEntityInformation(MetaData metaData, Class type) { - super(type); - this.metaData = metaData; - } + public GraphEntityInformation(MetaData metaData, Class type) { + super(type); + this.metaData = metaData; + } @Override @SuppressWarnings("unchecked") - public ID getId(T entity) { - final ClassInfo classInfo = metaData.classInfo(getJavaType().getName()); - final FieldInfo primaryIndex = classInfo.primaryIndexField(); + public ID getId(T entity) { + final ClassInfo classInfo = metaData.classInfo(getJavaType().getName()); + final FieldInfo primaryIndex = classInfo.primaryIndexField(); - return (ID) getId(entity, classInfo, primaryIndex); - } + return (ID) getId(entity, classInfo, primaryIndex); + } - private Object getId(T entity, ClassInfo classInfo, FieldInfo primaryIndex) { - if (primaryIndex != null) { - return classInfo.propertyField(primaryIndex.getName()).readProperty(entity); - } - else { - return classInfo.propertyField(classInfo.identityField().getName()).readProperty(entity); - } - } + private Object getId(T entity, ClassInfo classInfo, FieldInfo primaryIndex) { + if (primaryIndex != null) { + return classInfo.propertyField(primaryIndex.getName()).readProperty(entity); + } else { + return classInfo.propertyField(classInfo.identityField().getName()).readProperty(entity); + } + } - @Override + @Override @SuppressWarnings("unchecked") - public Class getIdType() { - final FieldInfo primaryIndex = metaData.classInfo(getJavaType().getName()).primaryIndexField(); + public Class getIdType() { + final FieldInfo primaryIndex = metaData.classInfo(getJavaType().getName()).primaryIndexField(); - if (primaryIndex != null) { - return (Class) primaryIndex.convertedType(); - } - return (Class) Long.class; - } + if (primaryIndex != null) { + return (Class) primaryIndex.convertedType(); + } + return (Class) Long.class; + } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactory.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactory.java index 125330c35..063298e3e 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactory.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactory.java @@ -13,7 +13,6 @@ package org.springframework.data.neo4j.repository.support; -import java.io.Serializable; import java.util.Optional; import org.neo4j.ogm.session.Neo4jSession; @@ -58,7 +57,7 @@ public class Neo4jRepositoryFactory extends RepositoryFactorySupport { public EntityInformation getEntityInformation(Class type) { Assert.notNull(type, "Domain class must not be null!"); Assert.notNull(session, "Session must not be null!"); - return new GraphEntityInformation(((Neo4jSession)session).metaData(), type); + return new GraphEntityInformation(((Neo4jSession) session).metaData(), type); } @Override @@ -73,7 +72,7 @@ public class Neo4jRepositoryFactory extends RepositoryFactorySupport { @Override protected Optional getQueryLookupStrategy(QueryLookupStrategy.Key key, - EvaluationContextProvider evaluationContextProvider) { + EvaluationContextProvider evaluationContextProvider) { return Optional.of(new GraphQueryLookupStrategy(session)); } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactoryBean.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactoryBean.java index d1f7a5b14..dbd9232c0 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactoryBean.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactoryBean.java @@ -23,7 +23,6 @@ import org.springframework.data.repository.core.support.RepositoryFactorySupport import org.springframework.data.repository.core.support.TransactionalRepositoryFactoryBeanSupport; import org.springframework.util.Assert; - /** * Special adapter for Springs {@link org.springframework.beans.factory.FactoryBean} interface to allow easy setup of * repository factories via Spring configuration. @@ -33,13 +32,14 @@ import org.springframework.util.Assert; * @author Luanne Misquitta * @author Mark Angrish */ -public class Neo4jRepositoryFactoryBean, S, ID extends Serializable> extends TransactionalRepositoryFactoryBeanSupport { +public class Neo4jRepositoryFactoryBean, S, ID extends Serializable> + extends TransactionalRepositoryFactoryBeanSupport { private Session session; - + /** * Creates a new {@link Neo4jRepositoryFactoryBean} for the given repository interface. - * + * * @param repositoryInterface must not be {@literal null}. */ public Neo4jRepositoryFactoryBean(Class repositoryInterface) { @@ -81,5 +81,3 @@ public class Neo4jRepositoryFactoryBean, S, ID exten return new Neo4jRepositoryFactory(session); } } - - diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/SimpleNeo4jRepository.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/SimpleNeo4jRepository.java index aef45eee3..3e70bca3f 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/SimpleNeo4jRepository.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/support/SimpleNeo4jRepository.java @@ -36,7 +36,6 @@ import org.springframework.util.Assert; * you a more sophisticated interface than the plain {@link Session} . * * @param the type of the entity to handle - * * @author Vince Bickers * @author Luanne Misquitta * @author Mark Angrish @@ -190,8 +189,8 @@ public class SimpleNeo4jRepository implements Neo4jR @Override public Page findAll(Pageable pageable, int depth) { - Collection data = session.loadAll(clazz, PagingAndSortingUtils.convert(pageable.getSort()) - , new Pagination(pageable.getPageNumber(), pageable.getPageSize()), depth); + Collection data = session.loadAll(clazz, PagingAndSortingUtils.convert(pageable.getSort()), + new Pagination(pageable.getPageNumber(), pageable.getPageSize()), depth); return updatePage(pageable, new ArrayList<>(data)); } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/Neo4jTransactionManager.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/Neo4jTransactionManager.java index 0736a41f4..e000d65a3 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/Neo4jTransactionManager.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/Neo4jTransactionManager.java @@ -13,7 +13,6 @@ package org.springframework.data.neo4j.transaction; - import static java.util.Collections.*; import java.util.Collection; @@ -44,24 +43,22 @@ import org.springframework.transaction.support.ResourceTransactionManager; import org.springframework.transaction.support.TransactionSynchronizationManager; /** - * {@link PlatformTransactionManager} implementation - * for a single Neo4j OGM {@link SessionFactory}. Binds a Neo4j OGM - * Session from the specified factory to the thread, potentially allowing for - * one thread-bound Session per factory. {@link SharedSessionCreator} - * is aware of thread-bound session and participates - * in such transactions automatically. It is required for Neo4j OGM access code - * supporting this transaction management mechanism. - *

    This transaction manager is appropriate for applications that use a single - * Neo4j OGM SessionFactory for transactional data access. JTA (usually through - * {@link org.springframework.transaction.jta.JtaTransactionManager}) has not been tested - * or considered at the moment. - *

    This transaction manager does not support nested transactions or - * requires new propagation. + * {@link PlatformTransactionManager} implementation for a single Neo4j OGM {@link SessionFactory}. Binds a Neo4j OGM + * Session from the specified factory to the thread, potentially allowing for one thread-bound Session per factory. + * {@link SharedSessionCreator} is aware of thread-bound session and participates in such transactions automatically. It + * is required for Neo4j OGM access code supporting this transaction management mechanism. + *

    + * This transaction manager is appropriate for applications that use a single Neo4j OGM SessionFactory for transactional + * data access. JTA (usually through {@link org.springframework.transaction.jta.JtaTransactionManager}) has not been + * tested or considered at the moment. + *

    + * This transaction manager does not support nested transactions or requires new propagation. * * @author Mark Angrish * @see #setSessionFactory */ -public class Neo4jTransactionManager extends AbstractPlatformTransactionManager implements ResourceTransactionManager, BeanFactoryAware, InitializingBean { +public class Neo4jTransactionManager extends AbstractPlatformTransactionManager + implements ResourceTransactionManager, BeanFactoryAware, InitializingBean { private static final Logger logger = LoggerFactory.getLogger(Neo4jTransactionManager.class); @@ -70,7 +67,8 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager /** * Create a new Neo4jTransactionManager instance. - *

    An SessionFactory has to be set to be able to use it. + *

    + * An SessionFactory has to be set to be able to use it. * * @see #setSessionFactory(SessionFactory) */ @@ -78,7 +76,6 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager setTransactionSynchronization(SYNCHRONIZATION_ON_ACTUAL_TRANSACTION); } - /** * Create a new Neo4jTransactionManager instance. * @@ -89,17 +86,16 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager this.sessionFactory = sessionFactory; } - /** * Set the SessionFactory that this instance should manage transactions for. - *

    By default, a default SessionFactory will be retrieved by finding a - * single unique bean of type SessionFactory in the containing BeanFactory. + *

    + * By default, a default SessionFactory will be retrieved by finding a single unique bean of type SessionFactory in + * the containing BeanFactory. */ public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } - /** * Return the SessionFactory that this instance should manage transactions for. */ @@ -107,7 +103,6 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager return this.sessionFactory; } - /** * Retrieves a default SessionFactory bean. */ @@ -124,7 +119,6 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager } } - @Override public void afterPropertiesSet() throws Exception { if (getSessionFactory() == null) { @@ -132,13 +126,11 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager } } - @Override public Object getResourceFactory() { return getSessionFactory(); } - @Override protected Object doGetTransaction() { Neo4jTransactionObject txObject = new Neo4jTransactionObject(); @@ -146,28 +138,24 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.getResource(getSessionFactory()); if (sessionHolder != null) { if (logger.isDebugEnabled()) { - logger.debug("Found thread-bound Session [" + sessionHolder.getSession() + - "] for Neo4j OGM transaction"); + logger.debug("Found thread-bound Session [" + sessionHolder.getSession() + "] for Neo4j OGM transaction"); } txObject.setSessionHolder(sessionHolder, false); } return txObject; } - @Override protected boolean isExistingTransaction(Object transaction) { return ((Neo4jTransactionObject) transaction).hasTransaction(); } - @Override protected void doBegin(Object transaction, TransactionDefinition definition) throws TransactionException { Neo4jTransactionObject txObject = (Neo4jTransactionObject) transaction; try { - if (txObject.getSessionHolder() == null || - txObject.getSessionHolder().isSynchronizedWithTransaction()) { + if (txObject.getSessionHolder() == null || txObject.getSessionHolder().isSynchronizedWithTransaction()) { Session session = sessionFactory.openSession(); if (logger.isDebugEnabled()) { logger.debug("Opened new Session [" + session + "] for Neo4j OGM transaction"); @@ -184,8 +172,7 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager } if (definition.getPropagationBehavior() != TransactionDefinition.PROPAGATION_REQUIRED) { - throw new IllegalTransactionStateException( - "Neo4jTransactionManager only supports 'required' propagation."); + throw new IllegalTransactionStateException("Neo4jTransactionManager only supports 'required' propagation."); } Transaction.Type type = getTransactionType(definition, txObject); @@ -243,10 +230,8 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager } } - /** - * Close the current transaction's Session. - * Called after a transaction begin attempt failed. + * Close the current transaction's Session. Called after a transaction begin attempt failed. * * @param txObject the current transaction */ @@ -267,17 +252,14 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager } } - @Override protected Object doSuspend(Object transaction) { Neo4jTransactionObject txObject = (Neo4jTransactionObject) transaction; txObject.setSessionHolder(null, false); - SessionHolder sessionHolder = (SessionHolder) - TransactionSynchronizationManager.unbindResource(getSessionFactory()); + SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.unbindResource(getSessionFactory()); return new SuspendedResourcesHolder(sessionHolder); } - @Override protected void doResume(Object transaction, Object suspendedResources) { SuspendedResourcesHolder resourcesHolder = (SuspendedResourcesHolder) suspendedResources; @@ -286,11 +268,9 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager // -> can be safely removed, will be closed on transaction completion. TransactionSynchronizationManager.unbindResource(getSessionFactory()); } - TransactionSynchronizationManager.bindResource( - getSessionFactory(), resourcesHolder.getSessionHolder()); + TransactionSynchronizationManager.bindResource(getSessionFactory(), resourcesHolder.getSessionHolder()); } - @Override protected void doCommit(DefaultTransactionStatus status) { @@ -326,7 +306,6 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager } } - @Override protected void doRollback(DefaultTransactionStatus status) { Neo4jTransactionObject txObject = (Neo4jTransactionObject) status.getTransaction(); @@ -352,18 +331,16 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager } } - @Override protected void doSetRollbackOnly(DefaultTransactionStatus status) { Neo4jTransactionObject txObject = (Neo4jTransactionObject) status.getTransaction(); if (status.isDebug()) { - logger.debug("Setting Neo4j OGM transaction on Session [" + - txObject.getSessionHolder().getSession() + "] rollback-only"); + logger.debug( + "Setting Neo4j OGM transaction on Session [" + txObject.getSessionHolder().getSession() + "] rollback-only"); } status.setRollbackOnly(); } - @Override protected void doCleanupAfterCompletion(Object transaction) { Neo4jTransactionObject txObject = (Neo4jTransactionObject) transaction; @@ -395,8 +372,7 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager } /** - * Neo4j OGM transaction object, representing a SessionHolder. - * Used as transaction object by Neo4jTransactionManager. + * Neo4j OGM transaction object, representing a SessionHolder. Used as transaction object by Neo4jTransactionManager. */ private static class Neo4jTransactionObject { @@ -406,8 +382,7 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager private Transaction transactionData; - void setSessionHolder( - SessionHolder sessionHolder, boolean newSessionHolder) { + void setSessionHolder(SessionHolder sessionHolder, boolean newSessionHolder) { this.sessionHolder = sessionHolder; this.newSessionHolder = newSessionHolder; } @@ -435,8 +410,7 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager } /** - * Holder for suspended resources. - * Used internally by {@code doSuspend} and {@code doResume}. + * Holder for suspended resources. Used internally by {@code doSuspend} and {@code doResume}. */ private static class SuspendedResourcesHolder { diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/SessionFactoryUtils.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/SessionFactoryUtils.java index 53a63d1b0..1e8296e61 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/SessionFactoryUtils.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/SessionFactoryUtils.java @@ -46,10 +46,10 @@ import org.springframework.transaction.support.TransactionSynchronizationManager import org.springframework.util.Assert; /** - * Helper class featuring methods for Neo4j OGM Session handling, - * allowing for reuse of Session instances within transactions. - * Also provides support for exception translation. - *

    Mainly intended for internal use within the framework. + * Helper class featuring methods for Neo4j OGM Session handling, allowing for reuse of Session instances within + * transactions. Also provides support for exception translation. + *

    + * Mainly intended for internal use within the framework. * * @author Mark Angrish */ @@ -57,9 +57,7 @@ public class SessionFactoryUtils { private static final Logger logger = LoggerFactory.getLogger(SessionFactoryUtils.class); - - public static void closeSession(Session session) { - } + public static void closeSession(Session session) {} public static Session getSession(SessionFactory sessionFactory) throws IllegalStateException { @@ -67,11 +65,11 @@ public class SessionFactoryUtils { SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.getResource(sessionFactory); if (sessionHolder != null) { - if (!sessionHolder.isSynchronizedWithTransaction() && - TransactionSynchronizationManager.isSynchronizationActive()) { + if (!sessionHolder.isSynchronizedWithTransaction() + && TransactionSynchronizationManager.isSynchronizationActive()) { sessionHolder.setSynchronizedWithTransaction(true); - TransactionSynchronizationManager.registerSynchronization( - new SessionSynchronization(sessionHolder, sessionFactory, false)); + TransactionSynchronizationManager + .registerSynchronization(new SessionSynchronization(sessionHolder, sessionFactory, false)); } return sessionHolder.getSession(); } @@ -88,22 +86,20 @@ public class SessionFactoryUtils { sessionHolder = new SessionHolder(session); sessionHolder.setSynchronizedWithTransaction(true); - TransactionSynchronizationManager.registerSynchronization( - new SessionSynchronization(sessionHolder, sessionFactory, true)); + TransactionSynchronizationManager + .registerSynchronization(new SessionSynchronization(sessionHolder, sessionFactory, true)); TransactionSynchronizationManager.bindResource(sessionFactory, sessionHolder); return session; } /** - * Convert the given runtime exception to an appropriate exception from the - * {@code org.springframework.dao} hierarchy. - * Return null if no translation is appropriate: any other exception may - * have resulted from user code, and should not be translated. + * Convert the given runtime exception to an appropriate exception from the {@code org.springframework.dao} hierarchy. + * Return null if no translation is appropriate: any other exception may have resulted from user code, and should not + * be translated. * * @param ex runtime exception that occurred - * @return the corresponding DataAccessException instance, - * or {@code null} if the exception should not be translated + * @return the corresponding DataAccessException instance, or {@code null} if the exception should not be translated */ public static DataAccessException convertOgmAccessException(RuntimeException ex) { @@ -160,9 +156,11 @@ public class SessionFactoryUtils { if (dae != null) { try { - final Constructor constructor = dae.getDeclaredConstructor(String.class, Throwable.class); + final Constructor constructor = dae.getDeclaredConstructor(String.class, + Throwable.class); return constructor.newInstance(ex.getMessage(), ex); - } catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { + } catch (InstantiationException | IllegalAccessException | NoSuchMethodException + | InvocationTargetException e) { return null; } } @@ -175,15 +173,12 @@ public class SessionFactoryUtils { return null; } - - private static class SessionSynchronization - extends ResourceHolderSynchronization + private static class SessionSynchronization extends ResourceHolderSynchronization implements Ordered { private final boolean newSession; - SessionSynchronization( - SessionHolder sessionHolder, SessionFactory sessionFactory, boolean newSession) { + SessionSynchronization(SessionHolder sessionHolder, SessionFactory sessionFactory, boolean newSession) { super(sessionHolder, sessionFactory); this.newSession = newSession; } @@ -194,8 +189,7 @@ public class SessionFactoryUtils { } @Override - public void flushResource(SessionHolder resourceHolder) { - } + public void flushResource(SessionHolder resourceHolder) {} @Override protected boolean shouldUnbindAtCompletion() { @@ -204,7 +198,7 @@ public class SessionFactoryUtils { @Override protected boolean shouldReleaseAfterCompletion(SessionHolder resourceHolder) { -// return !resourceHolder.getSession().isClosed(); + // return !resourceHolder.getSession().isClosed(); return false; } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/SessionHolder.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/SessionHolder.java index 060a78188..0b8ffee5e 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/SessionHolder.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/SessionHolder.java @@ -18,11 +18,10 @@ import org.springframework.transaction.support.ResourceHolderSupport; import org.springframework.util.Assert; /** - * Holder wrapping a Neo4j OGM Session. - * Neo4jTransactionManager binds instances of this class to the thread, - * for a given SessionFactory. - * - *

    Note: This is an SPI class, not intended to be used by applications. + * Holder wrapping a Neo4j OGM Session. Neo4jTransactionManager binds instances of this class to the thread, for a given + * SessionFactory. + *

    + * Note: This is an SPI class, not intended to be used by applications. * * @author Mark Angrish * @see Neo4jTransactionManager @@ -39,7 +38,6 @@ public class SessionHolder extends ResourceHolderSupport { this.session = session; } - public Session getSession() { return this.session; } @@ -52,7 +50,6 @@ public class SessionHolder extends ResourceHolderSupport { return this.transactionActive; } - @Override public void clear() { super.clear(); diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/SharedSessionCreator.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/SharedSessionCreator.java index 9f28c6470..adfa1f2c1 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/SharedSessionCreator.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/transaction/SharedSessionCreator.java @@ -30,12 +30,11 @@ import org.slf4j.LoggerFactory; import org.springframework.transaction.support.TransactionSynchronizationManager; /** - * Delegate for creating a shareable Neo4j OGM {@link Session} - * reference for a given {@link SessionFactory}. - *

    A shared Session will behave just like a Session fetched from - * an application SessionFactory. - * It will delegate all calls to the current transactional Session, if any; - * otherwise it will fall back to a newly created Session per operation. + * Delegate for creating a shareable Neo4j OGM {@link Session} reference for a given {@link SessionFactory}. + *

    + * A shared Session will behave just like a Session fetched from an application SessionFactory. It will delegate all + * calls to the current transactional Session, if any; otherwise it will fall back to a newly created Session per + * operation. * * @author Mark Angrish * @see Neo4jTransactionManager @@ -54,22 +53,18 @@ public class SharedSessionCreator { /** * Create a transactional Session proxy for the given SessionFactory. * - * @param sessionFactory SessionFactory to obtain Sessions from as needed - * {@code createSession} call (may be {@code null}) - * Session. Allows the addition or specification of proprietary interfaces. + * @param sessionFactory SessionFactory to obtain Sessions from as needed {@code createSession} call (may be + * {@code null}) Session. Allows the addition or specification of proprietary interfaces. * @return a shareable transactional Session proxy */ public static Session createSharedSession(SessionFactory sessionFactory) { - return (Session) Proxy.newProxyInstance( - SharedSessionCreator.class.getClassLoader(), - new Class[]{Session.class}, new SharedSessionInvocationHandler(sessionFactory)); + return (Session) Proxy.newProxyInstance(SharedSessionCreator.class.getClassLoader(), + new Class[] { Session.class }, new SharedSessionInvocationHandler(sessionFactory)); } - /** - * Invocation handler that delegates all calls to the current - * transactional Session, if any; else, it will fall back + * Invocation handler that delegates all calls to the current transactional Session, if any; else, it will fall back * to a newly created Session per operation. */ private static class SharedSessionInvocationHandler implements InvocationHandler { @@ -84,7 +79,6 @@ public class SharedSessionCreator { this.proxyClassLoader = this.targetFactory.getClass().getClassLoader(); } - @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // Invocation on Session interface coming in... @@ -100,8 +94,7 @@ public class SharedSessionCreator { return "Shared Session proxy for target factory [" + targetFactory + "]"; } else if (method.getName().equals("beginTransaction")) { throw new IllegalStateException( - "Not allowed to create transaction on shared Session - " + - "use Spring transactions instead"); + "Not allowed to create transaction on shared Session - " + "use Spring transactions instead"); } // Determine current Session: either the transactional one @@ -109,11 +102,11 @@ public class SharedSessionCreator { Session target = SessionFactoryUtils.getSession(this.targetFactory); if (transactionRequiringMethods.contains(method.getName())) { - if (target == null || (!TransactionSynchronizationManager.isActualTransactionActive() - && target.getTransaction() != null - && EnumSet.of(CLOSED, COMMITTED, ROLLEDBACK).contains(target.getTransaction().status()))) { - throw new IllegalStateException("No Session with actual transaction available " + - "for current thread - cannot reliably process '" + method.getName() + "' call"); + if (target == null + || (!TransactionSynchronizationManager.isActualTransactionActive() && target.getTransaction() != null + && EnumSet.of(CLOSED, COMMITTED, ROLLEDBACK).contains(target.getTransaction().status()))) { + throw new IllegalStateException("No Session with actual transaction available " + + "for current thread - cannot reliably process '" + method.getName() + "' call"); } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/util/IterableUtils.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/util/IterableUtils.java index 590ebe74c..0bfbff814 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/util/IterableUtils.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/util/IterableUtils.java @@ -13,13 +13,13 @@ package org.springframework.data.neo4j.util; -import org.neo4j.ogm.exception.core.NotFoundException; - import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; +import org.neo4j.ogm.exception.core.NotFoundException; + /** * Utility methods for dealing with {@link Iterable}s. * @@ -27,229 +27,228 @@ import java.util.List; */ public final class IterableUtils { - /** - * Count items in an iterable. - * - * @param iterable to count items in. - * @return number of items in the iterable. - */ - public static long count(Iterable iterable) { - if (iterable instanceof Collection) { - return ((Collection) iterable).size(); - } + /** + * Count items in an iterable. + * + * @param iterable to count items in. + * @return number of items in the iterable. + */ + public static long count(Iterable iterable) { + if (iterable instanceof Collection) { + return ((Collection) iterable).size(); + } - int count = 0; - for (Object o : iterable) { - count++; - } + int count = 0; + for (Object o : iterable) { + count++; + } - return count; - } + return count; + } - /** - * Check whether an iterable contains the given object. - * - * @param iterable to check in. - * @param object to look for. - * @param type of the objects stored in the iterable. - * @return true iff the object is contained in the iterable. - */ - public static boolean contains(Iterable iterable, T object) { - if (iterable instanceof Collection) { - return ((Collection) iterable).contains(object); - } + /** + * Check whether an iterable contains the given object. + * + * @param iterable to check in. + * @param object to look for. + * @param type of the objects stored in the iterable. + * @return true iff the object is contained in the iterable. + */ + public static boolean contains(Iterable iterable, T object) { + if (iterable instanceof Collection) { + return ((Collection) iterable).contains(object); + } - for (T t : iterable) { - if (t.equals(object)) { - return true; - } - } + for (T t : iterable) { + if (t.equals(object)) { + return true; + } + } - return false; - } + return false; + } - /** - * Convert an iterable to a list. - * - * @param iterable to convert. - * @param type of the items held. - * @return a list. - */ - public static List toList(Iterable iterable) { - List list = new ArrayList<>(); + /** + * Convert an iterable to a list. + * + * @param iterable to convert. + * @param type of the items held. + * @return a list. + */ + public static List toList(Iterable iterable) { + List list = new ArrayList<>(); - if (iterable instanceof Collection) { - list.addAll((Collection) iterable); - } else { - for (T next : iterable) { - list.add(next); - } - } + if (iterable instanceof Collection) { + list.addAll((Collection) iterable); + } else { + for (T next : iterable) { + list.add(next); + } + } - return list; - } + return list; + } - /** - * Get a single element from iterator. - * - * @param iterator to find a single element. - * @param notFoundMessage exception message if there are no elements. - * @param type of the element. - * @return the element iff there is exactly one. - * @throws NotFoundException in case there are no elements. - * @throws IllegalStateException in case the iterable contains more than 1 element. - */ - public static T getSingle(Iterator iterator, String notFoundMessage) { - T result = getSingleOrNull(iterator); + /** + * Get a single element from iterator. + * + * @param iterator to find a single element. + * @param notFoundMessage exception message if there are no elements. + * @param type of the element. + * @return the element iff there is exactly one. + * @throws NotFoundException in case there are no elements. + * @throws IllegalStateException in case the iterable contains more than 1 element. + */ + public static T getSingle(Iterator iterator, String notFoundMessage) { + T result = getSingleOrNull(iterator); - if (result == null) { - throw new NotFoundException(notFoundMessage); - } + if (result == null) { + throw new NotFoundException(notFoundMessage); + } - return result; - } + return result; + } - /** - * Get a single element from iterable. - * - * @param iterable to find a single element. - * @param notFoundMessage exception message if there are no elements. - * @param type of the element. - * @return the element iff there is exactly one. - * @throws NotFoundException in case there are no elements. - * @throws IllegalStateException in case the iterable contains more than 1 element. - */ - public static T getSingle(Iterable iterable, String notFoundMessage) { - return getSingle(iterable.iterator(), notFoundMessage); - } + /** + * Get a single element from iterable. + * + * @param iterable to find a single element. + * @param notFoundMessage exception message if there are no elements. + * @param type of the element. + * @return the element iff there is exactly one. + * @throws NotFoundException in case there are no elements. + * @throws IllegalStateException in case the iterable contains more than 1 element. + */ + public static T getSingle(Iterable iterable, String notFoundMessage) { + return getSingle(iterable.iterator(), notFoundMessage); + } - /** - * Get a single element from iterator. - * - * @param iterator to find a single element. - * @param type of the element. - * @return the element iff there is exactly one. - * @throws NotFoundException in case there are no elements. - * @throws IllegalStateException in case the iterable contains more than 1 element. - */ - public static T getSingle(Iterator iterator) { - return getSingle(iterator, "Iterator is empty"); - } + /** + * Get a single element from iterator. + * + * @param iterator to find a single element. + * @param type of the element. + * @return the element iff there is exactly one. + * @throws NotFoundException in case there are no elements. + * @throws IllegalStateException in case the iterable contains more than 1 element. + */ + public static T getSingle(Iterator iterator) { + return getSingle(iterator, "Iterator is empty"); + } - /** - * Get a single element from iterable. - * - * @param iterable to find a single element. - * @param type of the element. - * @return the element iff there is exactly one. - * @throws NotFoundException in case there are no elements. - * @throws IllegalStateException in case the iterable contains more than 1 element. - */ - public static T getSingle(Iterable iterable) { - return getSingle(iterable.iterator(), "Iterable is empty"); - } + /** + * Get a single element from iterable. + * + * @param iterable to find a single element. + * @param type of the element. + * @return the element iff there is exactly one. + * @throws NotFoundException in case there are no elements. + * @throws IllegalStateException in case the iterable contains more than 1 element. + */ + public static T getSingle(Iterable iterable) { + return getSingle(iterable.iterator(), "Iterable is empty"); + } - /** - * Get a single element from iterator. - * - * @param iterator to find a single element. - * @param type of the element. - * @return the element iff there is exactly one, null iff there is 0. - * @throws IllegalStateException in case the iterable contains more than 1 element. - */ - public static T getSingleOrNull(Iterator iterator) { - T result = null; + /** + * Get a single element from iterator. + * + * @param iterator to find a single element. + * @param type of the element. + * @return the element iff there is exactly one, null iff there is 0. + * @throws IllegalStateException in case the iterable contains more than 1 element. + */ + public static T getSingleOrNull(Iterator iterator) { + T result = null; - if (iterator.hasNext()) { - result = iterator.next(); - } + if (iterator.hasNext()) { + result = iterator.next(); + } - if (iterator.hasNext()) { - throw new IllegalStateException("Iterable has more than one element, which is unexpected"); - } + if (iterator.hasNext()) { + throw new IllegalStateException("Iterable has more than one element, which is unexpected"); + } - return result; - } + return result; + } - /** - * Get a single element from iterable. - * - * @param iterable to find a single element. - * @param type of the element. - * @return the element iff there is exactly one, null iff there is 0. - * @throws IllegalStateException in case the iterable contains more than 1 element. - */ - public static T getSingleOrNull(Iterable iterable) { - return getSingleOrNull(iterable.iterator()); - } + /** + * Get a single element from iterable. + * + * @param iterable to find a single element. + * @param type of the element. + * @return the element iff there is exactly one, null iff there is 0. + * @throws IllegalStateException in case the iterable contains more than 1 element. + */ + public static T getSingleOrNull(Iterable iterable) { + return getSingleOrNull(iterable.iterator()); + } - /** - * Get the first element from iterator. - * - * @param iterator to find the first element. - * @param notFoundMessage exception message if there are no elements. - * @param type of the element. - * @return the element iff there is one or more. - * @throws NotFoundException in case there are no elements. - */ - public static T getFirst(Iterator iterator, String notFoundMessage) { - T result = null; + /** + * Get the first element from iterator. + * + * @param iterator to find the first element. + * @param notFoundMessage exception message if there are no elements. + * @param type of the element. + * @return the element iff there is one or more. + * @throws NotFoundException in case there are no elements. + */ + public static T getFirst(Iterator iterator, String notFoundMessage) { + T result = null; - if (iterator.hasNext()) { - result = iterator.next(); - } + if (iterator.hasNext()) { + result = iterator.next(); + } - if (result == null) { - throw new NotFoundException(notFoundMessage); - } + if (result == null) { + throw new NotFoundException(notFoundMessage); + } - return result; - } + return result; + } - /** - * Get the first element from iterable. - * - * @param iterable to find the first element. - * @param notFoundMessage exception message if there are no elements. - * @param type of the element. - * @return the element iff there is one or more. - * @throws NotFoundException in case there are no elements. - */ - public static T getFirst(Iterable iterable, String notFoundMessage) { - return getFirst(iterable.iterator(), notFoundMessage); - } + /** + * Get the first element from iterable. + * + * @param iterable to find the first element. + * @param notFoundMessage exception message if there are no elements. + * @param type of the element. + * @return the element iff there is one or more. + * @throws NotFoundException in case there are no elements. + */ + public static T getFirst(Iterable iterable, String notFoundMessage) { + return getFirst(iterable.iterator(), notFoundMessage); + } - /** - * Get the first element from iterator. - * - * @param iterator to find the first element. - * @param type of the element. - * @return the element iff there is one or more, null if there is none. - */ - public static T getFirstOrNull(Iterator iterator) { - T result = null; + /** + * Get the first element from iterator. + * + * @param iterator to find the first element. + * @param type of the element. + * @return the element iff there is one or more, null if there is none. + */ + public static T getFirstOrNull(Iterator iterator) { + T result = null; - if (iterator.hasNext()) { - result = iterator.next(); - } + if (iterator.hasNext()) { + result = iterator.next(); + } - return result; - } + return result; + } - /** - * Get the first element from iterable. - * - * @param iterable to find the first element. - * @param type of the element. - * @return the element iff there is one or more, null if there is none. - */ - public static T getFirstOrNull(Iterable iterable) { - return getFirstOrNull(iterable.iterator()); - } + /** + * Get the first element from iterable. + * + * @param iterable to find the first element. + * @param type of the element. + * @return the element iff there is one or more, null if there is none. + */ + public static T getFirstOrNull(Iterable iterable) { + return getFirstOrNull(iterable.iterator()); + } - /** - * private constructor to prevent instantiation. - */ - private IterableUtils() { - } + /** + * private constructor to prevent instantiation. + */ + private IterableUtils() {} } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/web/support/AsyncRequestInterceptor.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/web/support/AsyncRequestInterceptor.java index d3427dbc9..f927d910c 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/web/support/AsyncRequestInterceptor.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/web/support/AsyncRequestInterceptor.java @@ -26,15 +26,14 @@ import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.context.request.async.DeferredResultProcessingInterceptor; /** - * An interceptor with asynchronous web requests used in OpenSessionInViewFilter and - * OpenSessionInViewInterceptor. - * Ensures the following: - * 1) The session is bound/unbound when "callable processing" is started - * 2) The session is closed if an async request times out + * An interceptor with asynchronous web requests used in OpenSessionInViewFilter and OpenSessionInViewInterceptor. + * Ensures the following: 1) The session is bound/unbound when "callable processing" is started 2) The session is closed + * if an async request times out * * @author Mark Angrish */ -class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapter implements DeferredResultProcessingInterceptor { +class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapter + implements DeferredResultProcessingInterceptor { private static final Logger logger = LoggerFactory.getLogger(AsyncRequestInterceptor.class); @@ -49,7 +48,6 @@ class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapter imple this.sessionHolder = sessionHolder; } - @Override public void preProcess(NativeWebRequest request, Callable task) { bindSession(); @@ -68,7 +66,7 @@ class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapter imple @Override public Object handleTimeout(NativeWebRequest request, Callable task) { this.timeoutInProgress = true; - return RESULT_NONE; // give other interceptors a chance to handle the timeout + return RESULT_NONE; // give other interceptors a chance to handle the timeout } @Override @@ -80,13 +78,12 @@ class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapter imple if (this.timeoutInProgress) { logger.debug("Closing Neo4j OGM Session after async request timeout"); // close session. -// SessionFactoryUtils.closeSession(session); + // SessionFactoryUtils.closeSession(session); } } @Override - public void beforeConcurrentHandling(NativeWebRequest request, DeferredResult deferredResult) { - } + public void beforeConcurrentHandling(NativeWebRequest request, DeferredResult deferredResult) {} @Override public void preProcess(NativeWebRequest request, DeferredResult deferredResult) { @@ -101,11 +98,12 @@ class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapter imple @Override public boolean handleTimeout(NativeWebRequest request, DeferredResult deferredResult) { this.timeoutInProgress = true; - return true; // give other interceptors a chance to handle the timeout + return true; // give other interceptors a chance to handle the timeout } @Override - public void afterCompletion(NativeWebRequest nativeWebRequest, DeferredResult deferredResult) throws Exception { + public void afterCompletion(NativeWebRequest nativeWebRequest, DeferredResult deferredResult) + throws Exception { // Do nothing. } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/web/support/OpenSessionInViewFilter.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/web/support/OpenSessionInViewFilter.java index 53a81cd7e..7829adb42 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/web/support/OpenSessionInViewFilter.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/web/support/OpenSessionInViewFilter.java @@ -13,16 +13,16 @@ package org.springframework.data.neo4j.web.support; +import java.io.IOException; + import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.IOException; import org.neo4j.ogm.session.Session; import org.neo4j.ogm.session.SessionFactory; import org.springframework.data.neo4j.transaction.Neo4jTransactionManager; -import org.springframework.data.neo4j.transaction.SessionFactoryUtils; import org.springframework.data.neo4j.transaction.SessionHolder; import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.util.StringUtils; @@ -33,16 +33,15 @@ import org.springframework.web.context.support.WebApplicationContextUtils; import org.springframework.web.filter.OncePerRequestFilter; /** - * Servlet Filter that binds a Neo4j OGM Session to the thread for the - * entire processing of the request. Intended for the "Open Session in - * View" pattern, i.e. to allow for lazy loading in web views despite the - * original transactions already being completed. - *

    This filter makes OGM Sessions available via the current thread, - * which will be autodetected by transaction managers. At the moment this service is - * only suitable for transactions via {@link Neo4jTransactionManager}. - *

    Looks up the SessionFactory in Spring's root web application context. - * Supports an "sessionFactoryBeanName" filter init-param in {@code web.xml}; - * the default bean name is "sessionFactory". + * Servlet Filter that binds a Neo4j OGM Session to the thread for the entire processing of the request. Intended for + * the "Open Session in View" pattern, i.e. to allow for lazy loading in web views despite the original transactions + * already being completed. + *

    + * This filter makes OGM Sessions available via the current thread, which will be autodetected by transaction managers. + * At the moment this service is only suitable for transactions via {@link Neo4jTransactionManager}. + *

    + * Looks up the SessionFactory in Spring's root web application context. Supports an "sessionFactoryBeanName" filter + * init-param in {@code web.xml}; the default bean name is "sessionFactory". * * @author Mark Angrish * @see OpenSessionInViewInterceptor @@ -63,9 +62,9 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter { private volatile SessionFactory sessionFactory; /** - * Set the bean name of the SessionFactory to fetch from Spring's - * root application context. - *

    Default is "sessionFactory". + * Set the bean name of the SessionFactory to fetch from Spring's root application context. + *

    + * Default is "sessionFactory". * * @see #DEFAULT_SESSION_FACTORY_BEAN_NAME */ @@ -74,38 +73,31 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter { } /** - * Return the bean name of the SessionFactory to fetch from Spring's - * root application context. + * Return the bean name of the SessionFactory to fetch from Spring's root application context. */ protected String getSessionFactoryBeanName() { return this.sessionFactoryBeanName; } - /** - * Returns "false" so that the filter may re-bind the opened {@code Session} - * to each asynchronously dispatched thread and postpone closing it until the very - * last asynchronous dispatch. + * Returns "false" so that the filter may re-bind the opened {@code Session} to each asynchronously dispatched thread + * and postpone closing it until the very last asynchronous dispatch. */ @Override protected boolean shouldNotFilterAsyncDispatch() { return false; } - /** - * Returns "false" so that the filter may provide an {@code Session} - * to each error dispatches. + * Returns "false" so that the filter may provide an {@code Session} to each error dispatches. */ @Override protected boolean shouldNotFilterErrorDispatch() { return false; } - @Override - protected void doFilterInternal( - HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { SessionFactory sessionFactory = lookupSessionFactory(request); @@ -139,17 +131,17 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter { if (!isAsyncStarted(request)) { logger.debug("Closed Neo4J OGM Session in OpenSessionInViewFilter"); // close session. -// SessionFactoryUtils.closeSession(session); + // SessionFactoryUtils.closeSession(session); } } } } /** - * Look up the SessionFactory that this filter should use, - * taking the current HTTP request as argument. - *

    The default implementation delegates to the {@code lookupSessionFactory} - * without arguments, caching the SessionFactory reference once obtained. + * Look up the SessionFactory that this filter should use, taking the current HTTP request as argument. + *

    + * The default implementation delegates to the {@code lookupSessionFactory} without arguments, caching the + * SessionFactory reference once obtained. * * @return the SessionFactory to use * @see #lookupSessionFactory() @@ -163,8 +155,8 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter { /** * Look up the SessionFactory that this filter should use. - *

    The default implementation looks for a bean with the specified name - * in Spring's root application context. + *

    + * The default implementation looks for a bean with the specified name in Spring's root application context. * * @return the SessionFactory to use * @see #getSessionFactoryBeanName @@ -182,10 +174,10 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter { } } - /** * Create a Neo4j OGM Session to be bound to a request. - *

    Can be overridden in subclasses. + *

    + * Can be overridden in subclasses. * * @param sessionFactory the SessionFactory to use * @see SessionFactory#openSession diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/web/support/OpenSessionInViewInterceptor.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/web/support/OpenSessionInViewInterceptor.java index 8638e0f53..385d576f4 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/web/support/OpenSessionInViewInterceptor.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/web/support/OpenSessionInViewInterceptor.java @@ -13,7 +13,6 @@ package org.springframework.data.neo4j.web.support; - import org.neo4j.ogm.session.Session; import org.neo4j.ogm.session.SessionFactory; import org.slf4j.Logger; @@ -32,15 +31,15 @@ import org.springframework.web.context.request.async.WebAsyncManager; import org.springframework.web.context.request.async.WebAsyncUtils; /** - * Spring web request interceptor that binds a Neo4j OGM Session to the - * thread for the entire processing of the request. Intended for the "Open - * Session in View" pattern, i.e. to allow for lazy loading in - * web views despite the original transactions already being completed. - *

    This interceptor makes Neo4j OGM Sessions available via the current thread, - * which will be autodetected by transaction managers. It is suitable for service - * layer transactions via {@link Neo4jTransactionManager}. - *

    In contrast to {@link OpenSessionInViewFilter}, this interceptor is set - * up in a Spring application context and can thus take advantage of bean wiring. + * Spring web request interceptor that binds a Neo4j OGM Session to the thread for the entire processing of the request. + * Intended for the "Open Session in View" pattern, i.e. to allow for lazy loading in web views despite the original + * transactions already being completed. + *

    + * This interceptor makes Neo4j OGM Sessions available via the current thread, which will be autodetected by transaction + * managers. It is suitable for service layer transactions via {@link Neo4jTransactionManager}. + *

    + * In contrast to {@link OpenSessionInViewFilter}, this interceptor is set up in a Spring application context and can + * thus take advantage of bean wiring. * * @author Mark Angrish * @see OpenSessionInViewFilter @@ -55,8 +54,7 @@ public class OpenSessionInViewInterceptor implements BeanFactoryAware, AsyncWebR protected final Logger logger = LoggerFactory.getLogger(getClass()); /** - * Suffix that gets appended to the SessionFactory toString - * representation for the "participate in existing session + * Suffix that gets appended to the SessionFactory toString representation for the "participate in existing session * handling" request attribute. * * @see #getParticipateAttributeName @@ -66,8 +64,7 @@ public class OpenSessionInViewInterceptor implements BeanFactoryAware, AsyncWebR private SessionFactory sessionFactory; /** - * Set the Neo4j OGM SessionFactory that should be used to create - * Sessions. + * Set the Neo4j OGM SessionFactory that should be used to create Sessions. * * @see SessionFactory#openSession */ @@ -76,8 +73,7 @@ public class OpenSessionInViewInterceptor implements BeanFactoryAware, AsyncWebR } /** - * Return the Neo4j OGM SessionFactory that should be used to create - * Sessions. + * Return the Neo4j OGM SessionFactory that should be used to create Sessions. */ public SessionFactory getSessionFactory() { return this.sessionFactory; @@ -93,7 +89,6 @@ public class OpenSessionInViewInterceptor implements BeanFactoryAware, AsyncWebR } } - @Override public void preHandle(WebRequest request) throws DataAccessException { String participateAttributeName = getParticipateAttributeName(); @@ -123,8 +118,7 @@ public class OpenSessionInViewInterceptor implements BeanFactoryAware, AsyncWebR } @Override - public void postHandle(WebRequest request, ModelMap model) { - } + public void postHandle(WebRequest request, ModelMap model) {} @Override public void afterCompletion(WebRequest request, Exception ex) throws DataAccessException { @@ -132,7 +126,7 @@ public class OpenSessionInViewInterceptor implements BeanFactoryAware, AsyncWebR TransactionSynchronizationManager.unbindResource(getSessionFactory()); logger.debug("Closed Neo4j OGM Session in OpenSessionInViewInterceptor"); // close session. -// SessionFactoryUtils.closeSession(session); + // SessionFactoryUtils.closeSession(session); } } @@ -159,9 +153,8 @@ public class OpenSessionInViewInterceptor implements BeanFactoryAware, AsyncWebR } /** - * Return the name of the request attribute that identifies that a request is - * already filtered. Default implementation takes the toString representation - * of the SessionFactory instance and appends ".FILTERED". + * Return the name of the request attribute that identifies that a request is already filtered. Default implementation + * takes the toString representation of the SessionFactory instance and appends ".FILTERED". * * @see #PARTICIPATE_SUFFIX */ @@ -169,7 +162,6 @@ public class OpenSessionInViewInterceptor implements BeanFactoryAware, AsyncWebR return getSessionFactory().toString() + PARTICIPATE_SUFFIX; } - private boolean applyCallableInterceptor(WebAsyncManager asyncManager, String key) { if (asyncManager.getCallableInterceptor(key) == null) { return false; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/auditing/JavaConfigurationAuditingTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/auditing/JavaConfigurationAuditingTests.java index a49b2dda9..4a1bdd725 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/auditing/JavaConfigurationAuditingTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/auditing/JavaConfigurationAuditingTests.java @@ -48,20 +48,19 @@ public class JavaConfigurationAuditingTests extends MultiDriverTestClass { @EnableNeo4jRepositories(basePackageClasses = UserRepository.class) static class Neo4jConfiguration { - @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), User.class.getPackage().getName()); + return new SessionFactory(getBaseConfiguration().build(), User.class.getPackage().getName()); } @Bean public Neo4jTransactionManager transactionManager() { - return new Neo4jTransactionManager(); + return new Neo4jTransactionManager(); } @Bean public AuditorAware auditorAware() { - return new AuditorAware() { + return new AuditorAware() { @Override public Optional getCurrentAuditor() { @@ -71,8 +70,7 @@ public class JavaConfigurationAuditingTests extends MultiDriverTestClass { } } - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; @Test public void whenSaveEntity_thenSetCreatedAndCreatedBy() throws Exception { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/auditing/domain/User.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/auditing/domain/User.java index 23223a6e4..aca5723de 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/auditing/domain/User.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/auditing/domain/User.java @@ -13,14 +13,14 @@ package org.springframework.data.neo4j.auditing.domain; +import java.time.LocalDateTime; + import org.neo4j.ogm.annotation.NodeEntity; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; import org.springframework.data.annotation.LastModifiedDate; -import java.time.LocalDateTime; - /** * @author Frantisek Hartman */ @@ -31,20 +31,15 @@ public class User { String name; - @CreatedDate - LocalDateTime created; + @CreatedDate LocalDateTime created; - @CreatedBy - String createdBy; + @CreatedBy String createdBy; - @LastModifiedDate - LocalDateTime modified; + @LastModifiedDate LocalDateTime modified; - @LastModifiedBy - String modifiedBy; + @LastModifiedBy String modifiedBy; - public User() { - } + public User() {} public User(String name) { this.name = name; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/auditing/repository/UserRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/auditing/repository/UserRepository.java index d6484eb06..2c542d839 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/auditing/repository/UserRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/auditing/repository/UserRepository.java @@ -19,5 +19,4 @@ import org.springframework.data.neo4j.repository.Neo4jRepository; /** * @author Frantisek Hartman */ -public interface UserRepository extends Neo4jRepository { -} +public interface UserRepository extends Neo4jRepository {} diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/bookmark/BookmarkManagementTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/bookmark/BookmarkManagementTest.java index 7edb7a62f..ff8f11b67 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/bookmark/BookmarkManagementTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/bookmark/BookmarkManagementTest.java @@ -13,6 +13,8 @@ package org.springframework.data.neo4j.bookmark; +import static org.assertj.core.api.Assertions.*; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -24,8 +26,6 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.EnableTransactionManagement; -import static org.assertj.core.api.Assertions.assertThat; - /** * @author Frantisek Hartman */ @@ -33,11 +33,9 @@ import static org.assertj.core.api.Assertions.assertThat; @ContextConfiguration(classes = BookmarkManagementTest.BookmarkManagementConfiguration.class) public class BookmarkManagementTest { - @Autowired - private UseBookmarkOnMethodBean useBookmarkOnMethodBean; + @Autowired private UseBookmarkOnMethodBean useBookmarkOnMethodBean; - @Autowired - private UseBookmarkOnClassBean useBookmarkOnClassBean; + @Autowired private UseBookmarkOnClassBean useBookmarkOnClassBean; @Test public void givenUseBookmarkOnMethod_whenRun_thenShouldUseBookmarkIsSet() throws Exception { @@ -50,8 +48,7 @@ public class BookmarkManagementTest { @Test public void givenUseBookmarkOnMethod_whenRun_thenRemoveBookmarkInfoAfterRun() throws Exception { - useBookmarkOnMethodBean.runWithBookmark(() -> { - }); + useBookmarkOnMethodBean.runWithBookmark(() -> {}); BookmarkInfo bookmarkInfo = BookmarkSupport.currentBookmarkInfo(); assertThat(bookmarkInfo).isNull(); @@ -84,8 +81,7 @@ public class BookmarkManagementTest { @Test public void givenUseBookmarkOnClass_whenRun_thenRemoveBookmarkInfoAfterRun() throws Exception { - useBookmarkOnClassBean.runWithBookmark(() -> { - }); + useBookmarkOnClassBean.runWithBookmark(() -> {}); BookmarkInfo bookmarkInfo = BookmarkSupport.currentBookmarkInfo(); assertThat(bookmarkInfo).isNull(); @@ -134,5 +130,4 @@ public class BookmarkManagementTest { } - } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/domain/sample/Role.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/domain/sample/Role.java index 1655b8e83..8077fb7da 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/domain/sample/Role.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/domain/sample/Role.java @@ -12,7 +12,6 @@ */ package org.springframework.data.neo4j.domain.sample; - import java.util.UUID; import org.neo4j.ogm.annotation.GraphId; @@ -28,8 +27,7 @@ public class Role { private static final String PREFIX = "ROLE_"; - @GraphId - private Long id; + @GraphId private Long id; private UUID uuid; private String name; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/domain/sample/SampleEntity.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/domain/sample/SampleEntity.java index 8bce21550..d7abc6b8b 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/domain/sample/SampleEntity.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/domain/sample/SampleEntity.java @@ -23,8 +23,7 @@ import org.springframework.util.Assert; @NodeEntity public class SampleEntity { - @GraphId - protected Long id; + @GraphId protected Long id; private String first; private String second; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/domain/sample/User.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/domain/sample/User.java index 34c6c75f3..3313a4345 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/domain/sample/User.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/domain/sample/User.java @@ -10,7 +10,6 @@ import org.neo4j.ogm.annotation.NodeEntity; import org.neo4j.ogm.annotation.Relationship; import org.neo4j.ogm.annotation.typeconversion.DateString; - /** * Domain class representing a person emphasizing the use of {@code AbstractEntity}. No declaration of an id is * required. The id is typed by the parameterizable superclass. @@ -18,8 +17,7 @@ import org.neo4j.ogm.annotation.typeconversion.DateString; @NodeEntity public class User { - @GraphId - private Long id; + @GraphId private Long id; private String firstname; @@ -33,11 +31,9 @@ public class User { private String emailAddress; - @Relationship - private Set colleagues; + @Relationship private Set colleagues; - @Relationship - private Set roles; + @Relationship private Set roles; private User manager; @@ -47,8 +43,7 @@ public class User { private Set attributes; - @DateString - private Date dateOfBirth; + @DateString private Date dateOfBirth; /** * Creates a new empty instance of {@code User}. diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/EventPublisher.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/EventPublisher.java index 375a1487a..1b4045e79 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/EventPublisher.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/EventPublisher.java @@ -12,8 +12,7 @@ import org.springframework.stereotype.Component; @Component public class EventPublisher extends EventListenerAdapter { - @Autowired - private ApplicationEventPublisher publisher; + @Autowired private ApplicationEventPublisher publisher; @Override public void onPreSave(Event event) { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/Neo4jModificationEventListener.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/Neo4jModificationEventListener.java index eb831f119..99838d860 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/Neo4jModificationEventListener.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/Neo4jModificationEventListener.java @@ -1,7 +1,6 @@ package org.springframework.data.neo4j.events; import org.springframework.context.event.EventListener; -import org.springframework.core.ResolvableType; import org.springframework.stereotype.Component; /** @@ -21,7 +20,7 @@ public class Neo4jModificationEventListener { @EventListener public void onPreSaveEvent(PreSaveEvent event) { - preSaveEvent= event; + preSaveEvent = event; preSaveEventCount++; } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/PostDeleteEvent.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/PostDeleteEvent.java index d260d23d0..0815eb4db 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/PostDeleteEvent.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/PostDeleteEvent.java @@ -7,7 +7,7 @@ import org.neo4j.ogm.session.event.Event; */ public class PostDeleteEvent extends ModificationEvent { - public PostDeleteEvent( Event event) { + public PostDeleteEvent(Event event) { super(event); } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/PreDeleteEvent.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/PreDeleteEvent.java index c47528028..bbab73b8f 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/PreDeleteEvent.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/events/PreDeleteEvent.java @@ -7,7 +7,7 @@ import org.neo4j.ogm.session.event.Event; */ public class PreDeleteEvent extends ModificationEvent { - public PreDeleteEvent( Event event) { + public PreDeleteEvent(Event event) { super(event); } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/friends/FriendService.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/friends/FriendService.java index 4cd436194..9234d33b5 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/friends/FriendService.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/friends/FriendService.java @@ -27,8 +27,7 @@ import org.springframework.transaction.annotation.Transactional; @Service public class FriendService { - @Autowired - Session session; + @Autowired Session session; @Transactional public void createPersonAndFriends() { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/friends/FriendTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/friends/FriendTests.java index c0d63a9ef..ea6d242e8 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/friends/FriendTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/friends/FriendTests.java @@ -16,10 +16,8 @@ package org.springframework.data.neo4j.examples.friends; import static org.junit.Assert.*; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; -import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.ogm.cypher.ComparisonOperator; import org.neo4j.ogm.cypher.Filter; import org.neo4j.ogm.session.Session; @@ -44,16 +42,14 @@ import org.springframework.transaction.annotation.Transactional; * @author Luanne Misquitta * @author Mark Angrish */ -@ContextConfiguration(classes = {FriendTests.FriendContext.class}) +@ContextConfiguration(classes = { FriendTests.FriendContext.class }) @RunWith(SpringJUnit4ClassRunner.class) public class FriendTests extends MultiDriverTestClass { - @Autowired Session session; @Autowired FriendshipRepository friendshipRepository; @Autowired FriendService friendService; - @Before public void cleanUpDatabase() { getGraphDatabaseService().execute("MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE r, n"); @@ -68,7 +64,8 @@ public class FriendTests extends MultiDriverTestClass { friendService.createPersonAndFriends(); session.clear(); - Person john = session.loadAll(Person.class, new Filter("firstName", ComparisonOperator.EQUALS, "John")).iterator().next(); + Person john = session.loadAll(Person.class, new Filter("firstName", ComparisonOperator.EQUALS, "John")).iterator() + .next(); assertNotNull(john); assertEquals(2, john.getFriendships().size()); } @@ -111,7 +108,8 @@ public class FriendTests extends MultiDriverTestClass { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.friends.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.friends.domain"); } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/friends/domain/Person.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/friends/domain/Person.java index 0fbf10578..df702fe7b 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/friends/domain/Person.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/friends/domain/Person.java @@ -13,13 +13,13 @@ package org.springframework.data.neo4j.examples.friends.domain; +import java.util.HashSet; +import java.util.Set; + import org.neo4j.ogm.annotation.GraphId; import org.neo4j.ogm.annotation.NodeEntity; import org.neo4j.ogm.annotation.Relationship; -import java.util.HashSet; -import java.util.Set; - /** * @author Luanne Misquitta */ @@ -30,8 +30,7 @@ public class Person { private String firstName; private String lastName; - @Relationship(type = "IS_FRIEND") - private Set friendships = new HashSet<>(); + @Relationship(type = "IS_FRIEND") private Set friendships = new HashSet<>(); public Person() {} diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/GalaxyServiceTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/GalaxyServiceTests.java index 621b0fdf9..f22c9b7c2 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/GalaxyServiceTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/GalaxyServiceTests.java @@ -49,18 +49,16 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.support.TransactionTemplate; - /** * @author Vince Bickers * @author Mark Paluch */ -@ContextConfiguration(classes = {GalaxyServiceTests.GalaxyContext.class}) +@ContextConfiguration(classes = { GalaxyServiceTests.GalaxyContext.class }) @RunWith(SpringJUnit4ClassRunner.class) @Transactional public class GalaxyServiceTests extends MultiDriverTestClass { - @Autowired - private GalaxyService galaxyService; + @Autowired private GalaxyService galaxyService; @Before public void setUp() { @@ -108,7 +106,6 @@ public class GalaxyServiceTests extends MultiDriverTestClass { } } - @Test public void shouldFindWorldsByName() { galaxyService.makeSomeWorlds(); @@ -150,9 +147,7 @@ public class GalaxyServiceTests extends MultiDriverTestClass { galaxyService.makeSomeWorlds(); for (World worldWithOneMoon : galaxyService.findAllByNumberOfMoons(1)) { - assertThat( - worldWithOneMoon.getName(), - is(anyOf(containsString("Earth"), containsString("Midgard")))); + assertThat(worldWithOneMoon.getName(), is(anyOf(containsString("Earth"), containsString("Midgard")))); } } @@ -221,11 +216,11 @@ public class GalaxyServiceTests extends MultiDriverTestClass { sum += world.getId(); } // note: this doesn't work, because deleted node ids are not reclaimed - // long sum = (size * size - size) / 2; // 0-based node ids + // long sum = (size * size - size) / 2; // 0-based node ids Pageable pageable = new PageRequest(0, 3); - for (; ; ) { + for (;;) { Page page = galaxyService.findAllWorlds(pageable); for (World world : page) { sum -= world.getId(); @@ -251,7 +246,7 @@ public class GalaxyServiceTests extends MultiDriverTestClass { Pageable pageable = new PageRequest(0, 3, Sort.Direction.ASC, "name"); int i = 0; - for (; ; ) { + for (;;) { Page page = galaxyService.findAllWorlds(pageable); for (World world : page) { assertEquals(sortedNames[i], world.getName()); @@ -308,13 +303,13 @@ public class GalaxyServiceTests extends MultiDriverTestClass { names.add(world.getName()); } - String[] sortedNames = names.toArray(new String[]{}); + String[] sortedNames = names.toArray(new String[] {}); Arrays.sort(sortedNames); return sortedNames; } @Configuration - @ComponentScan({"org.springframework.data.neo4j.examples.galaxy.service"}) + @ComponentScan({ "org.springframework.data.neo4j.examples.galaxy.service" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.galaxy.repo") @EnableTransactionManagement static class GalaxyContext { @@ -326,7 +321,8 @@ public class GalaxyServiceTests extends MultiDriverTestClass { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.galaxy.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.galaxy.domain"); } @Bean diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/WorldRepositoryTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/WorldRepositoryTests.java index 675735579..62b2b907d 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/WorldRepositoryTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/WorldRepositoryTests.java @@ -37,82 +37,81 @@ import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.support.TransactionTemplate; -@ContextConfiguration(classes = {WorldRepositoryTests.GalaxyContext.class}) +@ContextConfiguration(classes = { WorldRepositoryTests.GalaxyContext.class }) @RunWith(SpringJUnit4ClassRunner.class) public class WorldRepositoryTests extends MultiDriverTestClass { - @Autowired - WorldRepository worldRepository; + @Autowired WorldRepository worldRepository; - @Autowired - TransactionTemplate transactionTemplate; + @Autowired TransactionTemplate transactionTemplate; - boolean failed = false; + boolean failed = false; - /** - * see https://jira.spring.io/browse/DATAGRAPH-951 - * - * @throws Exception - */ - @Test - public void multipleThreadsResultsGetMixedUp() throws Exception { + /** + * see https://jira.spring.io/browse/DATAGRAPH-951 + * + * @throws Exception + */ + @Test + public void multipleThreadsResultsGetMixedUp() throws Exception { - World world1 = new World("world 1", 1); - worldRepository.save(world1, 0); + World world1 = new World("world 1", 1); + worldRepository.save(world1, 0); - World world2 = new World("world 2", 2); - worldRepository.save(world2, 0); + World world2 = new World("world 2", 2); + worldRepository.save(world2, 0); - int iterations = 10; + int iterations = 10; - ExecutorService service = Executors.newFixedThreadPool(2); - final CountDownLatch countDownLatch = new CountDownLatch(iterations * 2); + ExecutorService service = Executors.newFixedThreadPool(2); + final CountDownLatch countDownLatch = new CountDownLatch(iterations * 2); - for (int i = 0; i < iterations; i++) { + for (int i = 0; i < iterations; i++) { - service.execute(() -> { - World world = worldRepository.findByName("world 1"); + service.execute(() -> { + World world = worldRepository.findByName("world 1"); - if (!"world 1".equals(world.getName())) { - failed = true; - } - countDownLatch.countDown(); - }); + if (!"world 1".equals(world.getName())) { + failed = true; + } + countDownLatch.countDown(); + }); - service.execute(() -> { + service.execute(() -> { - World world = worldRepository.findByName("world 2"); + World world = worldRepository.findByName("world 2"); - if (!"world 2".equals(world.getName())) { - failed = true; - } - countDownLatch.countDown(); - }); - } - countDownLatch.await(); - assertFalse(failed); - } + if (!"world 2".equals(world.getName())) { + failed = true; + } + countDownLatch.countDown(); + }); + } + countDownLatch.await(); + assertFalse(failed); + } - @Configuration - @ComponentScan({"org.springframework.data.neo4j.examples.galaxy.service"}) - @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.galaxy.repo") - @EnableTransactionManagement - static class GalaxyContext { + @Configuration + @ComponentScan({ "org.springframework.data.neo4j.examples.galaxy.service" }) + @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.galaxy.repo") + @EnableTransactionManagement + static class GalaxyContext { - @Bean - public PlatformTransactionManager transactionManager() { - return new Neo4jTransactionManager(sessionFactory()); - } + @Bean + public PlatformTransactionManager transactionManager() { + return new Neo4jTransactionManager(sessionFactory()); + } - @Bean - public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.galaxy.domain"); - } + @Bean + public SessionFactory sessionFactory() { + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.galaxy.domain"); + } - @Bean - public TransactionTemplate transactionTemplate() { - return new TransactionTemplate(transactionManager()); - } + @Bean + public TransactionTemplate transactionTemplate() { + return new TransactionTemplate(transactionManager()); + } - } + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/domain/World.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/domain/World.java index 1e4a3a5d4..5d724e079 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/domain/World.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/domain/World.java @@ -13,114 +13,117 @@ package org.springframework.data.neo4j.examples.galaxy.domain; -import org.neo4j.ogm.annotation.Relationship; - import java.util.HashSet; import java.util.Set; +import org.neo4j.ogm.annotation.Relationship; + /** * @author Vince Bickers * @author Luanne Misquitta */ public class World { - private final static String REACHABLE_BY_ROCKET = "REACHABLE_BY_ROCKET"; + private final static String REACHABLE_BY_ROCKET = "REACHABLE_BY_ROCKET"; - private Long id; + private Long id; - private String name; + private String name; - private int moons; + private int moons; - private Float radius; + private Float radius; - private Long updated; + private Long updated; - public Long getUpdated() { - return updated; - } + public Long getUpdated() { + return updated; + } - public void setUpdated(long updated) { - this.updated = updated; - } + public void setUpdated(long updated) { + this.updated = updated; + } - @Relationship(type=REACHABLE_BY_ROCKET, direction = "UNDIRECTED") - private Set reachableByRocket = new HashSet<>(); + @Relationship(type = REACHABLE_BY_ROCKET, + direction = "UNDIRECTED") private Set reachableByRocket = new HashSet<>(); - public World(String name, int moons) { - this.name = name; - this.moons = moons; - } + public World(String name, int moons) { + this.name = name; + this.moons = moons; + } - public World() { - } + public World() {} - public Long getId() { - return id; - } + public Long getId() { + return id; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public int getMoons() { - return moons; - } + public int getMoons() { + return moons; + } - public void addRocketRouteTo(World otherWorld) { - reachableByRocket.add(otherWorld); - // symmetric relationship. - otherWorld.reachableByRocket.add(this); // bi-directional in domain. - } + public void addRocketRouteTo(World otherWorld) { + reachableByRocket.add(otherWorld); + // symmetric relationship. + otherWorld.reachableByRocket.add(this); // bi-directional in domain. + } - public Set getReachableByRocket() { - return this.reachableByRocket; - } + public Set getReachableByRocket() { + return this.reachableByRocket; + } - public void setReachableByRocket(Set reachableByRocket) { - this.reachableByRocket.clear(); - this.reachableByRocket = reachableByRocket; - } + public void setReachableByRocket(Set reachableByRocket) { + this.reachableByRocket.clear(); + this.reachableByRocket = reachableByRocket; + } - public boolean canBeReachedFrom(World otherWorld) { - for(World world : reachableByRocket) { - if(world.equals(otherWorld)) { - return true; - } - } - return false; - } + public boolean canBeReachedFrom(World otherWorld) { + for (World world : reachableByRocket) { + if (world.equals(otherWorld)) { + return true; + } + } + return false; + } - public Float getRadius() { - return radius; - } + public Float getRadius() { + return radius; + } - public void setRadius(Float radius) { - this.radius = radius; - } + public void setRadius(Float radius) { + this.radius = radius; + } - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; - World world = (World) o; + World world = (World) o; - if (moons != world.moons) return false; - if (id != null ? !id.equals(world.id) : world.id != null) return false; - return !(name != null ? !name.equals(world.name) : world.name != null); - } + if (moons != world.moons) + return false; + if (id != null ? !id.equals(world.id) : world.id != null) + return false; + return !(name != null ? !name.equals(world.name) : world.name != null); + } - @Override - public int hashCode() { - int result = id != null ? id.hashCode() : 0; - result = 31 * result + (name != null ? name.hashCode() : 0); - result = 31 * result + moons; - return result; - } + @Override + public int hashCode() { + int result = id != null ? id.hashCode() : 0; + result = 31 * result + (name != null ? name.hashCode() : 0); + result = 31 * result + moons; + return result; + } - @Override - public String toString() { - return String.format("World{name='%s', moons=%d}", name, moons); - } + @Override + public String toString() { + return String.format("World{name='%s', moons=%d}", name, moons); + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/repo/WorldRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/repo/WorldRepository.java index 567516523..fa0a219c2 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/repo/WorldRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/repo/WorldRepository.java @@ -26,12 +26,12 @@ import org.springframework.stereotype.Repository; @Repository public interface WorldRepository extends Neo4jRepository { - @Query("MATCH (n:World) SET n.updated=timestamp()") - void touchAllWorlds(); + @Query("MATCH (n:World) SET n.updated=timestamp()") + void touchAllWorlds(); - @Query("MATCH (n:World) SET n.updated=timestamp()") - Result touchAllWorldsWithStatistics(); + @Query("MATCH (n:World) SET n.updated=timestamp()") + Result touchAllWorldsWithStatistics(); - World findByName(String name); + World findByName(String name); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/service/GalaxyService.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/service/GalaxyService.java index 04f85ad73..bac7a2c96 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/service/GalaxyService.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/galaxy/service/GalaxyService.java @@ -40,11 +40,9 @@ import org.springframework.transaction.annotation.Transactional; @Transactional public class GalaxyService { - @Autowired - private WorldRepository worldRepository; + @Autowired private WorldRepository worldRepository; - @Autowired - Session session; + @Autowired Session session; public long getNumberOfWorlds() { return worldRepository.count(); @@ -93,13 +91,13 @@ public class GalaxyService { mars.addRocketRouteTo(earth); // todo: handle bi-directional automatically - //earth.addRocketRouteTo(mars); + // earth.addRocketRouteTo(mars); // this is a bit silly worldRepository.save(mars); // todo: handle-bidirectional automatically - //worldRepository.save(earth); + // worldRepository.save(earth); worlds.add(earth); worlds.add(mars); @@ -167,7 +165,6 @@ public class GalaxyService { return session.loadAll(World.class, new Filter(propertyName, ComparisonOperator.EQUALS, propertyValue), depth); } - public Iterable findAllWorlds(Pagination paging) { return session.loadAll(World.class, paging, 0); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/JSR303Tests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/JSR303Tests.java index 3d3f7a8c9..40205f7ca 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/JSR303Tests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/JSR303Tests.java @@ -43,18 +43,16 @@ import org.springframework.web.context.WebApplicationContext; * @author Vince Bickers * @author Mark Angrish */ -@ContextConfiguration(classes = {WebConfiguration.class, JSR303Tests.JSR303Context.class}) +@ContextConfiguration(classes = { WebConfiguration.class, JSR303Tests.JSR303Context.class }) @WebAppConfiguration @RunWith(SpringJUnit4ClassRunner.class) public class JSR303Tests extends MultiDriverTestClass { private static final ObjectMapper objectMapper = new ObjectMapper(); - @Autowired - private AdultService service; + @Autowired private AdultService service; - @Autowired - WebApplicationContext wac; + @Autowired WebApplicationContext wac; private MockMvc mockMvc; @@ -69,11 +67,7 @@ public class JSR303Tests extends MultiDriverTestClass { Adult adult = new Adult("Peter", 18); String json = objectMapper.writeValueAsString(adult); - mockMvc.perform( - post("/adults") - .contentType(MediaType.APPLICATION_JSON) - .content(json)) - .andExpect(status().isOk()); + mockMvc.perform(post("/adults").contentType(MediaType.APPLICATION_JSON).content(json)).andExpect(status().isOk()); } @Test @@ -82,10 +76,7 @@ public class JSR303Tests extends MultiDriverTestClass { Adult adult = new Adult("Peter", 16); String json = objectMapper.writeValueAsString(adult); - mockMvc.perform( - post("/adults") - .contentType(MediaType.APPLICATION_JSON) - .content(json)) + mockMvc.perform(post("/adults").contentType(MediaType.APPLICATION_JSON).content(json)) .andExpect(status().isBadRequest()); } @@ -95,10 +86,7 @@ public class JSR303Tests extends MultiDriverTestClass { Adult adult = new Adult(null, 21); String json = objectMapper.writeValueAsString(adult); - mockMvc.perform( - post("/adults") - .contentType(MediaType.APPLICATION_JSON) - .content(json)) + mockMvc.perform(post("/adults").contentType(MediaType.APPLICATION_JSON).content(json)) .andExpect(status().isBadRequest()); } @@ -108,15 +96,12 @@ public class JSR303Tests extends MultiDriverTestClass { Adult adult = new Adult("A", 21); String json = objectMapper.writeValueAsString(adult); - mockMvc.perform( - post("/adults") - .contentType(MediaType.APPLICATION_JSON) - .content(json)) + mockMvc.perform(post("/adults").contentType(MediaType.APPLICATION_JSON).content(json)) .andExpect(status().isBadRequest()); } @Configuration - @ComponentScan(basePackageClasses = {AdultService.class}) + @ComponentScan(basePackageClasses = { AdultService.class }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.jsr303.repo") @EnableTransactionManagement static class JSR303Context { @@ -128,7 +113,8 @@ public class JSR303Tests extends MultiDriverTestClass { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(),"org.springframework.data.neo4j.examples.jsr303.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.jsr303.domain"); } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/WebConfiguration.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/WebConfiguration.java index 8c98cba83..50928dd99 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/WebConfiguration.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/WebConfiguration.java @@ -24,13 +24,13 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter * @author Vince Bickers */ @Configuration -@ComponentScan({"org.springframework.data.neo4j.examples.jsr303.controller"}) +@ComponentScan({ "org.springframework.data.neo4j.examples.jsr303.controller" }) @EnableWebMvc public class WebConfiguration extends WebMvcConfigurerAdapter { - @Bean(name="validator") - public LocalValidatorFactoryBean validator() { - return new LocalValidatorFactoryBean(); - } + @Bean(name = "validator") + public LocalValidatorFactoryBean validator() { + return new LocalValidatorFactoryBean(); + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/controller/AdultController.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/controller/AdultController.java index 47640c8f1..b01af2160 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/controller/AdultController.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/controller/AdultController.java @@ -13,16 +13,21 @@ package org.springframework.data.neo4j.examples.jsr303.controller; +import javax.validation.Valid; +import javax.validation.ValidationException; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.neo4j.examples.jsr303.domain.Adult; import org.springframework.data.neo4j.examples.jsr303.service.AdultService; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.*; - -import javax.validation.Valid; -import javax.validation.ValidationException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; /** * @author Vince Bickers @@ -30,22 +35,21 @@ import javax.validation.ValidationException; @Controller public class AdultController { - @Autowired - private AdultService service; + @Autowired private AdultService service; - @RequestMapping(value = "/adults", method = RequestMethod.POST, consumes = "application/json") - @ResponseBody - public Adult create (@Valid @RequestBody Adult entity, BindingResult bindingResult) { - // in practice we'd do a bit more than this... - if (bindingResult.hasErrors()) { - throw new ValidationException("oops"); - } - return service.save(entity); - } + @RequestMapping(value = "/adults", method = RequestMethod.POST, consumes = "application/json") + @ResponseBody + public Adult create(@Valid @RequestBody Adult entity, BindingResult bindingResult) { + // in practice we'd do a bit more than this... + if (bindingResult.hasErrors()) { + throw new ValidationException("oops"); + } + return service.save(entity); + } - @ExceptionHandler(ValidationException.class) - @ResponseBody - @ResponseStatus(value = HttpStatus.BAD_REQUEST) - public void handleException(ValidationException ve) { } + @ExceptionHandler(ValidationException.class) + @ResponseBody + @ResponseStatus(value = HttpStatus.BAD_REQUEST) + public void handleException(ValidationException ve) {} } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/domain/Adult.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/domain/Adult.java index b2663d568..912f58353 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/domain/Adult.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/domain/Adult.java @@ -27,20 +27,15 @@ import org.neo4j.ogm.annotation.NodeEntity; @NodeEntity public class Adult { - @GraphId - private Long id; + @GraphId private Long id; - @NotNull @Size(min = 2, max = 50) - private String name; + @NotNull @Size(min = 2, max = 50) private String name; - @Min(18) - private Integer age; + @Min(18) private Integer age; - @AssertTrue - private boolean votingAge; + @AssertTrue private boolean votingAge; - public Adult() { - } + public Adult() {} public Adult(String name, Integer age) { this.name = name; @@ -48,7 +43,6 @@ public class Adult { this.votingAge = true; } - public String getName() { return name; } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/repo/AdultRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/repo/AdultRepository.java index 3b1bcbbe4..58d98374d 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/repo/AdultRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/repo/AdultRepository.java @@ -21,5 +21,4 @@ import org.springframework.stereotype.Repository; * @author Vince Bickers */ @Repository -public interface AdultRepository extends Neo4jRepository { -} +public interface AdultRepository extends Neo4jRepository {} diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/service/AdultService.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/service/AdultService.java index d2e2d496c..0f9426253 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/service/AdultService.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/jsr303/service/AdultService.java @@ -24,10 +24,9 @@ import org.springframework.stereotype.Service; @Service public class AdultService { - @Autowired - private AdultRepository repository; + @Autowired private AdultRepository repository; - public Adult save(Adult adult) { - return repository.save(adult); - } + public Adult save(Adult adult) { + return repository.save(adult); + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/MoviesIntegrationTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/MoviesIntegrationTests.java index 33f063d3c..a0528e1d5 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/MoviesIntegrationTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/MoviesIntegrationTests.java @@ -16,7 +16,14 @@ package org.springframework.data.neo4j.examples.movies; import static org.junit.Assert.*; import static org.neo4j.ogm.testutil.GraphTestUtils.*; -import java.util.*; +import java.util.Arrays; +import java.util.Calendar; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.TimeZone; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -33,14 +40,26 @@ import org.neo4j.ogm.session.SessionFactory; import org.neo4j.ogm.testutil.MultiDriverTestClass; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.dao.DataAccessException; -import org.springframework.data.neo4j.examples.movies.domain.*; -import org.springframework.data.neo4j.examples.movies.repo.*; +import org.springframework.data.neo4j.examples.movies.domain.Actor; +import org.springframework.data.neo4j.examples.movies.domain.Cinema; +import org.springframework.data.neo4j.examples.movies.domain.Genre; +import org.springframework.data.neo4j.examples.movies.domain.Movie; +import org.springframework.data.neo4j.examples.movies.domain.Rating; +import org.springframework.data.neo4j.examples.movies.domain.ReleasedMovie; +import org.springframework.data.neo4j.examples.movies.domain.TempMovie; +import org.springframework.data.neo4j.examples.movies.domain.User; +import org.springframework.data.neo4j.examples.movies.repo.AbstractAnnotatedEntityRepository; +import org.springframework.data.neo4j.examples.movies.repo.AbstractEntityRepository; +import org.springframework.data.neo4j.examples.movies.repo.ActorRepository; +import org.springframework.data.neo4j.examples.movies.repo.CinemaRepository; +import org.springframework.data.neo4j.examples.movies.repo.RatingRepository; +import org.springframework.data.neo4j.examples.movies.repo.TempMovieRepository; +import org.springframework.data.neo4j.examples.movies.repo.UserRepository; import org.springframework.data.neo4j.examples.movies.service.UserService; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.transaction.Neo4jTransactionManager; @@ -60,32 +79,22 @@ import org.springframework.transaction.support.TransactionTemplate; * @author Mark Paluch * @author Jens Schauder */ -@ContextConfiguration(classes = {MoviesIntegrationTests.MoviesContext.class}) +@ContextConfiguration(classes = { MoviesIntegrationTests.MoviesContext.class }) @RunWith(SpringJUnit4ClassRunner.class) public class MoviesIntegrationTests extends MultiDriverTestClass { private final Logger logger = LoggerFactory.getLogger(MoviesIntegrationTests.class); - @Autowired - PlatformTransactionManager platformTransactionManager; - @Autowired - private Session session; - @Autowired - private UserRepository userRepository; - @Autowired - private UserService userService; - @Autowired - private CinemaRepository cinemaRepository; - @Autowired - private AbstractAnnotatedEntityRepository abstractAnnotatedEntityRepository; - @Autowired - private AbstractEntityRepository abstractEntityRepository; - @Autowired - private TempMovieRepository tempMovieRepository; - @Autowired - private ActorRepository actorRepository; - @Autowired - private RatingRepository ratingRepository; + @Autowired PlatformTransactionManager platformTransactionManager; + @Autowired private Session session; + @Autowired private UserRepository userRepository; + @Autowired private UserService userService; + @Autowired private CinemaRepository cinemaRepository; + @Autowired private AbstractAnnotatedEntityRepository abstractAnnotatedEntityRepository; + @Autowired private AbstractEntityRepository abstractEntityRepository; + @Autowired private TempMovieRepository tempMovieRepository; + @Autowired private ActorRepository actorRepository; + @Autowired private RatingRepository ratingRepository; private TransactionTemplate transactionTemplate; @@ -111,7 +120,6 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { assertSameGraph(getGraphDatabaseService(), "CREATE (u:User:Person)"); } - @Test public void shouldSaveReleasedMovie() { @@ -124,8 +132,8 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { abstractAnnotatedEntityRepository.save(releasedMovie); assertSameGraph(getGraphDatabaseService(), - "CREATE (m:ReleasedMovie:AbstractAnnotatedEntity {cinemaRelease:'1994-09-10T00:00:00.000Z'," + - "cannesRelease:768700800000,title:'Pulp Fiction'})"); + "CREATE (m:ReleasedMovie:AbstractAnnotatedEntity {cinemaRelease:'1994-09-10T00:00:00.000Z'," + + "cannesRelease:768700800000,title:'Pulp Fiction'})"); } @Test @@ -145,14 +153,14 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { public void shouldSaveMovie() { Movie movie = new Movie("Pulp Fiction"); - movie.setTags(new String[]{"cool", "classic"}); - movie.setImage(new byte[]{1, 2, 3}); + movie.setTags(new String[] { "cool", "classic" }); + movie.setImage(new byte[] { 1, 2, 3 }); abstractEntityRepository.save(movie); // byte arrays have to be transferred with a JSON-supported format. Base64 is the default. - assertSameGraph(getGraphDatabaseService(), "CREATE (m:Movie {name:'Pulp Fiction', tags:['cool','classic'], " + - "image:'AQID'})"); + assertSameGraph(getGraphDatabaseService(), + "CREATE (m:Movie {name:'Pulp Fiction', tags:['cool','classic'], " + "image:'AQID'})"); } @Test @@ -170,12 +178,10 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { } }); - assertSameGraph(getGraphDatabaseService(), "CREATE (:User:Person {name:'Michal'})," + - "(:User:Person {name:'Vince'})," + - "(:User:Person {name:'Adam'})"); + assertSameGraph(getGraphDatabaseService(), + "CREATE (:User:Person {name:'Michal'})," + "(:User:Person {name:'Vince'})," + "(:User:Person {name:'Adam'})"); } - @Test public void shouldSaveUsers2() { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @@ -191,9 +197,8 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { } }); - assertSameGraph(getGraphDatabaseService(), "CREATE (:User:Person {name:'Michal'})," + - "(:User:Person {name:'Vince'})," + - "(:User:Person {name:'Adam'})"); + assertSameGraph(getGraphDatabaseService(), + "CREATE (:User:Person {name:'Michal'})," + "(:User:Person {name:'Vince'})," + "(:User:Person {name:'Adam'})"); } @Test @@ -210,16 +215,15 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { assertSameGraph(getGraphDatabaseService(), "CREATE (u:User:Person {name:'Adam'})"); } - @Test - @Ignore // FIXME + @Ignore // FIXME // this test expects the session/tx to check for dirty objects, which it currently does not do // you must save objects explicitly. public void shouldUpdateUserUsingTransactionalService() { User user = new User("Michal"); userRepository.save(user); - userService.updateUser(user, "Adam"); //notice userRepository.save(..) isn't called, + userService.updateUser(user, "Adam"); // notice userRepository.save(..) isn't called, // not even in the service impl! assertSameGraph(getGraphDatabaseService(), "CREATE (u:User {name:'Adam'})"); @@ -261,7 +265,6 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { User user = new User(); userRepository.save(user); - Optional loaded = userRepository.findById(user.getId()); assertTrue(loaded.isPresent()); @@ -298,7 +301,6 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { } } - @Test public void shouldHandleMultipleConcurrentRequests() throws InterruptedException, Neo4jFailedToStartException { @@ -324,7 +326,8 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { @Test(expected = DataAccessException.class) public void shouldInterceptOGMExceptions() { - ratingRepository.findAll(0); // ratings are REs and must be found to at least depth 1 in order to get the start and end nodes + ratingRepository.findAll(0); // ratings are REs and must be found to at least depth 1 in order to get the start and + // end nodes } @Test @@ -334,7 +337,8 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { userRepository.save(user); - assertSameGraph(getGraphDatabaseService(), "CREATE (u:User:Person {name:'Michal'})-[:INTERESTED]->(g:Genre {name:'Drama'})"); + assertSameGraph(getGraphDatabaseService(), + "CREATE (u:User:Person {name:'Michal'})-[:INTERESTED]->(g:Genre {name:'Drama'})"); } @Test @@ -346,14 +350,10 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { userRepository.save(user); - assertSameGraph(getGraphDatabaseService(), "CREATE " + - "(u:User:Person {name:'Michal'})," + - "(g1:Genre {name:'Drama'})," + - "(g2:Genre {name:'Historical'})," + - "(g3:Genre {name:'Thriller'})," + - "(u)-[:INTERESTED]->(g1)," + - "(u)-[:INTERESTED]->(g2)," + - "(u)-[:INTERESTED]->(g3)"); + assertSameGraph(getGraphDatabaseService(), + "CREATE " + "(u:User:Person {name:'Michal'})," + "(g1:Genre {name:'Drama'})," + + "(g2:Genre {name:'Historical'})," + "(g3:Genre {name:'Thriller'})," + "(u)-[:INTERESTED]->(g1)," + + "(u)-[:INTERESTED]->(g2)," + "(u)-[:INTERESTED]->(g3)"); } @Test @@ -363,7 +363,8 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { userRepository.save(user, 1); - assertSameGraph(getGraphDatabaseService(), "CREATE (u:User:Person {name:'Michal'})-[:INTERESTED]->(g:Genre {name:'Drama'})"); + assertSameGraph(getGraphDatabaseService(), + "CREATE (u:User:Person {name:'Michal'})-[:INTERESTED]->(g:Genre {name:'Drama'})"); } @Test @@ -384,15 +385,11 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { } }); - assertSameGraph(getGraphDatabaseService(), "CREATE " + - "(m:User:Person {name:'Michal'})," + - "(v:User:Person {name:'Vince'})," + - "(g:Genre {name:'Drama'})," + - "(m)-[:INTERESTED]->(g)," + - "(v)-[:INTERESTED]->(g)"); + assertSameGraph(getGraphDatabaseService(), + "CREATE " + "(m:User:Person {name:'Michal'})," + "(v:User:Person {name:'Vince'})," + "(g:Genre {name:'Drama'})," + + "(m)-[:INTERESTED]->(g)," + "(v)-[:INTERESTED]->(g)"); } - @Test public void shouldSaveUserButNotGenre() { User user = new User("Michal"); @@ -421,13 +418,10 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { } }); - assertSameGraph(getGraphDatabaseService(), "CREATE " + - "(m:User:Person {name:'Michal'})," + - "(g:Genre {name:'New Drama'})," + - "(m)-[:INTERESTED]->(g)"); + assertSameGraph(getGraphDatabaseService(), + "CREATE " + "(m:User:Person {name:'Michal'})," + "(g:Genre {name:'New Drama'})," + "(m)-[:INTERESTED]->(g)"); } - @Test public void shouldRemoveGenreFromUser() { transactionTemplate.execute(new TransactionCallbackWithoutResult() { @@ -445,9 +439,8 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { } }); - assertSameGraph(getGraphDatabaseService(), "CREATE " + - "(m:User:Person {name:'Michal'})," + - "(g:Genre {name:'Drama'})"); + assertSameGraph(getGraphDatabaseService(), + "CREATE " + "(m:User:Person {name:'Michal'})," + "(g:Genre {name:'Drama'})"); } @Test @@ -465,12 +458,10 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { } }); - assertSameGraph(getGraphDatabaseService(), "CREATE " + - "(m:User:Person {name:'Michal'})," + - "(g:Genre {name:'Drama'})"); + assertSameGraph(getGraphDatabaseService(), + "CREATE " + "(m:User:Person {name:'Michal'})," + "(g:Genre {name:'Drama'})"); } - @Test public void shouldAddNewVisitorToCinema() { Cinema cinema = new Cinema("Odeon"); @@ -478,10 +469,8 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { cinemaRepository.save(cinema); - assertSameGraph(getGraphDatabaseService(), "CREATE " + - "(m:User:Person {name:'Michal'})," + - "(c:Theatre {name:'Odeon', capacity:0})," + - "(m)-[:VISITED]->(c)"); + assertSameGraph(getGraphDatabaseService(), "CREATE " + "(m:User:Person {name:'Michal'})," + + "(c:Theatre {name:'Odeon', capacity:0})," + "(m)-[:VISITED]->(c)"); } @Test @@ -499,10 +488,8 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { } }); - assertSameGraph(getGraphDatabaseService(), "CREATE " + - "(m:User:Person {name:'Michal'})," + - "(c:Theatre {name:'Odeon', capacity:0})," + - "(m)-[:VISITED]->(c)"); + assertSameGraph(getGraphDatabaseService(), "CREATE " + "(m:User:Person {name:'Michal'})," + + "(c:Theatre {name:'Odeon', capacity:0})," + "(m)-[:VISITED]->(c)"); } @Test @@ -517,9 +504,11 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { }); try { - assertSameGraph(getGraphDatabaseService(), "CREATE (m:User {name:'Michal'})-[:FRIEND_OF]->(a:User:Person {name:'Adam'})"); + assertSameGraph(getGraphDatabaseService(), + "CREATE (m:User {name:'Michal'})-[:FRIEND_OF]->(a:User:Person {name:'Adam'})"); } catch (AssertionError error) { - assertSameGraph(getGraphDatabaseService(), "CREATE (m:User:Person {name:'Michal'})<-[:FRIEND_OF]-(a:User:Person {name:'Adam'})"); + assertSameGraph(getGraphDatabaseService(), + "CREATE (m:User:Person {name:'Michal'})<-[:FRIEND_OF]-(a:User:Person {name:'Adam'})"); } } @@ -564,8 +553,8 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { User michal = ((Iterable) findByProperty(User.class, "name", "Michal")).iterator().next(); - assertSameGraph(getGraphDatabaseService(), "CREATE (u:User:Person {name:'Michal'})-[:RATED {stars:5, " + - "comment:'Best movie ever', ratingTimestamp:0}]->(m:Movie {name:'Pulp Fiction'})"); + assertSameGraph(getGraphDatabaseService(), "CREATE (u:User:Person {name:'Michal'})-[:RATED {stars:5, " + + "comment:'Best movie ever', ratingTimestamp:0}]->(m:Movie {name:'Pulp Fiction'})"); } @Test @@ -575,15 +564,16 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { @Override public void doInTransactionWithoutResult(TransactionStatus status) { TempMovie movie = new TempMovie("Pulp Fiction"); - //Save the movie + // Save the movie movie = tempMovieRepository.save(movie); - //Create a new user and rate an existing movie + // Create a new user and rate an existing movie User user = new User("Michal"); user.rate(movie, 5, "Best movie ever"); userRepository.save(user); - TempMovie tempMovie = ((Iterable) findByProperty(TempMovie.class, "name", "Pulp Fiction")).iterator().next(); + TempMovie tempMovie = ((Iterable) findByProperty(TempMovie.class, "name", "Pulp Fiction")).iterator() + .next(); assertEquals(1, tempMovie.getRatings().size()); } }); @@ -668,7 +658,7 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { } protected Iterable findByProperty(Class clazz, String propertyName, Object propertyValue) { - return session.loadAll(clazz, new Filter(propertyName, ComparisonOperator.EQUALS, propertyValue)); + return session.loadAll(clazz, new Filter(propertyName, ComparisonOperator.EQUALS, propertyValue)); } // @@ -680,7 +670,7 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { } @Configuration - @ComponentScan({"org.springframework.data.neo4j.examples.movies.service"}) + @ComponentScan({ "org.springframework.data.neo4j.examples.movies.service" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.movies.repo") @EnableTransactionManagement static class MoviesContext { @@ -692,7 +682,8 @@ public class MoviesIntegrationTests extends MultiDriverTestClass { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.movies.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.movies.domain"); } } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/AbstractAnnotatedEntity.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/AbstractAnnotatedEntity.java index 6e876fb24..e0b94c38e 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/AbstractAnnotatedEntity.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/AbstractAnnotatedEntity.java @@ -22,6 +22,5 @@ import org.neo4j.ogm.annotation.NodeEntity; @NodeEntity public abstract class AbstractAnnotatedEntity { - @GraphId - Long nodeId; + @GraphId Long nodeId; } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/AbstractEntity.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/AbstractEntity.java index 720fbc62a..01dae19b7 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/AbstractEntity.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/AbstractEntity.java @@ -19,9 +19,9 @@ package org.springframework.data.neo4j.examples.movies.domain; */ public abstract class AbstractEntity { - Long id; + Long id; - public Long getId() { - return id; - } + public Long getId() { + return id; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Actor.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Actor.java index f4b5279dc..e2a255535 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Actor.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Actor.java @@ -13,40 +13,37 @@ package org.springframework.data.neo4j.examples.movies.domain; - import org.neo4j.ogm.annotation.GraphId; /** * @author Michal Bachman */ -public class Actor{ +public class Actor { - @GraphId - Long nodeId; - String id; - String name; + @GraphId Long nodeId; + String id; + String name; - public Actor() { - } + public Actor() {} - public Actor(String id, String name) { - this.id = id; - this.name = name; - } + public Actor(String id, String name) { + this.id = id; + this.name = name; + } - public String getId() { - return id; - } + public String getId() { + return id; + } - public void setId(String id) { - this.id = id; - } + public void setId(String id) { + this.id = id; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Cinema.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Cinema.java index 02055b5a9..c8eb2fc7c 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Cinema.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Cinema.java @@ -13,13 +13,13 @@ package org.springframework.data.neo4j.examples.movies.domain; +import java.util.HashSet; +import java.util.Set; + import org.neo4j.ogm.annotation.NodeEntity; import org.neo4j.ogm.annotation.Property; import org.neo4j.ogm.annotation.Relationship; -import java.util.HashSet; -import java.util.Set; - /** * @author Michal Bachman * @author Luanne Misquitta @@ -31,19 +31,15 @@ public class Cinema { private Long id; private String name; - @Property(name = "city") - private String location; + @Property(name = "city") private String location; - @Relationship(type = "VISITED", direction = Relationship.INCOMING) - private Set visited = new HashSet<>(); + @Relationship(type = "VISITED", direction = Relationship.INCOMING) private Set visited = new HashSet<>(); - @Relationship(type = "BLOCKBUSTER", direction = Relationship.OUTGOING) - private TempMovie blockbusterOfTheWeek; + @Relationship(type = "BLOCKBUSTER", direction = Relationship.OUTGOING) private TempMovie blockbusterOfTheWeek; private int capacity; - public Cinema() { - } + public Cinema() {} public Cinema(String name) { this.name = name; @@ -92,8 +88,10 @@ public class Cinema { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; Cinema cinema = (Cinema) o; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/CinemaAndBlockbuster.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/CinemaAndBlockbuster.java index 81805a39c..daf93a28f 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/CinemaAndBlockbuster.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/CinemaAndBlockbuster.java @@ -21,6 +21,8 @@ package org.springframework.data.neo4j.examples.movies.domain; public interface CinemaAndBlockbuster { String getName(); + String getLocation(); + TempMovie getBlockbusterOfTheWeek(); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/CinemaAndBlockbusterName.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/CinemaAndBlockbusterName.java index 565252fc0..909d567b8 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/CinemaAndBlockbusterName.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/CinemaAndBlockbusterName.java @@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Value; public interface CinemaAndBlockbusterName { Long getId(); + String getName(); @Value("#{target.blockbusterOfTheWeek.name}") diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Director.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Director.java index 43c2132a6..0cc40f313 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Director.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Director.java @@ -20,6 +20,5 @@ public class Director extends Person { private Long id; - public Director() { - } + public Director() {} } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Genre.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Genre.java index 9364131be..93e2f73a0 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Genre.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Genre.java @@ -18,25 +18,24 @@ package org.springframework.data.neo4j.examples.movies.domain; */ public class Genre { - private Long id; - private String name; + private Long id; + private String name; - public Genre() { - } + public Genre() {} - public Genre(String name) { - this.name = name; - } + public Genre(String name) { + this.name = name; + } - public Long getId() { - return id; - } + public Long getId() { + return id; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Movie.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Movie.java index 9cbe2a6ec..e89b093a3 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Movie.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Movie.java @@ -18,34 +18,33 @@ package org.springframework.data.neo4j.examples.movies.domain; */ public class Movie extends AbstractEntity { - private String name; - private String[] tags; - private byte[] image; + private String name; + private String[] tags; + private byte[] image; - public Movie() { - } + public Movie() {} - public Movie(String name) { - this.name = name; - } + public Movie(String name) { + this.name = name; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public String[] getTags() { - return tags; - } + public String[] getTags() { + return tags; + } - public void setTags(String[] tags) { - this.tags = tags; - } + public void setTags(String[] tags) { + this.tags = tags; + } - public byte[] getImage() { - return image; - } + public byte[] getImage() { + return image; + } - public void setImage(byte[] image) { - this.image = image; - } + public void setImage(byte[] image) { + this.image = image; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Person.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Person.java index e17d39cfc..f09dd5ad1 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Person.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Person.java @@ -21,7 +21,6 @@ public class Person { private String name; - public String getName() { return name; } @@ -36,8 +35,10 @@ public class Person { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; Person person = (Person) o; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Rating.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Rating.java index fb5aca2e3..d85c741ea 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Rating.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/Rating.java @@ -21,77 +21,75 @@ import org.neo4j.ogm.annotation.StartNode; * @author Michal Bachman */ @RelationshipEntity(type = "RATED") -public class Rating implements Comparable{ - private Long id; +public class Rating implements Comparable { + private Long id; - @StartNode - private User user; - @EndNode - private TempMovie movie; - private int stars; - private String comment; + @StartNode private User user; + @EndNode private TempMovie movie; + private int stars; + private String comment; - private long ratingTimestamp; + private long ratingTimestamp; - public Rating() {} + public Rating() {} - public Rating(User user, TempMovie movie, int stars, String comment) { - this.user = user; - this.movie = movie; - this.stars = stars; - this.comment = comment; - } + public Rating(User user, TempMovie movie, int stars, String comment) { + this.user = user; + this.movie = movie; + this.stars = stars; + this.comment = comment; + } - public Long getId() { - return id; - } + public Long getId() { + return id; + } - public void setUser(User user) { - this.user = user; - } + public void setUser(User user) { + this.user = user; + } - public void setMovie(TempMovie movie) { - this.movie = movie; - } + public void setMovie(TempMovie movie) { + this.movie = movie; + } - public void setStars(int stars) { - this.stars = stars; - } + public void setStars(int stars) { + this.stars = stars; + } - public void setComment(String comment) { - this.comment = comment; - } + public void setComment(String comment) { + this.comment = comment; + } - public User getUser() { - return user; - } + public User getUser() { + return user; + } - public TempMovie getMovie() { - return movie; - } + public TempMovie getMovie() { + return movie; + } - public int getStars() { - return stars; - } + public int getStars() { + return stars; + } - public String getComment() { - return comment; - } + public String getComment() { + return comment; + } - public long getRatingTimestamp() { - return ratingTimestamp; - } + public long getRatingTimestamp() { + return ratingTimestamp; + } - public void setRatingTimestamp(long ratingTimestamp) { - this.ratingTimestamp = ratingTimestamp; - } + public void setRatingTimestamp(long ratingTimestamp) { + this.ratingTimestamp = ratingTimestamp; + } - @Override - public int compareTo(Object o) { - Rating other = (Rating) o; - if (stars == ((Rating) o).getStars()) { - return getUser().getName().compareTo(other.getUser().getName()); - } - return stars - other.getStars(); - } + @Override + public int compareTo(Object o) { + Rating other = (Rating) o; + if (stars == ((Rating) o).getStars()) { + return getUser().getName().compareTo(other.getUser().getName()); + } + return stars - other.getStars(); + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/ReleasedMovie.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/ReleasedMovie.java index 8221b90b3..0156c3a3e 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/ReleasedMovie.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/ReleasedMovie.java @@ -13,43 +13,40 @@ package org.springframework.data.neo4j.examples.movies.domain; +import java.util.Date; + import org.neo4j.ogm.annotation.Property; import org.neo4j.ogm.annotation.typeconversion.DateLong; -import java.util.Date; - /** * @author Michal Bachman */ -//the fields here will move to Movie, this separate class exists temporarily after its tests pass +// the fields here will move to Movie, this separate class exists temporarily after its tests pass public class ReleasedMovie extends AbstractAnnotatedEntity { - private String title; + private String title; - @Property(name = "cinemaRelease") - private Date released; + @Property(name = "cinemaRelease") private Date released; - @DateLong - private Date cannesRelease; + @DateLong private Date cannesRelease; - public ReleasedMovie() { - } + public ReleasedMovie() {} - public ReleasedMovie(String title, Date released, Date cannesRelease) { - this.title = title; - this.released = released; - this.cannesRelease = cannesRelease; - } + public ReleasedMovie(String title, Date released, Date cannesRelease) { + this.title = title; + this.released = released; + this.cannesRelease = cannesRelease; + } - public String getTitle() { - return title; - } + public String getTitle() { + return title; + } - public Date getReleased() { - return released; - } + public Date getReleased() { + return released; + } - public Date getCannesRelease() { - return cannesRelease; - } + public Date getCannesRelease() { + return cannesRelease; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/TempMovie.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/TempMovie.java index 973e751d8..c7a3bd768 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/TempMovie.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/TempMovie.java @@ -13,40 +13,38 @@ package org.springframework.data.neo4j.examples.movies.domain; -import org.neo4j.ogm.annotation.NodeEntity; -import org.neo4j.ogm.annotation.Relationship; - import java.util.HashSet; import java.util.Set; +import org.neo4j.ogm.annotation.NodeEntity; +import org.neo4j.ogm.annotation.Relationship; + /** * @author Michal Bachman * @author Luanne Misquitta */ -//todo merge with movie when tests fixed +// todo merge with movie when tests fixed @NodeEntity(label = "Movie") public class TempMovie extends AbstractEntity { - private String name; - @Relationship(type = "RATED", direction = Relationship.INCOMING) - private Set ratings = new HashSet<>(); + private String name; + @Relationship(type = "RATED", direction = Relationship.INCOMING) private Set ratings = new HashSet<>(); - public TempMovie() { - } + public TempMovie() {} - public TempMovie(String name) { - this.name = name; - } + public TempMovie(String name) { + this.name = name; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public void addRating(Rating rating) { - ratings.add(rating); - } + public void addRating(Rating rating) { + ratings.add(rating); + } - public Set getRatings() { - return ratings; - } + public Set getRatings() { + return ratings; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/User.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/User.java index 9fe180750..4c2ec0b4d 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/User.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/User.java @@ -13,80 +13,76 @@ package org.springframework.data.neo4j.examples.movies.domain; -import org.neo4j.ogm.annotation.Relationship; - import java.util.Collection; import java.util.HashSet; import java.util.Set; +import org.neo4j.ogm.annotation.Relationship; + /** * @author Michal Bachman * @author Luanne Misquitta */ -public class User extends Person{ +public class User extends Person { - private String middleName; - private String surname; + private String middleName; + private String surname; - private Collection interested = new HashSet<>(); + private Collection interested = new HashSet<>(); - @Relationship(type = "FRIEND_OF", direction = Relationship.UNDIRECTED) - private Collection friends = new HashSet<>(); + @Relationship(type = "FRIEND_OF", + direction = Relationship.UNDIRECTED) private Collection friends = new HashSet<>(); - @Relationship(type = "RATED") - private Set ratings = new HashSet<>(); + @Relationship(type = "RATED") private Set ratings = new HashSet<>(); - public User() { - } + public User() {} - public User(String name) { - setName(name); - } + public User(String name) { + setName(name); + } - public User(String name, String surname) { - setName(name); - this.surname = surname; - } + public User(String name, String surname) { + setName(name); + this.surname = surname; + } - public void interestedIn(Genre genre) { - interested.add(genre); - } + public void interestedIn(Genre genre) { + interested.add(genre); + } - public void notInterestedIn(Genre genre) { - interested.remove(genre); - } + public void notInterestedIn(Genre genre) { + interested.remove(genre); + } - public void befriend(User user) { - friends.add(user); - user.friends.add(this); - } + public void befriend(User user) { + friends.add(user); + user.friends.add(this); + } + public Rating rate(TempMovie movie, int stars, String comment) { + Rating rating = new Rating(this, movie, stars, comment); + movie.addRating(rating); + ratings.add(rating); + return rating; + } - public Rating rate(TempMovie movie, int stars, String comment) { - Rating rating = new Rating(this, movie, stars, comment); - movie.addRating(rating); - ratings.add(rating); - return rating; - } + public Collection getFriends() { + return friends; + } - public Collection getFriends() { - return friends; - } + public String getMiddleName() { + return middleName; + } - public String getMiddleName() - { - return middleName; - } + public Set getRatings() { + return ratings; + } - public Set getRatings() { - return ratings; - } + public void setMiddleName(String middleName) { + this.middleName = middleName; + } - public void setMiddleName(String middleName) { - this.middleName = middleName; - } - - public String getSurname() { - return surname; - } + public String getSurname() { + return surname; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/CinemaQueryResult.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/CinemaQueryResult.java index 65eb1a1d1..cdbcb5f46 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/CinemaQueryResult.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/CinemaQueryResult.java @@ -23,25 +23,24 @@ import org.springframework.data.neo4j.annotation.QueryResult; @QueryResult public class CinemaQueryResult { - private Long id; - private String name; + private Long id; + private String name; - public CinemaQueryResult() { - } + public CinemaQueryResult() {} - public Long getId() { - return id; - } + public Long getId() { + return id; + } - public void setId(Long id) { - this.id = id; - } + public void setId(Long id) { + this.id = id; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/CinemaQueryResultInterface.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/CinemaQueryResultInterface.java index 425c82bd4..0d477540e 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/CinemaQueryResultInterface.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/CinemaQueryResultInterface.java @@ -23,12 +23,12 @@ import org.springframework.data.neo4j.annotation.QueryResult; @QueryResult public interface CinemaQueryResultInterface { - Long getId(); + Long getId(); - void setId(Long id); + void setId(Long id); - String getName(); + String getName(); - void setName(String name); + void setName(String name); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/CinemaQueryResultInterfaceImpl.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/CinemaQueryResultInterfaceImpl.java index 1e834c2de..6ab35b6f8 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/CinemaQueryResultInterfaceImpl.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/CinemaQueryResultInterfaceImpl.java @@ -21,8 +21,7 @@ public class CinemaQueryResultInterfaceImpl implements CinemaQueryResultInterfac private Long id; private String name; - public CinemaQueryResultInterfaceImpl() { - } + public CinemaQueryResultInterfaceImpl() {} public Long getId() { return id; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/EntityWrappingQueryResult.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/EntityWrappingQueryResult.java index 0d25aab29..3847935e1 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/EntityWrappingQueryResult.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/EntityWrappingQueryResult.java @@ -31,41 +31,40 @@ import org.springframework.data.neo4j.examples.movies.domain.User; @QueryResult public class EntityWrappingQueryResult { - private User user; - private Set friends; - private List ratings; - private TempMovie[] movies; - private float avgRating; - private List allRatings; - private Collection> literalMap; + private User user; + private Set friends; + private List ratings; + private TempMovie[] movies; + private float avgRating; + private List allRatings; + private Collection> literalMap; + public User getUser() { + return user; + } - public User getUser() { - return user; - } + public Set getFriends() { + return friends; + } - public Set getFriends() { - return friends; - } + public List getRatings() { + return ratings; + } - public List getRatings() { - return ratings; - } + public float getAvgRating() { + return avgRating; + } - public float getAvgRating() { - return avgRating; - } + public TempMovie[] getMovies() { + return movies; + } - public TempMovie[] getMovies() { - return movies; - } + public List getAllRatings() { + return allRatings; + } - public List getAllRatings() { - return allRatings; - } - - public Collection> getLiteralMap() { - return literalMap; - } + public Collection> getLiteralMap() { + return literalMap; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/Gender.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/Gender.java index 0ef66441c..d754fc84e 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/Gender.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/Gender.java @@ -15,6 +15,6 @@ package org.springframework.data.neo4j.examples.movies.domain.queryresult; public enum Gender { - FEMALE, MALE; + FEMALE, MALE; } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/RichUserQueryResult.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/RichUserQueryResult.java index 448326d74..4af6b7d7f 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/RichUserQueryResult.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/RichUserQueryResult.java @@ -13,11 +13,11 @@ package org.springframework.data.neo4j.examples.movies.domain.queryresult; -import org.springframework.data.neo4j.annotation.QueryResult; - import java.math.BigDecimal; import java.math.BigInteger; +import org.springframework.data.neo4j.annotation.QueryResult; + /** * A {@link QueryResult} that contains rich types. * @@ -27,24 +27,24 @@ import java.math.BigInteger; @QueryResult public class RichUserQueryResult { - private Gender userGender; // should be handled by default type conversion - private String userName; - private BigInteger userAccount; - private BigDecimal[] userDeposits; + private Gender userGender; // should be handled by default type conversion + private String userName; + private BigInteger userAccount; + private BigDecimal[] userDeposits; - public Gender getUserGender() { - return userGender; - } + public Gender getUserGender() { + return userGender; + } - public String getUserName() { - return userName; - } + public String getUserName() { + return userName; + } - public BigInteger getUserAccount() { - return userAccount; - } + public BigInteger getUserAccount() { + return userAccount; + } - public BigDecimal[] getUserDeposits() { - return userDeposits; - } -} \ No newline at end of file + public BigDecimal[] getUserDeposits() { + return userDeposits; + } +} diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/UserQueryResult.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/UserQueryResult.java index bbe80270f..3428a392b 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/UserQueryResult.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/UserQueryResult.java @@ -19,77 +19,74 @@ import org.springframework.data.neo4j.annotation.QueryResult; import org.springframework.data.neo4j.examples.movies.repo.UserRepository; /** - * Example POJO {@link QueryResult} to test mapping onto arbitrary objects, even for properties that are on the nodes but not in - * the entity classes. + * Example POJO {@link QueryResult} to test mapping onto arbitrary objects, even for properties that are on the nodes + * but not in the entity classes. * * @see UserRepository - * * @author Adam George * @author Luanne Misquitta */ @QueryResult public class UserQueryResult { - private Long id; - Long userId; - private String userName; + private Long id; + Long userId; + private String userName; - @Property(name = "user.age") - private int age; + @Property(name = "user.age") private int age; - UserQueryResult() { - // default constructor for OGM - } + UserQueryResult() { + // default constructor for OGM + } - public UserQueryResult(String name, int age) { - this.userName = name; - this.age = age; - } + public UserQueryResult(String name, int age) { + this.userName = name; + this.age = age; + } - public Long getUserId() { - return userId; - } + public Long getUserId() { + return userId; + } + public Long getId() { + return id; + } - public Long getId() { - return id; - } + public void setId(Long id) { + this.id = id; + } - public void setId(Long id) { - this.id = id; - } + @Override + public int hashCode() { + final int prime = 23; + int result = 1; + result = prime * result + age; + result = prime * result + ((userName == null) ? 0 : userName.hashCode()); + return result; + } - @Override - public int hashCode() { - final int prime = 23; - int result = 1; - result = prime * result + age; - result = prime * result + ((userName == null) ? 0 : userName.hashCode()); - return result; - } + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + UserQueryResult other = (UserQueryResult) obj; + if (age != other.age) + return false; + if (userName == null) { + if (other.userName != null) + return false; + } else if (!userName.equals(other.userName)) + return false; + return true; + } - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - UserQueryResult other = (UserQueryResult) obj; - if (age != other.age) - return false; - if (userName == null) { - if (other.userName != null) - return false; - } else if (!userName.equals(other.userName)) - return false; - return true; - } - - @Override - public String toString() { - return ReflectionToStringBuilder.toString(this); - } + @Override + public String toString() { + return ReflectionToStringBuilder.toString(this); + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/UserQueryResultObject.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/UserQueryResultObject.java index 75fbaaed7..3dc26e83a 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/UserQueryResultObject.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/domain/queryresult/UserQueryResultObject.java @@ -13,37 +13,33 @@ package org.springframework.data.neo4j.examples.movies.domain.queryresult; -import java.math.BigDecimal; -import java.math.BigInteger; - -import org.neo4j.ogm.annotation.Property; import org.springframework.data.neo4j.annotation.QueryResult; import org.springframework.data.neo4j.examples.movies.domain.User; import org.springframework.data.neo4j.examples.movies.repo.UserRepository; /** - * Example interface annotated with {@link QueryResult} to test mapping onto proxied objects, where only getter methods are - * needed to define the mapped result columns. + * Example interface annotated with {@link QueryResult} to test mapping onto proxied objects, where only getter methods + * are needed to define the mapped result columns. * * @see UserRepository */ @QueryResult public class UserQueryResultObject { - private String name; - private int ageOfUser; - private User user; + private String name; + private int ageOfUser; + private User user; - public String getName() { - return name; - } + public String getName() { + return name; + } - public int getAgeOfUser() { - return ageOfUser; - } + public int getAgeOfUser() { + return ageOfUser; + } - public User getUser() { - return user; - } + public User getUser() { + return user; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/AbstractAnnotatedEntityRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/AbstractAnnotatedEntityRepository.java index ff3da1967..d8873d6eb 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/AbstractAnnotatedEntityRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/AbstractAnnotatedEntityRepository.java @@ -21,5 +21,4 @@ import org.springframework.stereotype.Repository; * @author Michal Bachman */ @Repository -public interface AbstractAnnotatedEntityRepository extends Neo4jRepository { -} +public interface AbstractAnnotatedEntityRepository extends Neo4jRepository {} diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/AbstractEntityRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/AbstractEntityRepository.java index ca4534a27..8a4d5aa09 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/AbstractEntityRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/AbstractEntityRepository.java @@ -21,5 +21,4 @@ import org.springframework.stereotype.Repository; * @author Michal Bachman */ @Repository -public interface AbstractEntityRepository extends Neo4jRepository { -} +public interface AbstractEntityRepository extends Neo4jRepository {} diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/ActorRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/ActorRepository.java index a095b317f..08ba563ce 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/ActorRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/ActorRepository.java @@ -16,10 +16,7 @@ package org.springframework.data.neo4j.examples.movies.repo; import org.springframework.data.neo4j.examples.movies.domain.Actor; import org.springframework.data.neo4j.repository.Neo4jRepository; - /** * @author Michal Bachman */ -public interface ActorRepository extends Neo4jRepository { -} - +public interface ActorRepository extends Neo4jRepository {} diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/CinemaRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/CinemaRepository.java index f1e1ae479..e68db927a 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/CinemaRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/CinemaRepository.java @@ -99,7 +99,8 @@ public interface CinemaRepository extends Neo4jRepository { @Query(value = "MATCH (n:Theatre) RETURN n", countQuery = "MATCH (n:Theatre) return count(*)") Page getPagedCinemaQueryResultInterfaces(Pageable pageable); - @Query(value = "MATCH (n:Theatre {city:{city}}) RETURN n ORDER BY n.name", countQuery = "MATCH (n:Theatre {city:{city}}) return count(*)") + @Query(value = "MATCH (n:Theatre {city:{city}}) RETURN n ORDER BY n.name", + countQuery = "MATCH (n:Theatre {city:{city}}) return count(*)") Page getPagedCinemasByCityWithPageCount(@Param("city") String city, Pageable pageable); @Query("MATCH (n:Theatre) RETURN n") diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/GenreRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/GenreRepository.java index 941064998..02906e82e 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/GenreRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/GenreRepository.java @@ -21,5 +21,4 @@ import org.springframework.stereotype.Repository; * @author Michal Bachman */ @Repository -public interface GenreRepository extends Neo4jRepository { -} +public interface GenreRepository extends Neo4jRepository {} diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/TempMovieRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/TempMovieRepository.java index b798bbe14..075de1fdc 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/TempMovieRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/TempMovieRepository.java @@ -19,5 +19,4 @@ import org.springframework.data.neo4j.repository.Neo4jRepository; /** * @author Michal Bachman */ -public interface TempMovieRepository extends Neo4jRepository { -} +public interface TempMovieRepository extends Neo4jRepository {} diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/UnmanagedUserPojo.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/UnmanagedUserPojo.java index 861c0e83b..e0bf0628c 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/UnmanagedUserPojo.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/UnmanagedUserPojo.java @@ -21,14 +21,14 @@ import org.springframework.data.neo4j.annotation.QueryResult; @QueryResult public class UnmanagedUserPojo { - private String name; + private String name; - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } - public String getName() { - return name; - } + public String getName() { + return name; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/UserRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/UserRepository.java index 1f2afab72..5da4cff3d 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/UserRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/UserRepository.java @@ -38,93 +38,93 @@ import org.springframework.stereotype.Repository; @Repository public interface UserRepository extends PersonRepository { - Collection findByMiddleName(String middleName); + Collection findByMiddleName(String middleName); - List findByRatingsStars(int stars); + List findByRatingsStars(int stars); - List findByRatingsStarsAndInterestedName(int stars, String name); + List findByRatingsStarsAndInterestedName(int stars, String name); - @Query("MATCH (user:User) RETURN COUNT(user)") - int findTotalUsers(); + @Query("MATCH (user:User) RETURN COUNT(user)") + int findTotalUsers(); - @Query("MATCH (user:User) RETURN id(user)") - List getUserIds(); + @Query("MATCH (user:User) RETURN id(user)") + List getUserIds(); - @Query("MATCH (user:User) RETURN user.name, id(user)") - Iterable> getUsersAsProperties(); + @Query("MATCH (user:User) RETURN user.name, id(user)") + Iterable> getUsersAsProperties(); - @Query("MATCH (user:User) RETURN user") - Collection getAllUsers(); + @Query("MATCH (user:User) RETURN user") + Collection getAllUsers(); - @Query("MATCH (m:Movie)<-[:ACTED_IN]-(a:User) RETURN m.name as movie, collect(a.name) as cast") - List> getGraph(); + @Query("MATCH (m:Movie)<-[:ACTED_IN]-(a:User) RETURN m.name as movie, collect(a.name) as cast") + List> getGraph(); - @Query("MATCH (user:User{name:{name}}) RETURN user") - User findUserByNameWithNamedParam(@Param("name") String name); + @Query("MATCH (user:User{name:{name}}) RETURN user") + User findUserByNameWithNamedParam(@Param("name") String name); - @Query("MATCH (user:User{name:{0}}) RETURN user") - User findUserByName(String name); + @Query("MATCH (user:User{name:{0}}) RETURN user") + User findUserByName(String name); - @Query("MATCH (user:User) RETURN id(user) AS userId, id(user) as id, user.name AS userName, user.age ORDER BY user.age") - Iterable retrieveAllUsersAndTheirAges(); + @Query("MATCH (user:User) RETURN id(user) AS userId, id(user) as id, user.name AS userName, user.age ORDER BY user.age") + Iterable retrieveAllUsersAndTheirAges(); - @Query("MATCH (user:User{name:{0}}) RETURN user.name AS name") - UnmanagedUserPojo findIndividualUserAsDifferentObject(String name); + @Query("MATCH (user:User{name:{0}}) RETURN user.name AS name") + UnmanagedUserPojo findIndividualUserAsDifferentObject(String name); - @Query("MATCH (user:User) WHERE user.name={0} RETURN user.name AS name, user.age AS ageOfUser") - UserQueryResultObject findIndividualUserAsProxiedObject(String name); + @Query("MATCH (user:User) WHERE user.name={0} RETURN user.name AS name, user.age AS ageOfUser") + UserQueryResultObject findIndividualUserAsProxiedObject(String name); - @Query("MATCH (user:User) WHERE user.name={0} RETURN user as user, user.age AS ageOfUser") - UserQueryResultObject findWrappedUserAsProxiedObject(String name); + @Query("MATCH (user:User) WHERE user.name={0} RETURN user as user, user.age AS ageOfUser") + UserQueryResultObject findWrappedUserAsProxiedObject(String name); - @Query("MATCH (user:User) WHERE user.gender={0} RETURN user.name AS UserName, user.gender AS UserGender, user.account as UserAccount, user.deposits as UserDeposits") - Iterable findUsersByGender(Gender gender); + @Query("MATCH (user:User) WHERE user.gender={0} RETURN user.name AS UserName, user.gender AS UserGender, user.account as UserAccount, user.deposits as UserDeposits") + Iterable findUsersByGender(Gender gender); - @Query("MATCH (user:User) WHERE user.name={0} RETURN user") - EntityWrappingQueryResult findWrappedUserByName(String userName); + @Query("MATCH (user:User) WHERE user.name={0} RETURN user") + EntityWrappingQueryResult findWrappedUserByName(String userName); - @Query("MATCH (user:User)-[:FRIEND_OF]->(f) WHERE user.name={0} RETURN user, collect(f) as friends") - EntityWrappingQueryResult findWrappedUserAndFriendsDepth0(String userName); + @Query("MATCH (user:User)-[:FRIEND_OF]->(f) WHERE user.name={0} RETURN user, collect(f) as friends") + EntityWrappingQueryResult findWrappedUserAndFriendsDepth0(String userName); - @Query("MATCH (user:User)-[r:FRIEND_OF]->(f) WHERE user.name={0} RETURN user, collect(r) as rels, collect(f) as friends") - EntityWrappingQueryResult findWrappedUserAndFriendsDepth1(String userName); + @Query("MATCH (user:User)-[r:FRIEND_OF]->(f) WHERE user.name={0} RETURN user, collect(r) as rels, collect(f) as friends") + EntityWrappingQueryResult findWrappedUserAndFriendsDepth1(String userName); - @Query("MATCH (user:User)-[r:RATED]->(m) WHERE user.name={0} RETURN user, collect(r) as ratings, collect(m) as movies, avg(r.stars) as avgRating") - EntityWrappingQueryResult findWrappedUserAndRatingsByName(String userName); + @Query("MATCH (user:User)-[r:RATED]->(m) WHERE user.name={0} RETURN user, collect(r) as ratings, collect(m) as movies, avg(r.stars) as avgRating") + EntityWrappingQueryResult findWrappedUserAndRatingsByName(String userName); - @Query("MATCH (user:User)-[r:RATED]->(m) RETURN user, collect(r) as ratings, collect(m) as movies, avg(r.stars) as avgRating order by user.name desc") - List findAllUserRatings(); + @Query("MATCH (user:User)-[r:RATED]->(m) RETURN user, collect(r) as ratings, collect(m) as movies, avg(r.stars) as avgRating order by user.name desc") + List findAllUserRatings(); - @Query("MATCH (user:User) RETURN ID(user)") - List getUserNodeIds(); + @Query("MATCH (user:User) RETURN ID(user)") + List getUserNodeIds(); - @Query("MATCH (user:User) WHERE ID(user)={0} return user") - User loadUserById(User user); + @Query("MATCH (user:User) WHERE ID(user)={0} return user") + User loadUserById(User user); - @Query("MATCH (user:User) WHERE ID(user)={userId} RETURN user") - User loadUserByNamedId(@Param("userId") User user); + @Query("MATCH (user:User) WHERE ID(user)={userId} RETURN user") + User loadUserByNamedId(@Param("userId") User user); - @Query("MATCH (user:User) RETURN user") - Iterable getAllUsersIterable(); + @Query("MATCH (user:User) RETURN user") + Iterable getAllUsersIterable(); - @Query("MATCH (user:User) set user.name={0}") - void setNamesNull(String name); + @Query("MATCH (user:User) set user.name={0}") + void setNamesNull(String name); - List findByNameIsNotLike(String name); + List findByNameIsNotLike(String name); - @Depth(value = 0) - User findBySurname(String surname); + @Depth(value = 0) + User findBySurname(String surname); - @Query("MATCH (user:User) RETURN user.unknown as allRatings") - EntityWrappingQueryResult findAllRatingsNull(); + @Query("MATCH (user:User) RETURN user.unknown as allRatings") + EntityWrappingQueryResult findAllRatingsNull(); - @Query("match (u:User)-[r:RATED]->(m:Movie) return u as user, collect({username: u.name, movietitle: m.title, stars:r.stars}) as literalMap") - List findRatingsWithLiteralMap(); + @Query("match (u:User)-[r:RATED]->(m:Movie) return u as user, collect({username: u.name, movietitle: m.title, stars:r.stars}) as literalMap") + List findRatingsWithLiteralMap(); - Page findByNameAndSurname(String name, String surname, Pageable pageable); + Page findByNameAndSurname(String name, String surname, Pageable pageable); - Slice findByNameAndRatingsStars(String name, int stars, Pageable pageable); + Slice findByNameAndRatingsStars(String name, int stars, Pageable pageable); - @Query("invalid") + @Query("invalid") void invalidQuery(); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/service/UserService.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/service/UserService.java index 7c071f70b..d89fc782a 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/service/UserService.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/service/UserService.java @@ -13,27 +13,27 @@ package org.springframework.data.neo4j.examples.movies.service; +import java.util.Collection; + import org.springframework.data.neo4j.annotation.UseBookmark; import org.springframework.data.neo4j.examples.movies.domain.User; import org.springframework.transaction.annotation.Transactional; -import java.util.Collection; - /** * @author Michal Bachman */ public interface UserService { - @Transactional - void updateUser(User user, String newName); + @Transactional + void updateUser(User user, String newName); - @Transactional - void notInterestedIn(Long userId, Long genreId); + @Transactional + void notInterestedIn(Long userId, Long genreId); - @Transactional - void saveWithTxAnnotationOnInterface(User user); + @Transactional + void saveWithTxAnnotationOnInterface(User user); - void saveWithTxAnnotationOnImpl(User user); + void saveWithTxAnnotationOnImpl(User user); @UseBookmark @Transactional diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/service/UserServiceImpl.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/service/UserServiceImpl.java index 90ab67592..ce92a0b3e 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/service/UserServiceImpl.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/service/UserServiceImpl.java @@ -13,6 +13,9 @@ package org.springframework.data.neo4j.examples.movies.service; +import java.util.Collection; +import java.util.Optional; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.neo4j.annotation.UseBookmark; import org.springframework.data.neo4j.examples.movies.domain.Genre; @@ -22,9 +25,6 @@ import org.springframework.data.neo4j.examples.movies.repo.UserRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Collection; -import java.util.Optional; - /** * @author Michal Bachman * @author Mark Paluch @@ -33,39 +33,37 @@ import java.util.Optional; @Service public class UserServiceImpl implements UserService { - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; - @Autowired - private GenreRepository genreRepository; + @Autowired private GenreRepository genreRepository; - @Override - public void updateUser(User user, String newName) { - user.setName(newName); - } + @Override + public void updateUser(User user, String newName) { + user.setName(newName); + } - @Override - public void notInterestedIn(Long userId, Long genreId) { - Optional user = userRepository.findById(userId); + @Override + public void notInterestedIn(Long userId, Long genreId) { + Optional user = userRepository.findById(userId); - user.ifPresent(u -> { - Optional genre = genreRepository.findById(genreId); - genre.ifPresent(u::notInterestedIn); + user.ifPresent(u -> { + Optional genre = genreRepository.findById(genreId); + genre.ifPresent(u::notInterestedIn); - userRepository.save(u); - }); - } + userRepository.save(u); + }); + } - @Override - public void saveWithTxAnnotationOnInterface(User user) { - userRepository.save(user); - } + @Override + public void saveWithTxAnnotationOnInterface(User user) { + userRepository.save(user); + } - @Transactional - @Override - public void saveWithTxAnnotationOnImpl(User user) { - userRepository.save(user); - } + @Transactional + @Override + public void saveWithTxAnnotationOnImpl(User user) { + userRepository.save(user); + } @Override @Transactional diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/RestaurantTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/RestaurantTests.java index 8ef99deaa..8a804f810 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/RestaurantTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/RestaurantTests.java @@ -11,7 +11,6 @@ * */ - package org.springframework.data.neo4j.examples.restaurants; import static org.apache.webbeans.util.Asserts.assertNotNull; @@ -45,12 +44,11 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; -@ContextConfiguration(classes = {RestaurantTests.RestaurantContext.class}) +@ContextConfiguration(classes = { RestaurantTests.RestaurantContext.class }) @RunWith(SpringJUnit4ClassRunner.class) @DirtiesContext /** - * * Tests that we support each kind of keyword specified by Part.Type * * @author Jasper Blues @@ -58,31 +56,27 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; */ public class RestaurantTests extends MultiDriverTestClass { - @Autowired - private RestaurantRepository restaurantRepository; + @Autowired private RestaurantRepository restaurantRepository; @After public void tearDown() { restaurantRepository.deleteAll(); } - /** - * This test, as the below one does, asserts that the parameter index for each query part is set correctly. Most - * query parts are associated with one parameter, while certain kinds, such as NEAR, require more. - + * This test, as the below one does, asserts that the parameter index for each query part is set correctly. Most query + * parts are associated with one parameter, while certain kinds, such as NEAR, require more. * * @see DATAGRAPH-561 */ @Test public void shouldFindRestaurantsNear_nameParameterFirst() { - Restaurant restaurant = new Restaurant("San Francisco International Airport (SFO)", - new Point(37.61649, -122.38681), 94128); + Restaurant restaurant = new Restaurant("San Francisco International Airport (SFO)", new Point(37.61649, -122.38681), + 94128); restaurantRepository.save(restaurant); List results = restaurantRepository.findByNameAndLocationNear( - "San Francisco International Airport (SFO)", - new Distance(150, Metrics.KILOMETERS), new Point(37.6, -122.3)); + "San Francisco International Airport (SFO)", new Distance(150, Metrics.KILOMETERS), new Point(37.6, -122.3)); assertNotNull(results); assertEquals(1, results.size()); @@ -93,21 +87,19 @@ public class RestaurantTests extends MultiDriverTestClass { } /** - * - * This test, as the above one does, asserts that the parameter index for each query part is set correctly. Most - * query parts are associated with one parameter, while certain kinds, such as NEAR, require more. + * This test, as the above one does, asserts that the parameter index for each query part is set correctly. Most query + * parts are associated with one parameter, while certain kinds, such as NEAR, require more. * * @see DATAGRAPH-561 */ @Test public void shouldFindRestaurantsNear_locationFirst() { - Restaurant restaurant = new Restaurant("San Francisco International Airport (SFO)", - new Point(37.61649, -122.38681), 94128); + Restaurant restaurant = new Restaurant("San Francisco International Airport (SFO)", new Point(37.61649, -122.38681), + 94128); restaurantRepository.save(restaurant); - List results = restaurantRepository.findByLocationNearAndName( - new Distance(150, Metrics.KILOMETERS), new Point(37.6, -122.3), - "San Francisco International Airport (SFO)"); + List results = restaurantRepository.findByLocationNearAndName(new Distance(150, Metrics.KILOMETERS), + new Point(37.6, -122.3), "San Francisco International Airport (SFO)"); assertNotNull(results); assertEquals(1, results.size()); @@ -164,8 +156,8 @@ public class RestaurantTests extends MultiDriverTestClass { */ @Test public void shouldFindByPropertyIsNull() { - Restaurant restaurant = new Restaurant("San Francisco International Airport (SFO)", - new Point(37.61649, -122.38681), 94128); + Restaurant restaurant = new Restaurant("San Francisco International Airport (SFO)", new Point(37.61649, -122.38681), + 94128); restaurantRepository.save(restaurant); Restaurant kuroda = new Restaurant("Kuroda", "Mostly Ramen"); @@ -183,8 +175,8 @@ public class RestaurantTests extends MultiDriverTestClass { */ @Test public void shouldFindByPropertyIsNotNull() { - Restaurant restaurant = new Restaurant("San Francisco International Airport (SFO)", - new Point(37.61649, -122.38681), 94128); + Restaurant restaurant = new Restaurant("San Francisco International Airport (SFO)", new Point(37.61649, -122.38681), + 94128); restaurantRepository.save(restaurant); Restaurant kuroda = new Restaurant("Kuroda", "Mostly Ramen"); @@ -201,8 +193,8 @@ public class RestaurantTests extends MultiDriverTestClass { */ @Test public void shouldFindBNestedProperty_different_entity_type_IsNull() { - Restaurant restaurant = new Restaurant("San Francisco International Airport (SFO)", - new Point(37.61649, -122.38681), 94128); + Restaurant restaurant = new Restaurant("San Francisco International Airport (SFO)", new Point(37.61649, -122.38681), + 94128); Diner diner = new Diner("Jasper", null); restaurant.addRegularDiner(diner); @@ -220,8 +212,8 @@ public class RestaurantTests extends MultiDriverTestClass { */ @Test public void shouldFindBNestedProperty_same_entity_type_IsNull() { - Restaurant restaurant = new Restaurant("San Francisco International Airport (SFO)", - new Point(37.61649, -122.38681), 94128); + Restaurant restaurant = new Restaurant("San Francisco International Airport (SFO)", new Point(37.61649, -122.38681), + 94128); Diner diner = new Diner("Jasper", null); restaurant.addRegularDiner(diner); @@ -337,6 +329,7 @@ public class RestaurantTests extends MultiDriverTestClass { /** * All findByPropertyLike does currently is to require an exact match, ignoring case. + * * @see DATAGRAPH-904 */ @Test @@ -355,9 +348,9 @@ public class RestaurantTests extends MultiDriverTestClass { } - /** * All findByPropertyLike does currently is to require an exact match, ignoring case. + * * @see DATAGRAPH-904 */ @Test @@ -531,8 +524,7 @@ public class RestaurantTests extends MultiDriverTestClass { * @see DATAGRAPH-904 */ @Test - public void shouldFindByPropertyIsTrue() - { + public void shouldFindByPropertyIsTrue() { Restaurant kazan = new Restaurant("Kazan", 77.0); kazan.setHalal(true); restaurantRepository.save(kazan); @@ -551,8 +543,7 @@ public class RestaurantTests extends MultiDriverTestClass { * @see DATAGRAPH-904 */ @Test - public void shouldFindByPropertyIsFalse() - { + public void shouldFindByPropertyIsFalse() { Restaurant kazan = new Restaurant("Kazan", 77.0); kazan.setHalal(true); restaurantRepository.save(kazan); @@ -568,14 +559,15 @@ public class RestaurantTests extends MultiDriverTestClass { } @Configuration - @ComponentScan({"org.springframework.data.neo4j.examples.restaurants"}) + @ComponentScan({ "org.springframework.data.neo4j.examples.restaurants" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.restaurants.repo") @EnableTransactionManagement static class RestaurantContext { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(),"org.springframework.data.neo4j.examples.restaurants.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.restaurants.domain"); } @Bean diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/domain/Diner.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/domain/Diner.java index 590fa5a5f..b133cbf36 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/domain/Diner.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/domain/Diner.java @@ -8,15 +8,12 @@ import org.neo4j.ogm.annotation.GraphId; */ public class Diner { - @GraphId - private Long id; + @GraphId private Long id; private String firstName; private String lastName; - public Diner() - { - } + public Diner() {} public Diner(String firstName, String lastName) { this.firstName = firstName; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/domain/Restaurant.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/domain/Restaurant.java index 5026e9fc3..61cca57a8 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/domain/Restaurant.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/domain/Restaurant.java @@ -11,7 +11,6 @@ * */ - package org.springframework.data.neo4j.examples.restaurants.domain; import java.util.ArrayList; @@ -30,27 +29,23 @@ import org.springframework.data.neo4j.conversion.PointConverter; */ public class Restaurant implements Comparable { - @GraphId - private Long id; + @GraphId private Long id; private String name; - @Convert(PointConverter.class) - private Point location; + @Convert(PointConverter.class) private Point location; private int zip; private double score; private String description; private boolean halal; - @Relationship(type = "REGULAR_DINER", direction = Relationship.OUTGOING) - private List regularDiners = new ArrayList<>(); + @Relationship(type = "REGULAR_DINER", + direction = Relationship.OUTGOING) private List regularDiners = new ArrayList<>(); - @Relationship(type = "SIMILAR_RESTAURANT", direction = Relationship.OUTGOING) - private List similarRestaurants = new ArrayList<>(); + @Relationship(type = "SIMILAR_RESTAURANT", + direction = Relationship.OUTGOING) private List similarRestaurants = new ArrayList<>(); - @DateString - private Date launchDate; + @DateString private Date launchDate; - public Restaurant() { - } + public Restaurant() {} public Restaurant(String name, Point location, int zip) { this.name = name; @@ -142,10 +137,7 @@ public class Restaurant implements Comparable { @Override public String toString() { - return "Restaurant{" + - "name='" + name + '\'' + - ", score=" + score + - '}'; + return "Restaurant{" + "name='" + name + '\'' + ", score=" + score + '}'; } @Override diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/repo/RestaurantRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/repo/RestaurantRepository.java index 5d6ae0e99..b16696723 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/repo/RestaurantRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/restaurants/repo/RestaurantRepository.java @@ -79,5 +79,3 @@ public interface RestaurantRepository extends Neo4jRepository List findByNameNotContainingOrDescriptionIsNull(String nameContaining); } - - diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/CustomGraphRepositoryImpl.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/CustomGraphRepositoryImpl.java index 8d0ee932d..ea09c252a 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/CustomGraphRepositoryImpl.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/CustomGraphRepositoryImpl.java @@ -26,7 +26,8 @@ import org.springframework.stereotype.Repository; * @author Mark Angrish */ @Repository -public class CustomGraphRepositoryImpl extends SimpleNeo4jRepository implements CustomNeo4jRepository { +public class CustomGraphRepositoryImpl extends SimpleNeo4jRepository + implements CustomNeo4jRepository { public CustomGraphRepositoryImpl(Class clazz, Session session) { super(clazz, session); diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/CustomGraphRepositoryTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/CustomGraphRepositoryTests.java index dc3acfc53..d4c791bd6 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/CustomGraphRepositoryTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/CustomGraphRepositoryTests.java @@ -31,16 +31,14 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; /** * @author: Vince Bickers */ -@ContextConfiguration(classes = {CustomGraphRepositoryTests.CustomPersistenceContext.class}) +@ContextConfiguration(classes = { CustomGraphRepositoryTests.CustomPersistenceContext.class }) @RunWith(SpringJUnit4ClassRunner.class) public class CustomGraphRepositoryTests extends MultiDriverTestClass { - @Autowired - private UserRepository repository; + @Autowired private UserRepository repository; /** - * asserts that the correct proxied object is created by Spring - * and that we can integrate with it. + * asserts that the correct proxied object is created by Spring and that we can integrate with it. */ @Test public void shouldExposeCommonMethodOnExtendedRepository() { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/CustomNeo4jRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/CustomNeo4jRepository.java index c9461b017..eca0b278c 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/CustomNeo4jRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/CustomNeo4jRepository.java @@ -18,14 +18,13 @@ import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.repository.NoRepositoryBean; /** - * This interface declares a custom method that we want to - * be available to all repositories that extend this class + * This interface declares a custom method that we want to be available to all repositories that extend this class * * @author: Vince Bickers */ @NoRepositoryBean public interface CustomNeo4jRepository extends Neo4jRepository { - boolean sharedCustomMethod(); + boolean sharedCustomMethod(); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/UserRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/UserRepository.java index 8c34fc9b3..41353cc1c 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/UserRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/UserRepository.java @@ -19,5 +19,4 @@ import org.springframework.stereotype.Repository; * @author: Vince Bickers */ @Repository -public interface UserRepository extends CustomNeo4jRepository { -} +public interface UserRepository extends CustomNeo4jRepository {} diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/domain/User.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/domain/User.java index 43828aed7..89275a56e 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/domain/User.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/extensions/domain/User.java @@ -17,6 +17,6 @@ package org.springframework.data.neo4j.extensions.domain; */ public class User { - Long id; + Long id; } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/ConversionServiceTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/ConversionServiceTests.java index 78bba6f11..436de83aa 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/ConversionServiceTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/ConversionServiceTests.java @@ -57,25 +57,19 @@ import org.springframework.transaction.support.TransactionTemplate; * @see DATAGRAPH-624 */ @RunWith(SpringRunner.class) -@ContextConfiguration(classes = {ConversionServiceTests.ConversionServicePersistenceContext.class}) +@ContextConfiguration(classes = { ConversionServiceTests.ConversionServicePersistenceContext.class }) public class ConversionServiceTests extends MultiDriverTestClass { - @Autowired - PlatformTransactionManager platformTransactionManager; - @Autowired - private PensionRepository pensionRepository; - @Autowired - private JavaElementRepository javaElementRepository; - @Autowired - private SiteMemberRepository siteMemberRepository; - @Autowired - private GenericConversionService conversionService; + @Autowired PlatformTransactionManager platformTransactionManager; + @Autowired private PensionRepository pensionRepository; + @Autowired private JavaElementRepository javaElementRepository; + @Autowired private SiteMemberRepository siteMemberRepository; + @Autowired private GenericConversionService conversionService; @Autowired Session session; private TransactionTemplate transactionTemplate; - @Before public void setUp() { transactionTemplate = new TransactionTemplate(platformTransactionManager); @@ -88,7 +82,7 @@ public class ConversionServiceTests extends MultiDriverTestClass { @Test public void shouldBeAbleToConvertBetweenBytesAndBase64EncodedDataViaSpringConversionService() { String base64Representation = "YmNkZWY="; - byte[] binaryData = new byte[]{98, 99, 100, 101, 102}; + byte[] binaryData = new byte[] { 98, 99, 100, 101, 102 }; assertTrue(this.conversionService.canConvert(byte[].class, String.class)); assertEquals(base64Representation, this.conversionService.convert(binaryData, String.class)); @@ -99,8 +93,8 @@ public class ConversionServiceTests extends MultiDriverTestClass { @Test public void shouldConvertBase64StringOutOfGraphDatabaseBackIntoByteArray() { - Result rs = getGraphDatabaseService().execute( - "CREATE (u:SiteMember {profilePictureData:'MTIzNDU2Nzg5'}) RETURN id(u) AS userId"); + Result rs = getGraphDatabaseService() + .execute("CREATE (u:SiteMember {profilePictureData:'MTIzNDU2Nzg5'}) RETURN id(u) AS userId"); Long userId = (Long) rs.columnAs("userId").next(); byte[] expectedData = "123456789".getBytes(); @@ -113,20 +107,21 @@ public class ConversionServiceTests extends MultiDriverTestClass { public void shouldConvertFieldsUsingSpringConvertersAddedDirectlyToConversionService() { PensionPlan pensionToSave = transactionTemplate.execute(status -> { - conversionService.addConverter(new SpringMonetaryAmountToIntegerConverter()); - conversionService.addConverter(new SpringIntegerToMonetaryAmountConverter()); - conversionService.addConverter(new SpringMonetaryAmountToLongConverter()); - conversionService.addConverter(new SpringLongToMonetaryAmountConverter()); + conversionService.addConverter(new SpringMonetaryAmountToIntegerConverter()); + conversionService.addConverter(new SpringIntegerToMonetaryAmountConverter()); + conversionService.addConverter(new SpringMonetaryAmountToLongConverter()); + conversionService.addConverter(new SpringLongToMonetaryAmountConverter()); - PensionPlan pensionToSave1 = new PensionPlan(new MonetaryAmount(16472, 81), "Tightfist Asset Management Ltd"); + PensionPlan pensionToSave1 = new PensionPlan(new MonetaryAmount(16472, 81), "Tightfist Asset Management Ltd"); - pensionRepository.save(pensionToSave1); - return pensionToSave1; - }); + pensionRepository.save(pensionToSave1); + return pensionToSave1; + }); Result result = getGraphDatabaseService().execute("MATCH (p:PensionPlan) RETURN p.fundValue AS fv"); assertTrue("Nothing was saved", result.hasNext()); - assertEquals("The amount wasn't converted and persisted correctly", "1647281", String.valueOf(result.next().get("fv"))); + assertEquals("The amount wasn't converted and persisted correctly", "1647281", + String.valueOf(result.next().get("fv"))); result.close(); PensionPlan reloadedPension = this.pensionRepository.findById(pensionToSave.getPensionPlanId()).get(); @@ -140,14 +135,14 @@ public class ConversionServiceTests extends MultiDriverTestClass { public void shouldConvertFieldsUsingAnAvailableSupertypeConverterIfExactTypesDoNotMatch() { this.conversionService.addConverterFactory(new SpringMonetaryAmountToNumberConverterFactory()); - //this.conversionService.addConverter(new SpringIntegerToMonetaryAmountConverter()); + // this.conversionService.addConverter(new SpringIntegerToMonetaryAmountConverter()); PensionPlan pension = new PensionPlan(new MonetaryAmount(20_000, 00), "Ashes Assets LLP"); this.pensionRepository.save(pension); - Result result = getGraphDatabaseService() - .execute("MATCH (p:PensionPlan) RETURN p.fundValue AS fv"); + Result result = getGraphDatabaseService().execute("MATCH (p:PensionPlan) RETURN p.fundValue AS fv"); assertTrue("Nothing was saved", result.hasNext()); - assertEquals("The amount wasn't converted and persisted correctly", "2000000", String.valueOf(result.next().get("fv"))); + assertEquals("The amount wasn't converted and persisted correctly", "2000000", + String.valueOf(result.next().get("fv"))); result.close(); } @@ -164,14 +159,14 @@ public class ConversionServiceTests extends MultiDriverTestClass { this.javaElementRepository.save(method); - Result result = getGraphDatabaseService() - .execute("MATCH (e:JavaElement) RETURN e.elementType AS type"); + Result result = getGraphDatabaseService().execute("MATCH (e:JavaElement) RETURN e.elementType AS type"); assertTrue("Nothing was saved", result.hasNext()); assertEquals("The element type wasn't converted and persisted correctly", "METHOD", result.next().get("type")); result.close(); JavaElement loadedObject = this.javaElementRepository.findAll().iterator().next(); - assertEquals("The element type wasn't loaded and converted correctly", ElementType.METHOD, loadedObject.getElementType()); + assertEquals("The element type wasn't loaded and converted correctly", ElementType.METHOD, + loadedObject.getElementType()); } @Test(expected = ConverterNotFoundException.class) @@ -185,12 +180,12 @@ public class ConversionServiceTests extends MultiDriverTestClass { @Test public void shouldUseSpecifiedAttributeConverterInsteadOfSprings() { - //We're registering Spring converters as well + // We're registering Spring converters as well this.conversionService.addConverter(new SpringIntegerToByteArrayConverter()); this.conversionService.addConverter(new SpringByteArrayToIntegerConverter()); String base64Representation = "YmNkZWY="; - byte[] binaryData = new byte[]{98, 99, 100, 101, 102}; + byte[] binaryData = new byte[] { 98, 99, 100, 101, 102 }; assertTrue(this.conversionService.canConvert(byte[].class, String.class)); assertEquals(base64Representation, this.conversionService.convert(binaryData, String.class)); @@ -208,11 +203,11 @@ public class ConversionServiceTests extends MultiDriverTestClass { @Test public void shouldUseDefaultAttributeConverterInsteadOfSprings() { - //We're registering Spring converters which should not override the default ogm BigInteger converter + // We're registering Spring converters which should not override the default ogm BigInteger converter this.conversionService.addConverter(new SpringBigIntegerToBooleanConverter()); this.conversionService.addConverter(new SpringBooleanToBigIntegerConverter()); - byte[] binaryData = new byte[]{98, 99, 100, 101, 102}; + byte[] binaryData = new byte[] { 98, 99, 100, 101, 102 }; SiteMember siteMember = new SiteMember(); siteMember.setProfilePictureData(binaryData); @@ -240,7 +235,8 @@ public class ConversionServiceTests extends MultiDriverTestClass { } @Configuration - @EnableNeo4jRepositories(basePackageClasses = {SiteMemberRepository.class, PensionRepository.class, JavaElementRepository.class}) + @EnableNeo4jRepositories( + basePackageClasses = { SiteMemberRepository.class, PensionRepository.class, JavaElementRepository.class }) @EnableTransactionManagement static class ConversionServicePersistenceContext { @@ -256,7 +252,8 @@ public class ConversionServiceTests extends MultiDriverTestClass { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.integration.conversion.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.integration.conversion.domain"); } } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/JavaElementRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/JavaElementRepository.java index a8f19e759..6720e857c 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/JavaElementRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/JavaElementRepository.java @@ -23,6 +23,6 @@ import org.springframework.stereotype.Repository; @Repository public interface JavaElementRepository extends Neo4jRepository { - // no additional repository methods + // no additional repository methods } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/PensionRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/PensionRepository.java index 9c6f3f7ac..d9b3daf58 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/PensionRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/PensionRepository.java @@ -23,6 +23,6 @@ import org.springframework.stereotype.Repository; @Repository public interface PensionRepository extends Neo4jRepository { - // no additional repository methods + // no additional repository methods } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SiteMemberRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SiteMemberRepository.java index af0e7fb7c..8cf70bf34 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SiteMemberRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SiteMemberRepository.java @@ -23,6 +23,6 @@ import org.springframework.stereotype.Repository; @Repository public interface SiteMemberRepository extends Neo4jRepository { - // no additional repository methods + // no additional repository methods } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringBigIntegerToBooleanConverter.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringBigIntegerToBooleanConverter.java index c9c75358f..d8de6e91e 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringBigIntegerToBooleanConverter.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringBigIntegerToBooleanConverter.java @@ -13,15 +13,16 @@ package org.springframework.data.neo4j.integration.conversion; -import org.springframework.core.convert.converter.Converter; - import java.math.BigInteger; +import org.springframework.core.convert.converter.Converter; + /** * Nonsensical Spring converter for test purposes + * * @author Luanne Misquitta */ -public class SpringBigIntegerToBooleanConverter implements Converter { +public class SpringBigIntegerToBooleanConverter implements Converter { @Override public Boolean convert(BigInteger source) { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringBooleanToBigIntegerConverter.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringBooleanToBigIntegerConverter.java index c0357fdac..bb20bdc25 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringBooleanToBigIntegerConverter.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringBooleanToBigIntegerConverter.java @@ -13,19 +13,20 @@ package org.springframework.data.neo4j.integration.conversion; -import org.springframework.core.convert.converter.Converter; - import java.math.BigInteger; +import org.springframework.core.convert.converter.Converter; + /** * Nonsensical Spring converter for testing purposes + * * @author Luanne Misquitta */ public class SpringBooleanToBigIntegerConverter implements Converter { @Override public BigInteger convert(Boolean source) { - if(source) { + if (source) { return BigInteger.valueOf(101); } return BigInteger.valueOf(1); diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringByteArrayToIntegerConverter.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringByteArrayToIntegerConverter.java index a4fb3702c..27d243807 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringByteArrayToIntegerConverter.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringByteArrayToIntegerConverter.java @@ -17,9 +17,10 @@ import org.springframework.core.convert.converter.Converter; /** * Nonsensical spring converter from a byte[] to an Integer, for test purposes + * * @author Luanne Misquitta */ -public class SpringByteArrayToIntegerConverter implements Converter { +public class SpringByteArrayToIntegerConverter implements Converter { @Override public Integer convert(byte[] source) { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringIntegerToByteArrayConverter.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringIntegerToByteArrayConverter.java index 3aa1707cb..2aaa747a1 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringIntegerToByteArrayConverter.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringIntegerToByteArrayConverter.java @@ -13,14 +13,14 @@ package org.springframework.data.neo4j.integration.conversion; - import org.springframework.core.convert.converter.Converter; /** * Nonsensical spring converter from a byte[] to an Integer, for test purposes + * * @author Luanne Misquitta */ -public class SpringIntegerToByteArrayConverter implements Converter { +public class SpringIntegerToByteArrayConverter implements Converter { @Override public byte[] convert(Integer source) { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringIntegerToMonetaryAmountConverter.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringIntegerToMonetaryAmountConverter.java index 70d23a26a..06ca881a2 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringIntegerToMonetaryAmountConverter.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringIntegerToMonetaryAmountConverter.java @@ -18,9 +18,9 @@ import org.springframework.data.neo4j.integration.conversion.domain.MonetaryAmou public class SpringIntegerToMonetaryAmountConverter implements Converter { - @Override - public MonetaryAmount convert(Integer source) { - return source != null ? new MonetaryAmount(source.intValue() / 100, source.intValue() % 100) : null; - } + @Override + public MonetaryAmount convert(Integer source) { + return source != null ? new MonetaryAmount(source.intValue() / 100, source.intValue() % 100) : null; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringLongToMonetaryAmountConverter.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringLongToMonetaryAmountConverter.java index b0cdcf036..89236c4cc 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringLongToMonetaryAmountConverter.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringLongToMonetaryAmountConverter.java @@ -18,9 +18,9 @@ import org.springframework.data.neo4j.integration.conversion.domain.MonetaryAmou public class SpringLongToMonetaryAmountConverter implements Converter { - @Override - public MonetaryAmount convert(Long source) { - return source != null ? new MonetaryAmount(source.intValue() / 100, source.intValue() % 100) : null; - } + @Override + public MonetaryAmount convert(Long source) { + return source != null ? new MonetaryAmount(source.intValue() / 100, source.intValue() % 100) : null; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToIntegerConverter.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToIntegerConverter.java index df119e9ff..e870b325e 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToIntegerConverter.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToIntegerConverter.java @@ -18,9 +18,9 @@ import org.springframework.data.neo4j.integration.conversion.domain.MonetaryAmou public class SpringMonetaryAmountToIntegerConverter implements Converter { - @Override - public Integer convert(MonetaryAmount source) { - return source != null ? (int) source.getAmountAsSubUnits() : null; - } + @Override + public Integer convert(MonetaryAmount source) { + return source != null ? (int) source.getAmountAsSubUnits() : null; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToLongConverter.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToLongConverter.java index 59747fc42..f76cc061d 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToLongConverter.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToLongConverter.java @@ -18,9 +18,9 @@ import org.springframework.data.neo4j.integration.conversion.domain.MonetaryAmou public class SpringMonetaryAmountToLongConverter implements Converter { - @Override - public Long convert(MonetaryAmount source) { - return source != null ? (long) source.getAmountAsSubUnits() : null; - } + @Override + public Long convert(MonetaryAmount source) { + return source != null ? (long) source.getAmountAsSubUnits() : null; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToNumberConverter.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToNumberConverter.java index 9856c5231..73446e108 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToNumberConverter.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToNumberConverter.java @@ -18,9 +18,9 @@ import org.springframework.data.neo4j.integration.conversion.domain.MonetaryAmou public class SpringMonetaryAmountToNumberConverter implements Converter { - @Override - public Number convert(MonetaryAmount source) { - return source != null ? source.getAmountAsSubUnits() : null; - } + @Override + public Number convert(MonetaryAmount source) { + return source != null ? source.getAmountAsSubUnits() : null; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToNumberConverterFactory.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToNumberConverterFactory.java index 01713c227..42899b462 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToNumberConverterFactory.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringMonetaryAmountToNumberConverterFactory.java @@ -20,24 +20,26 @@ import org.springframework.core.convert.converter.ConverterFactory; import org.springframework.data.neo4j.integration.conversion.domain.MonetaryAmount; /** - * Not a properly-implemented factory, but it does serve the purpose of helping to verify that converters defined for abstract - * supertypes can still be used correctly. + * Not a properly-implemented factory, but it does serve the purpose of helping to verify that converters defined for + * abstract supertypes can still be used correctly. * * @author Adam George */ -public class SpringMonetaryAmountToNumberConverterFactory implements ConverterFactory, ConditionalConverter { +public class SpringMonetaryAmountToNumberConverterFactory + implements ConverterFactory, ConditionalConverter { - private final SpringMonetaryAmountToIntegerConverter wrappedConverter = new SpringMonetaryAmountToIntegerConverter(); + private final SpringMonetaryAmountToIntegerConverter wrappedConverter = new SpringMonetaryAmountToIntegerConverter(); - @Override - public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) { - return MonetaryAmount.class.isAssignableFrom(sourceType.getType()) && Number.class.isAssignableFrom(targetType.getType()); - } + @Override + public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) { + return MonetaryAmount.class.isAssignableFrom(sourceType.getType()) + && Number.class.isAssignableFrom(targetType.getType()); + } - @SuppressWarnings("unchecked") - @Override - public Converter getConverter(Class targetType) { - return (Converter) this.wrappedConverter; - } + @SuppressWarnings("unchecked") + @Override + public Converter getConverter(Class targetType) { + return (Converter) this.wrappedConverter; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringNumberToMonetaryAmountConverter.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringNumberToMonetaryAmountConverter.java index 02e220a56..6529f7c8f 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringNumberToMonetaryAmountConverter.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/SpringNumberToMonetaryAmountConverter.java @@ -18,9 +18,9 @@ import org.springframework.data.neo4j.integration.conversion.domain.MonetaryAmou public class SpringNumberToMonetaryAmountConverter implements Converter { - @Override - public MonetaryAmount convert(Number source) { - return source != null ? new MonetaryAmount(source.intValue() / 100, source.intValue() % 100) : null; - } + @Override + public MonetaryAmount convert(Number source) { + return source != null ? new MonetaryAmount(source.intValue() / 100, source.intValue() % 100) : null; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/JavaElement.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/JavaElement.java index fa1233eae..96a836feb 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/JavaElement.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/JavaElement.java @@ -13,47 +13,45 @@ package org.springframework.data.neo4j.integration.conversion.domain; +import java.lang.annotation.ElementType; + import org.neo4j.ogm.annotation.GraphId; import org.neo4j.ogm.annotation.NodeEntity; import org.neo4j.ogm.annotation.typeconversion.Convert; -import java.lang.annotation.ElementType; - /** - * Models an element of the Java programming language, although more importantly contains an enum that isn't part of the scanned - * OGM meta-data and therefore tests an important part of the Spring conversion service. + * Models an element of the Java programming language, although more importantly contains an enum that isn't part of the + * scanned OGM meta-data and therefore tests an important part of the Spring conversion service. */ @NodeEntity public class JavaElement { - @GraphId - private Long identifier; - private String name; - @Convert(graphPropertyType = String.class) - private ElementType elementType; + @GraphId private Long identifier; + private String name; + @Convert(graphPropertyType = String.class) private ElementType elementType; - public Long getIdentifier() { - return identifier; - } + public Long getIdentifier() { + return identifier; + } - public void setIdentifier(Long identifier) { - this.identifier = identifier; - } + public void setIdentifier(Long identifier) { + this.identifier = identifier; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } - public ElementType getElementType() { - return elementType; - } + public ElementType getElementType() { + return elementType; + } - public void setElementType(ElementType elementType) { - this.elementType = elementType; - } + public void setElementType(ElementType elementType) { + this.elementType = elementType; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/MonetaryAmount.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/MonetaryAmount.java index 126029fdb..ef3c8ec6c 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/MonetaryAmount.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/MonetaryAmount.java @@ -15,41 +15,41 @@ package org.springframework.data.neo4j.integration.conversion.domain; public class MonetaryAmount { - private final int amount; + private final int amount; - public MonetaryAmount(int pounds, int pence) { - this.amount = pounds * 100 + pence; - } + public MonetaryAmount(int pounds, int pence) { + this.amount = pounds * 100 + pence; + } - public int getAmountAsSubUnits() { - return this.amount; - } + public int getAmountAsSubUnits() { + return this.amount; + } - @Override - public int hashCode() { - final int prime = 17; - int result = 1; - result = prime * result + (amount ^ (amount >>> 32)); - return result; - } + @Override + public int hashCode() { + final int prime = 17; + int result = 1; + result = prime * result + (amount ^ (amount >>> 32)); + return result; + } - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (!(obj instanceof MonetaryAmount)) - return false; + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (!(obj instanceof MonetaryAmount)) + return false; - MonetaryAmount other = (MonetaryAmount) obj; - return this.amount == other.amount; - } + MonetaryAmount other = (MonetaryAmount) obj; + return this.amount == other.amount; + } - @Override - public String toString() { - int pence = this.amount % 100; - return "£" + (this.amount / 100) + "." + (pence < 10 ? "0" + pence : pence); - } + @Override + public String toString() { + int pence = this.amount % 100; + return "£" + (this.amount / 100) + "." + (pence < 10 ? "0" + pence : pence); + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/PensionPlan.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/PensionPlan.java index 74320000f..4b34a06b9 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/PensionPlan.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/PensionPlan.java @@ -24,43 +24,41 @@ import org.neo4j.ogm.annotation.typeconversion.Convert; @NodeEntity public class PensionPlan { - @GraphId - private Long pensionPlanId; + @GraphId private Long pensionPlanId; - @Convert(graphPropertyType = Integer.class) - private MonetaryAmount fundValue; + @Convert(graphPropertyType = Integer.class) private MonetaryAmount fundValue; - @Convert(graphPropertyType = SiteMember.class) //nonsensical conversion for test purposes - private JavaElement javaElement; + @Convert(graphPropertyType = SiteMember.class) // nonsensical conversion for test purposes + private JavaElement javaElement; - private String providerName; + private String providerName; - PensionPlan() { - // default constructor for OGM - } + PensionPlan() { + // default constructor for OGM + } - public PensionPlan(MonetaryAmount fundValue, String providerName) { - this.fundValue = fundValue; - this.providerName = providerName; - } + public PensionPlan(MonetaryAmount fundValue, String providerName) { + this.fundValue = fundValue; + this.providerName = providerName; + } - public Long getPensionPlanId() { - return pensionPlanId; - } + public Long getPensionPlanId() { + return pensionPlanId; + } - public String getProviderName() { - return providerName; - } + public String getProviderName() { + return providerName; + } - public MonetaryAmount getFundValue() { - return fundValue; - } + public MonetaryAmount getFundValue() { + return fundValue; + } - public JavaElement getJavaElement() { - return javaElement; - } + public JavaElement getJavaElement() { + return javaElement; + } - public void setJavaElement(JavaElement javaElement) { - this.javaElement = javaElement; - } + public void setJavaElement(JavaElement javaElement) { + this.javaElement = javaElement; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/SiteMember.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/SiteMember.java index 85dd30efb..3e4e102b5 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/SiteMember.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/integration/conversion/domain/SiteMember.java @@ -27,38 +27,35 @@ import org.neo4j.ogm.typeconversion.ByteArrayBase64Converter; */ public class SiteMember { - @GraphId - private Long id; + @GraphId private Long id; - @Convert(ByteArrayBase64Converter.class) - private byte[] profilePictureData; + @Convert(ByteArrayBase64Converter.class) private byte[] profilePictureData; - private BigInteger years; + private BigInteger years; - @Property(name = "rounding") - private List roundingModes; + @Property(name = "rounding") private List roundingModes; - public byte[] getProfilePictureData() { - return this.profilePictureData; - } + public byte[] getProfilePictureData() { + return this.profilePictureData; + } - public void setProfilePictureData(byte[] profilePictureData) { - this.profilePictureData = profilePictureData; - } + public void setProfilePictureData(byte[] profilePictureData) { + this.profilePictureData = profilePictureData; + } - public BigInteger getYears() { - return years; - } + public BigInteger getYears() { + return years; + } - public void setYears(BigInteger years) { - this.years = years; - } + public void setYears(BigInteger years) { + this.years = years; + } - public List getRoundingModes() { - return roundingModes; - } + public List getRoundingModes() { + return roundingModes; + } - public void setRoundingModes(List roundingModes) { - this.roundingModes = roundingModes; - } + public void setRoundingModes(List roundingModes) { + this.roundingModes = roundingModes; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/DerivedQueryTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/DerivedQueryTests.java index e5735c374..b7a807769 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/DerivedQueryTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/DerivedQueryTests.java @@ -72,28 +72,22 @@ import org.springframework.transaction.support.TransactionTemplate; * @author Luanne Misquitta * @author Mark Angrish */ -@ContextConfiguration(classes = {DerivedQueryTests.MoviesContext.class}) +@ContextConfiguration(classes = { DerivedQueryTests.MoviesContext.class }) @RunWith(SpringJUnit4ClassRunner.class) public class DerivedQueryTests extends MultiDriverTestClass { - @Autowired - PlatformTransactionManager platformTransactionManager; + @Autowired PlatformTransactionManager platformTransactionManager; - @Autowired - private Session session; + @Autowired private Session session; - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; - @Autowired - private CinemaRepository cinemaRepository; + @Autowired private CinemaRepository cinemaRepository; - @Autowired - private DirectorRepository directorRepository; + @Autowired private DirectorRepository directorRepository; private TransactionTemplate transactionTemplate; - @Before public void clearDatabase() { transactionTemplate = new TransactionTemplate(platformTransactionManager); @@ -139,7 +133,8 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindNodeEntitiesWithLabels() { - executeUpdate("CREATE (u:User {name:'Michal'}) CREATE (p:Theatre {name:'Picturehouse', city:'London'}) CREATE (r:Theatre {name:'Ritzy', city:'London'}) CREATE (u)-[:VISITED]->(p)"); + executeUpdate( + "CREATE (u:User {name:'Michal'}) CREATE (p:Theatre {name:'Picturehouse', city:'London'}) CREATE (r:Theatre {name:'Ritzy', city:'London'}) CREATE (u)-[:VISITED]->(p)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -163,7 +158,8 @@ public class DerivedQueryTests extends MultiDriverTestClass { @Test public void shouldUseDepthOnCollectionFinder() { - executeUpdate("CREATE (u:User {name:'Michal'}) CREATE (p:Theatre {name:'Picturehouse', city:'London'}) CREATE (r:Theatre {name:'Ritzy', city:'London'}) CREATE (u)-[:VISITED]->(p)"); + executeUpdate( + "CREATE (u:User {name:'Michal'}) CREATE (p:Theatre {name:'Picturehouse', city:'London'}) CREATE (r:Theatre {name:'Ritzy', city:'London'}) CREATE (u)-[:VISITED]->(p)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -184,8 +180,9 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindNodeEntitiesMultipleAndedProperties() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London'}) CREATE (r:Theatre {name:'Ritzy', city:'London'})" + - " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); + executeUpdate( + "CREATE (p:Theatre {name:'Picturehouse', city:'London'}) CREATE (r:Theatre {name:'Ritzy', city:'London'})" + + " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); List theatres = cinemaRepository.findByNameAndLocation("Ritzy", "London"); assertEquals(1, theatres.size()); @@ -197,8 +194,9 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindNodeEntititiesMultipleOredProperties() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London'}) CREATE (r:Theatre {name:'Ritzy', city:'London'})" + - " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); + executeUpdate( + "CREATE (p:Theatre {name:'Picturehouse', city:'London'}) CREATE (r:Theatre {name:'Ritzy', city:'London'})" + + " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); List theatres = cinemaRepository.findByNameOrLocation("Ritzy", "London"); assertEquals(2, theatres.size()); @@ -209,21 +207,22 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldReturnNoResultsCorrectly() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London'}) CREATE (r:Theatre {name:'Ritzy', city:'London'})" + - " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); + executeUpdate( + "CREATE (p:Theatre {name:'Picturehouse', city:'London'}) CREATE (r:Theatre {name:'Ritzy', city:'London'})" + + " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); Collection theatres = cinemaRepository.findByName("Does not exist"); assertEquals(0, theatres.size()); } - /** * @see DATAGRAPH-629 */ @Test public void shouldFindNodeEntititiesWithComparisonOperators() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500})" + - " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); + executeUpdate( + "CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500})" + + " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -254,8 +253,9 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindNodeEntititiesWithMultipleComparisonOperatorsAnded() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) CREATE (m:Theatre {name:'Regal', city:'Bombay', capacity: 4500})" + - " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); + executeUpdate( + "CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) CREATE (m:Theatre {name:'Regal', city:'Bombay', capacity: 4500})" + + " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -277,8 +277,9 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindNodeEntititiesWithMultipleComparisonOperatorsOred() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) CREATE (m:Theatre {name:'Regal', city:'Bombay', capacity: 9000})" + - " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); + executeUpdate( + "CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) CREATE (m:Theatre {name:'Regal', city:'Bombay', capacity: 9000})" + + " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -295,14 +296,14 @@ public class DerivedQueryTests extends MultiDriverTestClass { }); } - /** * @see DATAGRAPH-629 */ @Test public void shouldFindNodeEntititiesWithNestedProperty() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500})" + - " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); + executeUpdate( + "CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500})" + + " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r)"); List theatres = cinemaRepository.findByVisitedName("Michal"); assertEquals(1, theatres.size()); @@ -314,9 +315,9 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindNodeEntititiesWithDeepNestedProperty() { - executeUpdate("CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500})" + - " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r) CREATE (m1:Movie {name:'Speed'})" + - " CREATE (g:Genre {name:'Thriller'}) CREATE (u)-[:INTERESTED]->(g)"); + executeUpdate("CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500})" + + " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r) CREATE (m1:Movie {name:'Speed'})" + + " CREATE (g:Genre {name:'Thriller'}) CREATE (u)-[:INTERESTED]->(g)"); List theatres = cinemaRepository.findByVisitedInterestedName("Thriller"); assertEquals(1, theatres.size()); @@ -328,8 +329,9 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindNodeEntititiesWithBaseAndNestedProperty() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) CREATE (m:Theatre {name:'Regal', city:'Bombay', capacity: 5000})" + - " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r) CREATE (u)-[:VISITED]->(m)"); + executeUpdate( + "CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) CREATE (m:Theatre {name:'Regal', city:'Bombay', capacity: 5000})" + + " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r) CREATE (u)-[:VISITED]->(m)"); List theatres = cinemaRepository.findByLocationAndVisitedName("London", "Michal"); assertEquals(1, theatres.size()); @@ -337,18 +339,18 @@ public class DerivedQueryTests extends MultiDriverTestClass { } /** - * @see DATAGRAPH-662 - * //TODO FIXME + * @see DATAGRAPH-662 //TODO FIXME */ @Test(expected = UnsupportedOperationException.class) public void shouldFindNodeEntititiesWithBaseOrNestedProperty() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) CREATE (m:Theatre {name:'The Old Vic', city:'London', capacity: 5000})" + - " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r) CREATE (u)-[:VISITED]->(m)"); + executeUpdate( + "CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) CREATE (m:Theatre {name:'The Old Vic', city:'London', capacity: 5000})" + + " CREATE (u:User {name:'Michal'}) CREATE (u)-[:VISITED]->(r) CREATE (u)-[:VISITED]->(m)"); List theatres = cinemaRepository.findByLocationOrVisitedName("P", "Michal"); assertEquals(2, theatres.size()); assertTrue(theatres.contains(new Cinema("Ritzy"))); - //assertTrue(theatres.contains(new Cinema("Picturehouse"))); + // assertTrue(theatres.contains(new Cinema("Picturehouse"))); assertTrue(theatres.contains(new Cinema("The Old Vic"))); } @@ -357,9 +359,10 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindNodeEntitiesWithNestedRelationshipEntityProperty() { - executeUpdate("CREATE (m1:Movie {title:'Speed'}) CREATE (m2:Movie {title:'The Matrix'}) CREATE (m:Movie {title:'Chocolat'})" + - " CREATE (u:User {name:'Michal'}) CREATE (u1:User {name:'Vince'}) " + - " CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2) CREATE (u1)-[:RATED {stars:3}]->(m)"); + executeUpdate( + "CREATE (m1:Movie {title:'Speed'}) CREATE (m2:Movie {title:'The Matrix'}) CREATE (m:Movie {title:'Chocolat'})" + + " CREATE (u:User {name:'Michal'}) CREATE (u1:User {name:'Vince'}) " + + " CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2) CREATE (u1)-[:RATED {stars:3}]->(m)"); List users = userRepository.findByRatingsStars(3); assertEquals(2, users.size()); @@ -373,14 +376,11 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindNodeEntititiesWithTwoNestedPropertiesAndedAcrossDifferentRelatedNodeEntities() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + - " CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + - " CREATE (u:User {name:'Michal'}) " + - " CREATE (u)-[:VISITED]->(r) CREATE (u)-[:VISITED]->(p)" + - " CREATE (m1:Movie {name:'San Andreas'}) " + - " CREATE (m2:Movie {name:'Pitch Perfect 2'})" + - " CREATE (p)-[:BLOCKBUSTER]->(m1)" + - " CREATE (r)-[:BLOCKBUSTER]->(m2)"); + executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + + " CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + " CREATE (u:User {name:'Michal'}) " + + " CREATE (u)-[:VISITED]->(r) CREATE (u)-[:VISITED]->(p)" + " CREATE (m1:Movie {name:'San Andreas'}) " + + " CREATE (m2:Movie {name:'Pitch Perfect 2'})" + " CREATE (p)-[:BLOCKBUSTER]->(m1)" + + " CREATE (r)-[:BLOCKBUSTER]->(m2)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -398,17 +398,14 @@ public class DerivedQueryTests extends MultiDriverTestClass { /** * @see DATAGRAPH-662 */ - //FIXME: OR is not supported for nested properties on an entity + // FIXME: OR is not supported for nested properties on an entity @Test(expected = UnsupportedOperationException.class) public void shouldFindNodeEntititiesWithTwoNestedPropertiesOred() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + - " CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + - " CREATE (u:User {name:'Michal'}) " + - " CREATE (u)-[:VISITED]->(r) CREATE (u)-[:VISITED]->(p)" + - " CREATE (m1:Movie {title:'San Andreas'}) " + - " CREATE (m2:Movie {title:'Pitch Perfect 2'})" + - " CREATE (p)-[:BLOCKBUSTER]->(m1)" + - " CREATE (r)-[:BLOCKBUSTER]->(m2)"); + executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + + " CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + " CREATE (u:User {name:'Michal'}) " + + " CREATE (u)-[:VISITED]->(r) CREATE (u)-[:VISITED]->(p)" + " CREATE (m1:Movie {title:'San Andreas'}) " + + " CREATE (m2:Movie {title:'Pitch Perfect 2'})" + " CREATE (p)-[:BLOCKBUSTER]->(m1)" + + " CREATE (r)-[:BLOCKBUSTER]->(m2)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -429,10 +426,10 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindNodeEntititiesWithMultipleNestedPropertiesAnded() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + - " CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + - " CREATE (u:User {name:'Michal', middleName:'M'}) CREATE (u1:User {name:'Vince', middleName:'M'}) " + - " CREATE (u)-[:VISITED]->(p) CREATE (u1)-[:VISITED]->(r)"); + executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + + " CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + + " CREATE (u:User {name:'Michal', middleName:'M'}) CREATE (u1:User {name:'Vince', middleName:'M'}) " + + " CREATE (u)-[:VISITED]->(p) CREATE (u1)-[:VISITED]->(r)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -452,9 +449,10 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindNodeEntititiesWithRelationshipEntityAndNestedProperty() { - executeUpdate("CREATE (m1:Movie {title:'Speed'}) CREATE (m2:Movie {title:'The Matrix'}) CREATE (m:Movie {title:'Chocolat'})" + - " CREATE (u:User {name:'Michal'}) CREATE (u1:User {name:'Vince'}) CREATE (g:Genre {name:'Thriller'}) CREATE (u)-[:INTERESTED]->(g) " + - " CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2) CREATE (u1)-[:RATED {stars:3}]->(m)"); + executeUpdate( + "CREATE (m1:Movie {title:'Speed'}) CREATE (m2:Movie {title:'The Matrix'}) CREATE (m:Movie {title:'Chocolat'})" + + " CREATE (u:User {name:'Michal'}) CREATE (u1:User {name:'Vince'}) CREATE (g:Genre {name:'Thriller'}) CREATE (u)-[:INTERESTED]->(g) " + + " CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2) CREATE (u1)-[:RATED {stars:3}]->(m)"); List users = userRepository.findByRatingsStarsAndInterestedName(3, "Thriller"); assertEquals(1, users.size()); @@ -466,8 +464,7 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindNodeEntitiesByRegularExpressionMatchingOnPropertiesInDerivedFinderMethods() { - executeUpdate("CREATE (:Theatre {name:'Odeon', city:'Preston'}), " - + "(:Theatre {name:'Vue', city:'Dumfries'}), " + executeUpdate("CREATE (:Theatre {name:'Odeon', city:'Preston'}), " + "(:Theatre {name:'Vue', city:'Dumfries'}), " + "(:Theatre {name:'PVR', city:'Mumbai'}) "); // ideally, I'd name this to be "findWhereNameMatches" or "findByNameMatching" @@ -482,8 +479,7 @@ public class DerivedQueryTests extends MultiDriverTestClass { @Test public void shouldMatchNodeEntitiesUsingCaseInsensitiveLikeWithWildcards() { executeUpdate("CREATE (:Theatre {name:'IMAX', city:'Chesterfield'}), " - + "(:Theatre {name:'Odeon', city:'Manchester'}), " - + "(:Theatre {name:'IMAX', city:'Edinburgh'}) "); + + "(:Theatre {name:'Odeon', city:'Manchester'}), " + "(:Theatre {name:'IMAX', city:'Edinburgh'}) "); List cinemas = cinemaRepository.findByLocationLike("*chest*"); assertEquals("The wrong number of cinemas was returned", 2, cinemas.size()); @@ -507,9 +503,7 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldMatchNodeEntitiesUsingNotLikeWithAsteriskWildcards() { - executeUpdate("CREATE (:User {name:'Jeff'}), " - + "(:User {name:'Jeremy'}), " - + "(:User {name:'Alan'})"); + executeUpdate("CREATE (:User {name:'Jeff'}), " + "(:User {name:'Jeremy'}), " + "(:User {name:'Alan'})"); List nonMatchingUsers = userRepository.findByNameIsNotLike("Je*"); assertEquals("The wrong number of users was returned", 1, nonMatchingUsers.size()); @@ -521,7 +515,8 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindDirectorsByName() { - executeUpdate("CREATE (m:User {name:'Michal'})<-[:FRIEND_OF]-(a:User {name:'Adam'}) CREATE (d:Director {name:'Vince'})"); + executeUpdate( + "CREATE (m:User {name:'Michal'})<-[:FRIEND_OF]-(a:User {name:'Adam'}) CREATE (d:Director {name:'Vince'})"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -540,21 +535,16 @@ public class DerivedQueryTests extends MultiDriverTestClass { }); } - /** * @see DATAGRAPH-744 */ @Test public void shouldFindUserWithCustomDepth() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + - " CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + - " CREATE (u:User {name:'Michal'}) " + - " CREATE (u)-[:VISITED]->(r) CREATE (u)-[:VISITED]->(p)" + - " CREATE (m1:Movie {name:'San Andreas'}) " + - " CREATE (m2:Movie {name:'Pitch Perfect 2'})" + - " CREATE (p)-[:BLOCKBUSTER]->(m1)" + - " CREATE (r)-[:BLOCKBUSTER]->(m2)" + - " CREATE (u)-[:RATED {stars :3}]->(m1)"); + executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + + " CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + " CREATE (u:User {name:'Michal'}) " + + " CREATE (u)-[:VISITED]->(r) CREATE (u)-[:VISITED]->(p)" + " CREATE (m1:Movie {name:'San Andreas'}) " + + " CREATE (m2:Movie {name:'Pitch Perfect 2'})" + " CREATE (p)-[:BLOCKBUSTER]->(m1)" + + " CREATE (r)-[:BLOCKBUSTER]->(m2)" + " CREATE (u)-[:RATED {stars :3}]->(m1)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -582,13 +572,13 @@ public class DerivedQueryTests extends MultiDriverTestClass { }); } - /** * @see DATAGRAPH-744 */ @Test public void shouldFindUsersByNameWithStaticDepth() { - executeUpdate("CREATE (m:User {name:'Michal', surname:'Bachman'})<-[:FRIEND_OF]-(a:User {name:'Adam', surname:'George'})"); + executeUpdate( + "CREATE (m:User {name:'Michal', surname:'Bachman'})<-[:FRIEND_OF]-(a:User {name:'Adam', surname:'George'})"); User user = userRepository.findBySurname("Bachman"); assertNotNull(user); @@ -602,9 +592,10 @@ public class DerivedQueryTests extends MultiDriverTestClass { */ @Test public void shouldSupportLiteralMapsInQueryResults() { - executeUpdate("CREATE (m1:Movie {title:'Speed'}) CREATE (m2:Movie {title:'The Matrix'}) CREATE (m:Movie {title:'Chocolat'})" + - " CREATE (u:User {name:'Michal'}) CREATE (u1:User {name:'Vince'}) " + - " CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2) CREATE (u1)-[:RATED {stars:3}]->(m)"); + executeUpdate( + "CREATE (m1:Movie {title:'Speed'}) CREATE (m2:Movie {title:'The Matrix'}) CREATE (m:Movie {title:'Chocolat'})" + + " CREATE (u:User {name:'Michal'}) CREATE (u1:User {name:'Vince'}) " + + " CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2) CREATE (u1)-[:RATED {stars:3}]->(m)"); List result = userRepository.findRatingsWithLiteralMap(); assertNotNull(result); @@ -626,10 +617,11 @@ public class DerivedQueryTests extends MultiDriverTestClass { @Test public void shouldAllowMultiThreadedDerivedFinderExecution() throws InterruptedException { int numThreads = 3; - executeUpdate("CREATE (m:User {name:'Michal', surname:'Bachman'}), (a:User {name:'Adam', surname:'George'}), (l:User {name:'Luanne', surname:'Misquitta'})"); + executeUpdate( + "CREATE (m:User {name:'Michal', surname:'Bachman'}), (a:User {name:'Adam', surname:'George'}), (l:User {name:'Luanne', surname:'Misquitta'})"); - String[] firstNames = new String[]{"Michal", "Adam", "Luanne"}; - String[] lastNames = new String[]{"Bachman", "George", "Misquitta"}; + String[] firstNames = new String[] { "Michal", "Adam", "Luanne" }; + String[] lastNames = new String[] { "Bachman", "George", "Misquitta" }; ExecutorService executor = Executors.newFixedThreadPool(numThreads); CountDownLatch latch = new CountDownLatch(numThreads); @@ -719,7 +711,6 @@ public class DerivedQueryTests extends MultiDriverTestClass { assertFalse(page.hasNext()); } - class DerivedQueryRunner implements Runnable { private final CountDownLatch latch; @@ -746,7 +737,7 @@ public class DerivedQueryTests extends MultiDriverTestClass { } @Configuration - @ComponentScan({"org.springframework.data.neo4j.examples.movies.service"}) + @ComponentScan({ "org.springframework.data.neo4j.examples.movies.service" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.movies.repo") @EnableTransactionManagement static class MoviesContext { @@ -758,7 +749,8 @@ public class DerivedQueryTests extends MultiDriverTestClass { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.movies.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.movies.domain"); } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/DerivedRelationshipEntityQueryTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/DerivedRelationshipEntityQueryTests.java index cbe30f595..3e2cea5c2 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/DerivedRelationshipEntityQueryTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/DerivedRelationshipEntityQueryTests.java @@ -49,21 +49,17 @@ import org.springframework.transaction.support.TransactionTemplate; * @author Mark Angrish * @author Vince Bickers */ -@ContextConfiguration(classes = {DerivedRelationshipEntityQueryTests.MoviesContext.class}) +@ContextConfiguration(classes = { DerivedRelationshipEntityQueryTests.MoviesContext.class }) @RunWith(SpringJUnit4ClassRunner.class) public class DerivedRelationshipEntityQueryTests extends MultiDriverTestClass { - @Autowired - PlatformTransactionManager platformTransactionManager; + @Autowired PlatformTransactionManager platformTransactionManager; - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; - @Autowired - private CinemaRepository cinemaRepository; + @Autowired private CinemaRepository cinemaRepository; - @Autowired - private RatingRepository ratingRepository; + @Autowired private RatingRepository ratingRepository; private TransactionTemplate transactionTemplate; @@ -190,7 +186,6 @@ public class DerivedRelationshipEntityQueryTests extends MultiDriverTestClass { assertEquals(0, ratings.size()); } - /** * @see DATAGRAPH-629 */ @@ -221,8 +216,9 @@ public class DerivedRelationshipEntityQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindRelEntitiesWithNestedStartNodeProperty() { - executeUpdate("CREATE (m1:Movie {name:'Speed'}) CREATE (m2:Movie {name:'The Matrix'}) CREATE (m:Movie {name:'Chocolat'})" + - " CREATE (u:User {name:'Michal'}) CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)"); + executeUpdate( + "CREATE (m1:Movie {name:'Speed'}) CREATE (m2:Movie {name:'The Matrix'}) CREATE (m:Movie {name:'Chocolat'})" + + " CREATE (u:User {name:'Michal'}) CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -241,8 +237,9 @@ public class DerivedRelationshipEntityQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindRelEntitiesWithNestedEndNodeProperty() { - executeUpdate("CREATE (m1:Movie {name:'Finding Dory'}) CREATE (m2:Movie {name:'Captain America'}) CREATE (m:Movie {name:'X-Men'})" + - " CREATE (u:User {name:'Vince'}) CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)"); + executeUpdate( + "CREATE (m1:Movie {name:'Finding Dory'}) CREATE (m2:Movie {name:'Captain America'}) CREATE (m:Movie {name:'X-Men'})" + + " CREATE (u:User {name:'Vince'}) CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -264,8 +261,9 @@ public class DerivedRelationshipEntityQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindRelEntitiesWithBothStartEndNestedProperty() { - executeUpdate("CREATE (m1:Movie {name:'Independence Day: Resurgence'}) CREATE (m2:Movie {name:'The Conjuring 2'}) CREATE (m:Movie {name:'The BFG'})" + - " CREATE (u:User {name:'Daniela'}) CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)"); + executeUpdate( + "CREATE (m1:Movie {name:'Independence Day: Resurgence'}) CREATE (m2:Movie {name:'The Conjuring 2'}) CREATE (m:Movie {name:'The BFG'})" + + " CREATE (u:User {name:'Daniela'}) CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -287,8 +285,9 @@ public class DerivedRelationshipEntityQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindRelEntitiesWithBaseAndNestedStartNodePropertyAnded() { - executeUpdate("CREATE (m1:Movie {name:'The Shallows'}) CREATE (m2:Movie {name:'Central Intelligence'}) CREATE (m:Movie {name:'Now you see me'})" + - " CREATE (u:User {name:'Luanne'}) CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)"); + executeUpdate( + "CREATE (m1:Movie {name:'The Shallows'}) CREATE (m2:Movie {name:'Central Intelligence'}) CREATE (m:Movie {name:'Now you see me'})" + + " CREATE (u:User {name:'Luanne'}) CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -306,15 +305,15 @@ public class DerivedRelationshipEntityQueryTests extends MultiDriverTestClass { } /** - * @see DATAGRAPH-662 - * //TODO FIXME + * @see DATAGRAPH-662 //TODO FIXME */ @Test(expected = UnsupportedOperationException.class) public void shouldFindRelEntitiesWithBaseAndNestedStartNodePropertyOred() { - executeUpdate("CREATE (m1:Movie {name:'Swiss Army Man'}) CREATE (m2:Movie {name:'Me Before You'}) CREATE (m:Movie {name:'X-Men Apocalypse'})" + - " CREATE (u:User {name:'Mark'}) CREATE (u2:User {name:'Adam'}) " + - " CREATE (u)-[:RATED {stars:2}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)" + - " CREATE (u2)-[:RATED {stars:3}]->(m)"); + executeUpdate( + "CREATE (m1:Movie {name:'Swiss Army Man'}) CREATE (m2:Movie {name:'Me Before You'}) CREATE (m:Movie {name:'X-Men Apocalypse'})" + + " CREATE (u:User {name:'Mark'}) CREATE (u2:User {name:'Adam'}) " + + " CREATE (u)-[:RATED {stars:2}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)" + + " CREATE (u2)-[:RATED {stars:3}]->(m)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -337,10 +336,11 @@ public class DerivedRelationshipEntityQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindRelEntitiesWithBaseAndNestedEndNodeProperty() { - executeUpdate("CREATE (m1:Movie {name:'Our Kind of Traitor'}) CREATE (m2:Movie {name:'Teenage Mutant Ninja Turtles'}) CREATE (m:Movie {name:'Zootopia'})" + - " CREATE (u:User {name:'Chris'}) CREATE (u2:User {name:'Katerina'}) " + - " CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)" + - " CREATE (u2)-[:RATED {stars:4}]->(m2)"); + executeUpdate( + "CREATE (m1:Movie {name:'Our Kind of Traitor'}) CREATE (m2:Movie {name:'Teenage Mutant Ninja Turtles'}) CREATE (m:Movie {name:'Zootopia'})" + + " CREATE (u:User {name:'Chris'}) CREATE (u2:User {name:'Katerina'}) " + + " CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)" + + " CREATE (u2)-[:RATED {stars:4}]->(m2)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -362,8 +362,9 @@ public class DerivedRelationshipEntityQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindRelEntitiesWithBaseAndBothStartEndNestedProperty() { - executeUpdate("CREATE (m1:Movie {name:'The Jungle Book'}) CREATE (m2:Movie {name:'The Angry Birds Movie'}) CREATE (m:Movie {name:'Alice Through The Looking Glass'})" + - " CREATE (u:User {name:'Alessandro'}) CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)"); + executeUpdate( + "CREATE (m1:Movie {name:'The Jungle Book'}) CREATE (m2:Movie {name:'The Angry Birds Movie'}) CREATE (m:Movie {name:'Alice Through The Looking Glass'})" + + " CREATE (u:User {name:'Alessandro'}) CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -385,10 +386,11 @@ public class DerivedRelationshipEntityQueryTests extends MultiDriverTestClass { */ @Test public void shouldFindRelEntitiesWithTwoStartNodeNestedProperties() { - executeUpdate("CREATE (m1:Movie {name:'Batman v Superman'}) CREATE (m2:Movie {name:'Genius'}) CREATE (m:Movie {name:'Home'})" + - " CREATE (u:User {name:'David', middleName:'M'}) CREATE (u2:User {name:'Martin', middleName:'M'}) " + - " CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)" + - " CREATE (u2)-[:RATED {stars:4}]->(m2)"); + executeUpdate( + "CREATE (m1:Movie {name:'Batman v Superman'}) CREATE (m2:Movie {name:'Genius'}) CREATE (m:Movie {name:'Home'})" + + " CREATE (u:User {name:'David', middleName:'M'}) CREATE (u2:User {name:'Martin', middleName:'M'}) " + + " CREATE (u)-[:RATED {stars:3}]->(m1) CREATE (u)-[:RATED {stars:4}]->(m2)" + + " CREATE (u2)-[:RATED {stars:4}]->(m2)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -500,9 +502,8 @@ public class DerivedRelationshipEntityQueryTests extends MultiDriverTestClass { } - @Configuration - @ComponentScan({"org.springframework.data.neo4j.examples.movies.service"}) + @ComponentScan({ "org.springframework.data.neo4j.examples.movies.service" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.movies.repo") @EnableTransactionManagement static class MoviesContext { @@ -514,7 +515,8 @@ public class DerivedRelationshipEntityQueryTests extends MultiDriverTestClass { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.movies.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.movies.domain"); } } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/Java8SupportTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/Java8SupportTests.java index 70892a10a..287f89af1 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/Java8SupportTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/Java8SupportTests.java @@ -58,14 +58,13 @@ import org.springframework.transaction.annotation.Transactional; /** * @author Nicolas Mervaillie */ -@ContextConfiguration(classes = {Java8SupportTests.MoviesContext.class}) +@ContextConfiguration(classes = { Java8SupportTests.MoviesContext.class }) @RunWith(SpringJUnit4ClassRunner.class) public class Java8SupportTests extends MultiDriverTestClass { private static GraphDatabaseService graphDatabaseService; - @Autowired - private CinemaStreamingRepository cinemaRepository; + @Autowired private CinemaStreamingRepository cinemaRepository; @BeforeClass public static void beforeClass() { @@ -78,7 +77,8 @@ public class Java8SupportTests extends MultiDriverTestClass { } public void setup() { - String[] names = new String[]{"Picturehouse", "Regal", "Ritzy", "Metro", "Inox", "PVR", "Cineplex", "Landmark", "Rainbow", "Movietime"}; + String[] names = new String[] { "Picturehouse", "Regal", "Ritzy", "Metro", "Inox", "PVR", "Cineplex", "Landmark", + "Rainbow", "Movietime" }; for (String name : names) { Cinema cinema = new Cinema(name); cinema.setLocation("London"); @@ -114,7 +114,8 @@ public class Java8SupportTests extends MultiDriverTestClass { public void shouldStreamCinemasWithSort() { setup(); - Collection allCinemas = cinemaRepository.getCinemasSortedByName(new Sort("n.name")).collect(Collectors.toList()); + Collection allCinemas = cinemaRepository.getCinemasSortedByName(new Sort("n.name")) + .collect(Collectors.toList()); assertEquals(10, allCinemas.size()); assertEquals("Cineplex", allCinemas.iterator().next().getName()); @@ -132,7 +133,7 @@ public class Java8SupportTests extends MultiDriverTestClass { } @Configuration - @ComponentScan({"org.springframework.data.neo4j.examples.movies.service"}) + @ComponentScan({ "org.springframework.data.neo4j.examples.movies.service" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.movies.repo") @EnableTransactionManagement static class MoviesContext { @@ -144,7 +145,8 @@ public class Java8SupportTests extends MultiDriverTestClass { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.movies.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.movies.domain"); } } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/PagedQueryTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/PagedQueryTests.java index 0c8ae36e6..bb66554c9 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/PagedQueryTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/PagedQueryTests.java @@ -25,7 +25,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; -import org.springframework.data.domain.*; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Slice; +import org.springframework.data.domain.Sort; import org.springframework.data.neo4j.examples.movies.domain.Cinema; import org.springframework.data.neo4j.examples.movies.domain.queryresult.CinemaQueryResult; import org.springframework.data.neo4j.examples.movies.domain.queryresult.CinemaQueryResultInterface; @@ -48,15 +52,13 @@ import org.springframework.transaction.support.TransactionTemplate; * @author Nicolas Mervaillie * @see DATAGRAPH-680 */ -@ContextConfiguration(classes = {PagedQueryTests.MoviesContext.class}) +@ContextConfiguration(classes = { PagedQueryTests.MoviesContext.class }) @RunWith(SpringJUnit4ClassRunner.class) public class PagedQueryTests extends MultiDriverTestClass { - @Autowired - PlatformTransactionManager platformTransactionManager; + @Autowired PlatformTransactionManager platformTransactionManager; - @Autowired - private CinemaRepository cinemaRepository; + @Autowired private CinemaRepository cinemaRepository; private TransactionTemplate transactionTemplate; @@ -67,7 +69,8 @@ public class PagedQueryTests extends MultiDriverTestClass { } public void setup() { - String[] names = new String[]{"Picturehouse", "Regal", "Ritzy", "Metro", "Inox", "PVR", "Cineplex", "Landmark", "Rainbow", "Movietime"}; + String[] names = new String[] { "Picturehouse", "Regal", "Ritzy", "Metro", "Inox", "PVR", "Cineplex", "Landmark", + "Rainbow", "Movietime" }; for (String name : names) { Cinema cinema = new Cinema(name); cinema.setLocation("London"); @@ -80,7 +83,6 @@ public class PagedQueryTests extends MultiDriverTestClass { getGraphDatabaseService().execute(cypher); } - @Test @Transactional public void shouldFindPagedCinemas() { @@ -129,18 +131,21 @@ public class PagedQueryTests extends MultiDriverTestClass { assertEquals(3, page.getNumberOfElements()); assertTrue(page.hasNext()); // FIXME : bug here - content is always null -// assertNotNull(page.getContent().get(0).getName()); - assertEquals(10, page.getTotalElements()); //this should not be relied on as incorrect as the total elements is an estimate + // assertNotNull(page.getContent().get(0).getName()); + assertEquals(10, page.getTotalElements()); // this should not be relied on as incorrect as the total elements is an + // estimate page = cinemaRepository.getPagedCinemaQueryResults(page.nextPageable()); assertEquals(3, page.getNumberOfElements()); assertTrue(page.hasNext()); - assertEquals(10, page.getTotalElements()); //this should not be relied on as incorrect as the total elements is an estimate + assertEquals(10, page.getTotalElements()); // this should not be relied on as incorrect as the total elements is an + // estimate page = cinemaRepository.getPagedCinemaQueryResults(page.nextPageable()); assertEquals(3, page.getNumberOfElements()); assertTrue(page.hasNext()); - assertEquals(10, page.getTotalElements()); //this should not be relied on as incorrect as the total elements is an estimate + assertEquals(10, page.getTotalElements()); // this should not be relied on as incorrect as the total elements is an + // estimate page = cinemaRepository.getPagedCinemaQueryResults(page.nextPageable()); assertEquals(1, page.getNumberOfElements()); @@ -159,7 +164,7 @@ public class PagedQueryTests extends MultiDriverTestClass { assertEquals(3, page.getNumberOfElements()); // FIXME : bug here - content is always null -// assertNotNull(page.getContent().get(0).getName()); + // assertNotNull(page.getContent().get(0).getName()); assertTrue(page.hasNext()); page = cinemaRepository.getSlicedCinemaQueryResults(page.nextPageable()); @@ -176,8 +181,7 @@ public class PagedQueryTests extends MultiDriverTestClass { } /** - * Repeats shouldFindPagedCinemas for query results - interfaces - * * @see DATAGRAPH-893 + * Repeats shouldFindPagedCinemas for query results - interfaces * @see DATAGRAPH-893 */ @Test @Transactional @@ -189,18 +193,21 @@ public class PagedQueryTests extends MultiDriverTestClass { assertEquals(3, page.getNumberOfElements()); assertTrue(page.hasNext()); // FIXME : bug here - content is always null -// assertNotNull(page.getContent().get(0).getName()); - assertEquals(10, page.getTotalElements()); //this should not be relied on as incorrect as the total elements is an estimate + // assertNotNull(page.getContent().get(0).getName()); + assertEquals(10, page.getTotalElements()); // this should not be relied on as incorrect as the total elements is an + // estimate page = cinemaRepository.getPagedCinemaQueryResultInterfaces(page.nextPageable()); assertEquals(3, page.getNumberOfElements()); assertTrue(page.hasNext()); - assertEquals(10, page.getTotalElements()); //this should not be relied on as incorrect as the total elements is an estimate + assertEquals(10, page.getTotalElements()); // this should not be relied on as incorrect as the total elements is an + // estimate page = cinemaRepository.getPagedCinemaQueryResultInterfaces(page.nextPageable()); assertEquals(3, page.getNumberOfElements()); assertTrue(page.hasNext()); - assertEquals(10, page.getTotalElements()); //this should not be relied on as incorrect as the total elements is an estimate + assertEquals(10, page.getTotalElements()); // this should not be relied on as incorrect as the total elements is an + // estimate page = cinemaRepository.getPagedCinemaQueryResultInterfaces(page.nextPageable()); assertEquals(1, page.getNumberOfElements()); @@ -214,13 +221,15 @@ public class PagedQueryTests extends MultiDriverTestClass { Pageable pageable = new PageRequest(0, 5); Page page = cinemaRepository.getPagedCinemasByCityWithPageCount("London", pageable); assertEquals(5, page.getNumberOfElements()); - assertEquals(10, page.getTotalElements()); //With a count query, the total elements should equal the number returned by the count query + assertEquals(10, page.getTotalElements()); // With a count query, the total elements should equal the number + // returned by the count query assertTrue(page.hasNext()); page = cinemaRepository.getPagedCinemasByCityWithPageCount("London", page.nextPageable()); assertEquals(5, page.getNumberOfElements()); - assertEquals(10, page.getTotalElements()); //With a count query, the total elements should equal the number returned by the count query - assertFalse(page.hasNext()); //with a count query, the next page calculation is correct + assertEquals(10, page.getTotalElements()); // With a count query, the total elements should equal the number + // returned by the count query + assertFalse(page.hasNext()); // with a count query, the next page calculation is correct } @Test @@ -260,7 +269,6 @@ public class PagedQueryTests extends MultiDriverTestClass { assertFalse(slice.hasNext()); } - /** * @see DATAGRAPH-887 */ @@ -301,21 +309,21 @@ public class PagedQueryTests extends MultiDriverTestClass { */ @Test public void shouldSortPageWhenNestedPropertyIsInvolved() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + - "CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + - "CREATE (m:Theatre {name:'Picturehouse', city:'London', capacity: 5000}) " + - "CREATE (u:User {name:'Michal'}) " + - "CREATE (u)-[:VISITED]->(r) " + - "CREATE (u)-[:VISITED]->(m)"); + executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + + "CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + + "CREATE (m:Theatre {name:'Picturehouse', city:'London', capacity: 5000}) " + + "CREATE (u:User {name:'Michal'}) " + "CREATE (u)-[:VISITED]->(r) " + "CREATE (u)-[:VISITED]->(m)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override public void doInTransactionWithoutResult(TransactionStatus status) { - Page page = cinemaRepository.findByLocationAndVisitedName("London", "Michal", new PageRequest(0, 1, Sort.Direction.DESC, "name")); + Page page = cinemaRepository.findByLocationAndVisitedName("London", "Michal", + new PageRequest(0, 1, Sort.Direction.DESC, "name")); assertEquals(1, page.getNumberOfElements()); assertEquals("Ritzy", page.getContent().get(0).getName()); - page = cinemaRepository.findByLocationAndVisitedName("London", "Michal", new PageRequest(1, 1, Sort.Direction.DESC, "name")); + page = cinemaRepository.findByLocationAndVisitedName("London", "Michal", + new PageRequest(1, 1, Sort.Direction.DESC, "name")); assertEquals(1, page.getNumberOfElements()); assertEquals("Picturehouse", page.getContent().get(0).getName()); } @@ -327,17 +335,16 @@ public class PagedQueryTests extends MultiDriverTestClass { */ @Test public void shouldSortPageByNestedPropertyIsInvolved() { - executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + - "CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + - "CREATE (m:Theatre {name:'Regal', city:'Bombay', capacity: 5000}) " + - "CREATE (u:User {name:'Michal'}) " + - "CREATE (u)-[:VISITED]->(r) " + - "CREATE (u)-[:VISITED]->(m)"); + executeUpdate("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + + "CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + + "CREATE (m:Theatre {name:'Regal', city:'Bombay', capacity: 5000}) " + "CREATE (u:User {name:'Michal'}) " + + "CREATE (u)-[:VISITED]->(r) " + "CREATE (u)-[:VISITED]->(m)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override public void doInTransactionWithoutResult(TransactionStatus status) { - Page page = cinemaRepository.findByVisitedName("Michal", new PageRequest(0, 1, Sort.Direction.ASC, "location")); + Page page = cinemaRepository.findByVisitedName("Michal", + new PageRequest(0, 1, Sort.Direction.ASC, "location")); assertEquals(1, page.getNumberOfElements()); assertEquals("Regal", page.getContent().get(0).getName()); @@ -413,7 +420,8 @@ public class PagedQueryTests extends MultiDriverTestClass { Page page = cinemaRepository.getPagedCinemas(pageable); assertEquals(4, page.getNumberOfElements()); assertTrue(page.hasNext()); - assertEquals(10, page.getTotalElements()); //this should not be relied on as incorrect as the total elements is an estimate + assertEquals(10, page.getTotalElements()); // this should not be relied on as incorrect as the total elements is an + // estimate assertEquals("Cineplex", page.getContent().get(0).getName()); assertEquals("Inox", page.getContent().get(1).getName()); assertEquals("Landmark", page.getContent().get(2).getName()); @@ -422,7 +430,8 @@ public class PagedQueryTests extends MultiDriverTestClass { page = cinemaRepository.getPagedCinemas(page.nextPageable()); assertEquals(4, page.getNumberOfElements()); assertTrue(page.hasNext()); - assertEquals(10, page.getTotalElements()); //this should not be relied on as incorrect as the total elements is an estimate + assertEquals(10, page.getTotalElements()); // this should not be relied on as incorrect as the total elements is an + // estimate assertEquals("Movietime", page.getContent().get(0).getName()); assertEquals("PVR", page.getContent().get(1).getName()); assertEquals("Picturehouse", page.getContent().get(2).getName()); @@ -431,7 +440,8 @@ public class PagedQueryTests extends MultiDriverTestClass { page = cinemaRepository.getPagedCinemas(page.nextPageable()); assertEquals(2, page.getNumberOfElements()); assertFalse(page.hasNext()); - assertEquals(10, page.getTotalElements()); //this should not be relied on as incorrect as the total elements is an estimate + assertEquals(10, page.getTotalElements()); // this should not be relied on as incorrect as the total elements is an + // estimate assertEquals("Regal", page.getContent().get(0).getName()); assertEquals("Ritzy", page.getContent().get(1).getName()); } @@ -491,7 +501,7 @@ public class PagedQueryTests extends MultiDriverTestClass { } @Configuration - @ComponentScan({"org.springframework.data.neo4j.examples.movies.service"}) + @ComponentScan({ "org.springframework.data.neo4j.examples.movies.service" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.movies.repo") @EnableTransactionManagement static class MoviesContext { @@ -503,7 +513,8 @@ public class PagedQueryTests extends MultiDriverTestClass { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.movies.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.movies.domain"); } } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/ProjectionTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/ProjectionTests.java index 5b8e7ab9c..5a5354ece 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/ProjectionTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/ProjectionTests.java @@ -43,29 +43,21 @@ import org.springframework.transaction.annotation.Transactional; /** * @author Nicolas Mervaillie */ -@ContextConfiguration(classes = {ProjectionTests.MoviesContext.class}) +@ContextConfiguration(classes = { ProjectionTests.MoviesContext.class }) @RunWith(SpringJUnit4ClassRunner.class) public class ProjectionTests extends MultiDriverTestClass { - @Autowired - private CinemaRepository cinemaRepository; + @Autowired private CinemaRepository cinemaRepository; @BeforeClass public static void setupData() { getGraphDatabaseService().execute("MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE r, n"); - getGraphDatabaseService().execute("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + - " CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + - " CREATE (u:User {name:'Michal'}) " + - " CREATE (u)-[:VISITED]->(r) CREATE (u)-[:VISITED]->(p)" + - " CREATE (m1:Movie {name:'San Andreas'}) " + - " CREATE (m2:Movie {name:'Pitch Perfect 2'})" + - " CREATE (p)-[:BLOCKBUSTER]->(m1)" + - " CREATE (p)-[:SHOWS]->(m1)" + - " CREATE (p)-[:SHOWS]->(m2)" + - " CREATE (r)-[:BLOCKBUSTER]->(m2)" + - " CREATE (r)-[:SHOWS]->(m1)" + - " CREATE (r)-[:SHOWS]->(m2)" + - " CREATE (u)-[:RATED {stars :3}]->(m1)"); + getGraphDatabaseService().execute("CREATE (p:Theatre {name:'Picturehouse', city:'London', capacity:5000}) " + + " CREATE (r:Theatre {name:'Ritzy', city:'London', capacity: 7500}) " + " CREATE (u:User {name:'Michal'}) " + + " CREATE (u)-[:VISITED]->(r) CREATE (u)-[:VISITED]->(p)" + " CREATE (m1:Movie {name:'San Andreas'}) " + + " CREATE (m2:Movie {name:'Pitch Perfect 2'})" + " CREATE (p)-[:BLOCKBUSTER]->(m1)" + + " CREATE (p)-[:SHOWS]->(m1)" + " CREATE (p)-[:SHOWS]->(m2)" + " CREATE (r)-[:BLOCKBUSTER]->(m2)" + + " CREATE (r)-[:SHOWS]->(m1)" + " CREATE (r)-[:SHOWS]->(m2)" + " CREATE (u)-[:RATED {stars :3}]->(m1)"); } @AfterClass @@ -106,7 +98,8 @@ public class ProjectionTests extends MultiDriverTestClass { assertThat(theatres).extracting("name").containsExactly("Ritzy", "Picturehouse"); } - @Test @Ignore("To be reactivated after DATAGRAPH-1022 has been fixed") + @Test + @Ignore("To be reactivated after DATAGRAPH-1022 has been fixed") @Transactional public void shouldFindCinemasWithoutUsersAndCustomDepth() { @@ -131,7 +124,7 @@ public class ProjectionTests extends MultiDriverTestClass { } @Configuration - @ComponentScan({"org.springframework.data.neo4j.examples.movies.service"}) + @ComponentScan({ "org.springframework.data.neo4j.examples.movies.service" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.movies.repo") @EnableTransactionManagement static class MoviesContext { @@ -143,7 +136,8 @@ public class ProjectionTests extends MultiDriverTestClass { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.movies.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.movies.domain"); } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/QueryIntegrationTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/QueryIntegrationTests.java index eb3b2e229..410f34edf 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/QueryIntegrationTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/QueryIntegrationTests.java @@ -16,7 +16,12 @@ import static org.junit.Assert.*; import java.math.BigDecimal; import java.math.BigInteger; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; import org.junit.Before; import org.junit.Test; @@ -31,7 +36,11 @@ import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.neo4j.examples.movies.domain.Rating; import org.springframework.data.neo4j.examples.movies.domain.TempMovie; import org.springframework.data.neo4j.examples.movies.domain.User; -import org.springframework.data.neo4j.examples.movies.domain.queryresult.*; +import org.springframework.data.neo4j.examples.movies.domain.queryresult.EntityWrappingQueryResult; +import org.springframework.data.neo4j.examples.movies.domain.queryresult.Gender; +import org.springframework.data.neo4j.examples.movies.domain.queryresult.RichUserQueryResult; +import org.springframework.data.neo4j.examples.movies.domain.queryresult.UserQueryResult; +import org.springframework.data.neo4j.examples.movies.domain.queryresult.UserQueryResultObject; import org.springframework.data.neo4j.examples.movies.repo.CinemaRepository; import org.springframework.data.neo4j.examples.movies.repo.UnmanagedUserPojo; import org.springframework.data.neo4j.examples.movies.repo.UserRepository; @@ -50,22 +59,18 @@ import org.springframework.transaction.support.TransactionTemplate; * @author Luanne Misquitta * @author Mark Angrish */ -@ContextConfiguration(classes = {QueryIntegrationTests.MoviesContext.class}) +@ContextConfiguration(classes = { QueryIntegrationTests.MoviesContext.class }) @RunWith(SpringJUnit4ClassRunner.class) public class QueryIntegrationTests extends MultiDriverTestClass { - @Autowired - PlatformTransactionManager platformTransactionManager; + @Autowired PlatformTransactionManager platformTransactionManager; - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; - @Autowired - private CinemaRepository cinemaRepository; + @Autowired private CinemaRepository cinemaRepository; private TransactionTemplate transactionTemplate; - @Before public void clearDatabase() { transactionTemplate = new TransactionTemplate(platformTransactionManager); @@ -78,17 +83,10 @@ public class QueryIntegrationTests extends MultiDriverTestClass { @Test public void shouldFindArbitraryGraph() { - executeUpdate( - "CREATE " + - "(dh:Movie {name:'Die Hard'}), " + - "(fe:Movie {name: 'The Fifth Element'}), " + - "(bw:User {name: 'Bruce Willis'}), " + - "(ar:User {name: 'Alan Rickman'}), " + - "(mj:User {name: 'Milla Jovovich'}), " + - "(mj)-[:ACTED_IN]->(fe), " + - "(ar)-[:ACTED_IN]->(dh), " + - "(bw)-[:ACTED_IN]->(dh), " + - "(bw)-[:ACTED_IN]->(fe)"); + executeUpdate("CREATE " + "(dh:Movie {name:'Die Hard'}), " + "(fe:Movie {name: 'The Fifth Element'}), " + + "(bw:User {name: 'Bruce Willis'}), " + "(ar:User {name: 'Alan Rickman'}), " + + "(mj:User {name: 'Milla Jovovich'}), " + "(mj)-[:ACTED_IN]->(fe), " + "(ar)-[:ACTED_IN]->(dh), " + + "(bw)-[:ACTED_IN]->(dh), " + "(bw)-[:ACTED_IN]->(fe)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -197,7 +195,8 @@ public class QueryIntegrationTests extends MultiDriverTestClass { */ @Test public void shouldFindUsersAndMapThemToConcreteQueryResultObjectCollection() { - executeUpdate("CREATE (g:User {name:'Gary', age:32}), (s:User {name:'Sheila', age:29}), (v:User {name:'Vince', age:66})"); + executeUpdate( + "CREATE (g:User {name:'Gary', age:32}), (s:User {name:'Sheila', age:29}), (v:User {name:'Vince', age:66})"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -238,7 +237,8 @@ public class QueryIntegrationTests extends MultiDriverTestClass { @Test public void shouldFindUsersAndMapThemToProxiedQueryResultInterface() { - executeUpdate("CREATE (:User {name:'Morne', age:30}), (:User {name:'Abraham', age:31}), (:User {name:'Virat', age:27})"); + executeUpdate( + "CREATE (:User {name:'Morne', age:30}), (:User {name:'Abraham', age:31}), (:User {name:'Virat', age:27})"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -253,8 +253,9 @@ public class QueryIntegrationTests extends MultiDriverTestClass { @Test public void shouldRetrieveUsersByGenderAndConvertToCorrectTypes() { - executeUpdate("CREATE (:User {name:'David Warner', gender:'MALE'}), (:User {name:'Shikhar Dhawan', gender:'MALE'}), " - + "(:User {name:'Sarah Taylor', gender:'FEMALE', account: '3456789', deposits:['12345.6','45678.9']})"); + executeUpdate( + "CREATE (:User {name:'David Warner', gender:'MALE'}), (:User {name:'Shikhar Dhawan', gender:'MALE'}), " + + "(:User {name:'Sarah Taylor', gender:'FEMALE', account: '3456789', deposits:['12345.6','45678.9']})"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -268,7 +269,8 @@ public class QueryIntegrationTests extends MultiDriverTestClass { assertEquals(Gender.FEMALE, userQueryResult.getUserGender()); assertEquals("Sarah Taylor", userQueryResult.getUserName()); assertEquals(BigInteger.valueOf(3456789), userQueryResult.getUserAccount()); - assertArrayEquals(new BigDecimal[]{BigDecimal.valueOf(12345.6), BigDecimal.valueOf(45678.9)}, userQueryResult.getUserDeposits()); + assertArrayEquals(new BigDecimal[] { BigDecimal.valueOf(12345.6), BigDecimal.valueOf(45678.9) }, + userQueryResult.getUserDeposits()); assertFalse(userIterator.hasNext()); } }); @@ -361,8 +363,7 @@ public class QueryIntegrationTests extends MultiDriverTestClass { public void doInTransactionWithoutResult(TransactionStatus status) { assertEquals("There should be some users in the database", 2, userRepository.findTotalUsers()); - Iterable expected = Arrays.asList(new UserQueryResult(null, 0), - new UserQueryResult(null, 0)); + Iterable expected = Arrays.asList(new UserQueryResult(null, 0), new UserQueryResult(null, 0)); Iterable queryResult = userRepository.retrieveAllUsersAndTheirAges(); assertNotNull("The query result shouldn't be null", queryResult); @@ -397,7 +398,8 @@ public class QueryIntegrationTests extends MultiDriverTestClass { */ @Test public void shouldMapNodeCollectionsIntoQueryResultObjects() { - executeUpdate("CREATE (d:User {name:'Daniela'}), (e:User {name:'Ethan'}), (f:User {name:'Finn'}), (d)-[:FRIEND_OF]->(e), (d)-[:FRIEND_OF]->(f)"); + executeUpdate( + "CREATE (d:User {name:'Daniela'}), (e:User {name:'Ethan'}), (f:User {name:'Finn'}), (d)-[:FRIEND_OF]->(e), (d)-[:FRIEND_OF]->(f)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -413,7 +415,8 @@ public class QueryIntegrationTests extends MultiDriverTestClass { } assertTrue(friends.contains("Ethan")); assertTrue(friends.contains("Finn")); - assertEquals(2, result.getUser().getFriends().size()); //we expect friends to be mapped since the relationships were returned + assertEquals(2, result.getUser().getFriends().size()); // we expect friends to be mapped since the relationships + // were returned } }); } @@ -423,7 +426,8 @@ public class QueryIntegrationTests extends MultiDriverTestClass { */ @Test public void shouldMapRECollectionsIntoQueryResultObjects() { - executeUpdate("CREATE (g:User {name:'Gary'}), (sw:Movie {name: 'Star Wars: The Force Awakens'}), (hob:Movie {name:'The Hobbit: An Unexpected Journey'}), (g)-[:RATED {stars : 5}]->(sw), (g)-[:RATED {stars: 4}]->(hob) "); + executeUpdate( + "CREATE (g:User {name:'Gary'}), (sw:Movie {name: 'Star Wars: The Force Awakens'}), (hob:Movie {name:'The Hobbit: An Unexpected Journey'}), (g)-[:RATED {stars : 5}]->(sw), (g)-[:RATED {stars: 4}]->(hob) "); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -458,7 +462,8 @@ public class QueryIntegrationTests extends MultiDriverTestClass { */ @Test public void shouldMapRelationshipCollectionsWithDepth0IntoQueryResultObjects() { - executeUpdate("CREATE (i:User {name:'Ingrid'}), (j:User {name:'Jake'}), (k:User {name:'Kate'}), (i)-[:FRIEND_OF]->(j), (i)-[:FRIEND_OF]->(k)"); + executeUpdate( + "CREATE (i:User {name:'Ingrid'}), (j:User {name:'Jake'}), (k:User {name:'Kate'}), (i)-[:FRIEND_OF]->(j), (i)-[:FRIEND_OF]->(k)"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -474,7 +479,8 @@ public class QueryIntegrationTests extends MultiDriverTestClass { } assertTrue(friends.contains("Kate")); assertTrue(friends.contains("Jake")); - assertEquals(0, result.getUser().getFriends().size()); //we do not expect friends to be mapped since the relationships were not returned + assertEquals(0, result.getUser().getFriends().size()); // we do not expect friends to be mapped since the + // relationships were not returned } }); } @@ -484,7 +490,8 @@ public class QueryIntegrationTests extends MultiDriverTestClass { */ @Test public void shouldReturnMultipleQueryResultObjects() { - executeUpdate("CREATE (g:User {name:'Gary'}), (h:User {name:'Harry'}), (sw:Movie {name: 'Star Wars: The Force Awakens'}), (hob:Movie {name:'The Hobbit: An Unexpected Journey'}), (g)-[:RATED {stars : 5}]->(sw), (g)-[:RATED {stars: 4}]->(hob), (h)-[:RATED {stars: 3}]->(hob) "); + executeUpdate( + "CREATE (g:User {name:'Gary'}), (h:User {name:'Harry'}), (sw:Movie {name: 'Star Wars: The Force Awakens'}), (hob:Movie {name:'The Hobbit: An Unexpected Journey'}), (g)-[:RATED {stars : 5}]->(sw), (g)-[:RATED {stars: 4}]->(hob), (h)-[:RATED {stars: 3}]->(hob) "); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -533,7 +540,8 @@ public class QueryIntegrationTests extends MultiDriverTestClass { */ @Test public void shouldMapEntitiesToProxiedQueryResultInterface() { - executeUpdate("CREATE (:User {name:'Morne', age:30}), (:User {name:'Abraham', age:31}), (:User {name:'Virat', age:27})"); + executeUpdate( + "CREATE (:User {name:'Morne', age:30}), (:User {name:'Abraham', age:31}), (:User {name:'Virat', age:27})"); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override @@ -565,7 +573,7 @@ public class QueryIntegrationTests extends MultiDriverTestClass { } @Configuration - @ComponentScan({"org.springframework.data.neo4j.examples.movies.service"}) + @ComponentScan({ "org.springframework.data.neo4j.examples.movies.service" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.movies.repo") @EnableTransactionManagement static class MoviesContext { @@ -577,7 +585,8 @@ public class QueryIntegrationTests extends MultiDriverTestClass { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.movies.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.movies.domain"); } } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/QueryReturnTypesTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/QueryReturnTypesTests.java index e2515987f..6e8294fb7 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/QueryReturnTypesTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/QueryReturnTypesTests.java @@ -44,22 +44,18 @@ import org.springframework.transaction.support.TransactionTemplate; * @author Mark Paluch * @author Jens Schauder */ -@ContextConfiguration(classes = {QueryReturnTypesTests.GalaxyContext.class}) +@ContextConfiguration(classes = { QueryReturnTypesTests.GalaxyContext.class }) @RunWith(SpringJUnit4ClassRunner.class) @Transactional public class QueryReturnTypesTests extends MultiDriverTestClass { - @Autowired - PlatformTransactionManager transactionManager; + @Autowired PlatformTransactionManager transactionManager; - @Autowired - TransactionTemplate transactionTemplate; + @Autowired TransactionTemplate transactionTemplate; - @Autowired - WorldRepository worldRepository; + @Autowired WorldRepository worldRepository; - @Autowired - Session session; + @Autowired Session session; @Before public void clearDatabase() { @@ -118,7 +114,7 @@ public class QueryReturnTypesTests extends MultiDriverTestClass { } @Configuration - @ComponentScan({"org.springframework.data.neo4j.examples.galaxy.service"}) + @ComponentScan({ "org.springframework.data.neo4j.examples.galaxy.service" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.galaxy.repo") @EnableTransactionManagement static class GalaxyContext { @@ -130,7 +126,8 @@ public class QueryReturnTypesTests extends MultiDriverTestClass { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.galaxy.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.galaxy.domain"); } @Bean diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/ProgrammaticRepositoryTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/ProgrammaticRepositoryTests.java index e82391f83..d9d62b6a2 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/ProgrammaticRepositoryTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/ProgrammaticRepositoryTests.java @@ -57,7 +57,8 @@ public class ProgrammaticRepositoryTests extends MultiDriverTestClass { @BeforeClass public static void oneTimeSetUp() { - sessionFactory = new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.repositories.domain"); + sessionFactory = new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.repositories.domain"); platformTransactionManager = new Neo4jTransactionManager(sessionFactory); transactionTemplate = new TransactionTemplate(platformTransactionManager); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/RepoScanningTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/RepoScanningTests.java index 0ad2d6690..6c44488d9 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/RepoScanningTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/RepoScanningTests.java @@ -13,7 +13,6 @@ package org.springframework.data.neo4j.repositories; -import static org.junit.Assert.assertEquals; import static org.neo4j.ogm.testutil.GraphTestUtils.*; import org.junit.Before; @@ -37,13 +36,11 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; * @author Michal Bachman * @author Mark Angrish */ -@ContextConfiguration(classes = {RepoScanningTests.PersistenceContextInTheSamePackage.class}) +@ContextConfiguration(classes = { RepoScanningTests.PersistenceContextInTheSamePackage.class }) @RunWith(SpringJUnit4ClassRunner.class) public class RepoScanningTests extends MultiDriverTestClass { - @Autowired - private UserRepository userRepository; - + @Autowired private UserRepository userRepository; @Before public void clearDatabase() { @@ -60,7 +57,7 @@ public class RepoScanningTests extends MultiDriverTestClass { } @Configuration - @EnableNeo4jRepositories //no package specified, that's the point of this test + @EnableNeo4jRepositories // no package specified, that's the point of this test @EnableTransactionManagement static class PersistenceContextInTheSamePackage { @@ -75,5 +72,4 @@ public class RepoScanningTests extends MultiDriverTestClass { } } - } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/RepositoryDefinitionTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/RepositoryDefinitionTests.java index 88f42f6ec..e60ec9197 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/RepositoryDefinitionTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/RepositoryDefinitionTests.java @@ -41,17 +41,15 @@ import org.springframework.transaction.support.TransactionTemplate; * @author Michal Bachman * @author Mark Angrish */ -@ContextConfiguration(classes = {RepositoryDefinitionTests.RepositoriesTestContext.class}) +@ContextConfiguration(classes = { RepositoryDefinitionTests.RepositoriesTestContext.class }) @RunWith(SpringJUnit4ClassRunner.class) public class RepositoryDefinitionTests extends MultiDriverTestClass { - @Autowired - PlatformTransactionManager platformTransactionManager; + @Autowired PlatformTransactionManager platformTransactionManager; private TransactionTemplate transactionTemplate; - @Autowired - private MovieRepository movieRepository; + @Autowired private MovieRepository movieRepository; @Before public void clearDatabase() { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/domain/Movie.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/domain/Movie.java index efa3628ac..34a1bed3d 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/domain/Movie.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/domain/Movie.java @@ -13,23 +13,21 @@ package org.springframework.data.neo4j.repositories.domain; - /** * @author Michal Bachman */ public class Movie { - private Long id; - private String title; + private Long id; + private String title; - public Movie() { - } + public Movie() {} - public Movie(String title) { - this.title = title; - } + public Movie(String title) { + this.title = title; + } - public String getTitle() { - return title; - } + public String getTitle() { + return title; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/domain/User.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/domain/User.java index fa40a0e96..8a0a22eb8 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/domain/User.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/domain/User.java @@ -22,37 +22,35 @@ import java.util.List; */ public class User { - private Long id; - private String name; + private Long id; + private String name; - private List friends = new ArrayList<>(); - public User() { - } + private List friends = new ArrayList<>(); - public Long getId() { - return this.id; - } + public User() {} - public User(String name) { - this.name = name; - } + public Long getId() { + return this.id; + } - public String getName() { - return name; - } + public User(String name) { + this.name = name; + } - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public List getFriends() { - return friends; - } - - public void setFriends(List friends) { - this.friends = friends; - } + public void setName(String name) { + this.name = name; + } + public List getFriends() { + return friends; + } + public void setFriends(List friends) { + this.friends = friends; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/repo/MovieRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/repo/MovieRepository.java index c819267e4..6d65ed3ca 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/repo/MovieRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/repo/MovieRepository.java @@ -22,7 +22,7 @@ import org.springframework.data.repository.RepositoryDefinition; @RepositoryDefinition(domainClass = Movie.class, idClass = Long.class) public interface MovieRepository { - S save(S entity); + S save(S entity); - Iterable findAll(); + Iterable findAll(); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/support/GraphRepositoryFactoryTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/support/GraphRepositoryFactoryTests.java index 08bf8858b..aa8d5cd65 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/support/GraphRepositoryFactoryTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/support/GraphRepositoryFactoryTests.java @@ -24,7 +24,6 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.neo4j.ogm.session.Session; -import org.neo4j.ogm.testutil.MultiDriverTestClass; import org.springframework.aop.framework.Advised; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.support.Neo4jRepositoryFactory; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/Contact.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/Contact.java index c945c510e..113f6f4a3 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/Contact.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/Contact.java @@ -12,11 +12,9 @@ import org.neo4j.ogm.annotation.NodeEntity; @NodeEntity public abstract class Contact { - @GraphId - protected Long id; + @GraphId protected Long id; - @Index(primary = true, unique = true) - private String uuid; + @Index(primary = true, unique = true) private String uuid; public Contact() { this.uuid = UUID.randomUUID().toString(); diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/Neo4jRepositoryTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/Neo4jRepositoryTests.java index 398e62eb2..6ed9d2234 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/Neo4jRepositoryTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/Neo4jRepositoryTests.java @@ -65,7 +65,7 @@ public class Neo4jRepositoryTests extends MultiDriverTestClass { assertThat(repository.existsById(entity.getId()), is(true)); assertThat(repository.count(), is(1L)); - Optional optional = repository.findById(entity.getId()); + Optional optional = repository.findById(entity.getId()); assertTrue(optional.isPresent()); optional.ifPresent(actual -> assertThat(actual, is(entity))); @@ -73,7 +73,6 @@ public class Neo4jRepositoryTests extends MultiDriverTestClass { assertThat(repository.count(), is(0L)); } - private interface SampleEntityRepository extends Neo4jRepository { } @@ -85,12 +84,13 @@ public class Neo4jRepositoryTests extends MultiDriverTestClass { @Bean public TransactionalRepositoryTests.DelegatingTransactionManager transactionManager() throws Exception { - return new TransactionalRepositoryTests.DelegatingTransactionManager(new Neo4jTransactionManager(sessionFactory())); + return new TransactionalRepositoryTests.DelegatingTransactionManager( + new Neo4jTransactionManager(sessionFactory())); } @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(),"org.springframework.data.neo4j.domain.sample"); + return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.domain.sample"); } } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/CdiExtensionTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/CdiExtensionTests.java index 9eb6b4fbe..49ea20baa 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/CdiExtensionTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/CdiExtensionTests.java @@ -16,7 +16,11 @@ package org.springframework.data.neo4j.repository.cdi; +import static org.hamcrest.CoreMatchers.*; +import static org.junit.Assert.*; + import java.util.Optional; + import javax.enterprise.inject.se.SeContainer; import javax.enterprise.inject.se.SeContainerInitializer; @@ -24,15 +28,8 @@ import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.neo4j.ogm.testutil.MultiDriverTestClass; - import org.springframework.data.neo4j.examples.friends.domain.Person; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; - /** * Integration tests for {@link org.springframework.data.neo4j.repository.cdi.Neo4jCdiRepositoryExtension}. * diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/CdiPersonRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/CdiPersonRepository.java index 7e243d94a..df1ac0ccb 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/CdiPersonRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/CdiPersonRepository.java @@ -28,9 +28,9 @@ import org.springframework.data.repository.Repository; */ public interface CdiPersonRepository extends Repository { - void deleteAll(); + void deleteAll(); - Person save(Person person); + Person save(Person person); - Optional findByLastName(String lastname); + Optional findByLastName(String lastname); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/Neo4jCdiProducer.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/Neo4jCdiProducer.java index 9eaebf0aa..9bab07e8a 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/Neo4jCdiProducer.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/Neo4jCdiProducer.java @@ -23,10 +23,8 @@ import javax.inject.Singleton; import org.neo4j.ogm.session.Session; import org.neo4j.ogm.session.SessionFactory; import org.neo4j.ogm.testutil.MultiDriverTestClass; - import org.springframework.data.neo4j.examples.friends.domain.Person; - /** * Simple component exposing a {@link org.neo4j.ogm.session.Session} as CDI bean. * @@ -38,7 +36,8 @@ class Neo4jCdiProducer { @Produces @Singleton SessionFactory createSessionFactorySession() { - return new SessionFactory(MultiDriverTestClass.getBaseConfiguration().build(), getClass().getPackage().getName(), Person.class.getPackage().getName()); + return new SessionFactory(MultiDriverTestClass.getBaseConfiguration().build(), getClass().getPackage().getName(), + Person.class.getPackage().getName()); } void close(@Disposes SessionFactory sessionFactory) { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/Neo4jRepositoryExtensionTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/Neo4jRepositoryExtensionTests.java index 085b0844b..1fe9c1e6c 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/Neo4jRepositoryExtensionTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/Neo4jRepositoryExtensionTests.java @@ -16,14 +16,15 @@ import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import static org.mockito.Mockito.*; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.ProcessBean; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.util.Collections; import java.util.Map; import java.util.Set; +import javax.enterprise.inject.spi.Bean; +import javax.enterprise.inject.spi.ProcessBean; + import org.junit.Before; import org.junit.Test; import org.neo4j.ogm.session.Session; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/OtherQualifier.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/OtherQualifier.java index 0b121dda6..c95e0f6f7 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/OtherQualifier.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/OtherQualifier.java @@ -16,19 +16,20 @@ package org.springframework.data.neo4j.repository.cdi; -import javax.inject.Qualifier; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import javax.inject.Qualifier; + /** * @author Mark Paluch * @see DATAGRAPH-879 */ @Qualifier @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER}) +@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER }) @interface OtherQualifier { } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/PersonDB.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/PersonDB.java index c50c7e973..5d9ff4ee4 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/PersonDB.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/PersonDB.java @@ -15,19 +15,20 @@ */ package org.springframework.data.neo4j.repository.cdi; -import javax.inject.Qualifier; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import javax.inject.Qualifier; + /** * @author Mark Paluch * @see DATAGRAPH-879 */ @Qualifier @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER}) +@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER }) @interface PersonDB { } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/RepositoryClient.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/RepositoryClient.java index 7c8bc0097..ce33b15b7 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/RepositoryClient.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/RepositoryClient.java @@ -24,14 +24,9 @@ import javax.inject.Inject; */ class RepositoryClient { - @Inject - CdiPersonRepository repository; + @Inject CdiPersonRepository repository; - @OtherQualifier - @PersonDB - @Inject - QualifiedPersonRepository qualifiedPersonRepository; + @OtherQualifier @PersonDB @Inject QualifiedPersonRepository qualifiedPersonRepository; - @Inject - SamplePersonRepository samplePersonRepository; + @Inject SamplePersonRepository samplePersonRepository; } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/SamplePersonRepositoryCustom.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/SamplePersonRepositoryCustom.java index 81e797ce9..d1596976f 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/SamplePersonRepositoryCustom.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/SamplePersonRepositoryCustom.java @@ -22,5 +22,5 @@ package org.springframework.data.neo4j.repository.cdi; */ interface SamplePersonRepositoryCustom { - int returnOne(); + int returnOne(); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/SamplePersonRepositoryImpl.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/SamplePersonRepositoryImpl.java index 1b712be5e..39a57c539 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/SamplePersonRepositoryImpl.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/cdi/SamplePersonRepositoryImpl.java @@ -22,8 +22,8 @@ package org.springframework.data.neo4j.repository.cdi; */ class SamplePersonRepositoryImpl implements SamplePersonRepositoryCustom { - @Override - public int returnOne() { - return 1; - } + @Override + public int returnOne() { + return 1; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/config/RepositoriesJavaConfigTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/config/RepositoriesJavaConfigTests.java index 0a8c81239..9497d6efd 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/config/RepositoriesJavaConfigTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/config/RepositoriesJavaConfigTests.java @@ -44,8 +44,7 @@ public class RepositoriesJavaConfigTests extends MultiDriverTestClass { @EnableNeo4jRepositories(basePackageClasses = UserRepository.class) static class Config { - @Autowired - ApplicationContext context; + @Autowired ApplicationContext context; @Bean public Repositories repositories() { @@ -54,17 +53,17 @@ public class RepositoriesJavaConfigTests extends MultiDriverTestClass { @Bean public TransactionalRepositoryTests.DelegatingTransactionManager transactionManager() throws Exception { - return new TransactionalRepositoryTests.DelegatingTransactionManager(new Neo4jTransactionManager(sessionFactory())); + return new TransactionalRepositoryTests.DelegatingTransactionManager( + new Neo4jTransactionManager(sessionFactory())); } @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(),"org.springframework.data.neo4j.domain.sample"); + return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.domain.sample"); } } - @Autowired - Repositories repositories; + @Autowired Repositories repositories; /** */ diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/GraphQueryExecutionTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/GraphQueryExecutionTests.java index 03bcb0ec3..dff779e5b 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/GraphQueryExecutionTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/GraphQueryExecutionTests.java @@ -14,10 +14,10 @@ package org.springframework.data.neo4j.repository.query; import static org.mockito.Matchers.any; +import static org.mockito.Mockito.*; import static org.mockito.Mockito.anyMap; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.eq; -import static org.mockito.Mockito.*; import java.lang.reflect.Method; import java.util.Collections; @@ -43,7 +43,8 @@ public class GraphQueryExecutionTests { @Mock private Session sessionMock; - private Method method = ReflectionUtils.findMethod(UserRepository.class, "findByFirstname", String.class, Pageable.class); + private Method method = ReflectionUtils.findMethod(UserRepository.class, "findByFirstname", String.class, + Pageable.class); private ProjectionFactory factory = new SpelAwareProxyProjectionFactory(); @Test @@ -52,8 +53,10 @@ public class GraphQueryExecutionTests { when(sessionMock.query(eq(User.class), anyString(), anyMap())).thenReturn(Collections. emptyList()); - GraphQueryMethod queryMethod = new GraphQueryMethod(method, new DefaultRepositoryMetadata(UserRepository.class), factory); - GraphParameterAccessor accessor = new GraphParametersParameterAccessor(queryMethod, new Object[]{"", new PageRequest(0,1)}); + GraphQueryMethod queryMethod = new GraphQueryMethod(method, new DefaultRepositoryMetadata(UserRepository.class), + factory); + GraphParameterAccessor accessor = new GraphParametersParameterAccessor(queryMethod, + new Object[] { "", new PageRequest(0, 1) }); GraphQueryExecution.PagedExecution execution = new GraphQueryExecution.PagedExecution(sessionMock, accessor); Query query = new Query("", "noop", new HashMap<>()); execution.execute(query, User.class); diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/sample/UserRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/sample/UserRepository.java index 069901780..83902e072 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/sample/UserRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/sample/UserRepository.java @@ -22,7 +22,6 @@ import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; import org.springframework.transaction.annotation.Transactional; - /** * Repository interface for {@code User}s. * @@ -32,14 +31,14 @@ import org.springframework.transaction.annotation.Transactional; */ public interface UserRepository extends Neo4jRepository { - /** - * Retrieve users by their lastname. The finder {@literal User.findByLastname} is declared in - * {@literal META-INF/orm.xml} . - * - * @param lastname - * @return all users with the given lastname - */ - List findByLastname(String lastname); + /** + * Retrieve users by their lastname. The finder {@literal User.findByLastname} is declared in + * {@literal META-INF/orm.xml} . + * + * @param lastname + * @return all users with the given lastname + */ + List findByLastname(String lastname); /** * Redeclaration of {@link CrudRepository#findOne(java.io.Serializable)} to change transaction configuration. @@ -48,29 +47,29 @@ public interface UserRepository extends Neo4jRepository { @Transactional Optional findById(Long primaryKey); - /** - * Redeclaration of {@link CrudRepository#delete(java.io.Serializable)}. to make sure the transaction configuration of - * the original method is considered if the redeclaration does not carry a {@link Transactional} annotation. - */ - @Override - void deleteById(Long id); + /** + * Redeclaration of {@link CrudRepository#delete(java.io.Serializable)}. to make sure the transaction configuration of + * the original method is considered if the redeclaration does not carry a {@link Transactional} annotation. + */ + @Override + void deleteById(Long id); - /** - * Retrieve users by their email address. The finder {@literal User.findByEmailAddress} is declared as annotation at - * {@code User}. - * - * @param emailAddress - * @return the user with the given email address - */ - User findByEmailAddress(String emailAddress); + /** + * Retrieve users by their email address. The finder {@literal User.findByEmailAddress} is declared as annotation at + * {@code User}. + * + * @param emailAddress + * @return the user with the given email address + */ + User findByEmailAddress(String emailAddress); - /** - * Retrieves a user by its username using the query annotated to the method. - * - * @param emailAddress - * @return - */ - @Query("MATCH (n:User{emailAddress:{emailAddress}}) return n") - @Transactional(readOnly = true) - User findByAnnotatedQuery(@Param("emailAddress") String emailAddress); + /** + * Retrieves a user by its username using the query annotated to the method. + * + * @param emailAddress + * @return + */ + @Query("MATCH (n:User{emailAddress:{emailAddress}}) return n") + @Transactional(readOnly = true) + User findByAnnotatedQuery(@Param("emailAddress") String emailAddress); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/support/DefaultTransactionDisablingIntegrationTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/support/DefaultTransactionDisablingIntegrationTests.java index cbf5460e9..55ef49b8f 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/support/DefaultTransactionDisablingIntegrationTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/support/DefaultTransactionDisablingIntegrationTests.java @@ -76,7 +76,7 @@ public class DefaultTransactionDisablingIntegrationTests extends MultiDriverTest public void persistingAnEntityShouldThrowExceptionDueToMissingTransaction() { exception.expect(InvalidDataAccessApiUsageException.class); - exception.expectCause(is(Matchers.instanceOf(IllegalStateException.class))); + exception.expectCause(is(Matchers. instanceOf(IllegalStateException.class))); repository.save(new User()); } @@ -88,7 +88,8 @@ public class DefaultTransactionDisablingIntegrationTests extends MultiDriverTest @Bean public TransactionalRepositoryTests.DelegatingTransactionManager transactionManager() throws Exception { - return new TransactionalRepositoryTests.DelegatingTransactionManager(new Neo4jTransactionManager(sessionFactory())); + return new TransactionalRepositoryTests.DelegatingTransactionManager( + new Neo4jTransactionManager(sessionFactory())); } @Bean diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactoryBeanTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactoryBeanTests.java index 07d33cc34..fa3d2e3d3 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactoryBeanTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/support/Neo4jRepositoryFactoryBeanTests.java @@ -15,18 +15,12 @@ package org.springframework.data.neo4j.repository.support; import static org.junit.Assert.*; import static org.mockito.Mockito.*; -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.neo4j.ogm.session.Session; - import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.data.mapping.context.MappingContext; @@ -41,11 +35,9 @@ public class Neo4jRepositoryFactoryBeanTests { Neo4jRepositoryFactoryBean factoryBean; - @Mock - Session session; + @Mock Session session; - @Mock - ListableBeanFactory beanFactory; + @Mock ListableBeanFactory beanFactory; @Mock MappingContext context; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/support/TransactionalRepositoryTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/support/TransactionalRepositoryTests.java index 1302e8c4e..cd6212517 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/support/TransactionalRepositoryTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/support/TransactionalRepositoryTests.java @@ -41,12 +41,11 @@ import org.springframework.transaction.support.TransactionTemplate; * @author Mark Angrish * @author Jens Schauder */ -@ContextConfiguration(classes = {TransactionalRepositoryTests.Config.class}) +@ContextConfiguration(classes = { TransactionalRepositoryTests.Config.class }) @RunWith(SpringJUnit4ClassRunner.class) public class TransactionalRepositoryTests extends MultiDriverTestClass { - @Autowired - TransactionTemplate transactionTemplate; + @Autowired TransactionTemplate transactionTemplate; @Autowired UserRepository repository; @Autowired DelegatingTransactionManager transactionManager; @@ -154,7 +153,7 @@ public class TransactionalRepositoryTests extends MultiDriverTestClass { static class Config { @Bean - public DelegatingTransactionManager transactionManager() { + public DelegatingTransactionManager transactionManager() { return new DelegatingTransactionManager(new Neo4jTransactionManager(sessionFactory())); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/TemplateApplicationEventTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/TemplateApplicationEventTests.java index 8230aa488..9f6fffb65 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/TemplateApplicationEventTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/TemplateApplicationEventTests.java @@ -44,71 +44,69 @@ import org.springframework.transaction.annotation.Transactional; @RunWith(SpringJUnit4ClassRunner.class) public class TemplateApplicationEventTests extends MultiDriverTestClass { - @Autowired - private Session session; + @Autowired private Session session; - @Autowired - private Neo4jModificationEventListener eventListener; + @Autowired private Neo4jModificationEventListener eventListener; - @Test - @Transactional - public void shouldCreateTemplateAndPublishAppropriateApplicationEventsOnSaveAndOnDelete() { - assertNotNull("The Neo4jTemplate wasn't autowired into this test", this.session); + @Test + @Transactional + public void shouldCreateTemplateAndPublishAppropriateApplicationEventsOnSaveAndOnDelete() { + assertNotNull("The Neo4jTemplate wasn't autowired into this test", this.session); - Actor entity = new Actor(); - entity.setName("John Abraham"); + Actor entity = new Actor(); + entity.setName("John Abraham"); - assertFalse(this.eventListener.receivedPreSaveEvent()); - assertFalse(this.eventListener.receivedPostSaveEvent()); - this.session.save(entity); - assertTrue(this.eventListener.receivedPreSaveEvent()); + assertFalse(this.eventListener.receivedPreSaveEvent()); + assertFalse(this.eventListener.receivedPostSaveEvent()); + this.session.save(entity); + assertTrue(this.eventListener.receivedPreSaveEvent()); - assertSame(entity, this.eventListener.getPreSaveEvent().getSource().getObject()); - assertTrue(this.eventListener.receivedPostSaveEvent()); - assertSame(entity, this.eventListener.getPostSaveEvent().getSource().getObject()); + assertSame(entity, this.eventListener.getPreSaveEvent().getSource().getObject()); + assertTrue(this.eventListener.receivedPostSaveEvent()); + assertSame(entity, this.eventListener.getPostSaveEvent().getSource().getObject()); - assertFalse(this.eventListener.receivedPreDeleteEvent()); - assertFalse(this.eventListener.receivedPostDeleteEvent()); - this.session.delete(entity); - assertTrue(this.eventListener.receivedPreDeleteEvent()); - assertSame(entity, this.eventListener.getPreDeleteEvent().getSource().getObject()); - assertTrue(this.eventListener.receivedPostDeleteEvent()); - assertSame(entity, this.eventListener.getPostDeleteEvent().getSource().getObject()); - } + assertFalse(this.eventListener.receivedPreDeleteEvent()); + assertFalse(this.eventListener.receivedPostDeleteEvent()); + this.session.delete(entity); + assertTrue(this.eventListener.receivedPreDeleteEvent()); + assertSame(entity, this.eventListener.getPreDeleteEvent().getSource().getObject()); + assertTrue(this.eventListener.receivedPostDeleteEvent()); + assertSame(entity, this.eventListener.getPostDeleteEvent().getSource().getObject()); + } - @Configuration - @EnableNeo4jRepositories - @EnableTransactionManagement - static class DataManipulationEventConfiguration { + @Configuration + @EnableNeo4jRepositories + @EnableTransactionManagement + static class DataManipulationEventConfiguration { - @Bean - public PlatformTransactionManager transactionManager() { - return new Neo4jTransactionManager(sessionFactory()); - } + @Bean + public PlatformTransactionManager transactionManager() { + return new Neo4jTransactionManager(sessionFactory()); + } - @Bean - public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.movies.domain") { + @Bean + public SessionFactory sessionFactory() { + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.movies.domain") { - @Override - public Session openSession() { - Session session = super.openSession(); - session.register(eventPublisher()); - return session; - } - }; - } + @Override + public Session openSession() { + Session session = super.openSession(); + session.register(eventPublisher()); + return session; + } + }; + } + @Bean + public EventPublisher eventPublisher() { + return new EventPublisher(); + } - @Bean - public EventPublisher eventPublisher() { - return new EventPublisher(); - } - - @Bean - public Neo4jModificationEventListener eventListener() { - return new Neo4jModificationEventListener(); - } - } + @Bean + public Neo4jModificationEventListener eventListener() { + return new Neo4jModificationEventListener(); + } + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/TestNeo4jEventListener.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/TestNeo4jEventListener.java index 43ec6eea6..b52b8a071 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/TestNeo4jEventListener.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/TestNeo4jEventListener.java @@ -17,9 +17,9 @@ import org.neo4j.ogm.session.event.Event; import org.springframework.data.neo4j.events.ModificationEvent; /** - * Spring {@code ApplicationListener} used to capture {@link Event}s that occur during a test run. - * Note that this is abstract because you're supposed to create an anonymous subclass to handle event type 'E' when you - * use it. This ensures Spring doesn't just send {@link Event}s to everything regardless. + * Spring {@code ApplicationListener} used to capture {@link Event}s that occur during a test run. Note that this is + * abstract because you're supposed to create an anonymous subclass to handle event type 'E' when you use it. This + * ensures Spring doesn't just send {@link Event}s to everything regardless. * * @author Adam George */ diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/BookmarkTransactionTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/BookmarkTransactionTests.java index 230e9a18f..57e887ca0 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/BookmarkTransactionTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/BookmarkTransactionTests.java @@ -13,6 +13,14 @@ package org.springframework.data.neo4j.transaction; +import static org.assertj.core.api.Assertions.*; +import static org.junit.Assume.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.*; + +import java.util.Collection; + import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -39,29 +47,18 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; -import java.util.Collection; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assume.assumeTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.spy; - /** * @author Frantisek Hartman */ -@ContextConfiguration(classes = {BookmarkTransactionTests.BookmarkConfiguration.class}) +@ContextConfiguration(classes = { BookmarkTransactionTests.BookmarkConfiguration.class }) @RunWith(SpringJUnit4ClassRunner.class) public class BookmarkTransactionTests extends MultiDriverTestClass { - @Autowired - private BookmarkManager bookmarkManager; + @Autowired private BookmarkManager bookmarkManager; - @Autowired - private Driver nativeDriver; + @Autowired private Driver nativeDriver; - @Autowired - private UserService userService; + @Autowired private UserService userService; @BeforeClass public static void setUpClass() throws Exception { @@ -95,7 +92,7 @@ public class BookmarkTransactionTests extends MultiDriverTestClass { @Configuration @EnableTransactionManagement - @ComponentScan(value = {"org.springframework.data.neo4j.examples.movies.service"}) + @ComponentScan(value = { "org.springframework.data.neo4j.examples.movies.service" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.movies.repo") @EnableBookmarkManagement static class BookmarkConfiguration { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/Neo4jTransactionManagerTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/Neo4jTransactionManagerTests.java index f6218b9e2..8680f9711 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/Neo4jTransactionManagerTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/Neo4jTransactionManagerTests.java @@ -37,7 +37,6 @@ public class Neo4jTransactionManagerTests { private TransactionTemplate tt; - @Before public void setUp() throws Exception { sf = mock(SessionFactory.class); @@ -88,22 +87,25 @@ public class Neo4jTransactionManagerTests { Result res = mock(Result.class); - given(session.query("some query string", Collections.emptyMap())).willReturn(res); + given(session.query("some query string", Collections. emptyMap())).willReturn(res); given(res.queryResults()).willReturn(list); - assertTrue("Transaction Synchronization already has a thread bound session", !TransactionSynchronizationManager.hasResource(sf)); + assertTrue("Transaction Synchronization already has a thread bound session", + !TransactionSynchronizationManager.hasResource(sf)); assertTrue("Synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); Object result = tt.execute((TransactionCallback) status -> { - assertTrue("Transaction Synchronization doesn't have a thread bound session", TransactionSynchronizationManager.hasResource(sf)); + assertTrue("Transaction Synchronization doesn't have a thread bound session", + TransactionSynchronizationManager.hasResource(sf)); assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly()); assertTrue(TransactionSynchronizationManager.isActualTransactionActive()); Session session = ((SessionHolder) TransactionSynchronizationManager.getResource(sf)).getSession(); - return session.query("some query string", Collections.emptyMap()).queryResults(); + return session.query("some query string", Collections. emptyMap()).queryResults(); }); assertTrue("Incorrect result list", result == list); - assertTrue("Transaction Synchronization still has a thread bound session", !TransactionSynchronizationManager.hasResource(sf)); + assertTrue("Transaction Synchronization still has a thread bound session", + !TransactionSynchronizationManager.hasResource(sf)); assertTrue("Synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); verify(session).beginTransaction(any(Transaction.Type.class), anyCollection()); @@ -114,12 +116,14 @@ public class Neo4jTransactionManagerTests { @Test public void testTransactionRollback() throws Exception { - assertTrue("Transaction Synchronization already has a thread bound session", !TransactionSynchronizationManager.hasResource(sf)); + assertTrue("Transaction Synchronization already has a thread bound session", + !TransactionSynchronizationManager.hasResource(sf)); assertTrue("Synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); try { tt.execute(status -> { - assertTrue("Transaction Synchronization doesn't have a thread bound session", TransactionSynchronizationManager.hasResource(sf)); + assertTrue("Transaction Synchronization doesn't have a thread bound session", + TransactionSynchronizationManager.hasResource(sf)); throw new RuntimeException("application exception"); }); fail("Should have thrown RuntimeException"); @@ -127,7 +131,8 @@ public class Neo4jTransactionManagerTests { // expected } - assertTrue("Transaction Synchronization still has a thread bound session", !TransactionSynchronizationManager.hasResource(sf)); + assertTrue("Transaction Synchronization still has a thread bound session", + !TransactionSynchronizationManager.hasResource(sf)); assertTrue("Synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); verify(session).beginTransaction(any(Transaction.Type.class), anyCollection()); @@ -138,15 +143,18 @@ public class Neo4jTransactionManagerTests { @Test public void testTransactionRollbackOnly() throws Exception { - assertTrue("Transaction Synchronization already has a thread bound session", !TransactionSynchronizationManager.hasResource(sf)); + assertTrue("Transaction Synchronization already has a thread bound session", + !TransactionSynchronizationManager.hasResource(sf)); tt.execute(status -> { - assertTrue("Transaction Synchronization doesn't have a thread bound session", TransactionSynchronizationManager.hasResource(sf)); + assertTrue("Transaction Synchronization doesn't have a thread bound session", + TransactionSynchronizationManager.hasResource(sf)); status.setRollbackOnly(); return null; }); - assertTrue("Transaction Synchronization still has a thread bound session", !TransactionSynchronizationManager.hasResource(sf)); + assertTrue("Transaction Synchronization still has a thread bound session", + !TransactionSynchronizationManager.hasResource(sf)); verify(session).beginTransaction(any(Transaction.Type.class), anyCollection()); verify(tx).rollback(); @@ -202,193 +210,193 @@ public class Neo4jTransactionManagerTests { verify(tx).close(); } -// -// @Test -// public void testTransactionCommitWithPreBound() throws Exception { -// tt.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE); -// final List l = new ArrayList(); -// l.add("test"); -// assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); -// TransactionSynchronizationManager.bindResource(sf, new SessionHolder(session)); -// assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); -// -// Object result = tt.execute(new TransactionCallback() { -// @Override -// public Object doInTransaction(TransactionStatus status) { -// assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); -// SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.getResource(sf); -// assertTrue("Has thread transaction", sessionHolder.getSession().getTransaction() != null); -// Session sess = ((SessionHolder) TransactionSynchronizationManager.getResource(sf)).getSession(); -// assertEquals(session, sess); -// return l; -// } -// }); -// assertTrue("Correct result list", result == l); -// -// assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); -// SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.getResource(sf); -// assertTrue("Hasn't thread transaction", sessionHolder.getSession().getTransaction() == null); -// TransactionSynchronizationManager.unbindResource(sf); -// assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); -// -// verify(tx).commit(); -// } -// -// @Test -// public void testTransactionRollbackWithPreBound() throws Exception { -// -// final Transaction tx1 = mock(Transaction.class); -// final Transaction tx2 = mock(Transaction.class); -// -// given(session.beginTransaction()).willReturn(tx1, tx2); -// -// tm.setSessionFactory(sf); -// assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); -// TransactionSynchronizationManager.bindResource(sf, new SessionHolder(session)); -// assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); -// -// try { -// tt.execute(new TransactionCallbackWithoutResult() { -// @Override -// public void doInTransactionWithoutResult(TransactionStatus status) { -// assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); -// SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.getResource(sf); -// assertEquals(tx1, sessionHolder.getSession().getTransaction()); -// tt.execute(new TransactionCallbackWithoutResult() { -// @Override -// public void doInTransactionWithoutResult(TransactionStatus status) { -// status.setRollbackOnly(); -// Session sess = ((SessionHolder) TransactionSynchronizationManager.getResource(sf)).getSession(); -// assertEquals(session, sess); -// } -// }); -// } -// }); -// fail("Should have thrown UnexpectedRollbackException"); -// } -// catch (UnexpectedRollbackException ex) { -// // expected -// } -// -// assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); -// SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.getResource(sf); -// assertTrue("Hasn't thread transaction", sessionHolder.getSession().getTransaction() == null); -// assertTrue("Not marked rollback-only", !sessionHolder.isRollbackOnly()); -// -// tt.execute(new TransactionCallbackWithoutResult() { -// @Override -// public void doInTransactionWithoutResult(TransactionStatus status) { -// assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); -// SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.getResource(sf); -// assertEquals(tx2, sessionHolder.getSession().getTransaction()); -// Session sess = ((SessionHolder) TransactionSynchronizationManager.getResource(sf)).getSession(); -// assertEquals(session, sess); -// } -// }); -// -// assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); -// assertTrue("Hasn't thread transaction", sessionHolder.getSession().getTransaction() == null); -// TransactionSynchronizationManager.unbindResource(sf); -// assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); -// -// verify(tx1).rollback(); -// verify(tx2).commit(); -// InOrder ordered = inOrder(session); -// ordered.verify(session).clear(); -// } -// -// -// @Test -// public void testTransactionCommitWithNonExistingDatabase() throws Exception { -// tm.setSessionFactory(sf); -// tm.afterPropertiesSet(); -// TransactionTemplate tt = new TransactionTemplate(tm); -// tt.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE); -// tt.setTimeout(10); -// assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf)); -// assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); -// -// try { -// tt.execute(new TransactionCallback() { -// @Override -// public Object doInTransaction(TransactionStatus status) { -// assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); -// Session session = ((SessionHolder) TransactionSynchronizationManager.getResource(sf)).getSession(); -// return session.query("from java.lang.Object", Collections.emptyMap()).queryResults(); -// } -// }); -// fail("Should have thrown CannotCreateTransactionException"); -// } -// catch (CannotCreateTransactionException ex) { -// // expected -// } -// -// assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf)); -// assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); -// } -// -// @Test -// public void testTransactionCommitWithPreBoundSessionAndNonExistingDatabase() throws Exception { -// tm.setSessionFactory(sf); -// tm.afterPropertiesSet(); -// tt.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE); -// tt.setTimeout(10); -// assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf)); -// assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); -// -// Session session = sf.openSession(); -// TransactionSynchronizationManager.bindResource(sf, new SessionHolder(session)); -// try { -// tt.execute(new TransactionCallback() { -// @Override -// public Object doInTransaction(TransactionStatus status) { -// assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); -// Session session = ((SessionHolder) TransactionSynchronizationManager.getResource(sf)).getSession(); -// return session.query("from java.lang.Object", Collections.emptyMap()).queryResults(); -// } -// }); -// fail("Should have thrown CannotCreateTransactionException"); -// } -// catch (CannotCreateTransactionException ex) { -// // expected -// SessionHolder holder = (SessionHolder) TransactionSynchronizationManager.getResource(sf); -// assertFalse(holder.isSynchronizedWithTransaction()); -// } -// finally { -// TransactionSynchronizationManager.unbindResource(sf); -// } -// -// assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf)); -// assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); -// } -// -// -// @Test -// public void testTransactionCommitWithRollbackException() { -// willThrow(new RuntimeException()).given(tx).commit(); -// -// final List l = new ArrayList<>(); -// l.add("test"); -// -// assertTrue(!TransactionSynchronizationManager.hasResource(sf)); -// assertTrue(!TransactionSynchronizationManager.isSynchronizationActive()); -// -// try { -// Object result = tt.execute(new TransactionCallback() { -// @Override -// public Object doInTransaction(TransactionStatus status) { -// assertTrue(TransactionSynchronizationManager.hasResource(sf)); -// return l; -// } -// }); -// assertSame(l, result); -// } catch (TransactionSystemException tse) { -// // expected -// assertTrue(tse.getCause() instanceof RuntimeException); -// } -// -// assertTrue(!TransactionSynchronizationManager.hasResource(sf)); -// assertTrue(!TransactionSynchronizationManager.isSynchronizationActive()); -// } -// + // + // @Test + // public void testTransactionCommitWithPreBound() throws Exception { + // tt.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE); + // final List l = new ArrayList(); + // l.add("test"); + // assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); + // TransactionSynchronizationManager.bindResource(sf, new SessionHolder(session)); + // assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); + // + // Object result = tt.execute(new TransactionCallback() { + // @Override + // public Object doInTransaction(TransactionStatus status) { + // assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); + // SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.getResource(sf); + // assertTrue("Has thread transaction", sessionHolder.getSession().getTransaction() != null); + // Session sess = ((SessionHolder) TransactionSynchronizationManager.getResource(sf)).getSession(); + // assertEquals(session, sess); + // return l; + // } + // }); + // assertTrue("Correct result list", result == l); + // + // assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); + // SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.getResource(sf); + // assertTrue("Hasn't thread transaction", sessionHolder.getSession().getTransaction() == null); + // TransactionSynchronizationManager.unbindResource(sf); + // assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); + // + // verify(tx).commit(); + // } + // + // @Test + // public void testTransactionRollbackWithPreBound() throws Exception { + // + // final Transaction tx1 = mock(Transaction.class); + // final Transaction tx2 = mock(Transaction.class); + // + // given(session.beginTransaction()).willReturn(tx1, tx2); + // + // tm.setSessionFactory(sf); + // assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); + // TransactionSynchronizationManager.bindResource(sf, new SessionHolder(session)); + // assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); + // + // try { + // tt.execute(new TransactionCallbackWithoutResult() { + // @Override + // public void doInTransactionWithoutResult(TransactionStatus status) { + // assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); + // SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.getResource(sf); + // assertEquals(tx1, sessionHolder.getSession().getTransaction()); + // tt.execute(new TransactionCallbackWithoutResult() { + // @Override + // public void doInTransactionWithoutResult(TransactionStatus status) { + // status.setRollbackOnly(); + // Session sess = ((SessionHolder) TransactionSynchronizationManager.getResource(sf)).getSession(); + // assertEquals(session, sess); + // } + // }); + // } + // }); + // fail("Should have thrown UnexpectedRollbackException"); + // } + // catch (UnexpectedRollbackException ex) { + // // expected + // } + // + // assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); + // SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.getResource(sf); + // assertTrue("Hasn't thread transaction", sessionHolder.getSession().getTransaction() == null); + // assertTrue("Not marked rollback-only", !sessionHolder.isRollbackOnly()); + // + // tt.execute(new TransactionCallbackWithoutResult() { + // @Override + // public void doInTransactionWithoutResult(TransactionStatus status) { + // assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); + // SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.getResource(sf); + // assertEquals(tx2, sessionHolder.getSession().getTransaction()); + // Session sess = ((SessionHolder) TransactionSynchronizationManager.getResource(sf)).getSession(); + // assertEquals(session, sess); + // } + // }); + // + // assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); + // assertTrue("Hasn't thread transaction", sessionHolder.getSession().getTransaction() == null); + // TransactionSynchronizationManager.unbindResource(sf); + // assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); + // + // verify(tx1).rollback(); + // verify(tx2).commit(); + // InOrder ordered = inOrder(session); + // ordered.verify(session).clear(); + // } + // + // + // @Test + // public void testTransactionCommitWithNonExistingDatabase() throws Exception { + // tm.setSessionFactory(sf); + // tm.afterPropertiesSet(); + // TransactionTemplate tt = new TransactionTemplate(tm); + // tt.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE); + // tt.setTimeout(10); + // assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf)); + // assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); + // + // try { + // tt.execute(new TransactionCallback() { + // @Override + // public Object doInTransaction(TransactionStatus status) { + // assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); + // Session session = ((SessionHolder) TransactionSynchronizationManager.getResource(sf)).getSession(); + // return session.query("from java.lang.Object", Collections.emptyMap()).queryResults(); + // } + // }); + // fail("Should have thrown CannotCreateTransactionException"); + // } + // catch (CannotCreateTransactionException ex) { + // // expected + // } + // + // assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf)); + // assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); + // } + // + // @Test + // public void testTransactionCommitWithPreBoundSessionAndNonExistingDatabase() throws Exception { + // tm.setSessionFactory(sf); + // tm.afterPropertiesSet(); + // tt.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE); + // tt.setTimeout(10); + // assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf)); + // assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); + // + // Session session = sf.openSession(); + // TransactionSynchronizationManager.bindResource(sf, new SessionHolder(session)); + // try { + // tt.execute(new TransactionCallback() { + // @Override + // public Object doInTransaction(TransactionStatus status) { + // assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf)); + // Session session = ((SessionHolder) TransactionSynchronizationManager.getResource(sf)).getSession(); + // return session.query("from java.lang.Object", Collections.emptyMap()).queryResults(); + // } + // }); + // fail("Should have thrown CannotCreateTransactionException"); + // } + // catch (CannotCreateTransactionException ex) { + // // expected + // SessionHolder holder = (SessionHolder) TransactionSynchronizationManager.getResource(sf); + // assertFalse(holder.isSynchronizedWithTransaction()); + // } + // finally { + // TransactionSynchronizationManager.unbindResource(sf); + // } + // + // assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf)); + // assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive()); + // } + // + // + // @Test + // public void testTransactionCommitWithRollbackException() { + // willThrow(new RuntimeException()).given(tx).commit(); + // + // final List l = new ArrayList<>(); + // l.add("test"); + // + // assertTrue(!TransactionSynchronizationManager.hasResource(sf)); + // assertTrue(!TransactionSynchronizationManager.isSynchronizationActive()); + // + // try { + // Object result = tt.execute(new TransactionCallback() { + // @Override + // public Object doInTransaction(TransactionStatus status) { + // assertTrue(TransactionSynchronizationManager.hasResource(sf)); + // return l; + // } + // }); + // assertSame(l, result); + // } catch (TransactionSystemException tse) { + // // expected + // assertTrue(tse.getCause() instanceof RuntimeException); + // } + // + // assertTrue(!TransactionSynchronizationManager.hasResource(sf)); + // assertTrue(!TransactionSynchronizationManager.isSynchronizationActive()); + // } + // } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/SessionFactoryUtilsTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/SessionFactoryUtilsTests.java index 457280dad..d013b5bf1 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/SessionFactoryUtilsTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/SessionFactoryUtilsTests.java @@ -47,7 +47,8 @@ public class SessionFactoryUtilsTests { @Test public void translateToDataIntegrityException() { - CypherException ce = new CypherException("Cypher Exception caused by:", "Neo.ClientError.Schema.ConstraintValidationFailed", "The reason"); + CypherException ce = new CypherException("Cypher Exception caused by:", + "Neo.ClientError.Schema.ConstraintValidationFailed", "The reason"); DataAccessException translatedException = SessionFactoryUtils.convertOgmAccessException(ce); expectExceptionWithCauseMessage(translatedException, DataIntegrityViolationException.class, null); } @@ -69,14 +70,13 @@ public class SessionFactoryUtilsTests { assertThat(SessionFactoryUtils.convertOgmAccessException(exception), is(nullValue())); } - private static void expectExceptionWithCauseMessage(NestedRuntimeException e, - Class type) { + Class type) { expectExceptionWithCauseMessage(e, type, null); } private static void expectExceptionWithCauseMessage(NestedRuntimeException e, - Class type, String message) { + Class type, String message) { assertThat(e, is(instanceOf(type))); diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/SharedSessionCreatorTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/SharedSessionCreatorTests.java index 640dd0c34..5b5f404f9 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/SharedSessionCreatorTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/SharedSessionCreatorTests.java @@ -28,7 +28,6 @@ import org.neo4j.ogm.session.SessionFactory; */ public class SharedSessionCreatorTests { - @Test public void proxyingWorksIfInfoReturnsNullSessionInterface() { SessionFactory sessionFactory = mock(SessionFactory.class); diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/TransactionalEventListenerTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/TransactionalEventListenerTests.java index f880bf850..6417918c3 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/TransactionalEventListenerTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transaction/TransactionalEventListenerTests.java @@ -7,7 +7,11 @@ import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; import org.junit.Before; import org.junit.Rule; @@ -27,14 +31,20 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.event.TransactionalEventListener; import org.springframework.transaction.event.TransactionalEventListenerFactory; -import org.springframework.transaction.support.*; +import org.springframework.transaction.support.AbstractPlatformTransactionManager; +import org.springframework.transaction.support.DefaultTransactionStatus; +import org.springframework.transaction.support.TransactionCallback; +import org.springframework.transaction.support.TransactionSynchronizationAdapter; +import org.springframework.transaction.support.TransactionSynchronizationManager; +import org.springframework.transaction.support.TransactionTemplate; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; /** - * These tests are copied from - * the spring framework transactional event listener tests - * and modified to work with a version of the Neo4jTransactionManager. + * These tests are copied from the + * spring framework transactional event listener tests and modified to work with a version of the + * Neo4jTransactionManager. * * @author Mark Angrish * @see DATAGRAPH-883 @@ -47,9 +57,7 @@ public class TransactionalEventListenerTests { private TransactionTemplate transactionTemplate = new TransactionTemplate(new CallCountingTransactionManager()); - @Rule - public final ExpectedException thrown = ExpectedException.none(); - + @Rule public final ExpectedException thrown = ExpectedException.none(); @Before public void closeContext() { @@ -58,7 +66,6 @@ public class TransactionalEventListenerTests { } } - @Test public void immediately() { load(ImmediateTestListener.class); @@ -228,8 +235,7 @@ public class TransactionalEventListenerTests { @Test public void noTransaction() { - load(BeforeCommitTestListener.class, AfterCompletionTestListener.class, - AfterCompletionExplicitTestListener.class); + load(BeforeCommitTestListener.class, AfterCompletionTestListener.class, AfterCompletionExplicitTestListener.class); this.context.publishEvent("test"); getEventCollector().assertTotalEventsCount(0); } @@ -288,7 +294,6 @@ public class TransactionalEventListenerTests { getEventCollector().assertNoEventReceived(); } - protected EventCollector getEventCollector() { return eventCollector; } @@ -309,7 +314,6 @@ public class TransactionalEventListenerTests { this.eventCollector = this.context.getBean(EventCollector.class); } - @Configuration static class BasicConfiguration { @@ -334,7 +338,6 @@ public class TransactionalEventListenerTests { } } - static class EventCollector { public static final String IMMEDIATELY = "IMMEDIATELY"; @@ -347,7 +350,7 @@ public class TransactionalEventListenerTests { public static final String AFTER_ROLLBACK = "AFTER_ROLLBACK"; - public static final String[] ALL_PHASES = {IMMEDIATELY, BEFORE_COMMIT, AFTER_COMMIT, AFTER_ROLLBACK}; + public static final String[] ALL_PHASES = { IMMEDIATELY, BEFORE_COMMIT, AFTER_COMMIT, AFTER_ROLLBACK }; private final MultiValueMap events = new LinkedMultiValueMap<>(); @@ -357,9 +360,7 @@ public class TransactionalEventListenerTests { public List getEvents(String phase) { List v; - return (((v = events.get(phase)) != null) || events.containsKey(phase)) - ? v - : Collections.emptyList(); + return (((v = events.get(phase)) != null) || events.containsKey(phase)) ? v : Collections.emptyList(); } public void assertNoEventReceived(String... phases) { @@ -368,8 +369,8 @@ public class TransactionalEventListenerTests { } for (String phase : phases) { List eventsForPhase = getEvents(phase); - assertEquals("Expected no events for phase '" + phase + "' " + - "but got " + eventsForPhase + ":", 0, eventsForPhase.size()); + assertEquals("Expected no events for phase '" + phase + "' " + "but got " + eventsForPhase + ":", 0, + eventsForPhase.size()); } } @@ -386,18 +387,15 @@ public class TransactionalEventListenerTests { for (Map.Entry> entry : this.events.entrySet()) { size += entry.getValue().size(); } - assertEquals("Wrong number of total events (" + this.events.size() + ") " + - "registered phase(s)", number, size); + assertEquals("Wrong number of total events (" + this.events.size() + ") " + "registered phase(s)", number, size); } } - static abstract class BaseTransactionalTestListener { static final String FAIL_MSG = "FAIL"; - @Autowired - private EventCollector eventCollector; + @Autowired private EventCollector eventCollector; public void handleEvent(String phase, String data) { this.eventCollector.addEvent(phase, data); @@ -407,7 +405,6 @@ public class TransactionalEventListenerTests { } } - @Component static class ImmediateTestListener extends BaseTransactionalTestListener { @@ -417,7 +414,6 @@ public class TransactionalEventListenerTests { } } - @Component static class AfterCompletionTestListener extends BaseTransactionalTestListener { @@ -427,7 +423,6 @@ public class TransactionalEventListenerTests { } } - @Component static class AfterCompletionExplicitTestListener extends BaseTransactionalTestListener { @@ -442,7 +437,6 @@ public class TransactionalEventListenerTests { } } - @Transactional @Component static interface TransactionalComponentTestListenerInterface { @@ -452,9 +446,8 @@ public class TransactionalEventListenerTests { void handleAfterCommit(String data); } - - static class TransactionalComponentTestListener extends BaseTransactionalTestListener implements - TransactionalComponentTestListenerInterface { + static class TransactionalComponentTestListener extends BaseTransactionalTestListener + implements TransactionalComponentTestListenerInterface { @Override public void handleAfterCommit(String data) { @@ -462,7 +455,6 @@ public class TransactionalEventListenerTests { } } - @Component static class BeforeCommitTestListener extends BaseTransactionalTestListener { @@ -473,7 +465,6 @@ public class TransactionalEventListenerTests { } } - @Component static class FallbackExecutionTestListener extends BaseTransactionalTestListener { @@ -498,7 +489,6 @@ public class TransactionalEventListenerTests { } } - @TransactionalEventListener(phase = AFTER_COMMIT, condition = "!'SKIP'.equals(#p0)") @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @@ -506,7 +496,6 @@ public class TransactionalEventListenerTests { } - @Component static class AfterCommitMetaAnnotationTestListener extends BaseTransactionalTestListener { @@ -516,7 +505,6 @@ public class TransactionalEventListenerTests { } } - static class EventTransactionSynchronization extends TransactionSynchronizationAdapter { private final int order; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/ExtendedTransactionsTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/ExtendedTransactionsTests.java index 4aa65ebb5..3cc21a0fb 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/ExtendedTransactionsTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/ExtendedTransactionsTests.java @@ -43,25 +43,21 @@ import org.springframework.transaction.annotation.Transactional; * @see http://stackoverflow.com/questions/17224887/java-spring-transactional-method-not-rolling-back-as-expected * @see DATAGRAPH-602 */ -@ContextConfiguration(classes = {ExtendedTransactionsTests.ApplicationConfig.class}) +@ContextConfiguration(classes = { ExtendedTransactionsTests.ApplicationConfig.class }) @RunWith(SpringJUnit4ClassRunner.class) public class ExtendedTransactionsTests extends MultiDriverTestClass { - @Autowired - ServiceA serviceA; + @Autowired ServiceA serviceA; - @Autowired - ServiceB serviceB; + @Autowired ServiceB serviceB; - @Autowired - WrapperService wrapperService; + @Autowired WrapperService wrapperService; @Before public void clearDatabase() { getGraphDatabaseService().execute("MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE r, n"); } - @Test public void shouldRollbackSuccessThenFail() { @@ -146,13 +142,13 @@ public class ExtendedTransactionsTests extends MultiDriverTestClass { static class ApplicationConfig { @Bean - public PlatformTransactionManager transactionManager() { + public PlatformTransactionManager transactionManager() { return new Neo4jTransactionManager(sessionFactory()); } @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(),"org.springframework.data.neo4j.transactions.domain"); + return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.transactions.domain"); } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/TransactionIntegrationTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/TransactionIntegrationTests.java index 886b6f89c..bbed7f010 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/TransactionIntegrationTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/TransactionIntegrationTests.java @@ -38,15 +38,13 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; /** * @author Michal Bachman */ -@ContextConfiguration(classes = {TransactionIntegrationTests.MoviesContext.class}) +@ContextConfiguration(classes = { TransactionIntegrationTests.MoviesContext.class }) @RunWith(SpringJUnit4ClassRunner.class) public class TransactionIntegrationTests extends MultiDriverTestClass { - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; - @Autowired - private UserService userService; + @Autowired private UserService userService; private TransactionEventHandler.Adapter handler; @@ -89,7 +87,7 @@ public class TransactionIntegrationTests extends MultiDriverTestClass { } @Configuration - @ComponentScan({"org.springframework.data.neo4j.examples.movies.service"}) + @ComponentScan({ "org.springframework.data.neo4j.examples.movies.service" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.movies.repo") @EnableTransactionManagement static class MoviesContext { @@ -101,7 +99,8 @@ public class TransactionIntegrationTests extends MultiDriverTestClass { @Bean public SessionFactory sessionFactory() { - return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.movies.domain"); + return new SessionFactory(getBaseConfiguration().build(), + "org.springframework.data.neo4j.examples.movies.domain"); } } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/TransactionRollbackTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/TransactionRollbackTests.java index 8740e9ce5..a54d7fff6 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/TransactionRollbackTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/TransactionRollbackTests.java @@ -45,21 +45,17 @@ import org.springframework.transaction.support.TransactionTemplate; * @author Nicolas Mervaillie * @see DATAGRAPH-967 DATAGRAPH-997 DATAGRAPH-995 DATAGRAPH-989 DATAGRAPH-952 */ -@ContextConfiguration(classes = {TransactionRollbackTests.MoviesContext.class}) +@ContextConfiguration(classes = { TransactionRollbackTests.MoviesContext.class }) @RunWith(SpringJUnit4ClassRunner.class) public class TransactionRollbackTests extends MultiDriverTestClass { - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; - @Autowired - private UserService userService; + @Autowired private UserService userService; - @Autowired - private Session session; + @Autowired private Session session; - @Autowired - private PlatformTransactionManager platformTransactionManager; + @Autowired private PlatformTransactionManager platformTransactionManager; private TransactionTemplate transactionTemplate; @@ -78,7 +74,7 @@ public class TransactionRollbackTests extends MultiDriverTestClass { public void queryErrorShouldRollbackAndThrowDataAccessException() { try { - transactionTemplate.execute( (TransactionStatus tx) -> { + transactionTemplate.execute((TransactionStatus tx) -> { User user = new User("foo"); userRepository.save(user); try { @@ -104,7 +100,7 @@ public class TransactionRollbackTests extends MultiDriverTestClass { @Ignore("When an error occurs when doing a request, Neo rollbacks. See https://github.com/neo4j/neo4j/issues/10098") public void catchedExceptionShouldNotRollback() { - transactionTemplate.execute( (TransactionStatus tx) -> { + transactionTemplate.execute((TransactionStatus tx) -> { userRepository.save(new User("foo")); try { userRepository.invalidQuery(); @@ -122,7 +118,7 @@ public class TransactionRollbackTests extends MultiDriverTestClass { } @Configuration - @ComponentScan({"org.springframework.data.neo4j.examples.movies.service"}) + @ComponentScan({ "org.springframework.data.neo4j.examples.movies.service" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.examples.movies.repo") @EnableTransactionManagement static class MoviesContext { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/domain/User.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/domain/User.java index cedcd21dc..946a35581 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/domain/User.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/domain/User.java @@ -20,37 +20,34 @@ import org.neo4j.ogm.annotation.Transient; */ public class User { - private Long id; - private String name; - @Transient - private String species; + private Long id; + private String name; + @Transient private String species; - public User() { - } + public User() {} - public Long id() { - return this.id; - } + public Long id() { + return this.id; + } - public User(String name) { - this.name = name; - } + public User(String name) { + this.name = name; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } + public String getSpecies() { + return species; + } - public String getSpecies() { - return species; - } - - public void setSpecies(String species) { - this.species = species; - } + public void setSpecies(String species) { + this.species = species; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/repo/UserRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/repo/UserRepository.java index 399863463..52832735e 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/repo/UserRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/repo/UserRepository.java @@ -25,5 +25,5 @@ import org.springframework.stereotype.Repository; @Repository public interface UserRepository extends Neo4jRepository { - Collection findUserByName(String name); + Collection findUserByName(String name); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/BusinessService.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/BusinessService.java index 8b406b956..7b3e3b49b 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/BusinessService.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/BusinessService.java @@ -28,31 +28,30 @@ import org.springframework.transaction.annotation.Transactional; @Component public class BusinessService { - @Autowired - private Session session; + @Autowired private Session session; - @Transactional - public void successMethodInTransaction() { - insert(); - } + @Transactional + public void successMethodInTransaction() { + insert(); + } - @Transactional // throws unchecked exception - public void failMethodInTransaction() { - insert(); - throw new RuntimeException("Deliberately throwing exception"); - } + @Transactional // throws unchecked exception + public void failMethodInTransaction() { + insert(); + throw new RuntimeException("Deliberately throwing exception"); + } - // transactional only from service wrapper, throws checked exception - public void throwsException() throws Exception { - insert(); - throw new Exception("Deliberately throwing exception"); - } + // transactional only from service wrapper, throws checked exception + public void throwsException() throws Exception { + insert(); + throw new Exception("Deliberately throwing exception"); + } - public void insert() { - session.query("CREATE (node {name: 'n'})", Collections.EMPTY_MAP); - } + public void insert() { + session.query("CREATE (node {name: 'n'})", Collections.EMPTY_MAP); + } - public Iterable> fetch() { - return session.query("MATCH (n) RETURN n.name", new HashMap()); - } + public Iterable> fetch() { + return session.query("MATCH (n) RETURN n.name", new HashMap()); + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/ServiceA.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/ServiceA.java index 930d9d74a..f6289373e 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/ServiceA.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/ServiceA.java @@ -17,7 +17,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.neo4j.transactions.domain.User; import org.springframework.data.neo4j.transactions.repo.UserRepository; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; /** @@ -26,19 +25,17 @@ import org.springframework.transaction.annotation.Transactional; @Component public class ServiceA { - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; - @Autowired - private ServiceB serviceB; + @Autowired private ServiceB serviceB; - @Transactional(rollbackFor = Exception.class) - public void run() throws Exception { - saveBilbo(); - serviceB.update(); - } + @Transactional(rollbackFor = Exception.class) + public void run() throws Exception { + saveBilbo(); + serviceB.update(); + } - public User saveBilbo() { - return userRepository.save(new User("Bilbo baggins")); - } + public User saveBilbo() { + return userRepository.save(new User("Bilbo baggins")); + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/ServiceB.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/ServiceB.java index a077d83c4..c43a0e4ca 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/ServiceB.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/ServiceB.java @@ -19,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.neo4j.transactions.domain.User; import org.springframework.data.neo4j.transactions.repo.UserRepository; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; /** @@ -28,20 +27,19 @@ import org.springframework.transaction.annotation.Transactional; @Component public class ServiceB { - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; - @Transactional(rollbackFor = Exception.class) - public void update() throws Exception { - getBilbo(); - throw new Exception(); - } + @Transactional(rollbackFor = Exception.class) + public void update() throws Exception { + getBilbo(); + throw new Exception(); + } - public User getBilbo() { - Collection userList = userRepository.findUserByName("Bilbo Baggins"); - if (userList.iterator().hasNext()) { - return userList.iterator().next(); - } - return null; - } + public User getBilbo() { + Collection userList = userRepository.findUserByName("Bilbo Baggins"); + if (userList.iterator().hasNext()) { + return userList.iterator().next(); + } + return null; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/WrapperService.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/WrapperService.java index 812690aba..31f738b1b 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/WrapperService.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/transactions/service/WrapperService.java @@ -24,40 +24,39 @@ import org.springframework.transaction.annotation.Transactional; @Component public class WrapperService { - @Autowired - BusinessService businessService; + @Autowired BusinessService businessService; - @Transactional - public void composeSuccessThenFail() { - businessService.successMethodInTransaction(); - businessService.failMethodInTransaction(); - } + @Transactional + public void composeSuccessThenFail() { + businessService.successMethodInTransaction(); + businessService.failMethodInTransaction(); + } - @Transactional - public void composeSuccessThenSuccess() { - businessService.successMethodInTransaction(); - businessService.successMethodInTransaction(); - } + @Transactional + public void composeSuccessThenSuccess() { + businessService.successMethodInTransaction(); + businessService.successMethodInTransaction(); + } - @Transactional - public void composeFailThenSuccess() { - businessService.failMethodInTransaction(); - businessService.successMethodInTransaction(); - } + @Transactional + public void composeFailThenSuccess() { + businessService.failMethodInTransaction(); + businessService.successMethodInTransaction(); + } - @Transactional - public void composeFailThenFail() { - businessService.failMethodInTransaction(); - businessService.failMethodInTransaction(); - } + @Transactional + public void composeFailThenFail() { + businessService.failMethodInTransaction(); + businessService.failMethodInTransaction(); + } - @Transactional(rollbackFor=Exception.class) - public void rollbackWithCheckedException() throws Exception { - businessService.throwsException(); - } + @Transactional(rollbackFor = Exception.class) + public void rollbackWithCheckedException() throws Exception { + businessService.throwsException(); + } - @Transactional(readOnly = true) - public Iterable> fetch() { - return businessService.fetch(); - } + @Transactional(readOnly = true) + public Iterable> fetch() { + return businessService.fetch(); + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/WebIntegrationTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/WebIntegrationTests.java index 6cad949cd..35af650fd 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/WebIntegrationTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/WebIntegrationTests.java @@ -20,7 +20,9 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import org.junit.*; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.neo4j.ogm.session.SessionFactory; @@ -54,16 +56,14 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter * @author Mark Angrish */ @WebAppConfiguration -@ContextConfiguration(classes = {WebIntegrationTests.WebAppContext.class}) +@ContextConfiguration(classes = { WebIntegrationTests.WebAppContext.class }) @RunWith(SpringJUnit4ClassRunner.class) @Ignore("Why is this failing?") public class WebIntegrationTests extends MultiDriverTestClass { - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; - @Autowired - private WebApplicationContext wac; + @Autowired private WebApplicationContext wac; private MockMvc mockMvc; @@ -75,7 +75,6 @@ public class WebIntegrationTests extends MultiDriverTestClass { private User vince; - @Transactional @Before public void setUp() { @@ -106,12 +105,10 @@ public class WebIntegrationTests extends MultiDriverTestClass { @Test public void shouldNotShareSessionBetweenRequestsWithDifferentSession() throws Exception { - mockMvc.perform(get("/user/{uuid}/friends", adam.getUuid())) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/friends", adam.getUuid())).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Daniela")); - mockMvc.perform(get("/user/{uuid}/friends", vince.getUuid())) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/friends", vince.getUuid())).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Michal")); } @@ -119,24 +116,19 @@ public class WebIntegrationTests extends MultiDriverTestClass { public void shouldShareSessionBetweenRequestsDuringSameSession() throws Exception { MockHttpSession session = new MockHttpSession(); - mockMvc.perform(get("/user/{uuid}/immediateFriends", adam.getUuid()).session(session)) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/immediateFriends", adam.getUuid()).session(session)).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Daniela")); - mockMvc.perform(get("/user/{uuid}/immediateFriends", daniela.getUuid()).session(session)) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/immediateFriends", daniela.getUuid()).session(session)).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Adam Michal")); - mockMvc.perform(get("/user/{uuid}/immediateFriends", michal.getUuid()).session(session)) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/immediateFriends", michal.getUuid()).session(session)).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Daniela Vince")); - mockMvc.perform(get("/user/{uuid}/immediateFriends", vince.getUuid()).session(session)) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/immediateFriends", vince.getUuid()).session(session)).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Michal")); } - @Test public void shouldNotShareSessionBetweenMultiThreadedRequests() throws Exception { ExecutorService executor = Executors.newFixedThreadPool(10); @@ -147,8 +139,7 @@ public class WebIntegrationTests extends MultiDriverTestClass { public void run() { if (j % 2 == 0) { try { - mockMvc.perform(get("/user/{uuid}/friends", adam.getUuid())) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/friends", adam.getUuid())).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Daniela")); } catch (Exception e) { throw new RuntimeException(e); @@ -156,8 +147,7 @@ public class WebIntegrationTests extends MultiDriverTestClass { } else { try { - mockMvc.perform(get("/user/{uuid}/friends", vince.getUuid())) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/friends", vince.getUuid())).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Michal")); } catch (Exception e) { throw new RuntimeException(e); @@ -171,10 +161,9 @@ public class WebIntegrationTests extends MultiDriverTestClass { executor.awaitTermination(1, TimeUnit.MINUTES); } - @Configuration @EnableWebMvc - @ComponentScan({"org.springframework.data.neo4j.web.controller", "org.springframework.data.neo4j.web.service"}) + @ComponentScan({ "org.springframework.data.neo4j.web.controller", "org.springframework.data.neo4j.web.service" }) @EnableNeo4jRepositories("org.springframework.data.neo4j.web.repo") @EnableTransactionManagement static class WebAppContext extends WebMvcConfigurerAdapter { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/XmlApplicationContextWebIntegrationTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/XmlApplicationContextWebIntegrationTests.java index a8a0ef4e1..a8514d286 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/XmlApplicationContextWebIntegrationTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/XmlApplicationContextWebIntegrationTests.java @@ -24,22 +24,16 @@ import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; -import org.neo4j.ogm.testutil.MultiDriverTestClass; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.neo4j.web.domain.User; import org.springframework.data.neo4j.web.repo.UserRepository; import org.springframework.mock.web.MockHttpSession; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.TransactionDefinition; -import org.springframework.transaction.TransactionException; -import org.springframework.transaction.TransactionStatus; import org.springframework.web.context.WebApplicationContext; /** @@ -52,11 +46,9 @@ import org.springframework.web.context.WebApplicationContext; @Ignore("Make this work with new infrastructure test code.") public class XmlApplicationContextWebIntegrationTests { - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; - @Autowired - private WebApplicationContext wac; + @Autowired private WebApplicationContext wac; private MockMvc mockMvc; @@ -94,15 +86,12 @@ public class XmlApplicationContextWebIntegrationTests { userRepository.save(adam); } - @Test public void shouldNotShareSessionBetweenRequestsWithDifferentSession() throws Exception { - mockMvc.perform(get("/user/{uuid}/friends", adam.getUuid())) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/friends", adam.getUuid())).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Daniela")); - mockMvc.perform(get("/user/{uuid}/friends", vince.getUuid())) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/friends", vince.getUuid())).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Michal")); } @@ -110,24 +99,19 @@ public class XmlApplicationContextWebIntegrationTests { public void shouldShareSessionBetweenRequestsDuringSameSession() throws Exception { MockHttpSession session = new MockHttpSession(); - mockMvc.perform(get("/user/{uuid}/immediateFriends", adam.getUuid()).session(session)) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/immediateFriends", adam.getUuid()).session(session)).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Daniela")); - mockMvc.perform(get("/user/{uuid}/immediateFriends", daniela.getUuid()).session(session)) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/immediateFriends", daniela.getUuid()).session(session)).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Adam Michal")); - mockMvc.perform(get("/user/{uuid}/immediateFriends", michal.getUuid()).session(session)) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/immediateFriends", michal.getUuid()).session(session)).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Daniela Vince")); - mockMvc.perform(get("/user/{uuid}/immediateFriends", vince.getUuid()).session(session)) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/immediateFriends", vince.getUuid()).session(session)).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Michal")); } - @Test public void shouldNotShareSessionBetweenMultiThreadedRequests() throws Exception { ExecutorService executor = Executors.newFixedThreadPool(10); @@ -138,8 +122,7 @@ public class XmlApplicationContextWebIntegrationTests { public void run() { if (j % 2 == 0) { try { - mockMvc.perform(get("/user/{uuid}/friends", adam.getUuid())) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/friends", adam.getUuid())).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Daniela")); } catch (Exception e) { throw new RuntimeException(e); @@ -147,8 +130,7 @@ public class XmlApplicationContextWebIntegrationTests { } else { try { - mockMvc.perform(get("/user/{uuid}/friends", vince.getUuid())) - .andExpect(status().isOk()) + mockMvc.perform(get("/user/{uuid}/friends", vince.getUuid())).andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.content().string("Michal")); } catch (Exception e) { throw new RuntimeException(e); diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/controller/UserController.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/controller/UserController.java index 74e8d97ee..47f50bcfd 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/controller/UserController.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/controller/UserController.java @@ -13,6 +13,13 @@ package org.springframework.data.neo4j.web.controller; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.UUID; + +import javax.servlet.http.HttpSession; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.neo4j.web.domain.User; import org.springframework.data.neo4j.web.service.UserService; @@ -22,12 +29,6 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpSession; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.UUID; - /** * @author Michal Bachman * @author Mark ANgrish @@ -35,47 +36,46 @@ import java.util.UUID; @Controller public class UserController { - @Autowired - private UserService userService; + @Autowired private UserService userService; - @RequestMapping(value = "/user/{uuid}/friends") - @ResponseBody - @Transactional - public String listFriends(@PathVariable UUID uuid, HttpSession session) { - User user = userService.getUserByUuid(uuid); + @RequestMapping(value = "/user/{uuid}/friends") + @ResponseBody + @Transactional + public String listFriends(@PathVariable UUID uuid, HttpSession session) { + User user = userService.getUserByUuid(uuid); - if (user == null) { - return "No such user!"; - } + if (user == null) { + return "No such user!"; + } - StringBuilder result = new StringBuilder(); - for (User friend : userService.getNetwork(user)) { - result.append(friend.getName()).append(" "); - } + StringBuilder result = new StringBuilder(); + for (User friend : userService.getNetwork(user)) { + result.append(friend.getName()).append(" "); + } - return result.toString().trim(); - } + return result.toString().trim(); + } - @RequestMapping(value = "/user/{uuid}/immediateFriends") - @ResponseBody - @Transactional - public String listImmediateFriends(@PathVariable UUID uuid, HttpSession session) { - User user = userService.getUserByUuid(uuid); + @RequestMapping(value = "/user/{uuid}/immediateFriends") + @ResponseBody + @Transactional + public String listImmediateFriends(@PathVariable UUID uuid, HttpSession session) { + User user = userService.getUserByUuid(uuid); - if (user == null) { - return "No such user!"; - } + if (user == null) { + return "No such user!"; + } - List friends = new ArrayList<>(); - for (User friend : user.getFriends()) { - friends.add(friend.getName()); - } - Collections.sort(friends); + List friends = new ArrayList<>(); + for (User friend : user.getFriends()) { + friends.add(friend.getName()); + } + Collections.sort(friends); - StringBuilder result = new StringBuilder(); - for(String friend : friends) { - result.append(friend).append(" "); - } - return result.toString().trim(); - } + StringBuilder result = new StringBuilder(); + for (String friend : friends) { + result.append(friend).append(" "); + } + return result.toString().trim(); + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/domain/Cinema.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/domain/Cinema.java index 2f68995f9..f4f6c2d9c 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/domain/Cinema.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/domain/Cinema.java @@ -13,6 +13,10 @@ package org.springframework.data.neo4j.web.domain; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + import org.neo4j.ogm.annotation.GraphId; import org.neo4j.ogm.annotation.Index; import org.neo4j.ogm.annotation.NodeEntity; @@ -20,10 +24,6 @@ import org.neo4j.ogm.annotation.Relationship; import org.neo4j.ogm.annotation.typeconversion.Convert; import org.neo4j.ogm.typeconversion.UuidStringConverter; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; - /** * @author Michal Bachman * @author Mark Angrish @@ -31,32 +31,27 @@ import java.util.UUID; @NodeEntity public class Cinema { - @GraphId - private Long id; + @GraphId private Long id; - @Convert(UuidStringConverter.class) - @Index(unique = true, primary = true) - private UUID uuid; + @Convert(UuidStringConverter.class) @Index(unique = true, primary = true) private UUID uuid; - private String name; + private String name; - @Relationship(direction = Relationship.INCOMING) - private Set visited; + @Relationship(direction = Relationship.INCOMING) private Set visited; - public Cinema() { - } + public Cinema() {} - public Cinema(String name) { - this.visited = new HashSet<>(); - this.uuid = UUID.randomUUID(); - this.name = name; - } + public Cinema(String name) { + this.visited = new HashSet<>(); + this.uuid = UUID.randomUUID(); + this.name = name; + } - public void addVisitor(User user) { - visited.add(user); - } + public void addVisitor(User user) { + visited.add(user); + } - public String getName() { - return name; - } + public String getName() { + return name; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/domain/Genre.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/domain/Genre.java index 21a4397f5..68561bb9d 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/domain/Genre.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/domain/Genre.java @@ -28,32 +28,28 @@ import org.neo4j.ogm.typeconversion.UuidStringConverter; @NodeEntity public class Genre { - @GraphId - private Long id; + @GraphId private Long id; - @Convert(UuidStringConverter.class) - @Index(unique = true, primary = true) - private UUID uuid; + @Convert(UuidStringConverter.class) @Index(unique = true, primary = true) private UUID uuid; - private String name; + private String name; - public Genre() { - } + public Genre() {} - public Genre(String name) { - this.uuid = UUID.randomUUID(); - this.name = name; - } + public Genre(String name) { + this.uuid = UUID.randomUUID(); + this.name = name; + } - public Long getId() { - return id; - } + public Long getId() { + return id; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/domain/User.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/domain/User.java index b644b22f0..0b5109663 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/domain/User.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/domain/User.java @@ -13,6 +13,11 @@ package org.springframework.data.neo4j.web.domain; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + import org.neo4j.ogm.annotation.GraphId; import org.neo4j.ogm.annotation.Index; import org.neo4j.ogm.annotation.NodeEntity; @@ -20,11 +25,6 @@ import org.neo4j.ogm.annotation.Relationship; import org.neo4j.ogm.annotation.typeconversion.Convert; import org.neo4j.ogm.typeconversion.UuidStringConverter; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; - /** * @author Michal Bachman * @author Mark Angrish @@ -32,60 +32,55 @@ import java.util.UUID; @NodeEntity public class User { - @GraphId - private Long id; + @GraphId private Long id; - @Convert(UuidStringConverter.class) - @Index(unique = true, primary = true) - private UUID uuid; + @Convert(UuidStringConverter.class) @Index(unique = true, primary = true) private UUID uuid; - private String name; + private String name; - private Collection interested; + private Collection interested; - @Relationship(type = "FRIEND_OF", direction = Relationship.UNDIRECTED) - private Set friends; + @Relationship(type = "FRIEND_OF", direction = Relationship.UNDIRECTED) private Set friends; - public User() { - } + public User() {} - public User(String name) { - this.interested = new HashSet<>(); - this.friends = new HashSet<>(); - this.uuid = UUID.randomUUID(); - this.name = name; - } + public User(String name) { + this.interested = new HashSet<>(); + this.friends = new HashSet<>(); + this.uuid = UUID.randomUUID(); + this.name = name; + } - public void interestedIn(Genre genre) { - interested.add(genre); - } + public void interestedIn(Genre genre) { + interested.add(genre); + } - public void notInterestedIn(Genre genre) { - interested.remove(genre); - } + public void notInterestedIn(Genre genre) { + interested.remove(genre); + } - public void befriend(User user) { - friends.add(user); - } + public void befriend(User user) { + friends.add(user); + } - //this doesn't need to be part of the domain, but this class is for testing - public Long getId() { - return id; - } + // this doesn't need to be part of the domain, but this class is for testing + public Long getId() { + return id; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } - public Collection getFriends() { - return friends; - } + public Collection getFriends() { + return friends; + } - public UUID getUuid() { - return uuid; - } + public UUID getUuid() { + return uuid; + } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/service/UserService.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/service/UserService.java index 99340d519..5662c51a9 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/service/UserService.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/service/UserService.java @@ -13,17 +13,17 @@ package org.springframework.data.neo4j.web.service; -import org.springframework.data.neo4j.web.domain.User; - import java.util.Collection; import java.util.UUID; +import org.springframework.data.neo4j.web.domain.User; + /** * @author Michal Bachman */ public interface UserService { - User getUserByUuid(UUID uuid); + User getUserByUuid(UUID uuid); - Collection getNetwork(User user); + Collection getNetwork(User user); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/service/UserServiceImpl.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/service/UserServiceImpl.java index 7b23b7690..20ce58fdf 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/service/UserServiceImpl.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/service/UserServiceImpl.java @@ -13,7 +13,11 @@ package org.springframework.data.neo4j.web.service; -import java.util.*; +import java.util.Collection; +import java.util.Comparator; +import java.util.Set; +import java.util.TreeSet; +import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.neo4j.web.domain.User; @@ -29,12 +33,11 @@ import org.springframework.stereotype.Service; @Service public class UserServiceImpl implements UserService { - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; @Override public User getUserByUuid(UUID uuid) { - return userRepository.findById(uuid).get(); + return userRepository.findById(uuid).get(); } @Override diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/support/OpenSessionInViewTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/support/OpenSessionInViewTests.java index df2e87956..4abe2bca5 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/support/OpenSessionInViewTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/web/support/OpenSessionInViewTests.java @@ -1,23 +1,31 @@ package org.springframework.data.neo4j.web.support; - import static org.junit.Assert.*; import static org.mockito.BDDMockito.*; -import javax.servlet.*; import java.io.IOException; import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicInteger; +import javax.servlet.AsyncEvent; +import javax.servlet.AsyncListener; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + import org.junit.After; import org.junit.Before; import org.junit.Test; import org.neo4j.ogm.session.Session; import org.neo4j.ogm.session.SessionFactory; import org.springframework.core.task.SimpleAsyncTaskExecutor; -import org.springframework.data.neo4j.web.support.OpenSessionInViewFilter; -import org.springframework.data.neo4j.web.support.OpenSessionInViewInterceptor; -import org.springframework.mock.web.*; +import org.springframework.mock.web.MockAsyncContext; +import org.springframework.mock.web.MockFilterConfig; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.mock.web.MockServletContext; +import org.springframework.mock.web.PassThroughFilterChain; import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.request.ServletWebRequest; @@ -42,7 +50,6 @@ public class OpenSessionInViewTests { private ServletWebRequest webRequest; - @Before public void setUp() throws Exception { sessionFactory = mock(SessionFactory.class);