Browse Source

Use Set.of() for constant sets where appropriate

pull/29538/head
Sam Brannen 3 years ago
parent
commit
917c41fd52
  1. 16
      spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java
  2. 27
      spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java
  3. 13
      spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassUtils.java
  4. 10
      spring-context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java
  5. 51
      spring-core/src/main/java/org/springframework/core/CollectionFactory.java
  6. 78
      spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLStateSQLExceptionTranslator.java
  7. 36
      spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java
  8. 3
      spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesScanner.java
  9. 4
      spring-test/src/main/java/org/springframework/test/context/MergedContextConfiguration.java
  10. 16
      spring-web/src/main/java/org/springframework/http/converter/xml/SourceHttpMessageConverter.java
  11. 10
      spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java
  12. 10
      spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/SockJsClient.java

16
spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2021 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -132,17 +132,17 @@ public class AspectJAdviceParameterNameDiscoverer implements ParameterNameDiscov
private static final int STEP_REFERENCE_PCUT_BINDING = 7; private static final int STEP_REFERENCE_PCUT_BINDING = 7;
private static final int STEP_FINISHED = 8; private static final int STEP_FINISHED = 8;
private static final Set<String> singleValuedAnnotationPcds = new HashSet<>(); private static final Set<String> singleValuedAnnotationPcds = Set.of(
"@this",
"@target",
"@within",
"@withincode",
"@annotation");
private static final Set<String> nonReferencePointcutTokens = new HashSet<>(); private static final Set<String> nonReferencePointcutTokens = new HashSet<>();
static { static {
singleValuedAnnotationPcds.add("@this");
singleValuedAnnotationPcds.add("@target");
singleValuedAnnotationPcds.add("@within");
singleValuedAnnotationPcds.add("@withincode");
singleValuedAnnotationPcds.add("@annotation");
Set<PointcutPrimitive> pointcutPrimitives = PointcutParser.getAllSupportedPointcutPrimitives(); Set<PointcutPrimitive> pointcutPrimitives = PointcutParser.getAllSupportedPointcutPrimitives();
for (PointcutPrimitive primitive : pointcutPrimitives) { for (PointcutPrimitive primitive : pointcutPrimitives) {
nonReferencePointcutTokens.add(primitive.getName()); nonReferencePointcutTokens.add(primitive.getName());

27
spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java

@ -21,7 +21,6 @@ import java.io.ObjectInputStream;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Proxy; import java.lang.reflect.Proxy;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@ -85,21 +84,17 @@ import org.springframework.util.StringUtils;
public class AspectJExpressionPointcut extends AbstractExpressionPointcut public class AspectJExpressionPointcut extends AbstractExpressionPointcut
implements ClassFilter, IntroductionAwareMethodMatcher, BeanFactoryAware { implements ClassFilter, IntroductionAwareMethodMatcher, BeanFactoryAware {
private static final Set<PointcutPrimitive> SUPPORTED_PRIMITIVES = new HashSet<>(); private static final Set<PointcutPrimitive> SUPPORTED_PRIMITIVES = Set.of(
PointcutPrimitive.EXECUTION,
static { PointcutPrimitive.ARGS,
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.EXECUTION); PointcutPrimitive.REFERENCE,
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.ARGS); PointcutPrimitive.THIS,
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.REFERENCE); PointcutPrimitive.TARGET,
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.THIS); PointcutPrimitive.WITHIN,
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.TARGET); PointcutPrimitive.AT_ANNOTATION,
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.WITHIN); PointcutPrimitive.AT_WITHIN,
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.AT_ANNOTATION); PointcutPrimitive.AT_ARGS,
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.AT_WITHIN); PointcutPrimitive.AT_TARGET);
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.AT_ARGS);
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.AT_TARGET);
}
private static final Log logger = LogFactory.getLog(AspectJExpressionPointcut.class); private static final Log logger = LogFactory.getLog(AspectJExpressionPointcut.class);

13
spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassUtils.java

@ -17,7 +17,6 @@
package org.springframework.context.annotation; package org.springframework.context.annotation;
import java.io.IOException; import java.io.IOException;
import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -66,14 +65,12 @@ public abstract class ConfigurationClassUtils {
private static final Log logger = LogFactory.getLog(ConfigurationClassUtils.class); private static final Log logger = LogFactory.getLog(ConfigurationClassUtils.class);
private static final Set<String> candidateIndicators = new HashSet<>(8); private static final Set<String> candidateIndicators = Set.of(
Component.class.getName(),
ComponentScan.class.getName(),
Import.class.getName(),
ImportResource.class.getName());
static {
candidateIndicators.add(Component.class.getName());
candidateIndicators.add(ComponentScan.class.getName());
candidateIndicators.add(Import.class.getName());
candidateIndicators.add(ImportResource.class.getName());
}
/** /**
* Initialize a configuration class proxy for the specified class. * Initialize a configuration class proxy for the specified class.

10
spring-context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2021 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -18,7 +18,6 @@ package org.springframework.validation.beanvalidation;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -66,13 +65,8 @@ import org.springframework.validation.SmartValidator;
*/ */
public class SpringValidatorAdapter implements SmartValidator, jakarta.validation.Validator { public class SpringValidatorAdapter implements SmartValidator, jakarta.validation.Validator {
private static final Set<String> internalAnnotationAttributes = new HashSet<>(4); private static final Set<String> internalAnnotationAttributes = Set.of("message", "groups", "payload");
static {
internalAnnotationAttributes.add("message");
internalAnnotationAttributes.add("groups");
internalAnnotationAttributes.add("payload");
}
@Nullable @Nullable
private jakarta.validation.Validator targetValidator; private jakarta.validation.Validator targetValidator;

51
spring-core/src/main/java/org/springframework/core/CollectionFactory.java

@ -55,34 +55,31 @@ import org.springframework.util.ReflectionUtils;
*/ */
public final class CollectionFactory { public final class CollectionFactory {
private static final Set<Class<?>> approximableCollectionTypes = new HashSet<>(); private static final Set<Class<?>> approximableCollectionTypes = Set.of(
// Standard collection interfaces
Collection.class,
List.class,
Set.class,
SortedSet.class,
NavigableSet.class,
// Common concrete collection classes
ArrayList.class,
LinkedList.class,
HashSet.class,
LinkedHashSet.class,
TreeSet.class,
EnumSet.class);
private static final Set<Class<?>> approximableMapTypes = new HashSet<>(); private static final Set<Class<?>> approximableMapTypes = Set.of(
// Standard map interfaces
Map.class,
static { SortedMap.class,
// Standard collection interfaces NavigableMap.class,
approximableCollectionTypes.add(Collection.class); // Common concrete map classes
approximableCollectionTypes.add(List.class); HashMap.class,
approximableCollectionTypes.add(Set.class); LinkedHashMap.class,
approximableCollectionTypes.add(SortedSet.class); TreeMap.class,
approximableCollectionTypes.add(NavigableSet.class); EnumMap.class);
approximableMapTypes.add(Map.class);
approximableMapTypes.add(SortedMap.class);
approximableMapTypes.add(NavigableMap.class);
// Common concrete collection classes
approximableCollectionTypes.add(ArrayList.class);
approximableCollectionTypes.add(LinkedList.class);
approximableCollectionTypes.add(HashSet.class);
approximableCollectionTypes.add(LinkedHashSet.class);
approximableCollectionTypes.add(TreeSet.class);
approximableCollectionTypes.add(EnumSet.class);
approximableMapTypes.add(HashMap.class);
approximableMapTypes.add(LinkedHashMap.class);
approximableMapTypes.add(TreeMap.class);
approximableMapTypes.add(EnumMap.class);
}
private CollectionFactory() { private CollectionFactory() {

78
spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLStateSQLExceptionTranslator.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2019 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -17,7 +17,6 @@
package org.springframework.jdbc.support; package org.springframework.jdbc.support;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.springframework.dao.ConcurrencyFailureException; import org.springframework.dao.ConcurrencyFailureException;
@ -46,45 +45,42 @@ import org.springframework.lang.Nullable;
*/ */
public class SQLStateSQLExceptionTranslator extends AbstractFallbackSQLExceptionTranslator { public class SQLStateSQLExceptionTranslator extends AbstractFallbackSQLExceptionTranslator {
private static final Set<String> BAD_SQL_GRAMMAR_CODES = new HashSet<>(8); private static final Set<String> BAD_SQL_GRAMMAR_CODES = Set.of(
"07", // Dynamic SQL error
private static final Set<String> DATA_INTEGRITY_VIOLATION_CODES = new HashSet<>(8); "21", // Cardinality violation
"2A", // Syntax error direct SQL
private static final Set<String> DATA_ACCESS_RESOURCE_FAILURE_CODES = new HashSet<>(8); "37", // Syntax error dynamic SQL
"42", // General SQL syntax error
private static final Set<String> TRANSIENT_DATA_ACCESS_RESOURCE_CODES = new HashSet<>(8); "65" // Oracle: unknown identifier
);
private static final Set<String> CONCURRENCY_FAILURE_CODES = new HashSet<>(4);
private static final Set<String> DATA_INTEGRITY_VIOLATION_CODES = Set.of(
"01", // Data truncation
static { "02", // No data found
BAD_SQL_GRAMMAR_CODES.add("07"); // Dynamic SQL error "22", // Value out of range
BAD_SQL_GRAMMAR_CODES.add("21"); // Cardinality violation "23", // Integrity constraint violation
BAD_SQL_GRAMMAR_CODES.add("2A"); // Syntax error direct SQL "27", // Triggered data change violation
BAD_SQL_GRAMMAR_CODES.add("37"); // Syntax error dynamic SQL "44" // With check violation
BAD_SQL_GRAMMAR_CODES.add("42"); // General SQL syntax error );
BAD_SQL_GRAMMAR_CODES.add("65"); // Oracle: unknown identifier
private static final Set<String> DATA_ACCESS_RESOURCE_FAILURE_CODES = Set.of(
DATA_INTEGRITY_VIOLATION_CODES.add("01"); // Data truncation "08", // Connection exception
DATA_INTEGRITY_VIOLATION_CODES.add("02"); // No data found "53", // PostgreSQL: insufficient resources (e.g. disk full)
DATA_INTEGRITY_VIOLATION_CODES.add("22"); // Value out of range "54", // PostgreSQL: program limit exceeded (e.g. statement too complex)
DATA_INTEGRITY_VIOLATION_CODES.add("23"); // Integrity constraint violation "57", // DB2: out-of-memory exception / database not started
DATA_INTEGRITY_VIOLATION_CODES.add("27"); // Triggered data change violation "58" // DB2: unexpected system error
DATA_INTEGRITY_VIOLATION_CODES.add("44"); // With check violation );
DATA_ACCESS_RESOURCE_FAILURE_CODES.add("08"); // Connection exception private static final Set<String> TRANSIENT_DATA_ACCESS_RESOURCE_CODES = Set.of(
DATA_ACCESS_RESOURCE_FAILURE_CODES.add("53"); // PostgreSQL: insufficient resources (e.g. disk full) "JW", // Sybase: internal I/O error
DATA_ACCESS_RESOURCE_FAILURE_CODES.add("54"); // PostgreSQL: program limit exceeded (e.g. statement too complex) "JZ", // Sybase: unexpected I/O error
DATA_ACCESS_RESOURCE_FAILURE_CODES.add("57"); // DB2: out-of-memory exception / database not started "S1" // DB2: communication failure
DATA_ACCESS_RESOURCE_FAILURE_CODES.add("58"); // DB2: unexpected system error );
TRANSIENT_DATA_ACCESS_RESOURCE_CODES.add("JW"); // Sybase: internal I/O error private static final Set<String> CONCURRENCY_FAILURE_CODES = Set.of(
TRANSIENT_DATA_ACCESS_RESOURCE_CODES.add("JZ"); // Sybase: unexpected I/O error "40", // Transaction rollback
TRANSIENT_DATA_ACCESS_RESOURCE_CODES.add("S1"); // DB2: communication failure "61" // Oracle: deadlock
);
CONCURRENCY_FAILURE_CODES.add("40"); // Transaction rollback
CONCURRENCY_FAILURE_CODES.add("61"); // Oracle: deadlock
}
@Override @Override

36
spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java

@ -23,7 +23,6 @@ import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Proxy; import java.lang.reflect.Proxy;
import java.util.HashSet;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -73,25 +72,22 @@ public abstract class SharedEntityManagerCreator {
private static final Map<Class<?>, Class<?>[]> cachedQueryInterfaces = new ConcurrentReferenceHashMap<>(4); private static final Map<Class<?>, Class<?>[]> cachedQueryInterfaces = new ConcurrentReferenceHashMap<>(4);
private static final Set<String> transactionRequiringMethods = new HashSet<>(8); private static final Set<String> transactionRequiringMethods = Set.of(
"joinTransaction",
private static final Set<String> queryTerminatingMethods = new HashSet<>(8); "flush",
"persist",
static { "merge",
transactionRequiringMethods.add("joinTransaction"); "remove",
transactionRequiringMethods.add("flush"); "refresh");
transactionRequiringMethods.add("persist");
transactionRequiringMethods.add("merge"); private static final Set<String> queryTerminatingMethods = Set.of(
transactionRequiringMethods.add("remove"); "execute", // JPA 2.1 StoredProcedureQuery
transactionRequiringMethods.add("refresh"); "executeUpdate",
"getSingleResult",
queryTerminatingMethods.add("execute"); // JPA 2.1 StoredProcedureQuery "getResultStream",
queryTerminatingMethods.add("executeUpdate"); "getResultList",
queryTerminatingMethods.add("getSingleResult"); "list" // Hibernate Query.list() method
queryTerminatingMethods.add("getResultStream"); );
queryTerminatingMethods.add("getResultList");
queryTerminatingMethods.add("list"); // Hibernate Query.list() method
}
/** /**

3
spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesScanner.java

@ -58,10 +58,9 @@ public final class PersistenceManagedTypesScanner {
private static final String PACKAGE_INFO_SUFFIX = ".package-info"; private static final String PACKAGE_INFO_SUFFIX = ".package-info";
private static final Set<AnnotationTypeFilter> entityTypeFilters; private static final Set<AnnotationTypeFilter> entityTypeFilters = new LinkedHashSet<>(4);
static { static {
entityTypeFilters = new LinkedHashSet<>(8);
entityTypeFilters.add(new AnnotationTypeFilter(Entity.class, false)); entityTypeFilters.add(new AnnotationTypeFilter(Entity.class, false));
entityTypeFilters.add(new AnnotationTypeFilter(Embeddable.class, false)); entityTypeFilters.add(new AnnotationTypeFilter(Embeddable.class, false));
entityTypeFilters.add(new AnnotationTypeFilter(MappedSuperclass.class, false)); entityTypeFilters.add(new AnnotationTypeFilter(MappedSuperclass.class, false));

4
spring-test/src/main/java/org/springframework/test/context/MergedContextConfiguration.java

@ -75,9 +75,9 @@ public class MergedContextConfiguration implements Serializable {
private static final Class<?>[] EMPTY_CLASS_ARRAY = new Class<?>[0]; private static final Class<?>[] EMPTY_CLASS_ARRAY = new Class<?>[0];
private static final Set<Class<? extends ApplicationContextInitializer<?>>> EMPTY_INITIALIZER_CLASSES = private static final Set<Class<? extends ApplicationContextInitializer<?>>> EMPTY_INITIALIZER_CLASSES =
Collections.<Class<? extends ApplicationContextInitializer<?>>> emptySet(); Collections.emptySet();
private static final Set<ContextCustomizer> EMPTY_CONTEXT_CUSTOMIZERS = Collections.<ContextCustomizer> emptySet(); private static final Set<ContextCustomizer> EMPTY_CONTEXT_CUSTOMIZERS = Collections.emptySet();
private final Class<?> testClass; private final Class<?> testClass;

16
spring-web/src/main/java/org/springframework/http/converter/xml/SourceHttpMessageConverter.java

@ -21,7 +21,6 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.StringReader; import java.io.StringReader;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
@ -75,15 +74,12 @@ public class SourceHttpMessageConverter<T extends Source> extends AbstractHttpMe
private static final XMLResolver NO_OP_XML_RESOLVER = private static final XMLResolver NO_OP_XML_RESOLVER =
(publicID, systemID, base, ns) -> InputStream.nullInputStream(); (publicID, systemID, base, ns) -> InputStream.nullInputStream();
private static final Set<Class<?>> SUPPORTED_CLASSES = new HashSet<>(8); private static final Set<Class<?>> SUPPORTED_CLASSES = Set.of(
DOMSource.class,
static { SAXSource.class,
SUPPORTED_CLASSES.add(DOMSource.class); StAXSource.class,
SUPPORTED_CLASSES.add(SAXSource.class); StreamSource.class,
SUPPORTED_CLASSES.add(StAXSource.class); Source.class);
SUPPORTED_CLASSES.add(StreamSource.class);
SUPPORTED_CLASSES.add(Source.class);
}
private final TransformerFactory transformerFactory = TransformerFactory.newInstance(); private final TransformerFactory transformerFactory = TransformerFactory.newInstance();

10
spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2021 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -16,8 +16,6 @@
package org.springframework.web.server.adapter; package org.springframework.web.server.adapter;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.function.Function; import java.util.function.Function;
@ -73,9 +71,9 @@ public class HttpWebHandlerAdapter extends WebHandlerDecorator implements HttpHa
private static final String DISCONNECTED_CLIENT_LOG_CATEGORY = private static final String DISCONNECTED_CLIENT_LOG_CATEGORY =
"org.springframework.web.server.DisconnectedClient"; "org.springframework.web.server.DisconnectedClient";
// Similar declaration exists in AbstractSockJsSession.. // Similar declaration exists in AbstractSockJsSession.
private static final Set<String> DISCONNECTED_CLIENT_EXCEPTIONS = new HashSet<>( private static final Set<String> DISCONNECTED_CLIENT_EXCEPTIONS =
Arrays.asList("AbortedException", "ClientAbortException", "EOFException", "EofException")); Set.of("AbortedException", "ClientAbortException", "EOFException", "EofException");
private static final Log logger = LogFactory.getLog(HttpWebHandlerAdapter.class); private static final Log logger = LogFactory.getLog(HttpWebHandlerAdapter.class);

10
spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/SockJsClient.java

@ -19,7 +19,6 @@ package org.springframework.web.socket.sockjs.client;
import java.net.URI; import java.net.URI;
import java.security.Principal; import java.security.Principal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -67,14 +66,7 @@ public class SockJsClient implements WebSocketClient, Lifecycle {
private static final Log logger = LogFactory.getLog(SockJsClient.class); private static final Log logger = LogFactory.getLog(SockJsClient.class);
private static final Set<String> supportedProtocols = new HashSet<>(4); private static final Set<String> supportedProtocols = Set.of("ws", "wss", "http", "https");
static {
supportedProtocols.add("ws");
supportedProtocols.add("wss");
supportedProtocols.add("http");
supportedProtocols.add("https");
}
private final List<Transport> transports; private final List<Transport> transports;

Loading…
Cancel
Save