From 00a16b41b8e82c36da2e4718da607130080742db Mon Sep 17 00:00:00 2001 From: Michael Minella Date: Tue, 31 Oct 2017 16:12:37 -0500 Subject: [PATCH] Remove checked exception from FlatFileItemReaderBuilder#build A checked exception from this method is rather invasive so this commit refactors it to throw a RuntimeException instead. Resolves BATCH-2649 --- .../builder/FlatFileItemReaderBuilder.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java index e7763ee21..f8c6a87c0 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java @@ -399,9 +399,8 @@ public class FlatFileItemReaderBuilder { * Builds the {@link FlatFileItemReader}. * * @return a {@link FlatFileItemReader} - * @throws Exception if an error occurs during construction */ - public FlatFileItemReader build() throws Exception { + public FlatFileItemReader build() { if(this.saveState) { Assert.state(StringUtils.hasText(this.name), "A name is required when saveState is set to true."); @@ -453,7 +452,12 @@ public class FlatFileItemReaderBuilder { mapper.setBeanFactory(this.beanFactory); mapper.setDistanceLimit(this.distanceLimit); mapper.setCustomEditors(this.customEditors); - mapper.afterPropertiesSet(); + try { + mapper.afterPropertiesSet(); + } + catch (Exception e) { + throw new IllegalStateException("Unable to initialize BeanWrapperFieldSetMapper", e); + } lineMapper.setFieldSetMapper(mapper); } @@ -595,9 +599,8 @@ public class FlatFileItemReaderBuilder { * Returns a {@link DelimitedLineTokenizer} * * @return {@link DelimitedLineTokenizer} - * @throws Exception if an error occurs during construction */ - public DelimitedLineTokenizer build() throws Exception { + public DelimitedLineTokenizer build() { Assert.notNull(this.fieldSetFactory, "A FieldSetFactory is required."); Assert.notEmpty(this.names, "A list of field names is required"); @@ -630,7 +633,12 @@ public class FlatFileItemReaderBuilder { tokenizer.setFieldSetFactory(this.fieldSetFactory); tokenizer.setStrict(this.strict); - tokenizer.afterPropertiesSet(); + try { + tokenizer.afterPropertiesSet(); + } + catch (Exception e) { + throw new IllegalStateException("Unable to intialize DelimitedLineTokenizer", e); + } return tokenizer; }