Migrate code to Java 17 style.
Use var instead of explicit local types where applicable. Use pattern variable instead instanceof and cast. Prefer loops and nullable types over Stream and Optional. Convert classes to records where applicable. See #2465
This commit is contained in:
committed by
Jens Schauder
parent
d4036ec0a9
commit
c735b58607
@@ -101,7 +101,7 @@ final class AnnotationAuditingMetadata {
|
||||
return;
|
||||
}
|
||||
|
||||
Class<?> type = it.getType();
|
||||
var type = it.getType();
|
||||
|
||||
if (Jsr310Converters.supports(type)) {
|
||||
return;
|
||||
|
||||
@@ -107,7 +107,7 @@ public abstract class AuditingHandlerSupport {
|
||||
* @param auditor can be {@literal null}.
|
||||
* @param source must not be {@literal null}.
|
||||
*/
|
||||
<T> T markCreated(Auditor auditor, T source) {
|
||||
<T> T markCreated(Auditor<?> auditor, T source) {
|
||||
|
||||
Assert.notNull(source, "Source entity must not be null!");
|
||||
|
||||
@@ -120,16 +120,16 @@ public abstract class AuditingHandlerSupport {
|
||||
* @param auditor
|
||||
* @param source
|
||||
*/
|
||||
<T> T markModified(Auditor auditor, T source) {
|
||||
<T> T markModified(Auditor<?> auditor, T source) {
|
||||
|
||||
Assert.notNull(source, "Source entity must not be null!");
|
||||
|
||||
return touch(auditor, source, false);
|
||||
}
|
||||
|
||||
private <T> T touch(Auditor auditor, T target, boolean isNew) {
|
||||
private <T> T touch(Auditor<?> auditor, T target, boolean isNew) {
|
||||
|
||||
Optional<AuditableBeanWrapper<T>> wrapper = factory.getBeanWrapperFor(target);
|
||||
var wrapper = factory.getBeanWrapperFor(target);
|
||||
|
||||
return wrapper.map(it -> {
|
||||
|
||||
@@ -157,7 +157,7 @@ public abstract class AuditingHandlerSupport {
|
||||
* @param isNew
|
||||
* @return
|
||||
*/
|
||||
private void touchAuditor(Auditor auditor, AuditableBeanWrapper<?> wrapper, boolean isNew) {
|
||||
private void touchAuditor(Auditor<?> auditor, AuditableBeanWrapper<?> wrapper, boolean isNew) {
|
||||
|
||||
if(!auditor.isPresent()) {
|
||||
return;
|
||||
@@ -185,7 +185,7 @@ public abstract class AuditingHandlerSupport {
|
||||
|
||||
Assert.notNull(wrapper, "AuditableBeanWrapper must not be null!");
|
||||
|
||||
Optional<TemporalAccessor> now = dateTimeProvider.getNow();
|
||||
var now = dateTimeProvider.getNow();
|
||||
|
||||
Assert.notNull(now, () -> String.format("Now must not be null! Returned by: %s!", dateTimeProvider.getClass()));
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ class Auditor<T> {
|
||||
if (o == null || getClass() != o.getClass())
|
||||
return false;
|
||||
|
||||
Auditor<?> auditor = (Auditor<?>) o;
|
||||
var auditor = (Auditor<?>) o;
|
||||
|
||||
return ObjectUtils.nullSafeEquals(value, auditor.value);
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ class DefaultAuditableBeanWrapperFactory implements AuditableBeanWrapperFactory
|
||||
|
||||
public DefaultAuditableBeanWrapperFactory() {
|
||||
|
||||
DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();
|
||||
var conversionService = new DefaultFormattingConversionService();
|
||||
|
||||
Jsr310Converters.getConvertersToRegister().forEach(conversionService::addConverter);
|
||||
|
||||
@@ -75,7 +75,7 @@ class DefaultAuditableBeanWrapperFactory implements AuditableBeanWrapperFactory
|
||||
return (AuditableBeanWrapper<T>) new AuditableInterfaceBeanWrapper(conversionService, (Auditable<Object, ?, TemporalAccessor>) it);
|
||||
}
|
||||
|
||||
AnnotationAuditingMetadata metadata = AnnotationAuditingMetadata.getMetadata(it.getClass());
|
||||
var metadata = AnnotationAuditingMetadata.getMetadata(it.getClass());
|
||||
|
||||
if (metadata.isAuditable()) {
|
||||
return new ReflectionAuditingBeanWrapper<T>(conversionService, it);
|
||||
@@ -215,7 +215,7 @@ class DefaultAuditableBeanWrapperFactory implements AuditableBeanWrapperFactory
|
||||
value.getClass(), targetType));
|
||||
}
|
||||
|
||||
Date date = conversionService.convert(value, Date.class);
|
||||
var date = conversionService.convert(value, Date.class);
|
||||
return conversionService.convert(date, targetType);
|
||||
}
|
||||
|
||||
@@ -317,7 +317,7 @@ class DefaultAuditableBeanWrapperFactory implements AuditableBeanWrapperFactory
|
||||
|
||||
return getAsTemporalAccessor(metadata.getLastModifiedDateField().map(field -> {
|
||||
|
||||
Object value = org.springframework.util.ReflectionUtils.getField(field, target);
|
||||
var value = org.springframework.util.ReflectionUtils.getField(field, target);
|
||||
return value instanceof Optional ? ((Optional<?>) value).orElse(null) : value;
|
||||
|
||||
}), TemporalAccessor.class);
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
package org.springframework.data.auditing;
|
||||
|
||||
import org.springframework.data.mapping.PersistentEntity;
|
||||
import org.springframework.data.mapping.PersistentProperty;
|
||||
import org.springframework.data.mapping.context.MappingContext;
|
||||
import org.springframework.data.mapping.context.PersistentEntities;
|
||||
import org.springframework.data.support.IsNewStrategy;
|
||||
@@ -62,7 +61,7 @@ public class IsNewAwareAuditingHandler extends AuditingHandler {
|
||||
return object;
|
||||
}
|
||||
|
||||
PersistentEntity<?, ? extends PersistentProperty<?>> entity = entities
|
||||
var entity = entities
|
||||
.getRequiredPersistentEntity(object.getClass());
|
||||
|
||||
return entity.isNew(object) ? markCreated(object) : markModified(object);
|
||||
|
||||
@@ -85,7 +85,7 @@ public class MappingAuditableBeanWrapperFactory extends DefaultAuditableBeanWrap
|
||||
|
||||
return entities.mapOnContext(it.getClass(), (context, entity) -> {
|
||||
|
||||
MappingAuditingMetadata metadata = metadataCache.computeIfAbsent(it.getClass(),
|
||||
var metadata = metadataCache.computeIfAbsent(it.getClass(),
|
||||
key -> new MappingAuditingMetadata(context, it.getClass()));
|
||||
|
||||
return Optional.<AuditableBeanWrapper<T>> ofNullable(metadata.isAuditable() //
|
||||
@@ -229,7 +229,7 @@ public class MappingAuditableBeanWrapperFactory extends DefaultAuditableBeanWrap
|
||||
@Override
|
||||
public Optional<TemporalAccessor> getLastModifiedDate() {
|
||||
|
||||
Optional<Object> firstValue = metadata.lastModifiedDatePaths.getFirst() //
|
||||
var firstValue = metadata.lastModifiedDatePaths.getFirst() //
|
||||
.map(accessor::getProperty);
|
||||
|
||||
return getAsTemporalAccessor(firstValue, TemporalAccessor.class);
|
||||
@@ -266,7 +266,7 @@ public class MappingAuditableBeanWrapperFactory extends DefaultAuditableBeanWrap
|
||||
|
||||
property.forEach(it -> {
|
||||
|
||||
Class<?> type = it.getRequiredLeafProperty().getType();
|
||||
var type = it.getRequiredLeafProperty().getType();
|
||||
|
||||
this.accessor.setProperty(it, getDateValueToSet(value, type, accessor.getBean()), OPTIONS);
|
||||
});
|
||||
|
||||
@@ -18,7 +18,6 @@ package org.springframework.data.auditing;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import org.springframework.data.mapping.PersistentEntity;
|
||||
import org.springframework.data.mapping.PersistentProperty;
|
||||
import org.springframework.data.mapping.context.MappingContext;
|
||||
import org.springframework.data.mapping.context.PersistentEntities;
|
||||
import org.springframework.data.support.IsNewStrategy;
|
||||
@@ -62,7 +61,7 @@ public class ReactiveIsNewAwareAuditingHandler extends ReactiveAuditingHandler {
|
||||
return Mono.just(object);
|
||||
}
|
||||
|
||||
PersistentEntity<?, ? extends PersistentProperty<?>> entity = entities
|
||||
var entity = entities
|
||||
.getRequiredPersistentEntity(object.getClass());
|
||||
|
||||
return entity.isNew(object) ? markCreated(object) : markModified(object);
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
package org.springframework.data.auditing.config;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.core.annotation.AnnotationAttributes;
|
||||
import org.springframework.core.type.AnnotationMetadata;
|
||||
@@ -47,7 +46,7 @@ public class AnnotationAuditingConfiguration implements AuditingConfiguration {
|
||||
Assert.notNull(metadata, "AnnotationMetadata must not be null!");
|
||||
Assert.notNull(annotation, "Annotation must not be null!");
|
||||
|
||||
Map<String, Object> attributesSource = metadata.getAnnotationAttributes(annotation.getName());
|
||||
var attributesSource = metadata.getAnnotationAttributes(annotation.getName());
|
||||
|
||||
if (attributesSource == null) {
|
||||
throw new IllegalArgumentException(String.format(MISSING_ANNOTATION_ATTRIBUTES, annotation, metadata));
|
||||
|
||||
@@ -60,7 +60,7 @@ public abstract class AuditingBeanDefinitionRegistrarSupport implements ImportBe
|
||||
Assert.notNull(annotationMetadata, "AnnotationMetadata must not be null!");
|
||||
Assert.notNull(registry, "BeanDefinitionRegistry must not be null!");
|
||||
|
||||
AbstractBeanDefinition ahbd = registerAuditHandlerBeanDefinition(registry, getConfiguration(annotationMetadata));
|
||||
var ahbd = registerAuditHandlerBeanDefinition(registry, getConfiguration(annotationMetadata));
|
||||
registerAuditListenerBeanDefinition(ahbd, registry);
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ public abstract class AuditingBeanDefinitionRegistrarSupport implements ImportBe
|
||||
Assert.notNull(registry, "BeanDefinitionRegistry must not be null!");
|
||||
Assert.notNull(configuration, "AuditingConfiguration must not be null!");
|
||||
|
||||
AbstractBeanDefinition ahbd = getAuditHandlerBeanDefinitionBuilder(configuration).getBeanDefinition();
|
||||
var ahbd = getAuditHandlerBeanDefinitionBuilder(configuration).getBeanDefinition();
|
||||
registry.registerBeanDefinition(getAuditingHandlerBeanName(), ahbd);
|
||||
return ahbd;
|
||||
}
|
||||
@@ -178,10 +178,10 @@ public abstract class AuditingBeanDefinitionRegistrarSupport implements ImportBe
|
||||
|
||||
private BeanDefinition createLazyInitTargetSourceBeanDefinition(String auditorAwareRef) {
|
||||
|
||||
BeanDefinitionBuilder targetSourceBuilder = rootBeanDefinition(LazyInitTargetSource.class);
|
||||
var targetSourceBuilder = rootBeanDefinition(LazyInitTargetSource.class);
|
||||
targetSourceBuilder.addPropertyValue("targetBeanName", auditorAwareRef);
|
||||
|
||||
BeanDefinitionBuilder builder = rootBeanDefinition(ProxyFactoryBean.class);
|
||||
var builder = rootBeanDefinition(ProxyFactoryBean.class);
|
||||
builder.addPropertyValue("targetSource", targetSourceBuilder.getBeanDefinition());
|
||||
|
||||
return builder.getBeanDefinition();
|
||||
|
||||
@@ -95,11 +95,11 @@ public class AuditingHandlerBeanDefinitionParser extends AbstractSingleBeanDefin
|
||||
@Override
|
||||
protected void doParse(Element element, BeanDefinitionBuilder builder) {
|
||||
|
||||
final BeanDefinitionBuilder persistentEntities = rootBeanDefinition(PersistentEntitiesFactoryBean.class);
|
||||
final var persistentEntities = rootBeanDefinition(PersistentEntitiesFactoryBean.class);
|
||||
persistentEntities.addConstructorArgReference(mappingContextBeanName);
|
||||
builder.addConstructorArgValue(persistentEntities.getBeanDefinition());
|
||||
|
||||
String auditorAwareRef = element.getAttribute(AUDITOR_AWARE_REF);
|
||||
var auditorAwareRef = element.getAttribute(AUDITOR_AWARE_REF);
|
||||
|
||||
if (StringUtils.hasText(auditorAwareRef)) {
|
||||
builder.addPropertyValue("auditorAware", createLazyInitTargetSourceBeanDefinition(auditorAwareRef));
|
||||
@@ -123,10 +123,10 @@ public class AuditingHandlerBeanDefinitionParser extends AbstractSingleBeanDefin
|
||||
|
||||
private BeanDefinition createLazyInitTargetSourceBeanDefinition(String auditorAwareRef) {
|
||||
|
||||
BeanDefinitionBuilder targetSourceBuilder = rootBeanDefinition(LazyInitTargetSource.class);
|
||||
var targetSourceBuilder = rootBeanDefinition(LazyInitTargetSource.class);
|
||||
targetSourceBuilder.addPropertyValue("targetBeanName", auditorAwareRef);
|
||||
|
||||
BeanDefinitionBuilder builder = rootBeanDefinition(ProxyFactoryBean.class);
|
||||
var builder = rootBeanDefinition(ProxyFactoryBean.class);
|
||||
builder.addPropertyValue("targetSource", targetSourceBuilder.getBeanDefinition());
|
||||
|
||||
return builder.getBeanDefinition();
|
||||
|
||||
Reference in New Issue
Block a user