@@ -94,10 +94,9 @@ public AuditableInterfaceBeanWrapper(Auditable<Object, ?, TemporalAccessor> audi
9494 * @see org.springframework.data.auditing.AuditableBeanWrapper#setCreatedBy(java.util.Optional)
9595 */
9696 @ Override
97- public Optional <? extends Object > setCreatedBy (Optional <? extends Object > value ) {
97+ public Object setCreatedBy (Object value ) {
9898
9999 auditable .setCreatedBy (value );
100-
101100 return value ;
102101 }
103102
@@ -106,9 +105,10 @@ public Optional<? extends Object> setCreatedBy(Optional<? extends Object> value)
106105 * @see org.springframework.data.auditing.AuditableBeanWrapper#setCreatedDate(java.util.Optional)
107106 */
108107 @ Override
109- public Optional < TemporalAccessor > setCreatedDate (Optional < TemporalAccessor > value ) {
108+ public TemporalAccessor setCreatedDate (TemporalAccessor value ) {
110109
111- auditable .setCreatedDate (getAsTemporalAccessor (value , type ));
110+ auditable .setCreatedDate (
111+ getAsTemporalAccessor (Optional .of (value ), type ).orElseThrow (() -> new IllegalStateException ()));
112112
113113 return value ;
114114 }
@@ -118,7 +118,8 @@ public Optional<TemporalAccessor> setCreatedDate(Optional<TemporalAccessor> valu
118118 * @see org.springframework.data.auditing.DefaultAuditableBeanWrapperFactory.AuditableInterfaceBeanWrapper#setLastModifiedBy(java.util.Optional)
119119 */
120120 @ Override
121- public Optional <? extends Object > setLastModifiedBy (Optional <? extends Object > value ) {
121+ public Object setLastModifiedBy (Object value ) {
122+
122123 auditable .setLastModifiedBy (value );
123124
124125 return value ;
@@ -138,9 +139,10 @@ public Optional<TemporalAccessor> getLastModifiedDate() {
138139 * @see org.springframework.data.auditing.AuditableBeanWrapper#setLastModifiedDate(java.util.Optional)
139140 */
140141 @ Override
141- public Optional < TemporalAccessor > setLastModifiedDate (Optional < TemporalAccessor > value ) {
142+ public TemporalAccessor setLastModifiedDate (TemporalAccessor value ) {
142143
143- auditable .setLastModifiedDate (getAsTemporalAccessor (value , type ));
144+ auditable .setLastModifiedDate (
145+ getAsTemporalAccessor (Optional .of (value ), type ).orElseThrow (() -> new IllegalStateException ()));
144146
145147 return value ;
146148 }
@@ -179,33 +181,30 @@ public DateConvertingAuditableBeanWrapper() {
179181 * @param source must not be {@literal null}.
180182 * @return
181183 */
182- protected Optional <Object > getDateValueToSet (Optional <TemporalAccessor > value , Class <?> targetType , Object source ) {
183-
184- return value .map (it -> {
184+ protected Object getDateValueToSet (TemporalAccessor value , Class <?> targetType , Object source ) {
185185
186- if (TemporalAccessor .class .equals (targetType )) {
187- return it ;
188- }
189-
190- if (conversionService .canConvert (it .getClass (), targetType )) {
191- return conversionService .convert (it , targetType );
192- }
186+ if (TemporalAccessor .class .equals (targetType )) {
187+ return value ;
188+ }
193189
194- if (conversionService .canConvert (Date .class , targetType )) {
190+ if (conversionService .canConvert (value .getClass (), targetType )) {
191+ return conversionService .convert (value , targetType );
192+ }
195193
196- if (!conversionService .canConvert (it .getClass (), Date .class )) {
197- throw new IllegalArgumentException (
198- String .format ("Cannot convert date type for member %s! From %s to java.util.Date to %s." , source ,
199- it .getClass (), targetType ));
200- }
194+ if (conversionService .canConvert (Date .class , targetType )) {
201195
202- Date date = conversionService .convert (it , Date .class );
203- return conversionService .convert (date , targetType );
196+ if (!conversionService .canConvert (value .getClass (), Date .class )) {
197+ throw new IllegalArgumentException (
198+ String .format ("Cannot convert date type for member %s! From %s to java.util.Date to %s." , source ,
199+ value .getClass (), targetType ));
204200 }
205201
206- throw new IllegalArgumentException (String .format ("Invalid date type for member %s! Supported types are %s." ,
207- source , AnnotationAuditingMetadata .SUPPORTED_DATE_TYPES ));
208- });
202+ Date date = conversionService .convert (value , Date .class );
203+ return conversionService .convert (date , targetType );
204+ }
205+
206+ throw new IllegalArgumentException (String .format ("Invalid date type for member %s! Supported types are %s." ,
207+ source , AnnotationAuditingMetadata .SUPPORTED_DATE_TYPES ));
209208 }
210209
211210 /**
@@ -215,8 +214,8 @@ protected Optional<Object> getDateValueToSet(Optional<TemporalAccessor> value, C
215214 * @return
216215 */
217216 @ SuppressWarnings ("unchecked" )
218- protected <T > Optional <T > getAsTemporalAccessor (Optional <?> source , Class < T > target ) {
219-
217+ protected <T extends TemporalAccessor > Optional <T > getAsTemporalAccessor (Optional <? extends Object > source ,
218+ Class <? extends T > target ) {
220219 return source .map (it -> target .isInstance (it ) ? (T ) it : conversionService .convert (it , target ));
221220 }
222221 }
@@ -249,7 +248,7 @@ public ReflectionAuditingBeanWrapper(Object target) {
249248 * @see org.springframework.data.auditing.AuditableBeanWrapper#setCreatedBy(java.util.Optional)
250249 */
251250 @ Override
252- public Optional <? extends Object > setCreatedBy (Optional <? extends Object > value ) {
251+ public Object setCreatedBy (Object value ) {
253252 return setField (metadata .getCreatedByField (), value );
254253 }
255254
@@ -258,7 +257,8 @@ public Optional<? extends Object> setCreatedBy(Optional<? extends Object> value)
258257 * @see org.springframework.data.auditing.AuditableBeanWrapper#setCreatedDate(java.util.Optional)
259258 */
260259 @ Override
261- public Optional <TemporalAccessor > setCreatedDate (Optional <TemporalAccessor > value ) {
260+ public TemporalAccessor setCreatedDate (TemporalAccessor value ) {
261+
262262 return setDateField (metadata .getCreatedDateField (), value );
263263 }
264264
@@ -267,7 +267,7 @@ public Optional<TemporalAccessor> setCreatedDate(Optional<TemporalAccessor> valu
267267 * @see org.springframework.data.auditing.AuditableBeanWrapper#setLastModifiedBy(java.util.Optional)
268268 */
269269 @ Override
270- public Optional <? extends Object > setLastModifiedBy (Optional <? extends Object > value ) {
270+ public Object setLastModifiedBy (Object value ) {
271271 return setField (metadata .getLastModifiedByField (), value );
272272 }
273273
@@ -291,7 +291,7 @@ public Optional<TemporalAccessor> getLastModifiedDate() {
291291 * @see org.springframework.data.auditing.AuditableBeanWrapper#setLastModifiedDate(java.util.Optional)
292292 */
293293 @ Override
294- public Optional < TemporalAccessor > setLastModifiedDate (Optional < TemporalAccessor > value ) {
294+ public TemporalAccessor setLastModifiedDate (TemporalAccessor value ) {
295295 return setDateField (metadata .getLastModifiedDateField (), value );
296296 }
297297
@@ -301,10 +301,9 @@ public Optional<TemporalAccessor> setLastModifiedDate(Optional<TemporalAccessor>
301301 * @param field
302302 * @param value
303303 */
304- private Optional <? extends Object > setField (Optional <Field > field , Optional <? extends Object > value ) {
304+ private < T > T setField (Optional <Field > field , T value ) {
305305
306- field .ifPresent (it -> ReflectionUtils .setField (it , target ,
307- Optional .class .isAssignableFrom (it .getType ()) ? value : value .orElse (null )));
306+ field .ifPresent (it -> ReflectionUtils .setField (it , target , value ));
308307
309308 return value ;
310309 }
@@ -315,13 +314,9 @@ private Optional<? extends Object> setField(Optional<Field> field, Optional<? ex
315314 * @param field
316315 * @param value
317316 */
318- private Optional < TemporalAccessor > setDateField (Optional <Field > field , Optional < TemporalAccessor > value ) {
317+ private TemporalAccessor setDateField (Optional <Field > field , TemporalAccessor value ) {
319318
320- field .ifPresent (it -> {
321- Optional <Object > toSet = getDateValueToSet (value , it .getType (), it );
322- ReflectionUtils .setField (it , target ,
323- Optional .class .isAssignableFrom (it .getType ()) ? toSet : toSet .orElse (null ));
324- });
319+ field .ifPresent (it -> ReflectionUtils .setField (it , target , getDateValueToSet (value , it .getType (), it )));
325320
326321 return value ;
327322 }
0 commit comments