Skip to content

Commit 64de9f0

Browse files
committed
Use immutable collection factory methods
1 parent 86c9ff5 commit 64de9f0

File tree

16 files changed

+66
-112
lines changed

16 files changed

+66
-112
lines changed

junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/MutableExtensionRegistry.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
import java.lang.reflect.Member;
1919
import java.lang.reflect.Method;
2020
import java.util.ArrayList;
21-
import java.util.Arrays;
22-
import java.util.Collections;
2321
import java.util.LinkedHashMap;
2422
import java.util.LinkedHashSet;
2523
import java.util.List;
@@ -53,13 +51,14 @@ public class MutableExtensionRegistry implements ExtensionRegistry, ExtensionReg
5351

5452
private static final Logger logger = LoggerFactory.getLogger(MutableExtensionRegistry.class);
5553

56-
private static final List<Extension> DEFAULT_STATELESS_EXTENSIONS = Collections.unmodifiableList(Arrays.asList(//
54+
private static final List<Extension> DEFAULT_STATELESS_EXTENSIONS = List.of( //
5755
new DisabledCondition(), //
5856
new AutoCloseExtension(), //
5957
new TimeoutExtension(), //
6058
new RepeatedTestExtension(), //
6159
new TestInfoParameterResolver(), //
62-
new TestReporterParameterResolver()));
60+
new TestReporterParameterResolver() //
61+
);
6362

6463
/**
6564
* Factory for creating and populating a new root registry with the default

junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/TimeoutDurationParser.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
import static java.util.regex.Pattern.UNICODE_CASE;
2323

2424
import java.time.format.DateTimeParseException;
25-
import java.util.Collections;
26-
import java.util.HashMap;
2725
import java.util.Locale;
2826
import java.util.Map;
2927
import java.util.concurrent.TimeUnit;
@@ -37,19 +35,16 @@ class TimeoutDurationParser {
3735

3836
private static final Pattern PATTERN = Pattern.compile("([1-9]\\d*) ?((?:[nμm]?s)|m|h|d)?",
3937
CASE_INSENSITIVE | UNICODE_CASE);
40-
private static final Map<String, TimeUnit> UNITS_BY_ABBREVIATION;
4138

42-
static {
43-
Map<String, TimeUnit> unitsByAbbreviation = new HashMap<>();
44-
unitsByAbbreviation.put("ns", NANOSECONDS);
45-
unitsByAbbreviation.put("μs", MICROSECONDS);
46-
unitsByAbbreviation.put("ms", MILLISECONDS);
47-
unitsByAbbreviation.put("s", SECONDS);
48-
unitsByAbbreviation.put("m", MINUTES);
49-
unitsByAbbreviation.put("h", HOURS);
50-
unitsByAbbreviation.put("d", DAYS);
51-
UNITS_BY_ABBREVIATION = Collections.unmodifiableMap(unitsByAbbreviation);
52-
}
39+
private static final Map<String, TimeUnit> UNITS_BY_ABBREVIATION = Map.of( //
40+
"ns", NANOSECONDS, //
41+
"μs", MICROSECONDS, //
42+
"ms", MILLISECONDS, //
43+
"s", SECONDS, //
44+
"m", MINUTES, //
45+
"h", HOURS, //
46+
"d", DAYS //
47+
);
5348

5449
TimeoutDuration parse(CharSequence text) throws DateTimeParseException {
5550
Matcher matcher = PATTERN.matcher(text);

junit-jupiter-params/src/main/java/org/junit/jupiter/params/ResolverFacade.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
package org.junit.jupiter.params;
1212

1313
import static java.lang.System.lineSeparator;
14-
import static java.util.Collections.unmodifiableList;
1514
import static java.util.Objects.requireNonNull;
1615
import static java.util.stream.Collectors.joining;
1716
import static java.util.stream.Collectors.toList;
@@ -584,7 +583,7 @@ public Optional<ParameterDeclaration> getFirst() {
584583

585584
@Override
586585
public List<ParameterDeclaration> getAll() {
587-
return unmodifiableList(new ArrayList<>(this.declarationsByIndex.values()));
586+
return List.copyOf(this.declarationsByIndex.values());
588587
}
589588

590589
@Override

junit-platform-commons/src/main/java/org/junit/platform/commons/support/conversion/ConversionSupport.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010

1111
package org.junit.platform.commons.support.conversion;
1212

13-
import static java.util.Arrays.asList;
14-
import static java.util.Collections.unmodifiableList;
1513
import static org.apiguardian.api.API.Status.EXPERIMENTAL;
1614
import static org.junit.platform.commons.util.ReflectionUtils.getWrapperType;
1715

@@ -31,7 +29,7 @@
3129
@API(status = EXPERIMENTAL, since = "1.11")
3230
public final class ConversionSupport {
3331

34-
private static final List<StringToObjectConverter> stringToObjectConverters = unmodifiableList(asList( //
32+
private static final List<StringToObjectConverter> stringToObjectConverters = List.of( //
3533
new StringToBooleanConverter(), //
3634
new StringToCharacterConverter(), //
3735
new StringToNumberConverter(), //
@@ -40,7 +38,7 @@ public final class ConversionSupport {
4038
new StringToJavaTimeConverter(), //
4139
new StringToCommonJavaTypesConverter(), //
4240
new FallbackStringToObjectConverter() //
43-
));
41+
);
4442

4543
private ConversionSupport() {
4644
/* no-op */

junit-platform-commons/src/main/java/org/junit/platform/commons/support/conversion/StringToCommonJavaTypesConverter.java

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010

1111
package org.junit.platform.commons.support.conversion;
1212

13-
import static java.util.Collections.unmodifiableMap;
14-
1513
import java.io.File;
1614
import java.net.MalformedURLException;
1715
import java.net.URI;
@@ -20,7 +18,6 @@
2018
import java.nio.file.Path;
2119
import java.nio.file.Paths;
2220
import java.util.Currency;
23-
import java.util.HashMap;
2421
import java.util.Locale;
2522
import java.util.Map;
2623
import java.util.UUID;
@@ -30,25 +27,19 @@
3027

3128
class StringToCommonJavaTypesConverter implements StringToObjectConverter {
3229

33-
private static final Map<Class<?>, Function<String, ?>> CONVERTERS;
34-
35-
static {
36-
Map<Class<?>, Function<String, ?>> converters = new HashMap<>();
37-
30+
private static final Map<Class<?>, Function<String, ?>> CONVERTERS = Map.of( //
3831
// java.io and java.nio
39-
converters.put(File.class, File::new);
40-
converters.put(Charset.class, Charset::forName);
41-
converters.put(Path.class, Paths::get);
32+
File.class, File::new, //
33+
Charset.class, Charset::forName, //
34+
Path.class, Paths::get,
4235
// java.net
43-
converters.put(URI.class, URI::create);
44-
converters.put(URL.class, StringToCommonJavaTypesConverter::toURL);
36+
URI.class, URI::create, //
37+
URL.class, StringToCommonJavaTypesConverter::toURL,
4538
// java.util
46-
converters.put(Currency.class, Currency::getInstance);
47-
converters.put(Locale.class, Locale::new);
48-
converters.put(UUID.class, UUID::fromString);
49-
50-
CONVERTERS = unmodifiableMap(converters);
51-
}
39+
Currency.class, Currency::getInstance, //
40+
Locale.class, Locale::new, //
41+
UUID.class, UUID::fromString //
42+
);
5243

5344
@Override
5445
public boolean canConvertTo(Class<?> targetType) {

junit-platform-commons/src/main/java/org/junit/platform/commons/support/conversion/StringToJavaTimeConverter.java

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
package org.junit.platform.commons.support.conversion;
1212

13-
import static java.util.Collections.unmodifiableMap;
13+
import static java.util.Map.entry;
1414

1515
import java.time.Duration;
1616
import java.time.Instant;
@@ -26,33 +26,29 @@
2626
import java.time.ZoneId;
2727
import java.time.ZoneOffset;
2828
import java.time.ZonedDateTime;
29-
import java.util.HashMap;
3029
import java.util.Map;
3130
import java.util.function.Function;
3231

3332
import org.junit.platform.commons.util.Preconditions;
3433

3534
class StringToJavaTimeConverter implements StringToObjectConverter {
3635

37-
private static final Map<Class<?>, Function<String, ?>> CONVERTERS;
38-
static {
39-
Map<Class<?>, Function<String, ?>> converters = new HashMap<>();
40-
converters.put(Duration.class, Duration::parse);
41-
converters.put(Instant.class, Instant::parse);
42-
converters.put(LocalDate.class, LocalDate::parse);
43-
converters.put(LocalDateTime.class, LocalDateTime::parse);
44-
converters.put(LocalTime.class, LocalTime::parse);
45-
converters.put(MonthDay.class, MonthDay::parse);
46-
converters.put(OffsetDateTime.class, OffsetDateTime::parse);
47-
converters.put(OffsetTime.class, OffsetTime::parse);
48-
converters.put(Period.class, Period::parse);
49-
converters.put(Year.class, Year::parse);
50-
converters.put(YearMonth.class, YearMonth::parse);
51-
converters.put(ZonedDateTime.class, ZonedDateTime::parse);
52-
converters.put(ZoneId.class, ZoneId::of);
53-
converters.put(ZoneOffset.class, ZoneOffset::of);
54-
CONVERTERS = unmodifiableMap(converters);
55-
}
36+
private static final Map<Class<?>, Function<String, ?>> CONVERTERS = Map.ofEntries( //
37+
entry(Duration.class, Duration::parse), //
38+
entry(Instant.class, Instant::parse), //
39+
entry(LocalDate.class, LocalDate::parse), //
40+
entry(LocalDateTime.class, LocalDateTime::parse), //
41+
entry(LocalTime.class, LocalTime::parse), //
42+
entry(MonthDay.class, MonthDay::parse), //
43+
entry(OffsetDateTime.class, OffsetDateTime::parse), //
44+
entry(OffsetTime.class, OffsetTime::parse), //
45+
entry(Period.class, Period::parse), //
46+
entry(Year.class, Year::parse), //
47+
entry(YearMonth.class, YearMonth::parse), //
48+
entry(ZonedDateTime.class, ZonedDateTime::parse), //
49+
entry(ZoneId.class, ZoneId::of), //
50+
entry(ZoneOffset.class, ZoneOffset::of) //
51+
);
5652

5753
@Override
5854
public boolean canConvertTo(Class<?> targetType) {

junit-platform-commons/src/main/java/org/junit/platform/commons/support/conversion/StringToNumberConverter.java

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,28 @@
1010

1111
package org.junit.platform.commons.support.conversion;
1212

13-
import static java.util.Collections.unmodifiableMap;
14-
1513
import java.math.BigDecimal;
1614
import java.math.BigInteger;
17-
import java.util.HashMap;
1815
import java.util.Map;
1916
import java.util.function.Function;
2017

2118
import org.junit.platform.commons.util.Preconditions;
2219

2320
class StringToNumberConverter implements StringToObjectConverter {
2421

25-
private static final Map<Class<?>, Function<String, ?>> CONVERTERS;
26-
static {
27-
Map<Class<?>, Function<String, ?>> converters = new HashMap<>();
28-
converters.put(Byte.class, Byte::decode);
29-
converters.put(Short.class, Short::decode);
30-
converters.put(Integer.class, Integer::decode);
31-
converters.put(Long.class, Long::decode);
32-
converters.put(Float.class, Float::valueOf);
33-
converters.put(Double.class, Double::valueOf);
22+
private static final Map<Class<?>, Function<String, ?>> CONVERTERS = Map.of( //
23+
Byte.class, Byte::decode, //
24+
Short.class, Short::decode, //
25+
Integer.class, Integer::decode, //
26+
Long.class, Long::decode, //
27+
Float.class, Float::valueOf, //
28+
Double.class, Double::valueOf, //
3429
// Technically, BigInteger and BigDecimal constructors are covered by
3530
// FallbackStringToObjectConverter, but we have explicit conversion
3631
// configured for them anyway.
37-
converters.put(BigInteger.class, BigInteger::new);
38-
converters.put(BigDecimal.class, BigDecimal::new);
39-
CONVERTERS = unmodifiableMap(converters);
40-
}
32+
BigInteger.class, BigInteger::new, //
33+
BigDecimal.class, BigDecimal::new //
34+
);
4135

4236
@Override
4337
public boolean canConvertTo(Class<?> targetType) {

junit-platform-commons/src/main/java/org/junit/platform/commons/util/AnnotationUtils.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import java.lang.reflect.Field;
2626
import java.lang.reflect.Method;
2727
import java.lang.reflect.Parameter;
28-
import java.util.ArrayList;
2928
import java.util.Arrays;
3029
import java.util.Collection;
3130
import java.util.Collections;
@@ -295,7 +294,7 @@ public static <A extends Annotation> List<A> findRepeatableAnnotations(@Nullable
295294
Set<A> found = new LinkedHashSet<>(16);
296295
findRepeatableAnnotations(element, annotationType, containerType, inherited, found, new HashSet<>(16));
297296
// unmodifiable since returned from public, non-internal method(s)
298-
return Collections.unmodifiableList(new ArrayList<>(found));
297+
return List.copyOf(found);
299298
}
300299

301300
private static <A extends Annotation> void findRepeatableAnnotations(AnnotatedElement element,

junit-platform-commons/src/main/java/org/junit/platform/commons/util/ExceptionUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ public static List<Throwable> findNestedThrowables(Throwable rootThrowable) {
171171
}
172172
}
173173

174-
return Collections.unmodifiableList(new ArrayList<>(visited));
174+
return List.copyOf(visited);
175175
}
176176

177177
}

junit-platform-commons/src/main/java/org/junit/platform/commons/util/ReflectionUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1150,7 +1150,7 @@ public static List<Class<?>> findNestedClasses(Class<?> clazz, Predicate<Class<?
11501150
candidates.add(nestedClass);
11511151
return true;
11521152
});
1153-
return Collections.unmodifiableList(new ArrayList<>(candidates));
1153+
return List.copyOf(candidates);
11541154
}
11551155

11561156
/**

0 commit comments

Comments
 (0)