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.
This commit is contained in:
@@ -41,15 +41,16 @@ final class MongoEntityInformationSupport {
|
|||||||
* @param idType can be {@literal null}.
|
* @param idType can be {@literal null}.
|
||||||
* @return never {@literal null}.
|
* @return never {@literal null}.
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
static <T, ID extends Serializable> MongoEntityInformation<T, ID> entityInformationFor(
|
static <T, ID extends Serializable> MongoEntityInformation<T, ID> entityInformationFor(
|
||||||
MongoPersistentEntity<?> entity, Class<?> idType) {
|
MongoPersistentEntity<?> entity, Class<?> idType) {
|
||||||
|
|
||||||
Assert.notNull(entity, "Entity must not be null!");
|
Assert.notNull(entity, "Entity must not be null!");
|
||||||
|
|
||||||
MappingMongoEntityInformation entityInformation = new MappingMongoEntityInformation<T, ID>(
|
MappingMongoEntityInformation<T, ID> entityInformation = new MappingMongoEntityInformation<T, ID>(
|
||||||
(MongoPersistentEntity<T>) entity, (Class<ID>) idType);
|
(MongoPersistentEntity<T>) entity, (Class<ID>) idType);
|
||||||
|
|
||||||
return ClassUtils.isAssignable(Persistable.class, entity.getType())
|
return ClassUtils.isAssignable(Persistable.class, entity.getType())
|
||||||
? new PersistableMongoEntityInformation<T, ID>(entityInformation) : entityInformation;
|
? new PersistableMongoEntityInformation<T, ID>(entityInformation) : entityInformation;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,9 @@
|
|||||||
*/
|
*/
|
||||||
package org.springframework.data.mongodb.repository.support;
|
package org.springframework.data.mongodb.repository.support;
|
||||||
|
|
||||||
|
import lombok.NonNull;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import org.springframework.data.domain.Persistable;
|
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.
|
* {@link Persistable#isNew()} and {@link Persistable#getId()} implementations.
|
||||||
*
|
*
|
||||||
* @author Christoph Strobl
|
* @author Christoph Strobl
|
||||||
|
* @author Oliver Gierke
|
||||||
* @since 1.10
|
* @since 1.10
|
||||||
*/
|
*/
|
||||||
public class PersistableMongoEntityInformation<T, ID extends Serializable> implements MongoEntityInformation<T, ID> {
|
@RequiredArgsConstructor
|
||||||
|
class PersistableMongoEntityInformation<T, ID extends Serializable> implements MongoEntityInformation<T, ID> {
|
||||||
|
|
||||||
private final MongoEntityInformation<T, ID> delegate;
|
private final @NonNull MongoEntityInformation<T, ID> delegate;
|
||||||
|
|
||||||
public PersistableMongoEntityInformation(MongoEntityInformation<T, ID> delegate) {
|
|
||||||
this.delegate = delegate;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
@@ -59,10 +60,11 @@ public class PersistableMongoEntityInformation<T, ID extends Serializable> imple
|
|||||||
* @see org.springframework.data.repository.core.EntityInformation#isNew(java.lang.Object)
|
* @see org.springframework.data.repository.core.EntityInformation#isNew(java.lang.Object)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public boolean isNew(T t) {
|
public boolean isNew(T t) {
|
||||||
|
|
||||||
if (t instanceof Persistable) {
|
if (t instanceof Persistable) {
|
||||||
return ((Persistable) t).isNew();
|
return ((Persistable<ID>) t).isNew();
|
||||||
}
|
}
|
||||||
|
|
||||||
return delegate.isNew(t);
|
return delegate.isNew(t);
|
||||||
@@ -73,10 +75,11 @@ public class PersistableMongoEntityInformation<T, ID extends Serializable> imple
|
|||||||
* @see org.springframework.data.repository.core.EntityInformation#getId(java.lang.Object)
|
* @see org.springframework.data.repository.core.EntityInformation#getId(java.lang.Object)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public ID getId(T t) {
|
public ID getId(T t) {
|
||||||
|
|
||||||
if (t instanceof Persistable) {
|
if (t instanceof Persistable) {
|
||||||
return (ID) ((Persistable) t).getId();
|
return (ID) ((Persistable<ID>) t).getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
return delegate.getId(t);
|
return delegate.getId(t);
|
||||||
|
|||||||
@@ -13,12 +13,14 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* 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.hamcrest.CoreMatchers.*;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
import lombok.Value;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -26,13 +28,12 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.runners.MockitoJUnitRunner;
|
import org.mockito.runners.MockitoJUnitRunner;
|
||||||
import org.springframework.data.domain.Persistable;
|
import org.springframework.data.domain.Persistable;
|
||||||
import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity;
|
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}.
|
* Tests for {@link PersistableMongoEntityInformation}.
|
||||||
*
|
*
|
||||||
* @author Christoph Strobl
|
* @author Christoph Strobl
|
||||||
|
* @author Oliver Gierke
|
||||||
*/
|
*/
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class PersistableMappingMongoEntityInformationUnitTests {
|
public class PersistableMappingMongoEntityInformationUnitTests {
|
||||||
@@ -53,24 +54,12 @@ public class PersistableMappingMongoEntityInformationUnitTests {
|
|||||||
assertThat(information.isNew(new TypeImplementingPersistable(100L, false)), is(false));
|
assertThat(information.isNew(new TypeImplementingPersistable(100L, false)), is(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Value
|
||||||
static class TypeImplementingPersistable implements Persistable<Long> {
|
static class TypeImplementingPersistable implements Persistable<Long> {
|
||||||
|
|
||||||
final Long id;
|
private static final long serialVersionUID = -1619090149320971099L;
|
||||||
final boolean isNew;
|
|
||||||
|
|
||||||
public TypeImplementingPersistable(Long id, boolean isNew) {
|
Long id;
|
||||||
this.id = id;
|
boolean isNew;
|
||||||
this.isNew = isNew;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isNew() {
|
|
||||||
return isNew;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user