Browse Source

Polishing

pull/35968/head
Juergen Hoeller 2 weeks ago
parent
commit
07c0213f20
  1. 6
      spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java
  2. 6
      spring-context/src/main/java/org/springframework/cache/config/CacheAdviceParser.java
  3. 2
      spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java
  4. 2
      spring-core/src/main/java/org/springframework/cglib/core/internal/CustomizerRegistry.java
  5. 4
      spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java
  6. 3
      spring-core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java
  7. 2
      spring-core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java
  8. 4
      spring-core/src/main/java/org/springframework/core/io/support/SpringFactoriesLoader.java
  9. 2
      spring-core/src/main/java/org/springframework/util/xml/SimpleNamespaceContext.java
  10. 2
      spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java
  11. 2
      spring-jms/src/main/java/org/springframework/jms/connection/JmsResourceHolder.java
  12. 4
      spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaders.java
  13. 2
      spring-messaging/src/main/java/org/springframework/messaging/support/NativeMessageHeaderAccessor.java
  14. 2
      spring-test/src/main/java/org/springframework/test/context/cache/DefaultContextCache.java
  15. 2
      spring-web/src/main/java/org/springframework/http/codec/json/Jackson2CodecSupport.java
  16. 2
      spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java
  17. 6
      spring-web/src/main/java/org/springframework/http/server/ServletServerHttpRequest.java
  18. 1
      spring-web/src/main/java/org/springframework/http/server/reactive/ServletServerHttpRequest.java
  19. 4
      spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ControllerMethodResolver.java
  20. 3
      spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/UrlFilenameViewController.java
  21. 24
      spring-websocket/src/main/java/org/springframework/web/socket/server/standard/SpringConfigurator.java

6
spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java

@ -582,7 +582,7 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements
public void registerContainedBean(String containedBeanName, String containingBeanName) { public void registerContainedBean(String containedBeanName, String containingBeanName) {
synchronized (this.containedBeanMap) { synchronized (this.containedBeanMap) {
Set<String> containedBeans = Set<String> containedBeans =
this.containedBeanMap.computeIfAbsent(containingBeanName, k -> new LinkedHashSet<>(8)); this.containedBeanMap.computeIfAbsent(containingBeanName, key -> new LinkedHashSet<>(8));
if (!containedBeans.add(containedBeanName)) { if (!containedBeans.add(containedBeanName)) {
return; return;
} }
@ -601,7 +601,7 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements
synchronized (this.dependentBeanMap) { synchronized (this.dependentBeanMap) {
Set<String> dependentBeans = Set<String> dependentBeans =
this.dependentBeanMap.computeIfAbsent(canonicalName, k -> new LinkedHashSet<>(8)); this.dependentBeanMap.computeIfAbsent(canonicalName, key -> new LinkedHashSet<>(8));
if (!dependentBeans.add(dependentBeanName)) { if (!dependentBeans.add(dependentBeanName)) {
return; return;
} }
@ -609,7 +609,7 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements
synchronized (this.dependenciesForBeanMap) { synchronized (this.dependenciesForBeanMap) {
Set<String> dependenciesForBean = Set<String> dependenciesForBean =
this.dependenciesForBeanMap.computeIfAbsent(dependentBeanName, k -> new LinkedHashSet<>(8)); this.dependenciesForBeanMap.computeIfAbsent(dependentBeanName, key -> new LinkedHashSet<>(8));
dependenciesForBean.add(canonicalName); dependenciesForBean.add(canonicalName);
} }
} }

6
spring-context/src/main/java/org/springframework/cache/config/CacheAdviceParser.java vendored

@ -113,7 +113,7 @@ class CacheAdviceParser extends AbstractSingleBeanDefinitionParser {
builder.setUnless(getAttributeValue(opElement, "unless", "")); builder.setUnless(getAttributeValue(opElement, "unless", ""));
builder.setSync(Boolean.parseBoolean(getAttributeValue(opElement, "sync", "false"))); builder.setSync(Boolean.parseBoolean(getAttributeValue(opElement, "sync", "false")));
Collection<CacheOperation> col = cacheOpMap.computeIfAbsent(nameHolder, k -> new ArrayList<>(2)); Collection<CacheOperation> col = cacheOpMap.computeIfAbsent(nameHolder, key -> new ArrayList<>(2));
col.add(builder.build()); col.add(builder.build());
} }
@ -136,7 +136,7 @@ class CacheAdviceParser extends AbstractSingleBeanDefinitionParser {
builder.setBeforeInvocation(Boolean.parseBoolean(after.trim())); builder.setBeforeInvocation(Boolean.parseBoolean(after.trim()));
} }
Collection<CacheOperation> col = cacheOpMap.computeIfAbsent(nameHolder, k -> new ArrayList<>(2)); Collection<CacheOperation> col = cacheOpMap.computeIfAbsent(nameHolder, key -> new ArrayList<>(2));
col.add(builder.build()); col.add(builder.build());
} }
@ -150,7 +150,7 @@ class CacheAdviceParser extends AbstractSingleBeanDefinitionParser {
parserContext.getReaderContext(), new CachePutOperation.Builder()); parserContext.getReaderContext(), new CachePutOperation.Builder());
builder.setUnless(getAttributeValue(opElement, "unless", "")); builder.setUnless(getAttributeValue(opElement, "unless", ""));
Collection<CacheOperation> col = cacheOpMap.computeIfAbsent(nameHolder, k -> new ArrayList<>(2)); Collection<CacheOperation> col = cacheOpMap.computeIfAbsent(nameHolder, key -> new ArrayList<>(2));
col.add(builder.build()); col.add(builder.build());
} }

2
spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java

@ -377,7 +377,7 @@ public class ScheduledAnnotationBeanPostProcessor
try { try {
task = ScheduledAnnotationReactiveSupport.createSubscriptionRunnable(method, bean, scheduled, task = ScheduledAnnotationReactiveSupport.createSubscriptionRunnable(method, bean, scheduled,
this.registrar::getObservationRegistry, this.registrar::getObservationRegistry,
this.reactiveSubscriptions.computeIfAbsent(bean, k -> new CopyOnWriteArrayList<>())); this.reactiveSubscriptions.computeIfAbsent(bean, key -> new CopyOnWriteArrayList<>()));
} }
catch (IllegalArgumentException ex) { catch (IllegalArgumentException ex) {
throw new IllegalStateException("Could not create recurring task for @Scheduled method '" + throw new IllegalStateException("Could not create recurring task for @Scheduled method '" +

2
spring-core/src/main/java/org/springframework/cglib/core/internal/CustomizerRegistry.java

@ -22,7 +22,7 @@ public class CustomizerRegistry {
Class<? extends KeyFactoryCustomizer> klass = customizer.getClass(); Class<? extends KeyFactoryCustomizer> klass = customizer.getClass();
for (Class type : customizerTypes) { for (Class type : customizerTypes) {
if (type.isAssignableFrom(klass)) { if (type.isAssignableFrom(klass)) {
List<KeyFactoryCustomizer> list = customizers.computeIfAbsent(type, k -> new ArrayList<>()); List<KeyFactoryCustomizer> list = customizers.computeIfAbsent(type, key -> new ArrayList<>());
list.add(customizer); list.add(customizer);
} }
} }

4
spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java

@ -88,9 +88,7 @@ final class AnnotationTypeMapping {
this.root = (source != null ? source.getRoot() : this); this.root = (source != null ? source.getRoot() : this);
this.distance = (source == null ? 0 : source.getDistance() + 1); this.distance = (source == null ? 0 : source.getDistance() + 1);
this.annotationType = annotationType; this.annotationType = annotationType;
this.metaTypes = merge( this.metaTypes = merge((source != null ? source.getMetaTypes() : null), annotationType);
source != null ? source.getMetaTypes() : null,
annotationType);
this.annotation = annotation; this.annotation = annotation;
this.attributes = AttributeMethods.forAnnotationType(annotationType); this.attributes = AttributeMethods.forAnnotationType(annotationType);
this.mirrorSets = new MirrorSets(); this.mirrorSets = new MirrorSets();

3
spring-core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java

@ -885,8 +885,7 @@ public abstract class AnnotationUtils {
private static Map<String, DefaultValueHolder> getDefaultValues( private static Map<String, DefaultValueHolder> getDefaultValues(
Class<? extends Annotation> annotationType) { Class<? extends Annotation> annotationType) {
return defaultValuesCache.computeIfAbsent(annotationType, return defaultValuesCache.computeIfAbsent(annotationType, AnnotationUtils::computeDefaultValues);
AnnotationUtils::computeDefaultValues);
} }
private static Map<String, DefaultValueHolder> computeDefaultValues( private static Map<String, DefaultValueHolder> computeDefaultValues(

2
spring-core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java

@ -481,7 +481,7 @@ public class GenericConversionService implements ConfigurableConversionService {
} }
private ConvertersForPair getMatchableConverters(ConvertiblePair convertiblePair) { private ConvertersForPair getMatchableConverters(ConvertiblePair convertiblePair) {
return this.converters.computeIfAbsent(convertiblePair, k -> new ConvertersForPair()); return this.converters.computeIfAbsent(convertiblePair, key -> new ConvertersForPair());
} }
public void remove(Class<?> sourceType, Class<?> targetType) { public void remove(Class<?> sourceType, Class<?> targetType) {

4
spring-core/src/main/java/org/springframework/core/io/support/SpringFactoriesLoader.java

@ -321,8 +321,8 @@ public class SpringFactoriesLoader {
SpringFactoriesLoader.class.getClassLoader()); SpringFactoriesLoader.class.getClassLoader());
Map<String, Factories> factoriesCache = cache.computeIfAbsent( Map<String, Factories> factoriesCache = cache.computeIfAbsent(
resourceClassLoader, key -> new ConcurrentReferenceHashMap<>()); resourceClassLoader, key -> new ConcurrentReferenceHashMap<>());
Factories factories = factoriesCache.computeIfAbsent(resourceLocation, key -> Factories factories = factoriesCache.computeIfAbsent(resourceLocation,
new Factories(loadFactoriesResource(resourceClassLoader, resourceLocation))); key -> new Factories(loadFactoriesResource(resourceClassLoader, resourceLocation)));
return new SpringFactoriesLoader(classLoader, factories.byType()); return new SpringFactoriesLoader(classLoader, factories.byType());
} }

2
spring-core/src/main/java/org/springframework/util/xml/SimpleNamespaceContext.java

@ -125,7 +125,7 @@ public class SimpleNamespaceContext implements NamespaceContext {
else { else {
this.prefixToNamespaceUri.put(prefix, namespaceUri); this.prefixToNamespaceUri.put(prefix, namespaceUri);
Set<String> prefixes = Set<String> prefixes =
this.namespaceUriToPrefixes.computeIfAbsent(namespaceUri, k -> new LinkedHashSet<>()); this.namespaceUriToPrefixes.computeIfAbsent(namespaceUri, key -> new LinkedHashSet<>());
prefixes.add(prefix); prefixes.add(prefix);
} }
} }

2
spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java

@ -245,7 +245,7 @@ public class CachingConnectionFactory extends SingleConnectionFactory {
return null; return null;
} }
Deque<Session> sessionList = this.cachedSessions.computeIfAbsent(mode, k -> new ArrayDeque<>()); Deque<Session> sessionList = this.cachedSessions.computeIfAbsent(mode, key -> new ArrayDeque<>());
Session session = null; Session session = null;
synchronized (sessionList) { synchronized (sessionList) {
if (!sessionList.isEmpty()) { if (!sessionList.isEmpty()) {

2
spring-jms/src/main/java/org/springframework/jms/connection/JmsResourceHolder.java

@ -155,7 +155,7 @@ public class JmsResourceHolder extends ResourceHolderSupport {
this.sessions.add(session); this.sessions.add(session);
if (connection != null) { if (connection != null) {
Deque<Session> sessions = Deque<Session> sessions =
this.sessionsPerConnection.computeIfAbsent(connection, k -> new ArrayDeque<>()); this.sessionsPerConnection.computeIfAbsent(connection, key -> new ArrayDeque<>());
sessions.add(session); sessions.add(session);
} }
} }

4
spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaders.java

@ -434,13 +434,13 @@ public class StompHeaders implements MultiValueMap<String, String>, Serializable
*/ */
@Override @Override
public void add(String headerName, @Nullable String headerValue) { public void add(String headerName, @Nullable String headerValue) {
List<String> headerValues = this.headers.computeIfAbsent(headerName, k -> new ArrayList<>(1)); List<String> headerValues = this.headers.computeIfAbsent(headerName, key -> new ArrayList<>(1));
headerValues.add(headerValue); headerValues.add(headerValue);
} }
@Override @Override
public void addAll(String headerName, List<? extends String> headerValues) { public void addAll(String headerName, List<? extends String> headerValues) {
List<String> currentValues = this.headers.computeIfAbsent(headerName, k -> new ArrayList<>(1)); List<String> currentValues = this.headers.computeIfAbsent(headerName, key -> new ArrayList<>(1));
currentValues.addAll(headerValues); currentValues.addAll(headerValues);
} }

2
spring-messaging/src/main/java/org/springframework/messaging/support/NativeMessageHeaderAccessor.java

@ -247,7 +247,7 @@ public class NativeMessageHeaderAccessor extends MessageHeaderAccessor {
nativeHeaders = new LinkedMultiValueMap<>(3); nativeHeaders = new LinkedMultiValueMap<>(3);
setHeader(NATIVE_HEADERS, nativeHeaders); setHeader(NATIVE_HEADERS, nativeHeaders);
} }
List<String> values = nativeHeaders.computeIfAbsent(name, k -> new ArrayList<>(1)); List<String> values = nativeHeaders.computeIfAbsent(name, key -> new ArrayList<>(1));
values.add(value); values.add(value);
setModified(true); setModified(true);
} }

2
spring-test/src/main/java/org/springframework/test/context/cache/DefaultContextCache.java vendored

@ -236,7 +236,7 @@ public class DefaultContextCache implements ContextCache {
} }
private Set<Class<?>> getActiveTestClasses(MergedContextConfiguration mergedConfig) { private Set<Class<?>> getActiveTestClasses(MergedContextConfiguration mergedConfig) {
return this.contextUsageMap.computeIfAbsent(mergedConfig, mcc -> new HashSet<>()); return this.contextUsageMap.computeIfAbsent(mergedConfig, key -> new HashSet<>());
} }
@Override @Override

2
spring-web/src/main/java/org/springframework/http/codec/json/Jackson2CodecSupport.java

@ -141,7 +141,7 @@ public abstract class Jackson2CodecSupport {
this.objectMapperRegistrations = new LinkedHashMap<>(); this.objectMapperRegistrations = new LinkedHashMap<>();
} }
Map<MimeType, ObjectMapper> registrations = Map<MimeType, ObjectMapper> registrations =
this.objectMapperRegistrations.computeIfAbsent(clazz, c -> new LinkedHashMap<>()); this.objectMapperRegistrations.computeIfAbsent(clazz, key -> new LinkedHashMap<>());
registrar.accept(registrations); registrar.accept(registrations);
} }

2
spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java

@ -174,7 +174,7 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
this.objectMapperRegistrations = new LinkedHashMap<>(); this.objectMapperRegistrations = new LinkedHashMap<>();
} }
Map<MediaType, ObjectMapper> registrations = Map<MediaType, ObjectMapper> registrations =
this.objectMapperRegistrations.computeIfAbsent(clazz, c -> new LinkedHashMap<>()); this.objectMapperRegistrations.computeIfAbsent(clazz, key -> new LinkedHashMap<>());
registrar.accept(registrations); registrar.accept(registrations);
} }

6
spring-web/src/main/java/org/springframework/http/server/ServletServerHttpRequest.java

@ -73,7 +73,6 @@ public class ServletServerHttpRequest implements ServerHttpRequest {
private @Nullable Map<String, Object> attributes; private @Nullable Map<String, Object> attributes;
private @Nullable ServerHttpAsyncRequestControl asyncRequestControl; private @Nullable ServerHttpAsyncRequestControl asyncRequestControl;
@ -377,7 +376,6 @@ public class ServletServerHttpRequest implements ServerHttpRequest {
public Iterator<String> iterator() { public Iterator<String> iterator() {
return servletRequest.getAttributeNames().asIterator(); return servletRequest.getAttributeNames().asIterator();
} }
@Override @Override
public int size() { public int size() {
return AttributesMap.this.size(); return AttributesMap.this.size();
@ -401,7 +399,6 @@ public class ServletServerHttpRequest implements ServerHttpRequest {
public boolean hasNext() { public boolean hasNext() {
return e.hasMoreElements(); return e.hasMoreElements();
} }
@Override @Override
public Object next() { public Object next() {
String name = e.nextElement(); String name = e.nextElement();
@ -409,7 +406,6 @@ public class ServletServerHttpRequest implements ServerHttpRequest {
} }
}; };
} }
@Override @Override
public int size() { public int size() {
return AttributesMap.this.size(); return AttributesMap.this.size();
@ -433,7 +429,6 @@ public class ServletServerHttpRequest implements ServerHttpRequest {
public boolean hasNext() { public boolean hasNext() {
return e.hasMoreElements(); return e.hasMoreElements();
} }
@Override @Override
public Entry<String, Object> next() { public Entry<String, Object> next() {
String name = e.nextElement(); String name = e.nextElement();
@ -442,7 +437,6 @@ public class ServletServerHttpRequest implements ServerHttpRequest {
} }
}; };
} }
@Override @Override
public int size() { public int size() {
return AttributesMap.this.size(); return AttributesMap.this.size();

1
spring-web/src/main/java/org/springframework/http/server/reactive/ServletServerHttpRequest.java

@ -387,7 +387,6 @@ class ServletServerHttpRequest extends AbstractServerHttpRequest {
@Override @Override
public void onError(Throwable throwable) { public void onError(Throwable throwable) {
RequestBodyPublisher.this.onError(throwable); RequestBodyPublisher.this.onError(throwable);
} }
} }
} }

4
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ControllerMethodResolver.java

@ -352,7 +352,7 @@ class ControllerMethodResolver {
this.initBinderMethodCache this.initBinderMethodCache
.computeIfAbsent(handlerType, .computeIfAbsent(handlerType,
clazz -> MethodIntrospector.selectMethods(handlerType, INIT_BINDER_METHODS)) key -> MethodIntrospector.selectMethods(key, INIT_BINDER_METHODS))
.forEach(method -> { .forEach(method -> {
Object bean = handlerMethod.getBean(); Object bean = handlerMethod.getBean();
result.add(getInitBinderMethod(bean, method)); result.add(getInitBinderMethod(bean, method));
@ -385,7 +385,7 @@ class ControllerMethodResolver {
this.modelAttributeMethodCache this.modelAttributeMethodCache
.computeIfAbsent(handlerType, .computeIfAbsent(handlerType,
clazz -> MethodIntrospector.selectMethods(handlerType, MODEL_ATTRIBUTE_METHODS)) key -> MethodIntrospector.selectMethods(key, MODEL_ATTRIBUTE_METHODS))
.forEach(method -> { .forEach(method -> {
Object bean = handlerMethod.getBean(); Object bean = handlerMethod.getBean();
result.add(createAttributeMethod(bean, method)); result.add(createAttributeMethod(bean, method));

3
spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/UrlFilenameViewController.java

@ -126,7 +126,8 @@ public class UrlFilenameViewController extends AbstractUrlViewController {
* @see #postProcessViewName * @see #postProcessViewName
*/ */
protected String getViewNameForUrlPath(String uri) { protected String getViewNameForUrlPath(String uri) {
return this.viewNameCache.computeIfAbsent(uri, u -> postProcessViewName(extractViewNameFromUrlPath(u))); return this.viewNameCache.computeIfAbsent(uri,
key -> postProcessViewName(extractViewNameFromUrlPath(key)));
} }
/** /**

24
spring-websocket/src/main/java/org/springframework/web/socket/server/standard/SpringConfigurator.java

@ -55,8 +55,7 @@ public class SpringConfigurator extends Configurator {
private static final Log logger = LogFactory.getLog(SpringConfigurator.class); private static final Log logger = LogFactory.getLog(SpringConfigurator.class);
private static final Map<String, Map<Class<?>, String>> cache = private static final Map<String, Map<Class<?>, String>> cache = new ConcurrentHashMap<>();
new ConcurrentHashMap<>();
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@ -100,24 +99,19 @@ public class SpringConfigurator extends Configurator {
private @Nullable String getBeanNameByType(WebApplicationContext wac, Class<?> endpointClass) { private @Nullable String getBeanNameByType(WebApplicationContext wac, Class<?> endpointClass) {
String wacId = wac.getId(); String wacId = wac.getId();
Map<Class<?>, String> beanNamesByType = cache.computeIfAbsent(wacId, key -> new ConcurrentHashMap<>());
Map<Class<?>, String> beanNamesByType = cache.computeIfAbsent(wacId, k -> new ConcurrentHashMap<>()); String beanName = beanNamesByType.get(endpointClass);
if (beanName == null) {
if (!beanNamesByType.containsKey(endpointClass)) {
String[] names = wac.getBeanNamesForType(endpointClass); String[] names = wac.getBeanNamesForType(endpointClass);
if (names.length == 1) { beanName = (names.length == 1 ? names[0] : NO_VALUE);
beanNamesByType.put(endpointClass, names[0]); beanNamesByType.put(endpointClass, beanName);
} if (names.length > 1) {
else { throw new IllegalStateException("Found multiple @ServerEndpoint's of type [" +
beanNamesByType.put(endpointClass, NO_VALUE); endpointClass.getName() + "]: bean names " + Arrays.toString(names));
if (names.length > 1) {
throw new IllegalStateException("Found multiple @ServerEndpoint's of type [" +
endpointClass.getName() + "]: bean names " + Arrays.toString(names));
}
} }
} }
String beanName = beanNamesByType.get(endpointClass);
return (NO_VALUE.equals(beanName) ? null : beanName); return (NO_VALUE.equals(beanName) ? null : beanName);
} }

Loading…
Cancel
Save