From eb2a58cdbe5eec4d4f67559e8d4f2345babbf99f Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 18 Jan 2017 19:41:11 +0100 Subject: [PATCH] DATAMONGO-1590 - Polishing. Removed some compiler warnings. Hide newly introduced class in package scope and made use of Lombok annotations to avoid boilerplate code. Original pull request: #436. --- .../MongoEntityInformationSupport.java | 5 ++-- .../PersistableMongoEntityInformation.java | 19 +++++++------ ...appingMongoEntityInformationUnitTests.java | 27 ++++++------------- 3 files changed, 22 insertions(+), 29 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/MongoEntityInformationSupport.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/MongoEntityInformationSupport.java index 9b2f41b87..ccc37205c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/MongoEntityInformationSupport.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/MongoEntityInformationSupport.java @@ -41,15 +41,16 @@ final class MongoEntityInformationSupport { * @param idType can be {@literal null}. * @return never {@literal null}. */ + @SuppressWarnings("unchecked") static MongoEntityInformation entityInformationFor( MongoPersistentEntity entity, Class idType) { Assert.notNull(entity, "Entity must not be null!"); - MappingMongoEntityInformation entityInformation = new MappingMongoEntityInformation( + MappingMongoEntityInformation entityInformation = new MappingMongoEntityInformation( (MongoPersistentEntity) entity, (Class) idType); + return ClassUtils.isAssignable(Persistable.class, entity.getType()) ? new PersistableMongoEntityInformation(entityInformation) : entityInformation; } - } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/PersistableMongoEntityInformation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/PersistableMongoEntityInformation.java index a6c63a405..99305f4b4 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/PersistableMongoEntityInformation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/PersistableMongoEntityInformation.java @@ -15,6 +15,9 @@ */ package org.springframework.data.mongodb.repository.support; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; + import java.io.Serializable; import org.springframework.data.domain.Persistable; @@ -26,15 +29,13 @@ import org.springframework.data.mongodb.repository.query.MongoEntityInformation; * {@link Persistable#isNew()} and {@link Persistable#getId()} implementations. * * @author Christoph Strobl + * @author Oliver Gierke * @since 1.10 */ -public class PersistableMongoEntityInformation implements MongoEntityInformation { - - private final MongoEntityInformation delegate; +@RequiredArgsConstructor +class PersistableMongoEntityInformation implements MongoEntityInformation { - public PersistableMongoEntityInformation(MongoEntityInformation delegate) { - this.delegate = delegate; - } + private final @NonNull MongoEntityInformation delegate; /* * (non-Javadoc) @@ -59,10 +60,11 @@ public class PersistableMongoEntityInformation imple * @see org.springframework.data.repository.core.EntityInformation#isNew(java.lang.Object) */ @Override + @SuppressWarnings("unchecked") public boolean isNew(T t) { if (t instanceof Persistable) { - return ((Persistable) t).isNew(); + return ((Persistable) t).isNew(); } return delegate.isNew(t); @@ -73,10 +75,11 @@ public class PersistableMongoEntityInformation imple * @see org.springframework.data.repository.core.EntityInformation#getId(java.lang.Object) */ @Override + @SuppressWarnings("unchecked") public ID getId(T t) { if (t instanceof Persistable) { - return (ID) ((Persistable) t).getId(); + return (ID) ((Persistable) t).getId(); } return delegate.getId(t); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/PersistableMappingMongoEntityInformationUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/PersistableMappingMongoEntityInformationUnitTests.java index 2f03024c2..c5ebcb86f 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/PersistableMappingMongoEntityInformationUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/PersistableMappingMongoEntityInformationUnitTests.java @@ -13,12 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.mongodb.repository.query; +package org.springframework.data.mongodb.repository.support; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import static org.mockito.Mockito.*; +import lombok.Value; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -26,13 +28,12 @@ import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.data.domain.Persistable; import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity; -import org.springframework.data.mongodb.repository.support.MappingMongoEntityInformation; -import org.springframework.data.mongodb.repository.support.PersistableMongoEntityInformation; /** * Tests for {@link PersistableMongoEntityInformation}. * * @author Christoph Strobl + * @author Oliver Gierke */ @RunWith(MockitoJUnitRunner.class) public class PersistableMappingMongoEntityInformationUnitTests { @@ -53,24 +54,12 @@ public class PersistableMappingMongoEntityInformationUnitTests { assertThat(information.isNew(new TypeImplementingPersistable(100L, false)), is(false)); } + @Value static class TypeImplementingPersistable implements Persistable { - final Long id; - final boolean isNew; - - public TypeImplementingPersistable(Long id, boolean isNew) { - this.id = id; - this.isNew = isNew; - } - - @Override - public Long getId() { - return id; - } + private static final long serialVersionUID = -1619090149320971099L; - @Override - public boolean isNew() { - return isNew; - } + Long id; + boolean isNew; } }