Skip to content

Commit a7e8aa1

Browse files
committed
Updated generics on single step batch job starter
This commit updates the generics for the domain object used in the single step batch job starter from a 'Map<Object, Object>' to a 'Map<String, Object>'. This better reflects what is actually used.
1 parent 6320d7a commit a7e8aa1

18 files changed

+114
-108
lines changed

spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/SingleStepJobAutoConfiguration.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public class SingleStepJobAutoConfiguration {
5555
private SingleStepJobProperties properties;
5656

5757
@Autowired(required = false)
58-
private ItemProcessor<Map<Object, Object>, Map<Object, Object>> itemProcessor;
58+
private ItemProcessor<Map<String, Object>, Map<String, Object>> itemProcessor;
5959

6060
public SingleStepJobAutoConfiguration(JobBuilderFactory jobBuilderFactory,
6161
StepBuilderFactory stepBuilderFactory, SingleStepJobProperties properties,
@@ -79,12 +79,12 @@ private void validateProperties(SingleStepJobProperties properties) {
7979
@Bean
8080
@ConditionalOnMissingBean
8181
@ConditionalOnProperty(prefix = "spring.batch.job", name = "jobName")
82-
public Job job(ItemReader<Map<Object, Object>> itemReader,
83-
ItemWriter<Map<Object, Object>> itemWriter) {
82+
public Job job(ItemReader<Map<String, Object>> itemReader,
83+
ItemWriter<Map<String, Object>> itemWriter) {
8484

85-
SimpleStepBuilder<Map<Object, Object>, Map<Object, Object>> stepBuilder = this.stepBuilderFactory
85+
SimpleStepBuilder<Map<String, Object>, Map<String, Object>> stepBuilder = this.stepBuilderFactory
8686
.get(this.properties.getStepName())
87-
.<Map<Object, Object>, Map<Object, Object>>chunk(
87+
.<Map<String, Object>, Map<String, Object>>chunk(
8888
this.properties.getChunkSize())
8989
.reader(itemReader);
9090

spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemReaderAutoConfiguration.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.cloud.task.batch.autoconfigure.flatfile;
1818

19+
import java.util.HashMap;
1920
import java.util.Map;
2021

2122
import org.springframework.batch.item.file.FlatFileItemReader;
@@ -53,10 +54,10 @@ public class FlatFileItemReaderAutoConfiguration {
5354
private LineTokenizer lineTokenizer;
5455

5556
@Autowired(required = false)
56-
private FieldSetMapper<Map<Object, Object>> fieldSetMapper;
57+
private FieldSetMapper<Map<String, Object>> fieldSetMapper;
5758

5859
@Autowired(required = false)
59-
private LineMapper<Map<Object, Object>> lineMapper;
60+
private LineMapper<Map<String, Object>> lineMapper;
6061

6162
@Autowired(required = false)
6263
private LineCallbackHandler skippedLinesCallback;
@@ -71,8 +72,8 @@ public FlatFileItemReaderAutoConfiguration(FlatFileItemReaderProperties properti
7172
@Bean
7273
@ConditionalOnMissingBean
7374
@ConditionalOnProperty(prefix = "spring.batch.job.flatfilereader", name = "name")
74-
public FlatFileItemReader<Map<Object, Object>> itemReader() {
75-
FlatFileItemReaderBuilder<Map<Object, Object>> mapFlatFileItemReaderBuilder = new FlatFileItemReaderBuilder<Map<Object, Object>>()
75+
public FlatFileItemReader<Map<String, Object>> itemReader() {
76+
FlatFileItemReaderBuilder<Map<String, Object>> mapFlatFileItemReaderBuilder = new FlatFileItemReaderBuilder<Map<String, Object>>()
7677
.name(this.properties.getName()).resource(this.properties.getResource())
7778
.saveState(this.properties.isSaveState())
7879
.maxItemCount(this.properties.getMaxItemCount())
@@ -127,13 +128,13 @@ else if (this.properties.isFixedLength()) {
127128

128129
/**
129130
* A {@link FieldSetMapper} that takes a {@code FieldSet} and returns the
130-
* {@code Map<Object, Object>} of its contents.
131+
* {@code Map<String, Object>} of its contents.
131132
*/
132-
public static class MapFieldSetMapper implements FieldSetMapper<Map<Object, Object>> {
133+
public static class MapFieldSetMapper implements FieldSetMapper<Map<String, Object>> {
133134

134135
@Override
135-
public Map<Object, Object> mapFieldSet(FieldSet fieldSet) {
136-
return fieldSet.getProperties();
136+
public Map<String, Object> mapFieldSet(FieldSet fieldSet) {
137+
return new HashMap<String, Object>((Map) fieldSet.getProperties());
137138
}
138139

139140
}

spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemWriterAutoConfiguration.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ public class FlatFileItemWriterAutoConfiguration {
4949
private FlatFileItemWriterProperties properties;
5050

5151
@Autowired(required = false)
52-
private LineAggregator<Map<Object, Object>> lineAggregator;
52+
private LineAggregator<Map<String, Object>> lineAggregator;
5353

5454
@Autowired(required = false)
55-
private FieldExtractor<Map<Object, Object>> fieldExtractor;
55+
private FieldExtractor<Map<String, Object>> fieldExtractor;
5656

5757
@Autowired(required = false)
5858
private FlatFileHeaderCallback headerCallback;
@@ -67,7 +67,7 @@ public FlatFileItemWriterAutoConfiguration(FlatFileItemWriterProperties properti
6767
@Bean
6868
@ConditionalOnMissingBean
6969
@ConditionalOnProperty(prefix = "spring.batch.job.flatfilewriter", name = "name")
70-
public FlatFileItemWriter<Map<Object, Object>> itemWriter() {
70+
public FlatFileItemWriter<Map<String, Object>> itemWriter() {
7171

7272
if (this.properties.isDelimited() && this.properties.isFormatted()) {
7373
throw new IllegalStateException(
@@ -80,7 +80,7 @@ else if ((this.properties.isFormatted() || this.properties.isDelimited())
8080
+ "output is not formatted or delimited");
8181
}
8282

83-
FlatFileItemWriterBuilder<Map<Object, Object>> builder = new FlatFileItemWriterBuilder<Map<Object, Object>>()
83+
FlatFileItemWriterBuilder<Map<String, Object>> builder = new FlatFileItemWriterBuilder<Map<String, Object>>()
8484
.name(this.properties.getName()).resource(this.properties.getResource())
8585
.append(this.properties.isAppend())
8686
.encoding(this.properties.getEncoding())
@@ -93,7 +93,7 @@ else if ((this.properties.isFormatted() || this.properties.isDelimited())
9393
.headerCallback(this.headerCallback).footerCallback(this.footerCallback);
9494

9595
if (this.properties.isDelimited()) {
96-
FlatFileItemWriterBuilder.DelimitedBuilder<Map<Object, Object>> delimitedBuilder = builder
96+
FlatFileItemWriterBuilder.DelimitedBuilder<Map<String, Object>> delimitedBuilder = builder
9797
.delimited().delimiter(this.properties.getDelimiter());
9898

9999
if (this.fieldExtractor != null) {
@@ -105,7 +105,7 @@ else if ((this.properties.isFormatted() || this.properties.isDelimited())
105105
}
106106
}
107107
else if (this.properties.isFormatted()) {
108-
FlatFileItemWriterBuilder.FormattedBuilder<Map<Object, Object>> formattedBuilder = builder
108+
FlatFileItemWriterBuilder.FormattedBuilder<Map<String, Object>> formattedBuilder = builder
109109
.formatted().format(this.properties.getFormat())
110110
.locale(this.properties.getLocale())
111111
.maximumLength(this.properties.getMaximumLength())
@@ -127,10 +127,10 @@ else if (this.lineAggregator != null) {
127127
}
128128

129129
/**
130-
* A {@code FieldExtractor} that converts a {@code Map<Object, Object>} to the ordered
130+
* A {@code FieldExtractor} that converts a {@code Map<String, Object>} to the ordered
131131
* {@code Object[]} required to populate an output record.
132132
*/
133-
public static class MapFieldExtractor implements FieldExtractor<Map<Object, Object>> {
133+
public static class MapFieldExtractor implements FieldExtractor<Map<String, Object>> {
134134

135135
private String[] names;
136136

@@ -139,7 +139,7 @@ public MapFieldExtractor(String[] names) {
139139
}
140140

141141
@Override
142-
public Object[] extract(Map<Object, Object> item) {
142+
public Object[] extract(Map<String, Object> item) {
143143

144144
List<Object> fields = new ArrayList<>(item.size());
145145

spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcCursorItemReaderAutoConfiguration.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public class JdbcCursorItemReaderAutoConfiguration {
5454
private PreparedStatementSetter preparedStatementSetter;
5555

5656
@Autowired(required = false)
57-
private RowMapper<Map<Object, Object>> rowMapper;
57+
private RowMapper<Map<String, Object>> rowMapper;
5858

5959
public JdbcCursorItemReaderAutoConfiguration(
6060
JdbcCursorItemReaderProperties properties, DataSource dataSource) {
@@ -64,8 +64,8 @@ public JdbcCursorItemReaderAutoConfiguration(
6464

6565
@Bean
6666
@ConditionalOnMissingBean
67-
public JdbcCursorItemReader<Map<Object, Object>> itemReader() {
68-
return new JdbcCursorItemReaderBuilder<Map<Object, Object>>()
67+
public JdbcCursorItemReader<Map<String, Object>> itemReader() {
68+
return new JdbcCursorItemReaderBuilder<Map<String, Object>>()
6969
.name(this.properties.getName())
7070
.currentItemCount(this.properties.getCurrentItemCount())
7171
.dataSource(this.dataSource)
@@ -86,15 +86,15 @@ public JdbcCursorItemReader<Map<Object, Object>> itemReader() {
8686

8787
@Bean
8888
@ConditionalOnMissingBean
89-
public RowMapper<Map<Object, Object>> rowMapper() {
89+
public RowMapper<Map<String, Object>> rowMapper() {
9090
return new MapRowMapper();
9191
}
9292

93-
public static class MapRowMapper implements RowMapper<Map<Object, Object>> {
93+
public static class MapRowMapper implements RowMapper<Map<String, Object>> {
9494

9595
@Override
96-
public Map<Object, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
97-
Map<Object, Object> item = new HashMap<>(rs.getMetaData().getColumnCount());
96+
public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
97+
Map<String, Object> item = new HashMap<>(rs.getMetaData().getColumnCount());
9898

9999
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
100100
item.put(rs.getMetaData().getColumnName(i), rs.getObject(i));

spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcItemWriterAutoConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
* Autconfiguration for a {@code JdbcBatchItemWriter}.
3838
*
3939
* @author Glenn Renfro
40+
* @author Michael Minella
4041
* @since 2.3
4142
*/
4243
@Configuration
@@ -63,9 +64,9 @@ public JdbcItemWriterAutoConfiguration(DataSource dataSource,
6364
@Bean
6465
@ConditionalOnMissingBean
6566
@ConditionalOnProperty(prefix = "spring.batch.job.jdbcwriter", name = "name")
66-
public ItemWriter<Map<Object, Object>> itemWriter() {
67+
public ItemWriter<Map<String, Object>> itemWriter() {
6768

68-
JdbcBatchItemWriterBuilder<Map<Object, Object>> jdbcBatchItemWriterBuilder = new JdbcBatchItemWriterBuilder<Map<Object, Object>>()
69+
JdbcBatchItemWriterBuilder<Map<String, Object>> jdbcBatchItemWriterBuilder = new JdbcBatchItemWriterBuilder<Map<String, Object>>()
6970
.dataSource(this.dataSource).sql(this.properties.getSql());
7071
if (this.itemPreparedStatementSetter != null) {
7172
jdbcBatchItemWriterBuilder

spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemReaderAutoConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
* AutoConfiguration for a {@code KafkaItemReader}.
4040
*
4141
* @author Glenn Renfro
42+
* @author Michael Minella
4243
* @since 2.3
4344
*/
4445
@Configuration
@@ -52,7 +53,7 @@ public class KafkaItemReaderAutoConfiguration {
5253
@Bean
5354
@ConditionalOnMissingBean
5455
@ConditionalOnProperty(prefix = "spring.batch.job.kafkaitemreader", name = "name")
55-
public KafkaItemReader<Object, Map<Object, Object>> kafkaItemReader(
56+
public KafkaItemReader<Object, Map<String, Object>> kafkaItemReader(
5657
KafkaItemReaderProperties kafkaItemReaderProperties) {
5758
Properties consumerProperties = new Properties();
5859
consumerProperties.putAll(this.kafkaProperties.getConsumer().buildProperties());
@@ -62,7 +63,7 @@ public KafkaItemReader<Object, Map<Object, Object>> kafkaItemReader(
6263
kafkaItemReaderProperties.setPartitions(new ArrayList<>(1));
6364
kafkaItemReaderProperties.getPartitions().add(0);
6465
}
65-
return new KafkaItemReaderBuilder<Object, Map<Object, Object>>()
66+
return new KafkaItemReaderBuilder<Object, Map<String, Object>>()
6667
.partitions(kafkaItemReaderProperties.getPartitions())
6768
.consumerProperties(consumerProperties)
6869
.name(kafkaItemReaderProperties.getName())

spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemWriterAutoConfiguration.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
* Autconfiguration for a {@code KafkaItemReader}.
4444
*
4545
* @author Glenn Renfro
46+
* @author Michael Minella
4647
* @since 2.3
4748
*/
4849
@Configuration
@@ -56,37 +57,37 @@ public class KafkaItemWriterAutoConfiguration {
5657
@Bean
5758
@ConditionalOnMissingBean
5859
@ConditionalOnProperty(prefix = "spring.batch.job.kafkaitemwriter", name = "topic")
59-
public KafkaItemWriter<Object, Map<Object, Object>> kafkaItemWriter(
60+
public KafkaItemWriter<Object, Map<String, Object>> kafkaItemWriter(
6061
KafkaItemWriterProperties kafkaItemWriterProperties,
61-
ProducerFactory<Object, Map<Object, Object>> producerFactory,
62-
@Qualifier("batchItemKeyMapper") Converter<Object, Object> itemKeyMapper) {
62+
ProducerFactory<Object, Map<String, Object>> producerFactory,
63+
@Qualifier("batchItemKeyMapper") Converter<Map<String, Object>, Object> itemKeyMapper) {
6364

6465
validateProperties(kafkaItemWriterProperties);
6566
KafkaTemplate template = new KafkaTemplate(producerFactory);
6667
template.setDefaultTopic(kafkaItemWriterProperties.getTopic());
67-
return new KafkaItemWriterBuilder<Object, Map<Object, Object>>()
68+
return new KafkaItemWriterBuilder<Object, Map<String, Object>>()
6869
.delete(kafkaItemWriterProperties.isDelete()).kafkaTemplate(template)
6970
.itemKeyMapper(itemKeyMapper).build();
7071
}
7172

7273
@Bean
7374
@ConditionalOnMissingBean(name = "batchItemKeyMapper")
74-
public Converter<Object, Object> batchItemKeyMapper() {
75-
return new Converter<Object, Object>() {
75+
public Converter<Map<String, Object>, Object> batchItemKeyMapper() {
76+
return new Converter<Map<String, Object>, Object>() {
7677
@Override
77-
public Object convert(Object source) {
78+
public Object convert(Map<String, Object> source) {
7879
return source;
7980
}
8081
};
8182
}
8283

8384
@Bean
8485
@ConditionalOnMissingBean
85-
ProducerFactory<Object, Map<Object, Object>> producerFactory() {
86+
ProducerFactory<Object, Map<String, Object>> producerFactory() {
8687
Map<String, Object> configs = new HashMap<>();
8788
configs.putAll(this.kafkaProperties.getProducer().buildProperties());
88-
return new DefaultKafkaProducerFactory<Object, Map<Object, Object>>(configs, null,
89-
new JsonSerializer<>());
89+
return new DefaultKafkaProducerFactory<>(configs, null,
90+
new JsonSerializer<>());
9091
}
9192

9293
private void validateProperties(KafkaItemWriterProperties kafkaItemWriterProperties) {

spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemReaderAutoConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
* Autconfiguration for a {@code AmqpItemReader}.
3737
*
3838
* @author Glenn Renfro
39+
* @author Michael Minella
3940
* @since 2.3
4041
*/
4142
@Configuration
@@ -54,9 +55,9 @@ public AmqpItemReaderProperties amqpItemReaderProperties() {
5455
}
5556

5657
@Bean
57-
public AmqpItemReader<Map<Object, Object>> amqpItemReader(AmqpTemplate amqpTemplate,
58+
public AmqpItemReader<Map<String, Object>> amqpItemReader(AmqpTemplate amqpTemplate,
5859
@Autowired(required = false) Class itemType) {
59-
AmqpItemReaderBuilder<Map<Object, Object>> builder = new AmqpItemReaderBuilder<Map<Object, Object>>()
60+
AmqpItemReaderBuilder<Map<String, Object>> builder = new AmqpItemReaderBuilder<Map<String, Object>>()
6061
.amqpTemplate(amqpTemplate);
6162
if (itemType != null) {
6263
builder.itemType(itemType);

spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemWriterAutoConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
* Autconfiguration for a {@code AmqpItemWriter}.
3535
*
3636
* @author Glenn Renfro
37+
* @author Michael Minella
3738
* @since 2.3
3839
*/
3940
@Configuration
@@ -44,8 +45,8 @@
4445
public class AmqpItemWriterAutoConfiguration {
4546

4647
@Bean
47-
public AmqpItemWriter<Map<Object, Object>> amqpItemWriter(AmqpTemplate amqpTemplate) {
48-
return new AmqpItemWriterBuilder<Map<Object, Object>>().amqpTemplate(amqpTemplate)
48+
public AmqpItemWriter<Map<String, Object>> amqpItemWriter(AmqpTemplate amqpTemplate) {
49+
return new AmqpItemWriterBuilder<Map<String, Object>>().amqpTemplate(amqpTemplate)
4950
.build();
5051
}
5152

spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/SingleStepJobAutoConfigurationTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ public void testSimpleConfiguration() {
127127
Thread.sleep(1000);
128128
}
129129

130-
List<Map<Object, Object>> writtenItems = itemWriter.getWrittenItems();
130+
List<Map<String, Object>> writtenItems = itemWriter.getWrittenItems();
131131

132132
assertThat(writtenItems.size()).isEqualTo(3);
133133

@@ -142,8 +142,8 @@ public void testSimpleConfiguration() {
142142
public static class SimpleConfiguration {
143143

144144
@Bean
145-
public ListItemReader<Map<Object, Object>> itemReader() {
146-
List<Map<Object, Object>> items = new ArrayList<>(3);
145+
public ListItemReader<Map<String, Object>> itemReader() {
146+
List<Map<String, Object>> items = new ArrayList<>(3);
147147

148148
items.add(Collections.singletonMap("item", "foo"));
149149
items.add(Collections.singletonMap("item", "bar"));
@@ -153,7 +153,7 @@ public ListItemReader<Map<Object, Object>> itemReader() {
153153
}
154154

155155
@Bean
156-
public ListItemWriter<Map<Object, Object>> itemWriter() {
156+
public ListItemWriter<Map<String, Object>> itemWriter() {
157157
return new ListItemWriter<>();
158158
}
159159

0 commit comments

Comments
 (0)