From 2d9232ca04316b6ae872b39b0ba0f26a52618c63 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Fri, 1 Jun 2018 13:29:27 +0200 Subject: [PATCH] DATAMONGO-1990 - Adapt build to changes in is-new-detection. Removed a couple of Mockito stubbings that became unnecessary after the changes for DATACMNS-1333. Removed PersistableMongoEntityInformation as handling Persistable is now transparently taken care of by PersistentEntityInformation which MappingMongoEntityInformation extends. Related tickets: DATACMNS-1333. --- .../MongoEntityInformationSupport.java | 8 +- .../PersistableMongoEntityInformation.java | 103 ------------------ ...appingMongoEntityInformationUnitTests.java | 31 ++++-- .../MongoRepositoryFactoryUnitTests.java | 17 +-- ...appingMongoEntityInformationUnitTests.java | 65 ----------- 5 files changed, 28 insertions(+), 196 deletions(-) delete mode 100644 spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/PersistableMongoEntityInformation.java delete mode 100644 spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/PersistableMappingMongoEntityInformationUnitTests.java 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 2c1fc57e6..b35b5ebb3 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 @@ -15,12 +15,10 @@ */ package org.springframework.data.mongodb.repository.support; -import org.springframework.data.domain.Persistable; import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity; import org.springframework.data.mongodb.repository.query.MongoEntityInformation; import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import org.springframework.util.ClassUtils; /** * Support class responsible for creating {@link MongoEntityInformation} instances for a given @@ -47,10 +45,6 @@ final class MongoEntityInformationSupport { Assert.notNull(entity, "Entity must not be null!"); - MappingMongoEntityInformation entityInformation = new MappingMongoEntityInformation( - (MongoPersistentEntity) entity, (Class) idType); - - return ClassUtils.isAssignable(Persistable.class, entity.getType()) - ? new PersistableMongoEntityInformation(entityInformation) : entityInformation; + return new MappingMongoEntityInformation<>((MongoPersistentEntity) entity, (Class) idType); } } 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 deleted file mode 100644 index 8f46da3ea..000000000 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/PersistableMongoEntityInformation.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2017-2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.data.mongodb.repository.support; - -import lombok.NonNull; -import lombok.RequiredArgsConstructor; - -import org.springframework.data.domain.Persistable; -import org.springframework.data.mongodb.repository.query.MongoEntityInformation; - -/** - * {@link MongoEntityInformation} implementation wrapping an existing {@link MongoEntityInformation} considering - * {@link Persistable} types by delegating {@link #isNew(Object)} and {@link #getId(Object)} to the corresponding - * {@link Persistable#isNew()} and {@link Persistable#getId()} implementations. - * - * @author Christoph Strobl - * @author Oliver Gierke - * @since 1.10 - */ -@RequiredArgsConstructor -class PersistableMongoEntityInformation implements MongoEntityInformation { - - private final @NonNull MongoEntityInformation delegate; - - /* - * (non-Javadoc) - * @see org.springframework.data.mongodb.repository.MongoEntityInformation#getCollectionName() - */ - @Override - public String getCollectionName() { - return delegate.getCollectionName(); - } - - /* - * (non-Javadoc) - * @see org.springframework.data.mongodb.repository.MongoEntityInformation#getIdAttribute() - */ - @Override - public String getIdAttribute() { - return delegate.getIdAttribute(); - } - - /* - * (non-Javadoc) - * @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 delegate.isNew(t); - } - - /* - * (non-Javadoc) - * @see org.springframework.data.repository.core.EntityInformation#getId(java.lang.Object) - */ - @Override - @SuppressWarnings("unchecked") - public ID getId(T t) { - - if (t instanceof Persistable) { - return ((Persistable) t).getId(); - } - - return delegate.getId(t); - } - - /* - * (non-Javadoc) - * @see org.springframework.data.repository.core.support.PersistentEntityInformation#getIdType() - */ - @Override - public Class getIdType() { - return delegate.getIdType(); - } - - /* - * (non-Javadoc) - * @see org.springframework.data.repository.core.support.EntityMetadata#getJavaType() - */ - @Override - public Class getJavaType() { - return delegate.getJavaType(); - } -} diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MappingMongoEntityInformationUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MappingMongoEntityInformationUnitTests.java index 834ad9314..805adb281 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MappingMongoEntityInformationUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MappingMongoEntityInformationUnitTests.java @@ -19,14 +19,17 @@ import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import static org.mockito.Mockito.*; -import org.junit.Before; +import lombok.Value; + import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import org.springframework.data.domain.Persistable; import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity; import org.springframework.data.mongodb.repository.Person; import org.springframework.data.mongodb.repository.support.MappingMongoEntityInformation; +import org.springframework.data.repository.core.EntityInformation; /** * Unit tests for {@link MappingMongoEntityInformation}. @@ -37,17 +40,13 @@ import org.springframework.data.mongodb.repository.support.MappingMongoEntityInf public class MappingMongoEntityInformationUnitTests { @Mock MongoPersistentEntity info; - - @Before - public void setUp() { - - when(info.getType()).thenReturn(Person.class); - when(info.getCollection()).thenReturn("Person"); - } + @Mock MongoPersistentEntity persistableImplementingEntityTypeInfo; @Test // DATAMONGO-248 public void usesEntityCollectionIfNoCustomOneGiven() { + when(info.getCollection()).thenReturn("Person"); + MongoEntityInformation information = new MappingMongoEntityInformation(info); assertThat(information.getCollectionName(), is("Person")); } @@ -58,4 +57,20 @@ public class MappingMongoEntityInformationUnitTests { MongoEntityInformation information = new MappingMongoEntityInformation(info, "foobar"); assertThat(information.getCollectionName(), is("foobar")); } + + @Test // DATAMONGO-1590 + public void considersPersistableIsNew() { + + EntityInformation information = new MappingMongoEntityInformation<>( + persistableImplementingEntityTypeInfo); + + assertThat(information.isNew(new TypeImplementingPersistable(100L, false)), is(false)); + } + + @Value + static class TypeImplementingPersistable implements Persistable { + + Long id; + boolean isNew; + } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/MongoRepositoryFactoryUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/MongoRepositoryFactoryUnitTests.java index 68ac33546..199c3a6be 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/MongoRepositoryFactoryUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/MongoRepositoryFactoryUnitTests.java @@ -20,7 +20,6 @@ import static org.junit.Assert.*; import static org.mockito.Mockito.*; import java.io.Serializable; -import java.util.Optional; import org.junit.Before; import org.junit.Test; @@ -43,19 +42,13 @@ import org.springframework.data.repository.Repository; @RunWith(MockitoJUnitRunner.class) public class MongoRepositoryFactoryUnitTests { - @Mock - MongoTemplate template; + @Mock MongoTemplate template; - @Mock - MongoConverter converter; + @Mock MongoConverter converter; - @Mock - @SuppressWarnings("rawtypes") - MappingContext mappingContext; + @Mock @SuppressWarnings("rawtypes") MappingContext mappingContext; - @Mock - @SuppressWarnings("rawtypes") - MongoPersistentEntity entity; + @Mock @SuppressWarnings("rawtypes") MongoPersistentEntity entity; @Before @SuppressWarnings("unchecked") @@ -69,7 +62,6 @@ public class MongoRepositoryFactoryUnitTests { public void usesMappingMongoEntityInformationIfMappingContextSet() { when(mappingContext.getRequiredPersistentEntity(Person.class)).thenReturn(entity); - when(entity.getType()).thenReturn(Person.class); MongoRepositoryFactory factory = new MongoRepositoryFactory(template); MongoEntityInformation entityInformation = factory.getEntityInformation(Person.class); @@ -81,7 +73,6 @@ public class MongoRepositoryFactoryUnitTests { public void createsRepositoryWithIdTypeLong() { when(mappingContext.getRequiredPersistentEntity(Person.class)).thenReturn(entity); - when(entity.getType()).thenReturn(Person.class); MongoRepositoryFactory factory = new MongoRepositoryFactory(template); MyPersonRepository repository = factory.getRepository(MyPersonRepository.class); 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 deleted file mode 100644 index 90f93dd97..000000000 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/PersistableMappingMongoEntityInformationUnitTests.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2017-2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.data.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; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; -import org.springframework.data.domain.Persistable; -import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity; - -/** - * Tests for {@link PersistableMongoEntityInformation}. - * - * @author Christoph Strobl - * @author Oliver Gierke - */ -@RunWith(MockitoJUnitRunner.class) -public class PersistableMappingMongoEntityInformationUnitTests { - - @Mock MongoPersistentEntity persistableImplementingEntityTypeInfo; - - @Before - public void setUp() { - when(persistableImplementingEntityTypeInfo.getType()).thenReturn(TypeImplementingPersistable.class); - } - - @Test // DATAMONGO-1590 - public void considersPersistableIsNew() { - - PersistableMongoEntityInformation information = new PersistableMongoEntityInformation( - new MappingMongoEntityInformation(persistableImplementingEntityTypeInfo)); - - assertThat(information.isNew(new TypeImplementingPersistable(100L, false)), is(false)); - } - - @Value - static class TypeImplementingPersistable implements Persistable { - - private static final long serialVersionUID = -1619090149320971099L; - - Long id; - boolean isNew; - } -}