diff --git a/src/main/java/org/springframework/data/auditing/AuditableBeanWrapperFactory.java b/src/main/java/org/springframework/data/auditing/AuditableBeanWrapperFactory.java index 143b15013..9f52456a4 100644 --- a/src/main/java/org/springframework/data/auditing/AuditableBeanWrapperFactory.java +++ b/src/main/java/org/springframework/data/auditing/AuditableBeanWrapperFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2015 the original author or authors. + * Copyright 2015-2017 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. @@ -28,8 +28,8 @@ public interface AuditableBeanWrapperFactory { /** * Returns the {@link AuditableBeanWrapper} for the given source object if it's eligible for auditing. * - * @param source. + * @param source must not be {@literal null}. * @return the {@link AuditableBeanWrapper} for the given source object if it's eligible for auditing. */ - Optional getBeanWrapperFor(Optional source); + Optional getBeanWrapperFor(Object source); } diff --git a/src/main/java/org/springframework/data/auditing/AuditingHandler.java b/src/main/java/org/springframework/data/auditing/AuditingHandler.java index 85a82ac40..8acebbcf8 100644 --- a/src/main/java/org/springframework/data/auditing/AuditingHandler.java +++ b/src/main/java/org/springframework/data/auditing/AuditingHandler.java @@ -16,7 +16,6 @@ package org.springframework.data.auditing; import java.time.temporal.TemporalAccessor; -import java.util.Arrays; import java.util.Collections; import java.util.Optional; @@ -125,7 +124,7 @@ public class AuditingHandler implements InitializingBean { * * @param source */ - public void markCreated(Optional source) { + public void markCreated(Object source) { touch(source, true); } @@ -134,7 +133,7 @@ public class AuditingHandler implements InitializingBean { * * @param source */ - public void markModified(Optional source) { + public void markModified(Object source) { touch(source, false); } @@ -144,15 +143,16 @@ public class AuditingHandler implements InitializingBean { * @param source must not be {@literal null}. * @return */ - protected final boolean isAuditable(Optional source) { - return source.flatMap(o -> factory.getBeanWrapperFor(source)).isPresent(); + protected final boolean isAuditable(Object source) { + + Assert.notNull(source, "Source must not be null!"); + + return factory.getBeanWrapperFor(source).isPresent(); } - private void touch(Optional target, boolean isNew) { + private void touch(Object target, boolean isNew) { - Optional wrapper = factory.getBeanWrapperFor(target); - - wrapper.ifPresent(it -> { + factory.getBeanWrapperFor(target).ifPresent(it -> { Optional auditor = touchAuditor(it, isNew); Optional now = dateTimeForNow ? touchDate(it, isNew) : Optional.empty(); diff --git a/src/main/java/org/springframework/data/auditing/DefaultAuditableBeanWrapperFactory.java b/src/main/java/org/springframework/data/auditing/DefaultAuditableBeanWrapperFactory.java index 6a532b982..922815b72 100644 --- a/src/main/java/org/springframework/data/auditing/DefaultAuditableBeanWrapperFactory.java +++ b/src/main/java/org/springframework/data/auditing/DefaultAuditableBeanWrapperFactory.java @@ -50,9 +50,11 @@ class DefaultAuditableBeanWrapperFactory implements AuditableBeanWrapperFactory * @return */ @SuppressWarnings("unchecked") - public Optional getBeanWrapperFor(Optional source) { + public Optional getBeanWrapperFor(Object source) { - return source.map(it -> { + Assert.notNull(source, "Source must not be null!"); + + return Optional.of(source).map(it -> { if (it instanceof Auditable) { return new AuditableInterfaceBeanWrapper((Auditable) it); @@ -191,9 +193,10 @@ class DefaultAuditableBeanWrapperFactory implements AuditableBeanWrapperFactory if (conversionService.canConvert(Date.class, targetType)) { - if(!conversionService.canConvert(it.getClass(), Date.class)) { - throw new IllegalArgumentException(String.format("Cannot convert date type for member %s! From %s to java.util.Date to %s.", - source, it.getClass(), targetType)); + if (!conversionService.canConvert(it.getClass(), Date.class)) { + throw new IllegalArgumentException( + String.format("Cannot convert date type for member %s! From %s to java.util.Date to %s.", source, + it.getClass(), targetType)); } Date date = conversionService.convert(it, Date.class); diff --git a/src/main/java/org/springframework/data/auditing/IsNewAwareAuditingHandler.java b/src/main/java/org/springframework/data/auditing/IsNewAwareAuditingHandler.java index 14fe64b69..4c2565859 100644 --- a/src/main/java/org/springframework/data/auditing/IsNewAwareAuditingHandler.java +++ b/src/main/java/org/springframework/data/auditing/IsNewAwareAuditingHandler.java @@ -15,7 +15,6 @@ */ package org.springframework.data.auditing; -import java.util.Arrays; import java.util.Collections; import java.util.Optional; @@ -74,7 +73,7 @@ public class IsNewAwareAuditingHandler extends AuditingHandler { * * @param object */ - public void markAudited(Optional object) { + public void markAudited(Object object) { Assert.notNull(object, "Source object must not be null!"); @@ -82,15 +81,12 @@ public class IsNewAwareAuditingHandler extends AuditingHandler { return; } - object.ifPresent(it -> { + IsNewStrategy strategy = isNewStrategyFactory.getIsNewStrategy(object.getClass()); - IsNewStrategy strategy = isNewStrategyFactory.getIsNewStrategy(it.getClass()); - - if (strategy.isNew(object)) { - markCreated(object); - } else { - markModified(object); - } - }); + if (strategy.isNew(object)) { + markCreated(object); + } else { + markModified(object); + } } } diff --git a/src/main/java/org/springframework/data/auditing/MappingAuditableBeanWrapperFactory.java b/src/main/java/org/springframework/data/auditing/MappingAuditableBeanWrapperFactory.java index 41e0b605d..1c10e47b6 100644 --- a/src/main/java/org/springframework/data/auditing/MappingAuditableBeanWrapperFactory.java +++ b/src/main/java/org/springframework/data/auditing/MappingAuditableBeanWrapperFactory.java @@ -65,9 +65,9 @@ public class MappingAuditableBeanWrapperFactory extends DefaultAuditableBeanWrap * @see org.springframework.data.auditing.AuditableBeanWrapperFactory#getBeanWrapperFor(java.lang.Object) */ @Override - public Optional getBeanWrapperFor(Optional source) { + public Optional getBeanWrapperFor(Object source) { - return source.flatMap(it -> { + return Optional.of(source).flatMap(it -> { if (it instanceof Auditable) { return super.getBeanWrapperFor(source); @@ -80,7 +80,7 @@ public class MappingAuditableBeanWrapperFactory extends DefaultAuditableBeanWrap MappingAuditingMetadata metadata = metadataCache.computeIfAbsent(type, key -> new MappingAuditingMetadata(entity)); - return Optional.ofNullable(metadata.isAuditable() + return Optional. ofNullable(metadata.isAuditable() ? new MappingMetadataAuditableBeanWrapper(entity.getPropertyAccessor(it), metadata) : null); }).orElseGet(() -> super.getBeanWrapperFor(source)); @@ -172,7 +172,8 @@ public class MappingAuditableBeanWrapperFactory extends DefaultAuditableBeanWrap @Override public Optional setCreatedDate(Optional value) { - metadata.createdDateProperty.ifPresent(it -> this.accessor.setProperty(it, getDateValueToSet(value, it.getType(), it))); + metadata.createdDateProperty + .ifPresent(it -> this.accessor.setProperty(it, getDateValueToSet(value, it.getType(), it))); return value; } @@ -206,7 +207,8 @@ public class MappingAuditableBeanWrapperFactory extends DefaultAuditableBeanWrap @Override public Optional setLastModifiedDate(Optional value) { - metadata.lastModifiedDateProperty.ifPresent(it -> this.accessor.setProperty(it, getDateValueToSet(value, it.getType(), it))); + metadata.lastModifiedDateProperty + .ifPresent(it -> this.accessor.setProperty(it, getDateValueToSet(value, it.getType(), it))); return value; } diff --git a/src/main/java/org/springframework/data/mapping/context/MappingContextIsNewStrategyFactory.java b/src/main/java/org/springframework/data/mapping/context/MappingContextIsNewStrategyFactory.java index 3eac2a575..c98d0e623 100644 --- a/src/main/java/org/springframework/data/mapping/context/MappingContextIsNewStrategyFactory.java +++ b/src/main/java/org/springframework/data/mapping/context/MappingContextIsNewStrategyFactory.java @@ -18,7 +18,6 @@ package org.springframework.data.mapping.context; import lombok.NonNull; import lombok.RequiredArgsConstructor; -import java.util.Arrays; import java.util.Collections; import java.util.Optional; import java.util.function.Function; @@ -112,11 +111,11 @@ public class MappingContextIsNewStrategyFactory extends IsNewStrategyFactorySupp * @see org.springframework.data.support.IsNewStrategy#isNew(java.util.Optional) */ @Override - public boolean isNew(Optional entity) { + public boolean isNew(Object entity) { - return entity// - .map(it -> isNew.apply(property.getOwner().getPropertyAccessor(it).getProperty(property)))// - .orElse(false); + Assert.notNull(entity, "Entity must not be null!"); + + return isNew.apply(property.getOwner().getPropertyAccessor(entity).getProperty(property)); } } diff --git a/src/main/java/org/springframework/data/support/IsNewStrategy.java b/src/main/java/org/springframework/data/support/IsNewStrategy.java index 498f82d03..9e1a7f71d 100644 --- a/src/main/java/org/springframework/data/support/IsNewStrategy.java +++ b/src/main/java/org/springframework/data/support/IsNewStrategy.java @@ -15,8 +15,6 @@ */ package org.springframework.data.support; -import java.util.Optional; - /** * Strategy interface to determine whether a given entity is to be considered new. * @@ -28,8 +26,8 @@ public interface IsNewStrategy { /** * Returns whether the given entity is new, i.e. has never been persisted before or not. * - * @param entity can be {@literal null}. + * @param entity must not be {@literal null}. * @return */ - boolean isNew(Optional entity); + boolean isNew(Object entity); } diff --git a/src/main/java/org/springframework/data/support/PersistableIsNewStrategy.java b/src/main/java/org/springframework/data/support/PersistableIsNewStrategy.java index df8d730a2..b62a34606 100644 --- a/src/main/java/org/springframework/data/support/PersistableIsNewStrategy.java +++ b/src/main/java/org/springframework/data/support/PersistableIsNewStrategy.java @@ -15,9 +15,8 @@ */ package org.springframework.data.support; -import java.util.Optional; - import org.springframework.data.domain.Persistable; +import org.springframework.util.Assert; /** * {@link IsNewStrategy} that invokes {@link Persistable#isNew()} on the given object. @@ -28,21 +27,20 @@ public enum PersistableIsNewStrategy implements IsNewStrategy { INSTANCE; - /* + /* * (non-Javadoc) - * @see org.springframework.data.support.IsNewStrategy#isNew(java.util.Optional) + * @see org.springframework.data.support.IsNewStrategy#isNew(java.lang.Object) */ - public boolean isNew(Optional entity) { + @Override + public boolean isNew(Object entity) { - return entity.map(it -> { + Assert.notNull(entity, "Entity must not be null!"); - if (!(it instanceof Persistable)) { - throw new IllegalArgumentException( - String.format("Given object of type %s does not implement %s!", it.getClass(), Persistable.class)); - } + if (!(entity instanceof Persistable)) { + throw new IllegalArgumentException( + String.format("Given object of type %s does not implement %s!", entity.getClass(), Persistable.class)); + } - return ((Persistable) it).isNew(); - - }).orElse(false); + return ((Persistable) entity).isNew(); } } diff --git a/src/test/java/org/springframework/data/auditing/AuditingHandlerUnitTests.java b/src/test/java/org/springframework/data/auditing/AuditingHandlerUnitTests.java index 61477437c..8842bcb67 100755 --- a/src/test/java/org/springframework/data/auditing/AuditingHandlerUnitTests.java +++ b/src/test/java/org/springframework/data/auditing/AuditingHandlerUnitTests.java @@ -38,16 +38,16 @@ public class AuditingHandlerUnitTests { AuditingHandler handler; AuditorAware auditorAware; - Optional user; + AuditedUser user; @Before public void setUp() { handler = getHandler(); - user = Optional.of(new AuditedUser()); + user = new AuditedUser(); auditorAware = mock(AuditorAware.class); - when(auditorAware.getCurrentAuditor()).thenReturn(user); + when(auditorAware.getCurrentAuditor()).thenReturn(Optional.of(user)); } protected AuditingHandler getHandler() { @@ -62,14 +62,11 @@ public class AuditingHandlerUnitTests { handler.markCreated(user); - assertThat(user).hasValueSatisfying(it -> { + assertThat(user.getCreatedDate()).isPresent(); + assertThat(user.getLastModifiedDate()).isPresent(); - assertThat(it.getCreatedDate()).isPresent(); - assertThat(it.getLastModifiedDate()).isPresent(); - - assertThat(it.getCreatedBy()).isNotPresent(); - assertThat(it.getLastModifiedBy()).isNotPresent(); - }); + assertThat(user.getCreatedBy()).isNotPresent(); + assertThat(user.getLastModifiedBy()).isNotPresent(); } /** @@ -82,14 +79,11 @@ public class AuditingHandlerUnitTests { handler.markCreated(user); - assertThat(user).hasValueSatisfying(it -> { + assertThat(user.getCreatedDate()).isPresent(); + assertThat(user.getLastModifiedDate()).isPresent(); - assertThat(it.getCreatedDate()).isPresent(); - assertThat(it.getLastModifiedDate()).isPresent(); - - assertThat(it.getCreatedBy()).isPresent(); - assertThat(it.getLastModifiedBy()).isPresent(); - }); + assertThat(user.getCreatedBy()).isPresent(); + assertThat(user.getLastModifiedBy()).isPresent(); verify(auditorAware).getCurrentAuditor(); } @@ -104,14 +98,11 @@ public class AuditingHandlerUnitTests { handler.setModifyOnCreation(false); handler.markCreated(user); - assertThat(user).hasValueSatisfying(it -> { + assertThat(user.getCreatedDate()).isPresent(); + assertThat(user.getCreatedBy()).isPresent(); - assertThat(it.getCreatedDate()).isPresent(); - assertThat(it.getCreatedBy()).isPresent(); - - assertThat(it.getLastModifiedBy()).isNotPresent(); - assertThat(it.getLastModifiedDate()).isNotPresent(); - }); + assertThat(user.getLastModifiedBy()).isNotPresent(); + assertThat(user.getLastModifiedDate()).isNotPresent(); verify(auditorAware).getCurrentAuditor(); } @@ -125,19 +116,14 @@ public class AuditingHandlerUnitTests { AuditedUser audited = new AuditedUser(); audited.id = 1L; - user = Optional.of(audited); - handler.setAuditorAware(auditorAware); - handler.markModified(user); + handler.markModified(audited); - assertThat(user).hasValueSatisfying(it -> { + assertThat(audited.getCreatedBy()).isNotPresent(); + assertThat(audited.getCreatedDate()).isNotPresent(); - assertThat(it.getCreatedBy()).isNotPresent(); - assertThat(it.getCreatedDate()).isNotPresent(); - - assertThat(it.getLastModifiedBy()).isPresent(); - assertThat(it.getLastModifiedDate()).isPresent(); - }); + assertThat(audited.getLastModifiedBy()).isPresent(); + assertThat(audited.getLastModifiedDate()).isPresent(); verify(auditorAware).getCurrentAuditor(); } @@ -149,14 +135,11 @@ public class AuditingHandlerUnitTests { handler.setAuditorAware(auditorAware); handler.markCreated(user); - assertThat(user).hasValueSatisfying(it -> { + assertThat(user.getCreatedBy()).isPresent(); + assertThat(user.getCreatedDate()).isNotPresent(); - assertThat(it.getCreatedBy()).isPresent(); - assertThat(it.getCreatedDate()).isNotPresent(); - - assertThat(it.getLastModifiedBy()).isPresent(); - assertThat(it.getLastModifiedDate()).isNotPresent(); - }); + assertThat(user.getLastModifiedBy()).isPresent(); + assertThat(user.getLastModifiedDate()).isNotPresent(); } @Test // DATAJPA-9 diff --git a/src/test/java/org/springframework/data/auditing/DefaultAuditableBeanWrapperFactoryUnitTests.java b/src/test/java/org/springframework/data/auditing/DefaultAuditableBeanWrapperFactoryUnitTests.java index 557c7d94b..717dc113c 100755 --- a/src/test/java/org/springframework/data/auditing/DefaultAuditableBeanWrapperFactoryUnitTests.java +++ b/src/test/java/org/springframework/data/auditing/DefaultAuditableBeanWrapperFactoryUnitTests.java @@ -36,26 +36,28 @@ public class DefaultAuditableBeanWrapperFactoryUnitTests { DefaultAuditableBeanWrapperFactory factory = new DefaultAuditableBeanWrapperFactory(); - @Test - public void returnsEmptyForEmptySource() { - assertThat(factory.getBeanWrapperFor(Optional.empty())).isNotPresent(); + @Test(expected = IllegalArgumentException.class) + public void rejectsNullSource() { + factory.getBeanWrapperFor(null); } @Test public void returnsAuditableInterfaceBeanWrapperForAuditable() { - assertThat(factory.getBeanWrapperFor(Optional.of(new AuditedUser()))).hasValueSatisfying(it -> assertThat(it).isInstanceOf(AuditableInterfaceBeanWrapper.class)); + assertThat(factory.getBeanWrapperFor(new AuditedUser())) + .hasValueSatisfying(it -> assertThat(it).isInstanceOf(AuditableInterfaceBeanWrapper.class)); } @Test public void returnsReflectionAuditingBeanWrapperForNonAuditableButAnnotated() { - assertThat(factory.getBeanWrapperFor(Optional.of(new AnnotatedUser()))).hasValueSatisfying(it -> assertThat(it).isInstanceOf(ReflectionAuditingBeanWrapper.class)); + assertThat(factory.getBeanWrapperFor(new AnnotatedUser())) + .hasValueSatisfying(it -> assertThat(it).isInstanceOf(ReflectionAuditingBeanWrapper.class)); } @Test public void returnsEmptyForNonAuditableType() { - assertThat(factory.getBeanWrapperFor(Optional.of(new Object()))).isNotPresent(); + assertThat(factory.getBeanWrapperFor(new Object())).isNotPresent(); } @Test // DATACMNS-643 @@ -64,7 +66,7 @@ public class DefaultAuditableBeanWrapperFactoryUnitTests { Jsr310ThreeTenBpAuditedUser user = new Jsr310ThreeTenBpAuditedUser(); Instant instant = Instant.now(); - Optional wrapper = factory.getBeanWrapperFor(Optional.of(user)); + Optional wrapper = factory.getBeanWrapperFor(user); assertThat(wrapper).hasValueSatisfying(it -> { @@ -83,7 +85,7 @@ public class DefaultAuditableBeanWrapperFactoryUnitTests { Jsr310ThreeTenBpAuditedUser user = new Jsr310ThreeTenBpAuditedUser(); ZonedDateTime zonedDateTime = ZonedDateTime.now(); - Optional wrapper = factory.getBeanWrapperFor(Optional.of(user)); + Optional wrapper = factory.getBeanWrapperFor(user); assertThat(wrapper).hasValueSatisfying(it -> it.setLastModifiedDate(Optional.of(zonedDateTime))); } diff --git a/src/test/java/org/springframework/data/auditing/IsNewAwareAuditingHandlerUnitTests.java b/src/test/java/org/springframework/data/auditing/IsNewAwareAuditingHandlerUnitTests.java index 32c6d1b9c..d154fc5a1 100755 --- a/src/test/java/org/springframework/data/auditing/IsNewAwareAuditingHandlerUnitTests.java +++ b/src/test/java/org/springframework/data/auditing/IsNewAwareAuditingHandlerUnitTests.java @@ -15,8 +15,8 @@ */ package org.springframework.data.auditing; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; import java.util.Collections; import java.util.Optional; @@ -25,9 +25,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; - import org.springframework.data.annotation.Id; -import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.context.PersistentEntities; import org.springframework.data.mapping.context.SampleMappingContext; @@ -57,7 +55,7 @@ public class IsNewAwareAuditingHandlerUnitTests extends AuditingHandlerUnitTests AuditedUser user = new AuditedUser(); - getHandler().markAudited(Optional.of(user)); + getHandler().markAudited(user); assertThat(user.createdDate).isNotNull(); assertThat(user.modifiedDate).isNotNull(); @@ -69,7 +67,7 @@ public class IsNewAwareAuditingHandlerUnitTests extends AuditingHandlerUnitTests AuditedUser user = new AuditedUser(); user.id = 1L; - getHandler().markAudited(Optional.of(user)); + getHandler().markAudited(user); assertThat(user.createdDate).isNull(); assertThat(user.modifiedDate).isNotNull(); diff --git a/src/test/java/org/springframework/data/mapping/context/MappingContextIsNewStrategyFactoryUnitTests.java b/src/test/java/org/springframework/data/mapping/context/MappingContextIsNewStrategyFactoryUnitTests.java index 6fe1408c3..c4b9cb9f3 100755 --- a/src/test/java/org/springframework/data/mapping/context/MappingContextIsNewStrategyFactoryUnitTests.java +++ b/src/test/java/org/springframework/data/mapping/context/MappingContextIsNewStrategyFactoryUnitTests.java @@ -20,7 +20,6 @@ import static org.assertj.core.api.Assertions.*; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; -import java.util.Optional; import org.junit.Before; import org.junit.Test; @@ -54,16 +53,16 @@ public class MappingContextIsNewStrategyFactoryUnitTests { IsNewStrategy strategy = factory.getIsNewStrategy(VersionedEntity.class); - Optional entity = Optional.of(new VersionedEntity()); + VersionedEntity entity = new VersionedEntity(); assertThat(strategy.isNew(entity)).isTrue(); - entity.get().id = 1L; + entity.id = 1L; assertThat(strategy.isNew(entity)).isTrue(); - entity.get().version = 0L; + entity.version = 0L; assertThat(strategy.isNew(entity)).isTrue(); - entity.get().version = 1L; + entity.version = 1L; assertThat(strategy.isNew(entity)).isFalse(); } @@ -72,13 +71,13 @@ public class MappingContextIsNewStrategyFactoryUnitTests { IsNewStrategy strategy = factory.getIsNewStrategy(VersionedEntity.class); - Optional entity = Optional.of(new VersionedEntity()); + VersionedEntity entity = new VersionedEntity(); assertThat(strategy.isNew(entity)).isTrue(); - entity.get().id = 1L; + entity.id = 1L; assertThat(strategy.isNew(entity)).isTrue(); - entity.get().version = 1L; + entity.version = 1L; assertThat(strategy.isNew(entity)).isFalse(); } @@ -87,10 +86,10 @@ public class MappingContextIsNewStrategyFactoryUnitTests { IsNewStrategy strategy = factory.getIsNewStrategy(Entity.class); - Optional entity = Optional.of(new Entity()); + Entity entity = new Entity(); assertThat(strategy.isNew(entity)).isTrue(); - entity.get().id = 1L; + entity.id = 1L; assertThat(strategy.isNew(entity)).isFalse(); } diff --git a/src/test/java/org/springframework/data/support/PersistableIsNewStrategyUnitTests.java b/src/test/java/org/springframework/data/support/PersistableIsNewStrategyUnitTests.java index ec8da03c0..1857bcadd 100755 --- a/src/test/java/org/springframework/data/support/PersistableIsNewStrategyUnitTests.java +++ b/src/test/java/org/springframework/data/support/PersistableIsNewStrategyUnitTests.java @@ -17,8 +17,6 @@ package org.springframework.data.support; import static org.assertj.core.api.Assertions.*; -import java.util.Optional; - import org.junit.Test; import org.springframework.data.domain.Persistable; @@ -34,16 +32,16 @@ public class PersistableIsNewStrategyUnitTests { @Test public void invokesPersistableIsNewForTest() { - Optional entity = Optional.of(new PersistableEntity()); + PersistableEntity entity = new PersistableEntity(); assertThat(strategy.isNew(entity)).isTrue(); - entity.get().isNew = false; + entity.isNew = false; assertThat(strategy.isNew(entity)).isFalse(); } @Test(expected = IllegalArgumentException.class) public void rejectsNonPersistableEntity() { - strategy.isNew(Optional.of(new Object())); + strategy.isNew(new Object()); } @SuppressWarnings("serial")