diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/MultiResourcePartitioner.java b/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/MultiResourcePartitioner.java index 74e76ef1b7..7fa3ce296c 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/MultiResourcePartitioner.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/MultiResourcePartitioner.java @@ -24,6 +24,7 @@ import org.springframework.batch.infrastructure.item.ExecutionContext; import org.springframework.core.io.Resource; import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; /** * Implementation of {@link Partitioner} that locates multiple resources and associates @@ -70,7 +71,7 @@ public void setKeyName(String keyName) { */ @Override public Map partition(int gridSize) { - Map map = new HashMap<>(gridSize); + Map map = CollectionUtils.newHashMap(gridSize); int i = 0; for (Resource resource : resources) { ExecutionContext context = new ExecutionContext(); diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/SimplePartitioner.java b/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/SimplePartitioner.java index 775cf668ae..43ab0d26cb 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/SimplePartitioner.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/SimplePartitioner.java @@ -21,6 +21,7 @@ import org.springframework.batch.core.partition.Partitioner; import org.springframework.batch.infrastructure.item.ExecutionContext; +import org.springframework.util.CollectionUtils; /** * Simplest possible implementation of {@link Partitioner}. Just creates a set of empty @@ -37,7 +38,7 @@ public class SimplePartitioner implements Partitioner { @Override public Map partition(int gridSize) { - Map map = new HashMap<>(gridSize); + Map map = CollectionUtils.newHashMap(gridSize); for (int i = 0; i < gridSize; i++) { map.put(PARTITION_KEY + i, new ExecutionContext()); } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/SimpleStepExecutionSplitter.java b/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/SimpleStepExecutionSplitter.java index 4b9a079d47..c9314fd88e 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/SimpleStepExecutionSplitter.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/SimpleStepExecutionSplitter.java @@ -33,6 +33,7 @@ import org.springframework.batch.core.partition.StepExecutionSplitter; import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.infrastructure.item.ExecutionContext; +import org.springframework.util.CollectionUtils; /** * Generic implementation of {@link StepExecutionSplitter} that delegates to a @@ -128,7 +129,7 @@ public Set split(StepExecution stepExecution, int gridSize) throw JobExecution jobExecution = stepExecution.getJobExecution(); Map contexts = getContexts(stepExecution, gridSize); - Set set = new HashSet<>(contexts.size()); + Set set = CollectionUtils.newHashSet(contexts.size()); for (Entry context : contexts.entrySet()) { @@ -153,7 +154,7 @@ && shouldStart(allowStartIfComplete, stepExecution, lastStepExecution)) { } } - Set executions = new HashSet<>(set.size()); + Set executions = CollectionUtils.newHashSet(set.size()); executions.addAll(set); return executions; diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/TaskExecutorPartitionHandler.java b/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/TaskExecutorPartitionHandler.java index ed983ebeb4..1ee955a3b7 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/TaskExecutorPartitionHandler.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/partition/support/TaskExecutorPartitionHandler.java @@ -34,6 +34,7 @@ import org.springframework.core.task.TaskExecutor; import org.springframework.core.task.TaskRejectedException; import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; /** * A {@link PartitionHandler} that uses a {@link TaskExecutor} to execute the partitioned @@ -94,8 +95,8 @@ public Step getStep() { protected Set doHandle(StepExecution managerStepExecution, Set partitionStepExecutions) throws Exception { Assert.notNull(step, "A Step must be provided."); - final Set> tasks = new HashSet<>(getGridSize()); - final Set result = new HashSet<>(); + final Set> tasks = CollectionUtils.newHashSet(partitionStepExecutions.size()); + final Set result = CollectionUtils.newHashSet(partitionStepExecutions.size()); for (StepExecution stepExecution : partitionStepExecutions) { final FutureTask task = createTask(step, stepExecution); diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/jdbc/JdbcExecutionContextDao.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/jdbc/JdbcExecutionContextDao.java index 1feaf76ef7..01851af818 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/jdbc/JdbcExecutionContextDao.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/jdbc/JdbcExecutionContextDao.java @@ -45,6 +45,7 @@ import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.RowMapper; import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; /** * JDBC DAO for {@link ExecutionContext}. @@ -238,7 +239,7 @@ public void saveExecutionContext(StepExecution stepExecution) { @Override public void saveExecutionContexts(Collection stepExecutions) { Assert.notNull(stepExecutions, "Attempt to save an null collection of step executions"); - Map serializedContexts = new HashMap<>(stepExecutions.size()); + Map serializedContexts = CollectionUtils.newHashMap(stepExecutions.size()); for (StepExecution stepExecution : stepExecutions) { Long executionId = stepExecution.getId(); ExecutionContext executionContext = stepExecution.getExecutionContext(); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/builder/FlatFileItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/builder/FlatFileItemReaderBuilder.java index b8128c7b36..93a5c25fd5 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/builder/FlatFileItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/builder/FlatFileItemReaderBuilder.java @@ -52,6 +52,7 @@ import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.Resource; import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; /** @@ -691,7 +692,7 @@ public DelimitedLineTokenizer build() { } if (!this.includedFields.isEmpty()) { - Set deDupedFields = new HashSet<>(this.includedFields.size()); + Set deDupedFields = CollectionUtils.newHashSet(this.includedFields.size()); deDupedFields.addAll(this.includedFields); deDupedFields.remove(null); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/transform/DefaultFieldSet.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/transform/DefaultFieldSet.java index c5669f2d55..89c30c75b3 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/transform/DefaultFieldSet.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/transform/DefaultFieldSet.java @@ -35,6 +35,7 @@ import org.jspecify.annotations.NullUnmarked; import org.jspecify.annotations.Nullable; +import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; /** @@ -131,7 +132,7 @@ public DefaultFieldSet(@Nullable String[] tokens, String[] names, @Nullable Date } this.tokens = tokens.clone(); this.names = Arrays.asList(names); - this.nameIndexMap = new HashMap<>(names.length); + this.nameIndexMap = CollectionUtils.newHashMap(names.length); for (int i = 0; i < names.length; i++) { this.nameIndexMap.put(names[i], i); } diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/samples/loom/JobConfigurationForRunningPartitionedStepsWithVirtualThreads.java b/spring-batch-samples/src/main/java/org/springframework/batch/samples/loom/JobConfigurationForRunningPartitionedStepsWithVirtualThreads.java index 8599d7ea86..373a966d80 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/samples/loom/JobConfigurationForRunningPartitionedStepsWithVirtualThreads.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/samples/loom/JobConfigurationForRunningPartitionedStepsWithVirtualThreads.java @@ -37,6 +37,7 @@ import org.springframework.context.annotation.Import; import org.springframework.core.task.VirtualThreadTaskExecutor; import org.springframework.jdbc.support.JdbcTransactionManager; +import org.springframework.util.CollectionUtils; /** * Configuration class that defines a partitioned step based on a @@ -76,7 +77,7 @@ public Tasklet tasklet(@Value("#{stepExecutionContext['data']}") String partitio @Bean public Partitioner partitioner() { return gridSize -> { - Map partitionMap = new HashMap<>(gridSize); + Map partitionMap = CollectionUtils.newHashMap(gridSize); for (int i = 0; i < gridSize; i++) { ExecutionContext executionContext = new ExecutionContext(); executionContext.put("data", "data" + i);