Upgrade spring-javaformat maven plugin to version 0.0.39

This commit is contained in:
Mahmoud Ben Hassine
2023-06-05 11:11:48 +02:00
parent bb5598e569
commit c25cd55901
264 changed files with 2551 additions and 1397 deletions

View File

@@ -78,7 +78,7 @@ public class PropertyExtractingDelegatingItemWriter<T> extends AbstractMethodInv
*/
public void setFieldsUsedAsTargetMethodArguments(String[] fieldsUsedAsMethodArguments) {
this.fieldsUsedAsTargetMethodArguments = Arrays.asList(fieldsUsedAsMethodArguments)
.toArray(new String[fieldsUsedAsMethodArguments.length]);
.toArray(new String[fieldsUsedAsMethodArguments.length]);
}
}

View File

@@ -191,18 +191,18 @@ public class JdbcBatchItemWriter<T> implements ItemWriter<T>, InitializingBean {
}
}
else {
updateCounts = namedParameterJdbcTemplate.getJdbcOperations().execute(sql,
new PreparedStatementCallback<int[]>() {
@Override
public int[] doInPreparedStatement(PreparedStatement ps)
throws SQLException, DataAccessException {
for (T item : chunk) {
itemPreparedStatementSetter.setValues(item, ps);
ps.addBatch();
}
return ps.executeBatch();
updateCounts = namedParameterJdbcTemplate.getJdbcOperations()
.execute(sql, new PreparedStatementCallback<int[]>() {
@Override
public int[] doInPreparedStatement(PreparedStatement ps)
throws SQLException, DataAccessException {
for (T item : chunk) {
itemPreparedStatementSetter.setValues(item, ps);
ps.addBatch();
}
});
return ps.executeBatch();
}
});
}
if (assertUpdates) {

View File

@@ -177,7 +177,7 @@ public class JdbcBatchItemWriterBuilder<T> {
if (mappedValue == 1) {
((JdbcBatchItemWriter<Map<String, Object>>) writer)
.setItemPreparedStatementSetter(new ColumnMapItemPreparedStatementSetter());
.setItemPreparedStatementSetter(new ColumnMapItemPreparedStatementSetter());
}
else if (mappedValue == 2) {
writer.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>());

View File

@@ -34,16 +34,21 @@ public class SqlWindowingPagingQueryProvider extends AbstractSqlPagingQueryProvi
StringBuilder sql = new StringBuilder();
sql.append("SELECT * FROM ( ");
sql.append("SELECT ")
.append(StringUtils.hasText(getOrderedQueryAlias()) ? getOrderedQueryAlias() + ".*, " : "*, ");
.append(StringUtils.hasText(getOrderedQueryAlias()) ? getOrderedQueryAlias() + ".*, " : "*, ");
sql.append("ROW_NUMBER() OVER (").append(getOverClause());
sql.append(") AS ROW_NUMBER");
sql.append(getOverSubstituteClauseStart());
sql.append(" FROM ").append(getFromClause())
.append(getWhereClause() == null ? "" : " WHERE " + getWhereClause());
sql.append(" FROM ")
.append(getFromClause())
.append(getWhereClause() == null ? "" : " WHERE " + getWhereClause());
sql.append(getGroupClause() == null ? "" : " GROUP BY " + getGroupClause());
sql.append(getOverSubstituteClauseEnd());
sql.append(") ").append(getSubQueryAlias()).append("WHERE ").append(extractTableAlias())
.append("ROW_NUMBER <= ").append(pageSize);
sql.append(") ")
.append(getSubQueryAlias())
.append("WHERE ")
.append(extractTableAlias())
.append("ROW_NUMBER <= ")
.append(pageSize);
sql.append(" ORDER BY ").append(SqlPagingQueryUtils.buildSortClause(this));
return sql.toString();
@@ -70,7 +75,7 @@ public class SqlWindowingPagingQueryProvider extends AbstractSqlPagingQueryProvi
StringBuilder sql = new StringBuilder();
sql.append("SELECT * FROM ( ");
sql.append("SELECT ")
.append(StringUtils.hasText(getOrderedQueryAlias()) ? getOrderedQueryAlias() + ".*, " : "*, ");
.append(StringUtils.hasText(getOrderedQueryAlias()) ? getOrderedQueryAlias() + ".*, " : "*, ");
sql.append("ROW_NUMBER() OVER (").append(getOverClause());
sql.append(") AS ROW_NUMBER");
sql.append(getOverSubstituteClauseStart());
@@ -82,8 +87,12 @@ public class SqlWindowingPagingQueryProvider extends AbstractSqlPagingQueryProvi
sql.append(getGroupClause() == null ? "" : " GROUP BY " + getGroupClause());
sql.append(getOverSubstituteClauseEnd());
sql.append(") ").append(getSubQueryAlias()).append("WHERE ").append(extractTableAlias())
.append("ROW_NUMBER <= ").append(pageSize);
sql.append(") ")
.append(getSubQueryAlias())
.append("WHERE ")
.append(extractTableAlias())
.append("ROW_NUMBER <= ")
.append(pageSize);
sql.append(" AND ");
SqlPagingQueryUtils.buildSortConditions(this, sql);
sql.append(" ORDER BY ").append(SqlPagingQueryUtils.buildSortClause(this));

View File

@@ -82,8 +82,8 @@ public class FormatterLineAggregator<T> extends ExtractorLineAggregator<T> {
String value = String.format(locale, format, fields);
if (maximumLength > 0) {
Assert.state(value.length() <= maximumLength, String.format(
"String overflowed in formatter -" + " longer than %d characters: [%s", maximumLength, value));
Assert.state(value.length() <= maximumLength, String
.format("String overflowed in formatter -" + " longer than %d characters: [%s", maximumLength, value));
}
if (minimumLength > 0) {

View File

@@ -94,8 +94,10 @@ public class RecordFieldExtractor<T> implements FieldExtractor<T> {
@Nullable
private RecordComponent getRecordComponentByName(String name) {
return Arrays.stream(this.recordComponents).filter(recordComponent -> recordComponent.getName().equals(name))
.findFirst().orElse(null);
return Arrays.stream(this.recordComponents)
.filter(recordComponent -> recordComponent.getName().equals(name))
.findFirst()
.orElse(null);
}
}

View File

@@ -174,7 +174,7 @@ public class KafkaItemReader<K, V> extends AbstractItemStreamItemReader<V> {
}
if (this.saveState && executionContext.containsKey(TOPIC_PARTITION_OFFSETS)) {
Map<TopicPartition, Long> offsets = (Map<TopicPartition, Long>) executionContext
.get(TOPIC_PARTITION_OFFSETS);
.get(TOPIC_PARTITION_OFFSETS);
for (Map.Entry<TopicPartition, Long> entry : offsets.entrySet()) {
this.partitionOffsets.put(entry.getKey(), entry.getValue() == 0 ? 0 : entry.getValue() + 1);
}

View File

@@ -400,7 +400,7 @@ public class StaxEventItemWriter<T> extends AbstractItemStreamItemWriter<T>
currentRecordCount = executionContext.getLong(getExecutionContextKey(WRITE_STATISTICS_NAME));
if (executionContext.containsKey(getExecutionContextKey(UNCLOSED_HEADER_CALLBACK_ELEMENTS_NAME))) {
unclosedHeaderCallbackElements = (List<QName>) executionContext
.get(getExecutionContextKey(UNCLOSED_HEADER_CALLBACK_ELEMENTS_NAME));
.get(getExecutionContextKey(UNCLOSED_HEADER_CALLBACK_ELEMENTS_NAME));
}
restarted = true;

View File

@@ -40,10 +40,10 @@ public class SimpleLimitExceptionHandler implements ExceptionHandler, Initializi
private RethrowOnThresholdExceptionHandler delegate = new RethrowOnThresholdExceptionHandler();
private Collection<Class<? extends Throwable>> exceptionClasses = Collections
.<Class<? extends Throwable>>singleton(Exception.class);
.<Class<? extends Throwable>>singleton(Exception.class);
private Collection<Class<? extends Throwable>> fatalExceptionClasses = Collections
.<Class<? extends Throwable>>singleton(Error.class);
.<Class<? extends Throwable>>singleton(Error.class);
private int limit = 0;

View File

@@ -94,9 +94,9 @@ public enum DatabaseType {
else if (databaseProductVersion.startsWith("DSN")) {
databaseProductName = "DB2ZOS";
}
else if (databaseProductName.contains("AS")
&& (databaseProductVersion.startsWith("QSQ") || databaseProductVersion
.substring(databaseProductVersion.indexOf('V')).matches("V\\dR\\d[mM]\\d"))) {
else if (databaseProductName.contains("AS") && (databaseProductVersion.startsWith("QSQ")
|| databaseProductVersion.substring(databaseProductVersion.indexOf('V'))
.matches("V\\dR\\d[mM]\\d"))) {
databaseProductName = "DB2AS400";
}
else {

View File

@@ -64,7 +64,9 @@ class AmqpItemReaderBuilderTests {
when(this.amqpTemplate.receive()).thenReturn(message);
final AmqpItemReader<Message> amqpItemReader = new AmqpItemReaderBuilder<Message>()
.amqpTemplate(this.amqpTemplate).itemType(Message.class).build();
.amqpTemplate(this.amqpTemplate)
.itemType(Message.class)
.build();
assertEquals(message, amqpItemReader.read());
}

View File

@@ -34,7 +34,9 @@ class AvroItemReaderBuilderTests extends AvroItemReaderTestSupport {
void itemReaderWithSchemaResource() throws Exception {
AvroItemReader<GenericRecord> avroItemReader = new AvroItemReaderBuilder<GenericRecord>().resource(dataResource)
.embeddedSchema(false).schema(schemaResource).build();
.embeddedSchema(false)
.schema(schemaResource)
.build();
verify(avroItemReader, genericAvroGeneratedUsers());
}
@@ -42,14 +44,18 @@ class AvroItemReaderBuilderTests extends AvroItemReaderTestSupport {
@Test
void itemReaderWithGeneratedData() throws Exception {
AvroItemReader<GenericRecord> avroItemReader = new AvroItemReaderBuilder<GenericRecord>()
.resource(dataResourceWithSchema).schema(schemaResource).build();
.resource(dataResourceWithSchema)
.schema(schemaResource)
.build();
verify(avroItemReader, genericAvroGeneratedUsers());
}
@Test
void itemReaderWithSchemaString() throws Exception {
AvroItemReader<GenericRecord> avroItemReader = new AvroItemReaderBuilder<GenericRecord>()
.schema(schemaString(schemaResource)).resource(dataResourceWithSchema).build();
.schema(schemaString(schemaResource))
.resource(dataResourceWithSchema)
.build();
verify(avroItemReader, genericAvroGeneratedUsers());
}
@@ -57,14 +63,16 @@ class AvroItemReaderBuilderTests extends AvroItemReaderTestSupport {
@Test
void itemReaderWithEmbeddedHeader() throws Exception {
AvroItemReader<User> avroItemReader = new AvroItemReaderBuilder<User>().resource(dataResourceWithSchema)
.type(User.class).build();
.type(User.class)
.build();
verify(avroItemReader, avroGeneratedUsers());
}
@Test
void itemReaderForSpecificType() throws Exception {
AvroItemReader<User> avroItemReader = new AvroItemReaderBuilder<User>().type(User.class)
.resource(dataResourceWithSchema).build();
.resource(dataResourceWithSchema)
.build();
verify(avroItemReader, avroGeneratedUsers());
}

View File

@@ -41,8 +41,10 @@ class AvroItemWriterBuilderTests extends AvroItemWriterTestSupport {
@Test
void itemWriterForAvroGeneratedClass() throws Exception {
AvroItemWriter<User> avroItemWriter = new AvroItemWriterBuilder<User>().resource(output).schema(schemaResource)
.type(User.class).build();
AvroItemWriter<User> avroItemWriter = new AvroItemWriterBuilder<User>().resource(output)
.schema(schemaResource)
.type(User.class)
.build();
avroItemWriter.open(new ExecutionContext());
avroItemWriter.write(this.avroGeneratedUsers());
@@ -55,7 +57,10 @@ class AvroItemWriterBuilderTests extends AvroItemWriterTestSupport {
void itemWriterForGenericRecords() throws Exception {
AvroItemWriter<GenericRecord> avroItemWriter = new AvroItemWriterBuilder<GenericRecord>()
.type(GenericRecord.class).schema(plainOldUserSchemaResource).resource(output).build();
.type(GenericRecord.class)
.schema(plainOldUserSchemaResource)
.resource(output)
.build();
avroItemWriter.open(new ExecutionContext());
avroItemWriter.write(this.genericPlainOldUsers());
@@ -69,7 +74,9 @@ class AvroItemWriterBuilderTests extends AvroItemWriterTestSupport {
void itemWriterForPojos() throws Exception {
AvroItemWriter<PlainOldUser> avroItemWriter = new AvroItemWriterBuilder<PlainOldUser>().resource(output)
.schema(plainOldUserSchemaResource).type(PlainOldUser.class).build();
.schema(plainOldUserSchemaResource)
.type(PlainOldUser.class)
.build();
avroItemWriter.open(new ExecutionContext());
avroItemWriter.write(this.plainOldUsers());
@@ -83,7 +90,8 @@ class AvroItemWriterBuilderTests extends AvroItemWriterTestSupport {
void itemWriterWithNoEmbeddedSchema() throws Exception {
AvroItemWriter<PlainOldUser> avroItemWriter = new AvroItemWriterBuilder<PlainOldUser>().resource(output)
.type(PlainOldUser.class).build();
.type(PlainOldUser.class)
.build();
avroItemWriter.open(new ExecutionContext());
avroItemWriter.write(this.plainOldUsers());
avroItemWriter.close();

View File

@@ -427,7 +427,7 @@ public class User extends org.apache.avro.specific.SpecificRecordBase
@SuppressWarnings("unchecked")
private static final org.apache.avro.io.DatumWriter<User> WRITER$ = (org.apache.avro.io.DatumWriter<User>) MODEL$
.createDatumWriter(SCHEMA$);
.createDatumWriter(SCHEMA$);
@Override
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException {
@@ -436,7 +436,7 @@ public class User extends org.apache.avro.specific.SpecificRecordBase
@SuppressWarnings("unchecked")
private static final org.apache.avro.io.DatumReader<User> READER$ = (org.apache.avro.io.DatumReader<User>) MODEL$
.createDatumReader(SCHEMA$);
.createDatumReader(SCHEMA$);
@Override
public void readExternal(java.io.ObjectInput in) throws java.io.IOException {
@@ -492,7 +492,7 @@ public class User extends org.apache.avro.specific.SpecificRecordBase
}
else {
this.favorite_color = in
.readString(this.favorite_color instanceof Utf8 ? (Utf8) this.favorite_color : null);
.readString(this.favorite_color instanceof Utf8 ? (Utf8) this.favorite_color : null);
}
}
@@ -515,8 +515,8 @@ public class User extends org.apache.avro.specific.SpecificRecordBase
this.favorite_color = null;
}
else {
this.favorite_color = in.readString(
this.favorite_color instanceof Utf8 ? (Utf8) this.favorite_color : null);
this.favorite_color = in
.readString(this.favorite_color instanceof Utf8 ? (Utf8) this.favorite_color : null);
}
}
default -> throw new java.io.IOException("Corrupt ResolvingDecoder.");

View File

@@ -55,7 +55,9 @@ public abstract class AvroItemWriterTestSupport extends AvroTestFixtures {
private <T> void doVerify(byte[] bytes, Class<T> clazz, Chunk<T> actual, boolean embeddedSchema) throws Exception {
AvroItemReader<T> avroItemReader = new AvroItemReaderBuilder<T>().type(clazz)
.resource(new ByteArrayResource(bytes)).embeddedSchema(embeddedSchema).build();
.resource(new ByteArrayResource(bytes))
.embeddedSchema(embeddedSchema)
.build();
avroItemReader.open(new ExecutionContext());

View File

@@ -343,7 +343,7 @@ class MongoItemReaderTests {
// when + then
assertThatIllegalArgumentException().isThrownBy(() -> reader.setSort(null))
.withMessage("Sorts must not be null");
.withMessage("Sorts must not be null");
}
}

View File

@@ -142,7 +142,7 @@ class Neo4jItemReaderTests {
when(this.sessionFactory.openSession()).thenReturn(this.session);
when(this.session.query(String.class,
"START n=node(*) MATCH n -- m WHERE has(n.name) RETURN m ORDER BY n.age SKIP 0 LIMIT 50", null))
.thenReturn(result);
.thenReturn(result);
when(result.iterator()).thenReturn(Arrays.asList("foo", "bar", "baz").iterator());
assertTrue(itemReader.doPageRead().hasNext());
@@ -162,7 +162,7 @@ class Neo4jItemReaderTests {
when(this.sessionFactory.openSession()).thenReturn(this.session);
when(this.session.query(String.class,
"START n=node(*) MATCH n -- m WHERE has(n.name) RETURN m ORDER BY n.age SKIP 0 LIMIT 50", params))
.thenReturn(result);
.thenReturn(result);
when(result.iterator()).thenReturn(Arrays.asList("foo", "bar", "baz").iterator());
assertTrue(itemReader.doPageRead().hasNext());

View File

@@ -139,7 +139,7 @@ class RepositoryItemReaderTests {
ArgumentCaptor<PageRequest> pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class);
final Object result = new Object();
when(repository.findAll(pageRequestContainer.capture())).thenReturn(new PageImpl<>(singletonList(new Object())))
.thenReturn(new PageImpl<>(singletonList(result)));
.thenReturn(new PageImpl<>(singletonList(result)));
assertNotSame(result, reader.doRead());
assertEquals(result, reader.doRead());
@@ -156,7 +156,8 @@ class RepositoryItemReaderTests {
ArgumentCaptor<PageRequest> pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class);
final Object result = new Object();
when(repository.findAll(pageRequestContainer.capture())).thenReturn(new PageImpl<>(singletonList(new Object())))
.thenReturn(new PageImpl<>(singletonList(result))).thenReturn(new PageImpl<>(new ArrayList<>()));
.thenReturn(new PageImpl<>(singletonList(result)))
.thenReturn(new PageImpl<>(new ArrayList<>()));
assertNotSame(result, reader.doRead());
assertEquals(result, reader.doRead());
@@ -237,7 +238,7 @@ class RepositoryItemReaderTests {
ArgumentCaptor<PageRequest> pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class);
when(differentRepository.findFirstNames(pageRequestContainer.capture()))
.thenReturn(new SliceImpl<>(singletonList("result")));
.thenReturn(new SliceImpl<>(singletonList("result")));
assertEquals("result", reader.doRead());

View File

@@ -110,7 +110,9 @@ class MongoItemReaderBuilderTests {
@Test
void testCollection() throws Exception {
MongoItemReader<String> reader = getBasicBuilder().parameterValues(Collections.singletonList("foo"))
.jsonQuery("{ name : ?0 }").collection("collection").build();
.jsonQuery("{ name : ?0 }")
.collection("collection")
.build();
when(this.template.find(any(), any(), anyString())).thenReturn(new ArrayList<>());
@@ -124,8 +126,10 @@ class MongoItemReaderBuilderTests {
@Test
void testVarargs() throws Exception {
MongoItemReader<String> reader = getBasicBuilder().parameterValues("foo").jsonQuery("{ name : ?0 }")
.collection("collection").build();
MongoItemReader<String> reader = getBasicBuilder().parameterValues("foo")
.jsonQuery("{ name : ?0 }")
.collection("collection")
.build();
when(this.template.find(any(), any(), anyString())).thenReturn(new ArrayList<>());
@@ -140,8 +144,12 @@ class MongoItemReaderBuilderTests {
@Test
void testWithoutQueryLimit() throws Exception {
MongoItemReader<String> reader = new MongoItemReaderBuilder<String>().template(this.template)
.targetType(String.class).query(new Query()).sorts(this.sortOptions).name("mongoReaderTest")
.pageSize(50).build();
.targetType(String.class)
.query(new Query())
.sorts(this.sortOptions)
.name("mongoReaderTest")
.pageSize(50)
.build();
when(template.find(any(), any())).thenReturn(new ArrayList<>());
@@ -153,7 +161,11 @@ class MongoItemReaderBuilderTests {
@Test
void testWithoutQueryLimitAndPageSize() throws Exception {
MongoItemReader<String> reader = new MongoItemReaderBuilder<String>().template(this.template)
.targetType(String.class).query(new Query()).sorts(this.sortOptions).name("mongoReaderTest").build();
.targetType(String.class)
.query(new Query())
.sorts(this.sortOptions)
.name("mongoReaderTest")
.build();
when(template.find(any(), any())).thenReturn(new ArrayList<>());
@@ -164,41 +176,56 @@ class MongoItemReaderBuilderTests {
@Test
void testNullTemplate() {
validateExceptionMessage(new MongoItemReaderBuilder<String>().targetType(String.class).jsonQuery("{ }")
.sorts(this.sortOptions).name("mongoReaderTest").pageSize(50), "template is required.");
validateExceptionMessage(new MongoItemReaderBuilder<String>().targetType(String.class)
.jsonQuery("{ }")
.sorts(this.sortOptions)
.name("mongoReaderTest")
.pageSize(50), "template is required.");
}
@Test
void testNullTargetType() {
validateExceptionMessage(new MongoItemReaderBuilder<String>().template(this.template).jsonQuery("{ }")
.sorts(this.sortOptions).name("mongoReaderTest").pageSize(50), "targetType is required.");
validateExceptionMessage(new MongoItemReaderBuilder<String>().template(this.template)
.jsonQuery("{ }")
.sorts(this.sortOptions)
.name("mongoReaderTest")
.pageSize(50), "targetType is required.");
}
@Test
void testNullQuery() {
validateExceptionMessage(new MongoItemReaderBuilder<String>().template(this.template).targetType(String.class)
.sorts(this.sortOptions).name("mongoReaderTest").pageSize(50), "A query is required");
validateExceptionMessage(new MongoItemReaderBuilder<String>().template(this.template)
.targetType(String.class)
.sorts(this.sortOptions)
.name("mongoReaderTest")
.pageSize(50), "A query is required");
}
@Test
void testNullSortsWithQueryString() {
validateExceptionMessage(new MongoItemReaderBuilder<String>().template(this.template).targetType(String.class)
.jsonQuery("{ }").name("mongoReaderTest").pageSize(50), "sorts map is required.");
validateExceptionMessage(new MongoItemReaderBuilder<String>().template(this.template)
.targetType(String.class)
.jsonQuery("{ }")
.name("mongoReaderTest")
.pageSize(50), "sorts map is required.");
}
@Test
void testNullSortsWithQuery() {
validateExceptionMessage(
new MongoItemReaderBuilder<String>().template(this.template).targetType(String.class)
.query(query(where("_id").is("10"))).name("mongoReaderTest").pageSize(50),
"sorts map is required.");
validateExceptionMessage(new MongoItemReaderBuilder<String>().template(this.template)
.targetType(String.class)
.query(query(where("_id").is("10")))
.name("mongoReaderTest")
.pageSize(50), "sorts map is required.");
}
@Test
void testNullName() {
validateExceptionMessage(new MongoItemReaderBuilder<String>().template(this.template).targetType(String.class)
.jsonQuery("{ }").sorts(this.sortOptions).pageSize(50),
"A name is required when saveState is set to true");
validateExceptionMessage(new MongoItemReaderBuilder<String>().template(this.template)
.targetType(String.class)
.jsonQuery("{ }")
.sorts(this.sortOptions)
.pageSize(50), "A name is required when saveState is set to true");
}
private void validateExceptionMessage(MongoItemReaderBuilder<String> builder, String message) {
@@ -208,8 +235,12 @@ class MongoItemReaderBuilderTests {
}
private MongoItemReaderBuilder<String> getBasicBuilder() {
return new MongoItemReaderBuilder<String>().template(this.template).targetType(String.class).jsonQuery("{ }")
.sorts(this.sortOptions).name("mongoReaderTest").pageSize(50);
return new MongoItemReaderBuilder<String>().template(this.template)
.targetType(String.class)
.jsonQuery("{ }")
.sorts(this.sortOptions)
.name("mongoReaderTest")
.pageSize(50);
}
}

View File

@@ -98,7 +98,8 @@ class MongoItemWriterBuilderTests {
@Test
void testWriteToCollection() throws Exception {
MongoItemWriter<Item> writer = new MongoItemWriterBuilder<Item>().collection("collection")
.template(this.template).build();
.template(this.template)
.build();
writer.write(this.saveItems);

View File

@@ -53,13 +53,20 @@ class Neo4jItemReaderBuilderTests {
@Test
void testFullyQualifiedItemReader() throws Exception {
Neo4jItemReader<String> itemReader = new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory)
.targetType(String.class).startStatement("n=node(*)").orderByStatement("n.age").pageSize(50).name("bar")
.matchStatement("n -- m").whereStatement("has(n.name)").returnStatement("m").build();
.targetType(String.class)
.startStatement("n=node(*)")
.orderByStatement("n.age")
.pageSize(50)
.name("bar")
.matchStatement("n -- m")
.whereStatement("has(n.name)")
.returnStatement("m")
.build();
when(this.sessionFactory.openSession()).thenReturn(this.session);
when(this.session.query(String.class,
"START n=node(*) MATCH n -- m WHERE has(n.name) RETURN m ORDER BY n.age SKIP 0 LIMIT 50", null))
.thenReturn(result);
.thenReturn(result);
when(result.iterator()).thenReturn(Arrays.asList("foo", "bar", "baz").iterator());
assertEquals("foo", itemReader.read(), "The expected value was not returned by reader.");
@@ -70,12 +77,19 @@ class Neo4jItemReaderBuilderTests {
@Test
void testCurrentSize() throws Exception {
Neo4jItemReader<String> itemReader = new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory)
.targetType(String.class).startStatement("n=node(*)").orderByStatement("n.age").pageSize(50).name("bar")
.returnStatement("m").currentItemCount(0).maxItemCount(1).build();
.targetType(String.class)
.startStatement("n=node(*)")
.orderByStatement("n.age")
.pageSize(50)
.name("bar")
.returnStatement("m")
.currentItemCount(0)
.maxItemCount(1)
.build();
when(this.sessionFactory.openSession()).thenReturn(this.session);
when(this.session.query(String.class, "START n=node(*) RETURN m ORDER BY n.age SKIP 0 LIMIT 50", null))
.thenReturn(result);
.thenReturn(result);
when(result.iterator()).thenReturn(Arrays.asList("foo", "bar", "baz").iterator());
assertEquals("foo", itemReader.read(), "The expected value was not returned by reader.");
@@ -87,14 +101,22 @@ class Neo4jItemReaderBuilderTests {
Map<String, Object> params = new HashMap<>();
params.put("foo", "bar");
Neo4jItemReader<String> itemReader = new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory)
.targetType(String.class).startStatement("n=node(*)").returnStatement("*").orderByStatement("n.age")
.pageSize(50).name("foo").parameterValues(params).matchStatement("n -- m").whereStatement("has(n.name)")
.returnStatement("m").build();
.targetType(String.class)
.startStatement("n=node(*)")
.returnStatement("*")
.orderByStatement("n.age")
.pageSize(50)
.name("foo")
.parameterValues(params)
.matchStatement("n -- m")
.whereStatement("has(n.name)")
.returnStatement("m")
.build();
when(this.sessionFactory.openSession()).thenReturn(this.session);
when(this.session.query(String.class,
"START n=node(*) MATCH n -- m WHERE has(n.name) RETURN m ORDER BY n.age SKIP 0 LIMIT 50", params))
.thenReturn(result);
.thenReturn(result);
when(result.iterator()).thenReturn(Arrays.asList("foo", "bar", "baz").iterator());
assertEquals("foo", itemReader.read(), "The expected value was not returned by reader.");
@@ -102,84 +124,130 @@ class Neo4jItemReaderBuilderTests {
@Test
void testNoSessionFactory() {
var builder = new Neo4jItemReaderBuilder<String>().targetType(String.class).startStatement("n=node(*)")
.returnStatement("*").orderByStatement("n.age").pageSize(50).name("bar");
var builder = new Neo4jItemReaderBuilder<String>().targetType(String.class)
.startStatement("n=node(*)")
.returnStatement("*")
.orderByStatement("n.age")
.pageSize(50)
.name("bar");
Exception exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("sessionFactory is required.", exception.getMessage());
}
@Test
void testZeroPageSize() {
validateExceptionMessage(
new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory).targetType(String.class)
.startStatement("n=node(*)").returnStatement("*").orderByStatement("n.age").pageSize(0)
.name("foo").matchStatement("n -- m").whereStatement("has(n.name)").returnStatement("m"),
"pageSize must be greater than zero");
validateExceptionMessage(new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory)
.targetType(String.class)
.startStatement("n=node(*)")
.returnStatement("*")
.orderByStatement("n.age")
.pageSize(0)
.name("foo")
.matchStatement("n -- m")
.whereStatement("has(n.name)")
.returnStatement("m"), "pageSize must be greater than zero");
}
@Test
void testZeroMaxItemCount() {
validateExceptionMessage(new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory)
.targetType(String.class).startStatement("n=node(*)").returnStatement("*").orderByStatement("n.age")
.pageSize(5).maxItemCount(0).name("foo").matchStatement("n -- m").whereStatement("has(n.name)")
.returnStatement("m"), "maxItemCount must be greater than zero");
.targetType(String.class)
.startStatement("n=node(*)")
.returnStatement("*")
.orderByStatement("n.age")
.pageSize(5)
.maxItemCount(0)
.name("foo")
.matchStatement("n -- m")
.whereStatement("has(n.name)")
.returnStatement("m"), "maxItemCount must be greater than zero");
}
@Test
void testCurrentItemCountGreaterThanMaxItemCount() {
validateExceptionMessage(
new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory).targetType(String.class)
.startStatement("n=node(*)").returnStatement("*").orderByStatement("n.age").pageSize(5)
.maxItemCount(5).currentItemCount(6).name("foo").matchStatement("n -- m")
.whereStatement("has(n.name)").returnStatement("m"),
"maxItemCount must be greater than currentItemCount");
validateExceptionMessage(new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory)
.targetType(String.class)
.startStatement("n=node(*)")
.returnStatement("*")
.orderByStatement("n.age")
.pageSize(5)
.maxItemCount(5)
.currentItemCount(6)
.name("foo")
.matchStatement("n -- m")
.whereStatement("has(n.name)")
.returnStatement("m"), "maxItemCount must be greater than currentItemCount");
}
@Test
void testNullName() {
validateExceptionMessage(
new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory).targetType(String.class)
.startStatement("n=node(*)").returnStatement("*").orderByStatement("n.age").pageSize(50),
"A name is required when saveState is set to true");
validateExceptionMessage(new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory)
.targetType(String.class)
.startStatement("n=node(*)")
.returnStatement("*")
.orderByStatement("n.age")
.pageSize(50), "A name is required when saveState is set to true");
// tests that name is not required if saveState is set to false.
new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory).targetType(String.class)
.startStatement("n=node(*)").returnStatement("*").orderByStatement("n.age").saveState(false)
.pageSize(50).build();
new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory)
.targetType(String.class)
.startStatement("n=node(*)")
.returnStatement("*")
.orderByStatement("n.age")
.saveState(false)
.pageSize(50)
.build();
}
@Test
void testNullTargetType() {
validateExceptionMessage(
new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory).startStatement("n=node(*)")
.returnStatement("*").orderByStatement("n.age").pageSize(50).name("bar")
.matchStatement("n -- m").whereStatement("has(n.name)").returnStatement("m"),
"targetType is required.");
validateExceptionMessage(new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory)
.startStatement("n=node(*)")
.returnStatement("*")
.orderByStatement("n.age")
.pageSize(50)
.name("bar")
.matchStatement("n -- m")
.whereStatement("has(n.name)")
.returnStatement("m"), "targetType is required.");
}
@Test
void testNullStartStatement() {
validateExceptionMessage(
new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory).targetType(String.class)
.returnStatement("*").orderByStatement("n.age").pageSize(50).name("bar")
.matchStatement("n -- m").whereStatement("has(n.name)").returnStatement("m"),
"startStatement is required.");
validateExceptionMessage(new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory)
.targetType(String.class)
.returnStatement("*")
.orderByStatement("n.age")
.pageSize(50)
.name("bar")
.matchStatement("n -- m")
.whereStatement("has(n.name)")
.returnStatement("m"), "startStatement is required.");
}
@Test
void testNullReturnStatement() {
validateExceptionMessage(new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory)
.targetType(String.class).startStatement("n=node(*)").orderByStatement("n.age").pageSize(50).name("bar")
.matchStatement("n -- m").whereStatement("has(n.name)"), "returnStatement is required.");
.targetType(String.class)
.startStatement("n=node(*)")
.orderByStatement("n.age")
.pageSize(50)
.name("bar")
.matchStatement("n -- m")
.whereStatement("has(n.name)"), "returnStatement is required.");
}
@Test
void testNullOrderByStatement() {
validateExceptionMessage(
new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory).targetType(String.class)
.startStatement("n=node(*)").returnStatement("*").pageSize(50).name("bar")
.matchStatement("n -- m").whereStatement("has(n.name)").returnStatement("m"),
"orderByStatement is required.");
validateExceptionMessage(new Neo4jItemReaderBuilder<String>().sessionFactory(this.sessionFactory)
.targetType(String.class)
.startStatement("n=node(*)")
.returnStatement("*")
.pageSize(50)
.name("bar")
.matchStatement("n -- m")
.whereStatement("has(n.name)")
.returnStatement("m"), "orderByStatement is required.");
}
private void validateExceptionMessage(Neo4jItemReaderBuilder<?> builder, String message) {

View File

@@ -49,7 +49,7 @@ class Neo4jItemWriterBuilderTests {
@Test
void testBasicWriter() throws Exception {
Neo4jItemWriter<String> writer = new Neo4jItemWriterBuilder<String>().sessionFactory(this.sessionFactory)
.build();
.build();
Chunk<String> items = new Chunk<>();
items.add("foo");
items.add("bar");
@@ -66,7 +66,8 @@ class Neo4jItemWriterBuilderTests {
@Test
void testBasicDelete() throws Exception {
Neo4jItemWriter<String> writer = new Neo4jItemWriterBuilder<String>().delete(true)
.sessionFactory(this.sessionFactory).build();
.sessionFactory(this.sessionFactory)
.build();
Chunk<String> items = new Chunk<>();
items.add("foo");
items.add("bar");

View File

@@ -80,7 +80,11 @@ class RepositoryItemReaderBuilderTests {
@Test
void testBasicRead() throws Exception {
RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>().repository(this.repository)
.sorts(this.sorts).maxItemCount(5).methodName("foo").name("bar").build();
.sorts(this.sorts)
.maxItemCount(5)
.methodName("foo")
.name("bar")
.build();
String result = (String) reader.read();
assertEquals(TEST_CONTENT, result, "Result returned from reader was not expected value.");
assertEquals(10, this.pageRequestContainer.getValue().getPageSize(), "page size was not expected value.");
@@ -89,42 +93,61 @@ class RepositoryItemReaderBuilderTests {
@Test
void testCurrentItemCount() throws Exception {
RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>().repository(this.repository)
.sorts(this.sorts).currentItemCount(6).maxItemCount(5).methodName("foo").name("bar").build();
.sorts(this.sorts)
.currentItemCount(6)
.maxItemCount(5)
.methodName("foo")
.name("bar")
.build();
assertNull(reader.read(), "Result returned from reader was not null.");
}
@Test
void testPageSize() throws Exception {
RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>().repository(this.repository)
.sorts(this.sorts).maxItemCount(5).methodName("foo").name("bar").pageSize(2).build();
.sorts(this.sorts)
.maxItemCount(5)
.methodName("foo")
.name("bar")
.pageSize(2)
.build();
reader.read();
assertEquals(2, this.pageRequestContainer.getValue().getPageSize(), "page size was not expected value.");
}
@Test
void testNoMethodName() {
var builder = new RepositoryItemReaderBuilder<>().repository(this.repository).sorts(this.sorts)
.maxItemCount(10);
var builder = new RepositoryItemReaderBuilder<>().repository(this.repository)
.sorts(this.sorts)
.maxItemCount(10);
Exception exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("methodName is required.", exception.getMessage());
builder = new RepositoryItemReaderBuilder<>().repository(this.repository).sorts(this.sorts).methodName("")
.maxItemCount(5);
builder = new RepositoryItemReaderBuilder<>().repository(this.repository)
.sorts(this.sorts)
.methodName("")
.maxItemCount(5);
exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("methodName is required.", exception.getMessage());
}
@Test
void testSaveState() {
var builder = new RepositoryItemReaderBuilder<>().repository(repository).methodName("foo").sorts(sorts)
.maxItemCount(5);
var builder = new RepositoryItemReaderBuilder<>().repository(repository)
.methodName("foo")
.sorts(sorts)
.maxItemCount(5);
Exception exception = assertThrows(IllegalStateException.class, builder::build);
assertEquals("A name is required when saveState is set to true.", exception.getMessage());
// No IllegalStateException for a name that is not set, should not be thrown since
// saveState was false.
new RepositoryItemReaderBuilder<>().repository(repository).saveState(false).methodName("foo").sorts(sorts)
.maxItemCount(5).build();
new RepositoryItemReaderBuilder<>().repository(repository)
.saveState(false)
.methodName("foo")
.sorts(sorts)
.maxItemCount(5)
.build();
}
@Test
@@ -158,10 +181,16 @@ class RepositoryItemReaderBuilderTests {
ArgumentCaptor<String> arg2Captor = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<String> arg3Captor = ArgumentCaptor.forClass(String.class);
when(this.repository.foo(arg1Captor.capture(), arg2Captor.capture(), arg3Captor.capture(),
this.pageRequestContainer.capture())).thenReturn(this.slice);
this.pageRequestContainer.capture()))
.thenReturn(this.slice);
RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>().repository(this.repository)
.sorts(this.sorts).maxItemCount(5).methodName("foo").name("bar").arguments(args).build();
.sorts(this.sorts)
.maxItemCount(5)
.methodName("foo")
.name("bar")
.arguments(args)
.build();
String result = (String) reader.read();
verifyMultiArgRead(arg1Captor, arg2Captor, arg3Captor, result);
@@ -173,10 +202,16 @@ class RepositoryItemReaderBuilderTests {
ArgumentCaptor<String> arg2Captor = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<String> arg3Captor = ArgumentCaptor.forClass(String.class);
when(this.repository.foo(arg1Captor.capture(), arg2Captor.capture(), arg3Captor.capture(),
this.pageRequestContainer.capture())).thenReturn(this.slice);
this.pageRequestContainer.capture()))
.thenReturn(this.slice);
RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>().repository(this.repository)
.sorts(this.sorts).maxItemCount(5).methodName("foo").name("bar").arguments(ARG1, ARG2, ARG3).build();
.sorts(this.sorts)
.maxItemCount(5)
.methodName("foo")
.name("bar")
.arguments(ARG1, ARG2, ARG3)
.build();
String result = (String) reader.read();
verifyMultiArgRead(arg1Captor, arg2Captor, arg3Captor, result);

View File

@@ -58,7 +58,8 @@ class RepositoryItemWriterBuilderTests {
@Test
void testWriteItems() throws Exception {
RepositoryItemWriter<String> writer = new RepositoryItemWriterBuilder<String>().methodName("save")
.repository(this.repository).build();
.repository(this.repository)
.build();
Chunk<String> items = Chunk.of("foo");
@@ -70,7 +71,8 @@ class RepositoryItemWriterBuilderTests {
@Test
void testWriteItemsTestRepository() throws Exception {
RepositoryItemWriter<String> writer = new RepositoryItemWriterBuilder<String>().methodName("foo")
.repository(this.repository).build();
.repository(this.repository)
.build();
Chunk<String> items = Chunk.of("foo");
@@ -86,7 +88,8 @@ class RepositoryItemWriterBuilderTests {
repositoryMethodReference.methodIs().foo(null);
RepositoryItemWriter<String> writer = new RepositoryItemWriterBuilder<String>().methodName("foo")
.repository(repositoryMethodReference).build();
.repository(repositoryMethodReference)
.build();
Chunk<String> items = Chunk.of("foo");

View File

@@ -59,7 +59,7 @@ public class CompositeKeyFooDao extends JdbcDaoSupport implements FooDao {
};
return getJdbcTemplate().query("SELECT ID, NAME, VALUE from T_FOOS where ID = ? and VALUE = ?", fooMapper, args)
.get(0);
.get(0);
}
}

View File

@@ -184,7 +184,7 @@ public class JdbcBatchItemWriterNamedParameterTests {
when(namedParameterJdbcOperations.batchUpdate(eq(sql),
eqSqlParameterSourceArray(
new SqlParameterSource[] { new BeanPropertySqlParameterSource(new Foo("bar")) })))
.thenThrow(ex);
.thenThrow(ex);
Exception exception = assertThrows(RuntimeException.class, () -> writer.write(Chunk.of(new Foo("bar"))));
assertEquals("ERROR", exception.getMessage());
}

View File

@@ -47,7 +47,8 @@ class JdbcCursorItemReaderConfigTests {
when(con.getAutoCommit()).thenReturn(false);
PreparedStatement ps = mock(PreparedStatement.class);
when(con.prepareStatement("select foo from bar", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
ResultSet.HOLD_CURSORS_OVER_COMMIT)).thenReturn(ps);
ResultSet.HOLD_CURSORS_OVER_COMMIT))
.thenReturn(ps);
when(ds.getConnection()).thenReturn(con);
when(ds.getConnection()).thenReturn(con);
con.commit();
@@ -79,7 +80,7 @@ class JdbcCursorItemReaderConfigTests {
when(con.getAutoCommit()).thenReturn(false);
PreparedStatement ps = mock(PreparedStatement.class);
when(con.prepareStatement("select foo from bar", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY))
.thenReturn(ps);
.thenReturn(ps);
when(ds.getConnection()).thenReturn(con);
when(ds.getConnection()).thenReturn(con);
con.commit();
@@ -109,7 +110,7 @@ class JdbcCursorItemReaderConfigTests {
when(con.getAutoCommit()).thenReturn(initialAutoCommit);
PreparedStatement ps = mock(PreparedStatement.class);
when(con.prepareStatement("select foo from bar", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY))
.thenReturn(ps);
.thenReturn(ps);
when(ds.getConnection()).thenReturn(con);
final JdbcCursorItemReader<String> reader = new JdbcCursorItemReader<>();

View File

@@ -36,7 +36,7 @@ class JdbcPagingItemReaderConfigTests {
void testConfig() {
assertNotNull(jdbcPagingItemReader);
NamedParameterJdbcTemplate namedParameterJdbcTemplate = (NamedParameterJdbcTemplate) ReflectionTestUtils
.getField(jdbcPagingItemReader, "namedParameterJdbcTemplate");
.getField(jdbcPagingItemReader, "namedParameterJdbcTemplate");
JdbcTemplate jdbcTemplate = (JdbcTemplate) namedParameterJdbcTemplate.getJdbcOperations();
assertEquals(1000, jdbcTemplate.getMaxRows());
assertEquals(100, jdbcTemplate.getFetchSize());

View File

@@ -42,23 +42,23 @@ class JdbcParameterUtilsTests {
assertEquals(2,
JdbcParameterUtils.countParameterPlaceholders("The big :parameter :newpar :parameter bad wolf", null));
assertEquals(2, JdbcParameterUtils
.countParameterPlaceholders("The big :parameter, :newpar, :parameter bad wolf", null));
.countParameterPlaceholders("The big :parameter, :newpar, :parameter bad wolf", null));
assertEquals(1, JdbcParameterUtils.countParameterPlaceholders("The \"big:\" 'ba''ad:p' :parameter wolf", null));
assertEquals(1, JdbcParameterUtils.countParameterPlaceholders("&parameter", null));
assertEquals(1, JdbcParameterUtils.countParameterPlaceholders("The \"big\" &parameter 'bad wolf'", null));
assertEquals(1, JdbcParameterUtils.countParameterPlaceholders("The big &parameter &parameter bad wolf", null));
assertEquals(2, JdbcParameterUtils
.countParameterPlaceholders("The big &parameter &newparameter &parameter bad wolf", null));
.countParameterPlaceholders("The big &parameter &newparameter &parameter bad wolf", null));
assertEquals(2, JdbcParameterUtils
.countParameterPlaceholders("The big &parameter, &newparameter, &parameter bad wolf", null));
.countParameterPlaceholders("The big &parameter, &newparameter, &parameter bad wolf", null));
assertEquals(1,
JdbcParameterUtils.countParameterPlaceholders("The \"big &x \" 'ba''ad&p' &parameter wolf", null));
assertEquals(2, JdbcParameterUtils
.countParameterPlaceholders("The big :parameter, &newparameter, &parameter bad wolf", null));
.countParameterPlaceholders("The big :parameter, &newparameter, &parameter bad wolf", null));
assertEquals(2, JdbcParameterUtils
.countParameterPlaceholders("The big :parameter, &sameparameter, &sameparameter bad wolf", null));
.countParameterPlaceholders("The big :parameter, &sameparameter, &sameparameter bad wolf", null));
assertEquals(2, JdbcParameterUtils
.countParameterPlaceholders("The big :parameter, :sameparameter, :sameparameter bad wolf", null));
.countParameterPlaceholders("The big :parameter, :sameparameter, :sameparameter bad wolf", null));
assertEquals(0, JdbcParameterUtils.countParameterPlaceholders("xxx & yyy", null));
List<String> l = new ArrayList<>();
assertEquals(3, JdbcParameterUtils.countParameterPlaceholders("select :par1, :par2 :par3", l));

View File

@@ -75,8 +75,9 @@ public class JpaPagingItemReaderNativeQueryIntegrationTests extends AbstractPagi
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL)
.addScript("org/springframework/batch/item/database/init-foo-schema-hsqldb.sql")
.generateUniqueName(true).build();
.addScript("org/springframework/batch/item/database/init-foo-schema-hsqldb.sql")
.generateUniqueName(true)
.build();
}
@Bean

View File

@@ -54,7 +54,8 @@ class StoredprocedureItemReaderConfigTests {
when(con.getAutoCommit()).thenReturn(false);
CallableStatement cs = mock(CallableStatement.class);
when(con.prepareCall("{call foo_bar()}", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
ResultSet.HOLD_CURSORS_OVER_COMMIT)).thenReturn(cs);
ResultSet.HOLD_CURSORS_OVER_COMMIT))
.thenReturn(cs);
when(ds.getConnection()).thenReturn(con);
when(ds.getConnection()).thenReturn(con);
con.commit();
@@ -90,7 +91,7 @@ class StoredprocedureItemReaderConfigTests {
when(con.getAutoCommit()).thenReturn(false);
CallableStatement cs = mock(CallableStatement.class);
when(con.prepareCall("{call foo_bar()}", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY))
.thenReturn(cs);
.thenReturn(cs);
when(ds.getConnection()).thenReturn(con);
when(ds.getConnection()).thenReturn(con);
con.commit();
@@ -125,7 +126,7 @@ class StoredprocedureItemReaderConfigTests {
when(con.getAutoCommit()).thenReturn(false);
CallableStatement cs = mock(CallableStatement.class);
when(con.prepareCall("{call foo_bar(?, ?)}", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY))
.thenReturn(cs);
.thenReturn(cs);
when(ds.getConnection()).thenReturn(con);
when(ds.getConnection()).thenReturn(con);
con.commit();

View File

@@ -68,8 +68,13 @@ class HibernateCursorItemReaderBuilderTests {
@Test
void testConfiguration() throws Exception {
HibernateCursorItemReader<Foo> reader = new HibernateCursorItemReaderBuilder<Foo>().name("fooReader")
.sessionFactory(this.sessionFactory).fetchSize(2).currentItemCount(2).maxItemCount(4)
.queryName("allFoos").useStatelessSession(true).build();
.sessionFactory(this.sessionFactory)
.fetchSize(2)
.currentItemCount(2)
.maxItemCount(4)
.queryName("allFoos")
.useStatelessSession(true)
.build();
reader.afterPropertiesSet();
@@ -98,8 +103,11 @@ class HibernateCursorItemReaderBuilderTests {
parameters.put("value", 2);
HibernateCursorItemReader<Foo> reader = new HibernateCursorItemReaderBuilder<Foo>().name("fooReader")
.sessionFactory(this.sessionFactory).queryString("from Foo foo where foo.id > :value")
.parameterValues(parameters).saveState(false).build();
.sessionFactory(this.sessionFactory)
.queryString("from Foo foo where foo.id > :value")
.parameterValues(parameters)
.saveState(false)
.build();
reader.afterPropertiesSet();
@@ -128,7 +136,9 @@ class HibernateCursorItemReaderBuilderTests {
provider.afterPropertiesSet();
HibernateCursorItemReader<Foo> reader = new HibernateCursorItemReaderBuilder<Foo>().name("fooReader")
.sessionFactory(this.sessionFactory).queryProvider(provider).build();
.sessionFactory(this.sessionFactory)
.queryProvider(provider)
.build();
reader.afterPropertiesSet();
@@ -150,7 +160,10 @@ class HibernateCursorItemReaderBuilderTests {
@Test
void testConfigurationNativeQuery() throws Exception {
HibernateCursorItemReader<Foo> reader = new HibernateCursorItemReaderBuilder<Foo>().name("fooReader")
.sessionFactory(this.sessionFactory).nativeQuery("select * from T_FOOS").entityClass(Foo.class).build();
.sessionFactory(this.sessionFactory)
.nativeQuery("select * from T_FOOS")
.entityClass(Foo.class)
.build();
reader.afterPropertiesSet();
@@ -179,12 +192,16 @@ class HibernateCursorItemReaderBuilderTests {
() -> new HibernateCursorItemReaderBuilder<Foo>().build());
assertEquals("A SessionFactory must be provided", exception.getMessage());
exception = assertThrows(IllegalStateException.class, () -> new HibernateCursorItemReaderBuilder<Foo>()
.sessionFactory(this.sessionFactory).saveState(true).build());
exception = assertThrows(IllegalStateException.class,
() -> new HibernateCursorItemReaderBuilder<Foo>().sessionFactory(this.sessionFactory)
.saveState(true)
.build());
assertEquals("A name is required when saveState is set to true.", exception.getMessage());
exception = assertThrows(IllegalStateException.class, () -> new HibernateCursorItemReaderBuilder<Foo>()
.sessionFactory(this.sessionFactory).saveState(false).build());
exception = assertThrows(IllegalStateException.class,
() -> new HibernateCursorItemReaderBuilder<Foo>().sessionFactory(this.sessionFactory)
.saveState(false)
.build());
assertEquals("A HibernateQueryProvider, queryName, queryString, "
+ "or both the nativeQuery and entityClass must be configured", exception.getMessage());
}

View File

@@ -54,7 +54,7 @@ class HibernateItemWriterBuilderTests {
@Test
void testConfiguration() {
HibernateItemWriter<Foo> itemWriter = new HibernateItemWriterBuilder<Foo>().sessionFactory(this.sessionFactory)
.build();
.build();
itemWriter.afterPropertiesSet();
@@ -70,7 +70,8 @@ class HibernateItemWriterBuilderTests {
@Test
void testConfigurationClearSession() {
HibernateItemWriter<Foo> itemWriter = new HibernateItemWriterBuilder<Foo>().sessionFactory(this.sessionFactory)
.clearSession(false).build();
.clearSession(false)
.build();
itemWriter.afterPropertiesSet();

View File

@@ -73,8 +73,14 @@ class HibernatePagingItemReaderBuilderTests {
@SuppressWarnings("unchecked")
void testConfiguration() throws Exception {
HibernatePagingItemReader<Foo> reader = new HibernatePagingItemReaderBuilder<Foo>().name("fooReader")
.sessionFactory(this.sessionFactory).fetchSize(2).currentItemCount(2).maxItemCount(4).pageSize(5)
.queryName("allFoos").useStatelessSession(false).build();
.sessionFactory(this.sessionFactory)
.fetchSize(2)
.currentItemCount(2)
.maxItemCount(4)
.pageSize(5)
.queryName("allFoos")
.useStatelessSession(false)
.build();
reader.afterPropertiesSet();
@@ -108,8 +114,11 @@ class HibernatePagingItemReaderBuilderTests {
parameters.put("value", 2);
HibernatePagingItemReader<Foo> reader = new HibernatePagingItemReaderBuilder<Foo>().name("fooReader")
.sessionFactory(this.sessionFactory).queryString("from Foo foo where foo.id > :value")
.parameterValues(parameters).saveState(false).build();
.sessionFactory(this.sessionFactory)
.queryString("from Foo foo where foo.id > :value")
.parameterValues(parameters)
.saveState(false)
.build();
reader.afterPropertiesSet();
@@ -138,7 +147,9 @@ class HibernatePagingItemReaderBuilderTests {
provider.afterPropertiesSet();
HibernatePagingItemReader<Foo> reader = new HibernatePagingItemReaderBuilder<Foo>().name("fooReader")
.sessionFactory(this.sessionFactory).queryProvider(provider).build();
.sessionFactory(this.sessionFactory)
.queryProvider(provider)
.build();
reader.afterPropertiesSet();
@@ -160,20 +171,25 @@ class HibernatePagingItemReaderBuilderTests {
@Test
void testValidation() {
Exception exception = assertThrows(IllegalStateException.class,
() -> new HibernatePagingItemReaderBuilder<Foo>().sessionFactory(this.sessionFactory).fetchSize(-2)
.build());
() -> new HibernatePagingItemReaderBuilder<Foo>().sessionFactory(this.sessionFactory)
.fetchSize(-2)
.build());
assertEquals("fetchSize must not be negative", exception.getMessage());
exception = assertThrows(IllegalArgumentException.class,
() -> new HibernatePagingItemReaderBuilder<Foo>().build());
assertEquals("A SessionFactory must be provided", exception.getMessage());
exception = assertThrows(IllegalArgumentException.class, () -> new HibernatePagingItemReaderBuilder<Foo>()
.sessionFactory(this.sessionFactory).saveState(true).build());
exception = assertThrows(IllegalArgumentException.class,
() -> new HibernatePagingItemReaderBuilder<Foo>().sessionFactory(this.sessionFactory)
.saveState(true)
.build());
assertEquals("A name is required when saveState is set to true", exception.getMessage());
exception = assertThrows(IllegalStateException.class, () -> new HibernatePagingItemReaderBuilder<Foo>()
.sessionFactory(this.sessionFactory).saveState(false).build());
exception = assertThrows(IllegalStateException.class,
() -> new HibernatePagingItemReaderBuilder<Foo>().sessionFactory(this.sessionFactory)
.saveState(false)
.build());
assertEquals("queryString or queryName must be set", exception.getMessage());
}

View File

@@ -73,8 +73,10 @@ class JdbcBatchItemWriterBuilderTests {
@Test
void testBasicMap() throws Exception {
JdbcBatchItemWriter<Map<String, Object>> writer = new JdbcBatchItemWriterBuilder<Map<String, Object>>()
.columnMapped().dataSource(this.dataSource)
.sql("INSERT INTO FOO (first, second, third) VALUES (:first, :second, :third)").build();
.columnMapped()
.dataSource(this.dataSource)
.sql("INSERT INTO FOO (first, second, third) VALUES (:first, :second, :third)")
.build();
writer.afterPropertiesSet();
@@ -89,8 +91,10 @@ class JdbcBatchItemWriterBuilderTests {
NamedParameterJdbcOperations template = new NamedParameterJdbcTemplate(this.dataSource);
JdbcBatchItemWriter<Map<String, Object>> writer = new JdbcBatchItemWriterBuilder<Map<String, Object>>()
.columnMapped().namedParametersJdbcTemplate(template)
.sql("INSERT INTO FOO (first, second, third) VALUES (:first, :second, :third)").build();
.columnMapped()
.namedParametersJdbcTemplate(template)
.sql("INSERT INTO FOO (first, second, third) VALUES (:first, :second, :third)")
.build();
writer.afterPropertiesSet();
@@ -105,8 +109,10 @@ class JdbcBatchItemWriterBuilderTests {
@Test
void testBasicPojo() throws Exception {
JdbcBatchItemWriter<Foo> writer = new JdbcBatchItemWriterBuilder<Foo>().beanMapped().dataSource(this.dataSource)
.sql("INSERT INTO FOO (first, second, third) VALUES (:first, :second, :third)").build();
JdbcBatchItemWriter<Foo> writer = new JdbcBatchItemWriterBuilder<Foo>().beanMapped()
.dataSource(this.dataSource)
.sql("INSERT INTO FOO (first, second, third) VALUES (:first, :second, :third)")
.build();
writer.afterPropertiesSet();
@@ -123,9 +129,11 @@ class JdbcBatchItemWriterBuilderTests {
@Test
void testAssertUpdates() {
JdbcBatchItemWriter<Foo> writer = new JdbcBatchItemWriterBuilder<Foo>().beanMapped().dataSource(this.dataSource)
.sql("UPDATE FOO SET second = :second, third = :third WHERE first = :first").assertUpdates(true)
.build();
JdbcBatchItemWriter<Foo> writer = new JdbcBatchItemWriterBuilder<Foo>().beanMapped()
.dataSource(this.dataSource)
.sql("UPDATE FOO SET second = :second, third = :third WHERE first = :first")
.assertUpdates(true)
.build();
writer.afterPropertiesSet();
@@ -139,12 +147,14 @@ class JdbcBatchItemWriterBuilderTests {
@Test
void testCustomPreparedStatementSetter() throws Exception {
JdbcBatchItemWriter<Map<String, Object>> writer = new JdbcBatchItemWriterBuilder<Map<String, Object>>()
.itemPreparedStatementSetter((item, ps) -> {
ps.setInt(0, (int) item.get("first"));
ps.setString(1, (String) item.get("second"));
ps.setString(2, (String) item.get("third"));
}).dataSource(this.dataSource)
.sql("INSERT INTO FOO (first, second, third) VALUES (:first, :second, :third)").build();
.itemPreparedStatementSetter((item, ps) -> {
ps.setInt(0, (int) item.get("first"));
ps.setString(1, (String) item.get("second"));
ps.setString(2, (String) item.get("third"));
})
.dataSource(this.dataSource)
.sql("INSERT INTO FOO (first, second, third) VALUES (:first, :second, :third)")
.build();
writer.afterPropertiesSet();
@@ -157,8 +167,10 @@ class JdbcBatchItemWriterBuilderTests {
@Test
void testCustomPSqlParameterSourceProvider() throws Exception {
JdbcBatchItemWriter<Map<String, Object>> writer = new JdbcBatchItemWriterBuilder<Map<String, Object>>()
.itemSqlParameterSourceProvider(MapSqlParameterSource::new).dataSource(this.dataSource)
.sql("INSERT INTO FOO (first, second, third) VALUES (:first, :second, :third)").build();
.itemSqlParameterSourceProvider(MapSqlParameterSource::new)
.dataSource(this.dataSource)
.sql("INSERT INTO FOO (first, second, third) VALUES (:first, :second, :third)")
.build();
writer.afterPropertiesSet();
@@ -171,17 +183,20 @@ class JdbcBatchItemWriterBuilderTests {
@Test
void testBuildAssertions() {
var builder = new JdbcBatchItemWriterBuilder<Map<String, Object>>()
.itemSqlParameterSourceProvider(MapSqlParameterSource::new);
.itemSqlParameterSourceProvider(MapSqlParameterSource::new);
Exception exception = assertThrows(IllegalStateException.class, builder::build);
assertEquals("Either a DataSource or a NamedParameterJdbcTemplate is required", exception.getMessage());
builder = new JdbcBatchItemWriterBuilder<Map<String, Object>>()
.itemSqlParameterSourceProvider(MapSqlParameterSource::new).dataSource(this.dataSource);
.itemSqlParameterSourceProvider(MapSqlParameterSource::new)
.dataSource(this.dataSource);
exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("A SQL statement is required", exception.getMessage());
builder = new JdbcBatchItemWriterBuilder<Map<String, Object>>().dataSource(this.dataSource)
.sql("INSERT INTO FOO VALUES (?, ?, ?)").columnMapped().beanMapped();
.sql("INSERT INTO FOO VALUES (?, ?, ?)")
.columnMapped()
.beanMapped();
exception = assertThrows(IllegalStateException.class, builder::build);
assertEquals("Either an item can be mapped via db column or via bean spec, can't be both",
exception.getMessage());

View File

@@ -72,15 +72,18 @@ class JdbcCursorItemReaderBuilderTests {
@Test
void testSimpleScenario() throws Exception {
JdbcCursorItemReader<Foo> reader = new JdbcCursorItemReaderBuilder<Foo>().dataSource(this.dataSource)
.name("fooReader").sql("SELECT * FROM FOO ORDER BY FIRST").rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
.name("fooReader")
.sql("SELECT * FROM FOO ORDER BY FIRST")
.rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
return foo;
}).build();
return foo;
})
.build();
ExecutionContext executionContext = new ExecutionContext();
reader.open(executionContext);
@@ -95,16 +98,20 @@ class JdbcCursorItemReaderBuilderTests {
@Test
void testMaxRows() throws Exception {
JdbcCursorItemReader<Foo> reader = new JdbcCursorItemReaderBuilder<Foo>().dataSource(this.dataSource)
.name("fooReader").sql("SELECT * FROM FOO ORDER BY FIRST").maxRows(2).saveState(false)
.rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
.name("fooReader")
.sql("SELECT * FROM FOO ORDER BY FIRST")
.maxRows(2)
.saveState(false)
.rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
return foo;
}).build();
return foo;
})
.build();
ExecutionContext executionContext = new ExecutionContext();
reader.open(executionContext);
@@ -120,16 +127,19 @@ class JdbcCursorItemReaderBuilderTests {
@Test
void testQueryArgumentsList() throws Exception {
JdbcCursorItemReader<Foo> reader = new JdbcCursorItemReaderBuilder<Foo>().dataSource(this.dataSource)
.name("fooReader").sql("SELECT * FROM FOO WHERE FIRST > ? ORDER BY FIRST")
.queryArguments(Arrays.asList(3)).rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
.name("fooReader")
.sql("SELECT * FROM FOO WHERE FIRST > ? ORDER BY FIRST")
.queryArguments(Arrays.asList(3))
.rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
return foo;
}).build();
return foo;
})
.build();
ExecutionContext executionContext = new ExecutionContext();
reader.open(executionContext);
@@ -143,16 +153,19 @@ class JdbcCursorItemReaderBuilderTests {
@Test
void testQueryArgumentsArray() throws Exception {
JdbcCursorItemReader<Foo> reader = new JdbcCursorItemReaderBuilder<Foo>().dataSource(this.dataSource)
.name("fooReader").sql("SELECT * FROM FOO WHERE FIRST > ? ORDER BY FIRST").queryArguments(3)
.rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
.name("fooReader")
.sql("SELECT * FROM FOO WHERE FIRST > ? ORDER BY FIRST")
.queryArguments(3)
.rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
return foo;
}).build();
return foo;
})
.build();
ExecutionContext executionContext = new ExecutionContext();
reader.open(executionContext);
@@ -166,16 +179,19 @@ class JdbcCursorItemReaderBuilderTests {
@Test
void testQueryArgumentsTypedArray() throws Exception {
JdbcCursorItemReader<Foo> reader = new JdbcCursorItemReaderBuilder<Foo>().dataSource(this.dataSource)
.name("fooReader").sql("SELECT * FROM FOO WHERE FIRST > ? ORDER BY FIRST")
.queryArguments(new Integer[] { 3 }, new int[] { Types.BIGINT }).rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
.name("fooReader")
.sql("SELECT * FROM FOO WHERE FIRST > ? ORDER BY FIRST")
.queryArguments(new Integer[] { 3 }, new int[] { Types.BIGINT })
.rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
return foo;
}).build();
return foo;
})
.build();
ExecutionContext executionContext = new ExecutionContext();
reader.open(executionContext);
@@ -189,21 +205,24 @@ class JdbcCursorItemReaderBuilderTests {
@Test
void testPreparedStatementSetter() throws Exception {
JdbcCursorItemReader<Foo> reader = new JdbcCursorItemReaderBuilder<Foo>().dataSource(this.dataSource)
.name("fooReader").sql("SELECT * FROM FOO WHERE FIRST > ? ORDER BY FIRST")
.preparedStatementSetter(new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps) throws SQLException {
ps.setInt(1, 3);
}
}).rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
.name("fooReader")
.sql("SELECT * FROM FOO WHERE FIRST > ? ORDER BY FIRST")
.preparedStatementSetter(new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps) throws SQLException {
ps.setInt(1, 3);
}
})
.rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
return foo;
}).build();
return foo;
})
.build();
ExecutionContext executionContext = new ExecutionContext();
reader.open(executionContext);
@@ -217,15 +236,19 @@ class JdbcCursorItemReaderBuilderTests {
@Test
void testMaxItemCount() throws Exception {
JdbcCursorItemReader<Foo> reader = new JdbcCursorItemReaderBuilder<Foo>().dataSource(this.dataSource)
.name("fooReader").sql("SELECT * FROM FOO ORDER BY FIRST").maxItemCount(2).rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
.name("fooReader")
.sql("SELECT * FROM FOO ORDER BY FIRST")
.maxItemCount(2)
.rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
return foo;
}).build();
return foo;
})
.build();
ExecutionContext executionContext = new ExecutionContext();
reader.open(executionContext);
@@ -239,16 +262,19 @@ class JdbcCursorItemReaderBuilderTests {
@Test
void testCurrentItemCount() throws Exception {
JdbcCursorItemReader<Foo> reader = new JdbcCursorItemReaderBuilder<Foo>().dataSource(this.dataSource)
.name("fooReader").sql("SELECT * FROM FOO ORDER BY FIRST").currentItemCount(1)
.rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
.name("fooReader")
.sql("SELECT * FROM FOO ORDER BY FIRST")
.currentItemCount(1)
.rowMapper((rs, rowNum) -> {
Foo foo = new Foo();
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
foo.setFirst(rs.getInt("FIRST"));
foo.setSecond(rs.getString("SECOND"));
foo.setThird(rs.getString("THIRD"));
return foo;
}).build();
return foo;
})
.build();
ExecutionContext executionContext = new ExecutionContext();
reader.open(executionContext);
@@ -262,9 +288,16 @@ class JdbcCursorItemReaderBuilderTests {
@Test
void testOtherProperties() {
JdbcCursorItemReader<Foo> reader = new JdbcCursorItemReaderBuilder<Foo>().dataSource(this.dataSource)
.name("fooReader").sql("SELECT * FROM FOO ORDER BY FIRST").fetchSize(1).queryTimeout(2)
.ignoreWarnings(true).driverSupportsAbsolute(true).useSharedExtendedConnection(true)
.connectionAutoCommit(true).beanRowMapper(Foo.class).build();
.name("fooReader")
.sql("SELECT * FROM FOO ORDER BY FIRST")
.fetchSize(1)
.queryTimeout(2)
.ignoreWarnings(true)
.driverSupportsAbsolute(true)
.useSharedExtendedConnection(true)
.connectionAutoCommit(true)
.beanRowMapper(Foo.class)
.build();
assertEquals(1, ReflectionTestUtils.getField(reader, "fetchSize"));
assertEquals(2, ReflectionTestUtils.getField(reader, "queryTimeout"));
@@ -276,7 +309,10 @@ class JdbcCursorItemReaderBuilderTests {
@Test
void testVerifyCursorPositionDefaultToTrue() {
JdbcCursorItemReader<Foo> reader = new JdbcCursorItemReaderBuilder<Foo>().dataSource(this.dataSource)
.name("fooReader").sql("SELECT * FROM FOO ORDER BY FIRST").beanRowMapper(Foo.class).build();
.name("fooReader")
.sql("SELECT * FROM FOO ORDER BY FIRST")
.beanRowMapper(Foo.class)
.build();
assertTrue((boolean) ReflectionTestUtils.getField(reader, "verifyCursorPosition"));
}

View File

@@ -76,10 +76,14 @@ class JdbcPagingItemReaderBuilderTests {
provider.setFromClause("FOO");
provider.setSortKeys(sortKeys);
JdbcPagingItemReader<Foo> reader = new JdbcPagingItemReaderBuilder<Foo>().name("fooReader").currentItemCount(1)
.dataSource(this.dataSource).queryProvider(provider).fetchSize(2).maxItemCount(2)
.rowMapper((rs, rowNum) -> new Foo(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4)))
.build();
JdbcPagingItemReader<Foo> reader = new JdbcPagingItemReaderBuilder<Foo>().name("fooReader")
.currentItemCount(1)
.dataSource(this.dataSource)
.queryProvider(provider)
.fetchSize(2)
.maxItemCount(2)
.rowMapper((rs, rowNum) -> new Foo(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4)))
.build();
reader.afterPropertiesSet();
@@ -104,11 +108,15 @@ class JdbcPagingItemReaderBuilderTests {
Map<String, Order> sortKeys = new HashMap<>(1);
sortKeys.put("ID", Order.DESCENDING);
JdbcPagingItemReader<Foo> reader = new JdbcPagingItemReaderBuilder<Foo>().name("fooReader").currentItemCount(1)
.dataSource(this.dataSource).maxItemCount(2).selectClause("SELECT ID, FIRST, SECOND, THIRD")
.fromClause("FOO").sortKeys(sortKeys)
.rowMapper((rs, rowNum) -> new Foo(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4)))
.build();
JdbcPagingItemReader<Foo> reader = new JdbcPagingItemReaderBuilder<Foo>().name("fooReader")
.currentItemCount(1)
.dataSource(this.dataSource)
.maxItemCount(2)
.selectClause("SELECT ID, FIRST, SECOND, THIRD")
.fromClause("FOO")
.sortKeys(sortKeys)
.rowMapper((rs, rowNum) -> new Foo(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4)))
.build();
reader.afterPropertiesSet();
@@ -128,10 +136,14 @@ class JdbcPagingItemReaderBuilderTests {
sortKeys.put("ID", Order.DESCENDING);
JdbcPagingItemReader<Foo> reader = new JdbcPagingItemReaderBuilder<Foo>().name("fooReader")
.dataSource(this.dataSource).pageSize(1).maxItemCount(2).selectClause("SELECT ID, FIRST, SECOND, THIRD")
.fromClause("FOO").sortKeys(sortKeys)
.rowMapper((rs, rowNum) -> new Foo(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4)))
.build();
.dataSource(this.dataSource)
.pageSize(1)
.maxItemCount(2)
.selectClause("SELECT ID, FIRST, SECOND, THIRD")
.fromClause("FOO")
.sortKeys(sortKeys)
.rowMapper((rs, rowNum) -> new Foo(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4)))
.build();
reader.afterPropertiesSet();
@@ -157,10 +169,14 @@ class JdbcPagingItemReaderBuilderTests {
sortKeys.put("ID", Order.DESCENDING);
JdbcPagingItemReader<Foo> reader = new JdbcPagingItemReaderBuilder<Foo>().dataSource(this.dataSource)
.pageSize(1).maxItemCount(2).selectClause("SELECT ID, FIRST, SECOND, THIRD").fromClause("FOO")
.sortKeys(sortKeys).saveState(false)
.rowMapper((rs, rowNum) -> new Foo(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4)))
.build();
.pageSize(1)
.maxItemCount(2)
.selectClause("SELECT ID, FIRST, SECOND, THIRD")
.fromClause("FOO")
.sortKeys(sortKeys)
.saveState(false)
.rowMapper((rs, rowNum) -> new Foo(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4)))
.build();
reader.afterPropertiesSet();
@@ -195,11 +211,16 @@ class JdbcPagingItemReaderBuilderTests {
parameterValues.put("max", 10);
JdbcPagingItemReader<Foo> reader = new JdbcPagingItemReaderBuilder<Foo>().name("fooReader")
.dataSource(this.dataSource).pageSize(1).maxItemCount(1).selectClause("SELECT ID, FIRST, SECOND, THIRD")
.fromClause("FOO").whereClause("FIRST > :min AND FIRST < :max").sortKeys(sortKeys)
.parameterValues(parameterValues)
.rowMapper((rs, rowNum) -> new Foo(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4)))
.build();
.dataSource(this.dataSource)
.pageSize(1)
.maxItemCount(1)
.selectClause("SELECT ID, FIRST, SECOND, THIRD")
.fromClause("FOO")
.whereClause("FIRST > :min AND FIRST < :max")
.sortKeys(sortKeys)
.parameterValues(parameterValues)
.rowMapper((rs, rowNum) -> new Foo(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4)))
.build();
reader.afterPropertiesSet();
@@ -218,9 +239,15 @@ class JdbcPagingItemReaderBuilderTests {
Map<String, Order> sortKeys = new HashMap<>(1);
sortKeys.put("ID", Order.DESCENDING);
JdbcPagingItemReader<Foo> reader = new JdbcPagingItemReaderBuilder<Foo>().name("fooReader").currentItemCount(1)
.dataSource(this.dataSource).maxItemCount(2).selectClause("SELECT ID, FIRST, SECOND, THIRD")
.fromClause("FOO").sortKeys(sortKeys).beanRowMapper(Foo.class).build();
JdbcPagingItemReader<Foo> reader = new JdbcPagingItemReaderBuilder<Foo>().name("fooReader")
.currentItemCount(1)
.dataSource(this.dataSource)
.maxItemCount(2)
.selectClause("SELECT ID, FIRST, SECOND, THIRD")
.fromClause("FOO")
.sortKeys(sortKeys)
.beanRowMapper(Foo.class)
.build();
reader.afterPropertiesSet();
@@ -256,13 +283,18 @@ class JdbcPagingItemReaderBuilderTests {
exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("selectClause is required when not providing a PagingQueryProvider", exception.getMessage());
builder = new JdbcPagingItemReaderBuilder<Foo>().name("fooReader").pageSize(2).dataSource(this.dataSource)
.selectClause("SELECT *");
builder = new JdbcPagingItemReaderBuilder<Foo>().name("fooReader")
.pageSize(2)
.dataSource(this.dataSource)
.selectClause("SELECT *");
exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("fromClause is required when not providing a PagingQueryProvider", exception.getMessage());
builder = new JdbcPagingItemReaderBuilder<Foo>().saveState(false).pageSize(2).dataSource(this.dataSource)
.selectClause("SELECT *").fromClause("FOO");
builder = new JdbcPagingItemReaderBuilder<Foo>().saveState(false)
.pageSize(2)
.dataSource(this.dataSource)
.selectClause("SELECT *")
.fromClause("FOO");
exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("sortKeys are required when not providing a PagingQueryProvider", exception.getMessage());
}

View File

@@ -74,8 +74,11 @@ class JpaCursorItemReaderBuilderTests {
@Test
void testConfiguration() throws Exception {
JpaCursorItemReader<Foo> reader = new JpaCursorItemReaderBuilder<Foo>().name("fooReader")
.entityManagerFactory(this.entityManagerFactory).currentItemCount(2).maxItemCount(4)
.queryString("select f from Foo f ").build();
.entityManagerFactory(this.entityManagerFactory)
.currentItemCount(2)
.maxItemCount(4)
.queryString("select f from Foo f ")
.build();
reader.afterPropertiesSet();
@@ -104,8 +107,11 @@ class JpaCursorItemReaderBuilderTests {
parameters.put("value", 2);
JpaCursorItemReader<Foo> reader = new JpaCursorItemReaderBuilder<Foo>().name("fooReader")
.entityManagerFactory(this.entityManagerFactory).queryString("select f from Foo f where f.id > :value")
.parameterValues(parameters).saveState(false).build();
.entityManagerFactory(this.entityManagerFactory)
.queryString("select f from Foo f where f.id > :value")
.parameterValues(parameters)
.saveState(false)
.build();
reader.afterPropertiesSet();
@@ -133,7 +139,9 @@ class JpaCursorItemReaderBuilderTests {
namedQueryProvider.afterPropertiesSet();
JpaCursorItemReader<Foo> reader = new JpaCursorItemReaderBuilder<Foo>().name("fooReader")
.entityManagerFactory(this.entityManagerFactory).queryProvider(namedQueryProvider).build();
.entityManagerFactory(this.entityManagerFactory)
.queryProvider(namedQueryProvider)
.build();
reader.afterPropertiesSet();
@@ -165,7 +173,9 @@ class JpaCursorItemReaderBuilderTests {
provider.afterPropertiesSet();
JpaCursorItemReader<Foo> reader = new JpaCursorItemReaderBuilder<Foo>().name("fooReader")
.entityManagerFactory(this.entityManagerFactory).queryProvider(provider).build();
.entityManagerFactory(this.entityManagerFactory)
.queryProvider(provider)
.build();
reader.afterPropertiesSet();
@@ -195,7 +205,7 @@ class JpaCursorItemReaderBuilderTests {
assertEquals("A name is required when saveState is set to true", exception.getMessage());
builder = new JpaCursorItemReaderBuilder<Foo>().entityManagerFactory(this.entityManagerFactory)
.saveState(false);
.saveState(false);
exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("Query string is required when queryProvider is null", exception.getMessage());
}

View File

@@ -60,7 +60,8 @@ class JpaItemWriterBuilderTests {
@Test
void testConfiguration() throws Exception {
JpaItemWriter<String> itemWriter = new JpaItemWriterBuilder<String>()
.entityManagerFactory(this.entityManagerFactory).build();
.entityManagerFactory(this.entityManagerFactory)
.build();
itemWriter.afterPropertiesSet();
@@ -82,7 +83,9 @@ class JpaItemWriterBuilderTests {
@Test
void testPersist() throws Exception {
JpaItemWriter<String> itemWriter = new JpaItemWriterBuilder<String>()
.entityManagerFactory(this.entityManagerFactory).usePersist(true).build();
.entityManagerFactory(this.entityManagerFactory)
.usePersist(true)
.build();
itemWriter.afterPropertiesSet();

View File

@@ -77,8 +77,13 @@ class JpaPagingItemReaderBuilderTests {
@Test
void testConfiguration() throws Exception {
JpaPagingItemReader<Foo> reader = new JpaPagingItemReaderBuilder<Foo>().name("fooReader")
.entityManagerFactory(this.entityManagerFactory).currentItemCount(2).maxItemCount(4).pageSize(5)
.transacted(false).queryString("select f from Foo f ").build();
.entityManagerFactory(this.entityManagerFactory)
.currentItemCount(2)
.maxItemCount(4)
.pageSize(5)
.transacted(false)
.queryString("select f from Foo f ")
.build();
reader.afterPropertiesSet();
@@ -109,8 +114,11 @@ class JpaPagingItemReaderBuilderTests {
parameters.put("value", 2);
JpaPagingItemReader<Foo> reader = new JpaPagingItemReaderBuilder<Foo>().name("fooReader")
.entityManagerFactory(this.entityManagerFactory).queryString("select f from Foo f where f.id > :value")
.parameterValues(parameters).saveState(false).build();
.entityManagerFactory(this.entityManagerFactory)
.queryString("select f from Foo f where f.id > :value")
.parameterValues(parameters)
.saveState(false)
.build();
reader.afterPropertiesSet();
@@ -138,7 +146,9 @@ class JpaPagingItemReaderBuilderTests {
namedQueryProvider.afterPropertiesSet();
JpaPagingItemReader<Foo> reader = new JpaPagingItemReaderBuilder<Foo>().name("fooReader")
.entityManagerFactory(this.entityManagerFactory).queryProvider(namedQueryProvider).build();
.entityManagerFactory(this.entityManagerFactory)
.queryProvider(namedQueryProvider)
.build();
reader.afterPropertiesSet();
@@ -170,7 +180,9 @@ class JpaPagingItemReaderBuilderTests {
provider.afterPropertiesSet();
JpaPagingItemReader<Foo> reader = new JpaPagingItemReaderBuilder<Foo>().name("fooReader")
.entityManagerFactory(this.entityManagerFactory).queryProvider(provider).build();
.entityManagerFactory(this.entityManagerFactory)
.queryProvider(provider)
.build();
reader.afterPropertiesSet();
@@ -192,7 +204,7 @@ class JpaPagingItemReaderBuilderTests {
@Test
void testValidation() {
var builder = new JpaPagingItemReaderBuilder<Foo>().entityManagerFactory(this.entityManagerFactory)
.pageSize(-2);
.pageSize(-2);
Exception exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("pageSize must be greater than zero", exception.getMessage());
@@ -205,7 +217,7 @@ class JpaPagingItemReaderBuilderTests {
assertEquals("A name is required when saveState is set to true", exception.getMessage());
builder = new JpaPagingItemReaderBuilder<Foo>().entityManagerFactory(this.entityManagerFactory)
.saveState(false);
.saveState(false);
exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("Query string is required when queryProvider is null", exception.getMessage());
}

View File

@@ -68,8 +68,11 @@ class StoredProcedureItemReaderBuilderTests {
@Test
void testSunnyScenario() throws Exception {
StoredProcedureItemReader<Foo> reader = new StoredProcedureItemReaderBuilder<Foo>().name("foo_reader")
.dataSource(this.dataSource).procedureName("read_foos").rowMapper(new FooRowMapper())
.verifyCursorPosition(false).build();
.dataSource(this.dataSource)
.procedureName("read_foos")
.rowMapper(new FooRowMapper())
.verifyCursorPosition(false)
.build();
reader.open(new ExecutionContext());
@@ -88,11 +91,23 @@ class StoredProcedureItemReaderBuilderTests {
SqlParameter[] parameters = new SqlParameter[0];
StoredProcedureItemReader<Foo> reader = new StoredProcedureItemReaderBuilder<Foo>().name("foo_reader")
.dataSource(this.dataSource).procedureName("read_foos").rowMapper(new FooRowMapper())
.verifyCursorPosition(false).refCursorPosition(3).useSharedExtendedConnection(true)
.preparedStatementSetter(preparedStatementSetter).parameters(parameters).function().fetchSize(5)
.driverSupportsAbsolute(true).currentItemCount(6).ignoreWarnings(false).maxItemCount(7).queryTimeout(8)
.maxRows(9).build();
.dataSource(this.dataSource)
.procedureName("read_foos")
.rowMapper(new FooRowMapper())
.verifyCursorPosition(false)
.refCursorPosition(3)
.useSharedExtendedConnection(true)
.preparedStatementSetter(preparedStatementSetter)
.parameters(parameters)
.function()
.fetchSize(5)
.driverSupportsAbsolute(true)
.currentItemCount(6)
.ignoreWarnings(false)
.maxItemCount(7)
.queryTimeout(8)
.maxRows(9)
.build();
assertEquals(3, ReflectionTestUtils.getField(reader, "refCursorPosition"));
assertEquals(preparedStatementSetter, ReflectionTestUtils.getField(reader, "preparedStatementSetter"));
@@ -111,8 +126,11 @@ class StoredProcedureItemReaderBuilderTests {
@Test
void testNoSaveState() throws Exception {
StoredProcedureItemReader<Foo> reader = new StoredProcedureItemReaderBuilder<Foo>().dataSource(this.dataSource)
.procedureName("read_foos").rowMapper(new FooRowMapper()).verifyCursorPosition(false).saveState(false)
.build();
.procedureName("read_foos")
.rowMapper(new FooRowMapper())
.verifyCursorPosition(false)
.saveState(false)
.build();
ExecutionContext executionContext = new ExecutionContext();
reader.open(executionContext);
@@ -141,8 +159,9 @@ class StoredProcedureItemReaderBuilderTests {
exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("A datasource is required", exception.getMessage());
builder = new StoredProcedureItemReaderBuilder<Foo>().saveState(false).procedureName("read_foos")
.dataSource(this.dataSource);
builder = new StoredProcedureItemReaderBuilder<Foo>().saveState(false)
.procedureName("read_foos")
.dataSource(this.dataSource);
exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("A rowmapper is required", exception.getMessage());
}

View File

@@ -60,8 +60,12 @@ class FlatFileItemReaderBuilderTests {
@Test
void testSimpleFixedLength() throws Exception {
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1 2 3")).fixedLength().columns(new Range(1, 3), new Range(4, 6), new Range(7))
.names("first", "second", "third").targetType(Foo.class).build();
.resource(getResource("1 2 3"))
.fixedLength()
.columns(new Range(1, 3), new Range(4, 6), new Range(7))
.names("first", "second", "third")
.targetType(Foo.class)
.build();
reader.open(new ExecutionContext());
Foo item = reader.read();
@@ -74,8 +78,11 @@ class FlatFileItemReaderBuilderTests {
@Test
void testSimpleDelimited() throws Exception {
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1,2,3")).delimited().names("first", "second", "third").targetType(Foo.class)
.build();
.resource(getResource("1,2,3"))
.delimited()
.names("first", "second", "third")
.targetType(Foo.class)
.build();
reader.open(new ExecutionContext());
Foo item = reader.read();
@@ -88,8 +95,12 @@ class FlatFileItemReaderBuilderTests {
@Test
void testSimpleDelimitedWithWhitespaceCharacter() throws Exception {
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1 2 3")).delimited().delimiter(" ").names("first", "second", "third")
.targetType(Foo.class).build();
.resource(getResource("1 2 3"))
.delimited()
.delimiter(" ")
.names("first", "second", "third")
.targetType(Foo.class)
.build();
reader.open(new ExecutionContext());
Foo item = reader.read();
@@ -102,8 +113,12 @@ class FlatFileItemReaderBuilderTests {
@Test
void testSimpleDelimitedWithTabCharacter() throws Exception {
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1\t2\t3")).delimited().delimiter(DelimitedLineTokenizer.DELIMITER_TAB)
.names("first", "second", "third").targetType(Foo.class).build();
.resource(getResource("1\t2\t3"))
.delimited()
.delimiter(DelimitedLineTokenizer.DELIMITER_TAB)
.names("first", "second", "third")
.targetType(Foo.class)
.build();
reader.open(new ExecutionContext());
Foo item = reader.read();
@@ -118,9 +133,15 @@ class FlatFileItemReaderBuilderTests {
final List<String> skippedLines = new ArrayList<>();
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1,2,3\n4,5,$1,2,3$\n@this is a comment\n6,7, 8")).delimited().quoteCharacter('$')
.names("first", "second", "third").targetType(Foo.class).linesToSkip(1)
.skippedLinesCallback(skippedLines::add).addComment("@").build();
.resource(getResource("1,2,3\n4,5,$1,2,3$\n@this is a comment\n6,7, 8"))
.delimited()
.quoteCharacter('$')
.names("first", "second", "third")
.targetType(Foo.class)
.linesToSkip(1)
.skippedLinesCallback(skippedLines::add)
.addComment("@")
.build();
ExecutionContext executionContext = new ExecutionContext();
reader.open(executionContext);
@@ -148,12 +169,17 @@ class FlatFileItemReaderBuilderTests {
@Test
void testAdvancedFixedLength() throws Exception {
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1 2%\n 3\n4 5%\n 6\n@this is a comment\n7 8%\n 9\n")).fixedLength()
.columns(new Range(1, 2), new Range(3, 5), new Range(6)).names("first", "second", "third")
.targetType(Foo.class).recordSeparatorPolicy(new DefaultRecordSeparatorPolicy("\"", "%"))
.bufferedReaderFactory((resource,
encoding) -> new LineNumberReader(new InputStreamReader(resource.getInputStream(), encoding)))
.maxItemCount(2).saveState(false).build();
.resource(getResource("1 2%\n 3\n4 5%\n 6\n@this is a comment\n7 8%\n 9\n"))
.fixedLength()
.columns(new Range(1, 2), new Range(3, 5), new Range(6))
.names("first", "second", "third")
.targetType(Foo.class)
.recordSeparatorPolicy(new DefaultRecordSeparatorPolicy("\"", "%"))
.bufferedReaderFactory((resource,
encoding) -> new LineNumberReader(new InputStreamReader(resource.getInputStream(), encoding)))
.maxItemCount(2)
.saveState(false)
.build();
ExecutionContext executionContext = new ExecutionContext();
@@ -177,8 +203,12 @@ class FlatFileItemReaderBuilderTests {
@Test
void testStrict() throws Exception {
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(new FileSystemResource("this/file/does/not/exist")).delimited()
.names("first", "second", "third").targetType(Foo.class).strict(false).build();
.resource(new FileSystemResource("this/file/does/not/exist"))
.delimited()
.names("first", "second", "third")
.targetType(Foo.class)
.strict(false)
.build();
reader.open(new ExecutionContext());
@@ -188,16 +218,18 @@ class FlatFileItemReaderBuilderTests {
@Test
void testCustomLineTokenizerFieldSetMapper() throws Exception {
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("|1|&|2|&| 3|\n|4|&|5|&|foo|"))
.lineTokenizer(line -> new DefaultFieldSet(line.split("&"))).fieldSetMapper(fieldSet -> {
Foo item = new Foo();
.resource(getResource("|1|&|2|&| 3|\n|4|&|5|&|foo|"))
.lineTokenizer(line -> new DefaultFieldSet(line.split("&")))
.fieldSetMapper(fieldSet -> {
Foo item = new Foo();
item.setFirst(Integer.valueOf(fieldSet.readString(0).replaceAll("\\|", "")));
item.setSecond(Integer.valueOf(fieldSet.readString(1).replaceAll("\\|", "")));
item.setThird(fieldSet.readString(2).replaceAll("\\|", ""));
item.setFirst(Integer.valueOf(fieldSet.readString(0).replaceAll("\\|", "")));
item.setSecond(Integer.valueOf(fieldSet.readString(1).replaceAll("\\|", "")));
item.setThird(fieldSet.readString(2).replaceAll("\\|", ""));
return item;
}).build();
return item;
})
.build();
reader.open(new ExecutionContext());
Foo item = reader.read();
@@ -218,8 +250,12 @@ class FlatFileItemReaderBuilderTests {
@Test
void testComments() throws Exception {
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1,2,3\n@this is a comment\n+so is this\n4,5,6")).comments("@", "+").delimited()
.names("first", "second", "third").targetType(Foo.class).build();
.resource(getResource("1,2,3\n@this is a comment\n+so is this\n4,5,6"))
.comments("@", "+")
.delimited()
.names("first", "second", "third")
.targetType(Foo.class)
.build();
reader.open(new ExecutionContext());
Foo item = reader.read();
@@ -236,8 +272,12 @@ class FlatFileItemReaderBuilderTests {
@Test
void testEmptyComments() throws Exception {
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1,2,3\n4,5,6")).comments(new String[] {}).delimited()
.names("first", "second", "third").targetType(Foo.class).build();
.resource(getResource("1,2,3\n4,5,6"))
.comments(new String[] {})
.delimited()
.names("first", "second", "third")
.targetType(Foo.class)
.build();
reader.open(new ExecutionContext());
Foo item = reader.read();
@@ -254,8 +294,11 @@ class FlatFileItemReaderBuilderTests {
@Test
void testDefaultComments() throws Exception {
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1,2,3\n4,5,6\n#this is a default comment")).delimited()
.names("first", "second", "third").targetType(Foo.class).build();
.resource(getResource("1,2,3\n4,5,6\n#this is a default comment"))
.delimited()
.names("first", "second", "third")
.targetType(Foo.class)
.build();
reader.open(new ExecutionContext());
Foo item = reader.read();
@@ -274,8 +317,12 @@ class FlatFileItemReaderBuilderTests {
BeanFactory factory = new AnnotationConfigApplicationContext(Beans.class);
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1,2,3")).delimited().names("first", "second", "third").prototypeBeanName("foo")
.beanFactory(factory).build();
.resource(getResource("1,2,3"))
.delimited()
.names("first", "second", "third")
.prototypeBeanName("foo")
.beanFactory(factory)
.build();
reader.open(new ExecutionContext());
Foo item = reader.read();
@@ -288,8 +335,12 @@ class FlatFileItemReaderBuilderTests {
@Test
void testBeanWrapperFieldSetMapperStrict() throws Exception {
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1,2,3")).delimited().names("setFirst", "setSecond", "setThird")
.targetType(Foo.class).beanMapperStrict(true).build();
.resource(getResource("1,2,3"))
.delimited()
.names("setFirst", "setSecond", "setThird")
.targetType(Foo.class)
.beanMapperStrict(true)
.build();
reader.open(new ExecutionContext());
Foo item = reader.read();
@@ -302,8 +353,13 @@ class FlatFileItemReaderBuilderTests {
@Test
void testDelimitedIncludedFields() throws Exception {
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1,2,3")).delimited().includedFields(0, 2).addIncludedField(1)
.names("first", "second", "third").targetType(Foo.class).build();
.resource(getResource("1,2,3"))
.delimited()
.includedFields(0, 2)
.addIncludedField(1)
.names("first", "second", "third")
.targetType(Foo.class)
.build();
reader.open(new ExecutionContext());
Foo item = reader.read();
@@ -318,19 +374,24 @@ class FlatFileItemReaderBuilderTests {
String[] names = { "first", "second", "third" };
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1,2,3")).delimited().fieldSetFactory(new FieldSetFactory() {
private FieldSet fieldSet = new DefaultFieldSet(new String[] { "1", "3", "foo" }, names);
.resource(getResource("1,2,3"))
.delimited()
.fieldSetFactory(new FieldSetFactory() {
private FieldSet fieldSet = new DefaultFieldSet(new String[] { "1", "3", "foo" }, names);
@Override
public FieldSet create(String[] values, String[] names) {
return fieldSet;
}
@Override
public FieldSet create(String[] values, String[] names) {
return fieldSet;
}
@Override
public FieldSet create(String[] values) {
return fieldSet;
}
}).names(names).targetType(Foo.class).build();
@Override
public FieldSet create(String[] values) {
return fieldSet;
}
})
.names(names)
.targetType(Foo.class)
.build();
reader.open(new ExecutionContext());
Foo item = reader.read();
@@ -345,20 +406,25 @@ class FlatFileItemReaderBuilderTests {
String[] names = { "first", "second", "third" };
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1 2 3")).fixedLength().fieldSetFactory(new FieldSetFactory() {
private FieldSet fieldSet = new DefaultFieldSet(new String[] { "1", "3", "foo" }, names);
.resource(getResource("1 2 3"))
.fixedLength()
.fieldSetFactory(new FieldSetFactory() {
private FieldSet fieldSet = new DefaultFieldSet(new String[] { "1", "3", "foo" }, names);
@Override
public FieldSet create(String[] values, String[] names) {
return fieldSet;
}
@Override
public FieldSet create(String[] values, String[] names) {
return fieldSet;
}
@Override
public FieldSet create(String[] values) {
return fieldSet;
}
}).columns(new Range(1, 3), new Range(4, 6), new Range(7)).names("first", "second", "third")
.targetType(Foo.class).build();
@Override
public FieldSet create(String[] values) {
return fieldSet;
}
})
.columns(new Range(1, 3), new Range(4, 6), new Range(7))
.names("first", "second", "third")
.targetType(Foo.class)
.build();
reader.open(new ExecutionContext());
Foo item = reader.read();
@@ -370,29 +436,38 @@ class FlatFileItemReaderBuilderTests {
@Test
void testName() {
var builder = new FlatFileItemReaderBuilder<Foo>().resource(getResource("1 2 3")).fixedLength()
.columns(new Range(1, 3), new Range(4, 6), new Range(7)).names("first", "second", "third")
.targetType(Foo.class);
var builder = new FlatFileItemReaderBuilder<Foo>().resource(getResource("1 2 3"))
.fixedLength()
.columns(new Range(1, 3), new Range(4, 6), new Range(7))
.names("first", "second", "third")
.targetType(Foo.class);
Exception exception = assertThrows(IllegalStateException.class, builder::build);
assertEquals("A name is required when saveState is set to true.", exception.getMessage());
builder = new FlatFileItemReaderBuilder<Foo>().resource(getResource("1 2 3")).fixedLength()
.columns(new Range(1, 3), new Range(4, 6), new Range(7)).names("first", "second", "third")
.targetType(Foo.class).name(null);
builder = new FlatFileItemReaderBuilder<Foo>().resource(getResource("1 2 3"))
.fixedLength()
.columns(new Range(1, 3), new Range(4, 6), new Range(7))
.names("first", "second", "third")
.targetType(Foo.class)
.name(null);
exception = assertThrows(IllegalStateException.class, builder::build);
assertEquals("A name is required when saveState is set to true.", exception.getMessage());
assertNotNull(
new FlatFileItemReaderBuilder<Foo>().resource(getResource("1 2 3")).fixedLength()
.columns(new Range(1, 3), new Range(4, 6), new Range(7)).names("first", "second", "third")
.targetType(Foo.class).saveState(false).build(),
"builder should return new instance of FlatFileItemReader");
assertNotNull(new FlatFileItemReaderBuilder<Foo>().resource(getResource("1 2 3"))
.fixedLength()
.columns(new Range(1, 3), new Range(4, 6), new Range(7))
.names("first", "second", "third")
.targetType(Foo.class)
.saveState(false)
.build(), "builder should return new instance of FlatFileItemReader");
assertNotNull(
new FlatFileItemReaderBuilder<Foo>().resource(getResource("1 2 3")).fixedLength()
.columns(new Range(1, 3), new Range(4, 6), new Range(7)).names("first", "second", "third")
.targetType(Foo.class).name("foobar").build(),
"builder should return new instance of FlatFileItemReader");
assertNotNull(new FlatFileItemReaderBuilder<Foo>().resource(getResource("1 2 3"))
.fixedLength()
.columns(new Range(1, 3), new Range(4, 6), new Range(7))
.names("first", "second", "third")
.targetType(Foo.class)
.name("foobar")
.build(), "builder should return new instance of FlatFileItemReader");
}
@@ -400,8 +475,11 @@ class FlatFileItemReaderBuilderTests {
void testDefaultEncoding() {
String encoding = FlatFileItemReader.DEFAULT_CHARSET;
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1,2,3")).delimited().names("first", "second", "third").targetType(Foo.class)
.build();
.resource(getResource("1,2,3"))
.delimited()
.names("first", "second", "third")
.targetType(Foo.class)
.build();
assertEquals(encoding, ReflectionTestUtils.getField(reader, "encoding"));
}
@@ -410,17 +488,22 @@ class FlatFileItemReaderBuilderTests {
void testCustomEncoding() {
String encoding = "UTF-8";
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1 2 3")).encoding(encoding).fixedLength()
.columns(new Range(1, 3), new Range(4, 6), new Range(7)).names("first", "second", "third")
.targetType(Foo.class).build();
.resource(getResource("1 2 3"))
.encoding(encoding)
.fixedLength()
.columns(new Range(1, 3), new Range(4, 6), new Range(7))
.names("first", "second", "third")
.targetType(Foo.class)
.build();
assertEquals(encoding, ReflectionTestUtils.getField(reader, "encoding"));
}
@Test
void testErrorMessageWhenNoFieldSetMapperIsProvided() {
var builder = new FlatFileItemReaderBuilder<Foo>().name("fooReader").resource(getResource("1;2;3"))
.lineTokenizer(line -> new DefaultFieldSet(line.split(";")));
var builder = new FlatFileItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource("1;2;3"))
.lineTokenizer(line -> new DefaultFieldSet(line.split(";")));
Exception exception = assertThrows(IllegalStateException.class, builder::build);
String message = exception.getMessage();
if (message.equals("No LineTokenizer implementation was provided.")) {
@@ -449,7 +532,11 @@ class FlatFileItemReaderBuilderTests {
// when
FlatFileItemReader<Person> reader = new FlatFileItemReaderBuilder<Person>().name("personReader")
.resource(getResource("1,foo")).targetType(Person.class).delimited().names("id", "name").build();
.resource(getResource("1,foo"))
.targetType(Person.class)
.delimited()
.names("id", "name")
.build();
// then
Object lineMapper = ReflectionTestUtils.getField(reader, "lineMapper");
@@ -473,7 +560,11 @@ class FlatFileItemReaderBuilderTests {
// when
FlatFileItemReader<Person> reader = new FlatFileItemReaderBuilder<Person>().name("personReader")
.resource(getResource("1,foo")).targetType(Person.class).delimited().names("id", "name").build();
.resource(getResource("1,foo"))
.targetType(Person.class)
.delimited()
.names("id", "name")
.build();
// then
Object lineMapper = ReflectionTestUtils.getField(reader, "lineMapper");

View File

@@ -64,8 +64,13 @@ class FlatFileItemWriterBuilderTests {
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));
FlatFileItemWriterBuilder<Foo> builder = new FlatFileItemWriterBuilder<Foo>().name("itemWriter")
.resource(output).delimited().delimiter(";").names("foo", "bar").formatted().format("%2s%2s")
.names("foo", "bar");
.resource(output)
.delimited()
.delimiter(";")
.names("foo", "bar")
.formatted()
.format("%2s%2s")
.names("foo", "bar");
assertThrows(IllegalStateException.class, builder::build);
}
@@ -74,10 +79,14 @@ class FlatFileItemWriterBuilderTests {
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo").resource(output)
.lineSeparator("$").lineAggregator(new PassThroughLineAggregator<>()).encoding("UTF-16LE")
.headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER")).build();
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo")
.resource(output)
.lineSeparator("$")
.lineAggregator(new PassThroughLineAggregator<>())
.encoding("UTF-16LE")
.headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER"))
.build();
ExecutionContext executionContext = new ExecutionContext();
@@ -96,10 +105,15 @@ class FlatFileItemWriterBuilderTests {
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo").resource(output)
.lineSeparator("$").delimited().names("first", "second", "third").encoding("UTF-16LE")
.headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER")).build();
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo")
.resource(output)
.lineSeparator("$")
.delimited()
.names("first", "second", "third")
.encoding("UTF-16LE")
.headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER"))
.build();
ExecutionContext executionContext = new ExecutionContext();
@@ -117,10 +131,16 @@ class FlatFileItemWriterBuilderTests {
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo").resource(output)
.lineSeparator("$").delimited().delimiter("").names("first", "second", "third").encoding("UTF-16LE")
.headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER")).build();
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo")
.resource(output)
.lineSeparator("$")
.delimited()
.delimiter("")
.names("first", "second", "third")
.encoding("UTF-16LE")
.headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER"))
.build();
ExecutionContext executionContext = new ExecutionContext();
@@ -138,10 +158,16 @@ class FlatFileItemWriterBuilderTests {
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo").resource(output)
.lineSeparator("$").delimited().delimiter(";").names("first", "second", "third").encoding("UTF-16LE")
.headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER")).build();
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo")
.resource(output)
.lineSeparator("$")
.delimited()
.delimiter(";")
.names("first", "second", "third")
.encoding("UTF-16LE")
.headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER"))
.build();
ExecutionContext executionContext = new ExecutionContext();
@@ -159,11 +185,16 @@ class FlatFileItemWriterBuilderTests {
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo").resource(output)
.lineSeparator("$").delimited().delimiter(" ")
.fieldExtractor(item -> new Object[] { item.getFirst(), item.getThird() }).encoding("UTF-16LE")
.headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER")).build();
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo")
.resource(output)
.lineSeparator("$")
.delimited()
.delimiter(" ")
.fieldExtractor(item -> new Object[] { item.getFirst(), item.getThird() })
.encoding("UTF-16LE")
.headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER"))
.build();
ExecutionContext executionContext = new ExecutionContext();
@@ -181,10 +212,16 @@ class FlatFileItemWriterBuilderTests {
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo").resource(output)
.lineSeparator("$").formatted().format("%2s%2s%2s").names("first", "second", "third")
.encoding("UTF-16LE").headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER")).build();
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo")
.resource(output)
.lineSeparator("$")
.formatted()
.format("%2s%2s%2s")
.names("first", "second", "third")
.encoding("UTF-16LE")
.headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER"))
.build();
ExecutionContext executionContext = new ExecutionContext();
@@ -202,11 +239,16 @@ class FlatFileItemWriterBuilderTests {
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo").resource(output)
.lineSeparator("$").formatted().format("%3s%3s")
.fieldExtractor(item -> new Object[] { item.getFirst(), item.getThird() }).encoding("UTF-16LE")
.headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER")).build();
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo")
.resource(output)
.lineSeparator("$")
.formatted()
.format("%3s%3s")
.fieldExtractor(item -> new Object[] { item.getFirst(), item.getThird() })
.encoding("UTF-16LE")
.headerCallback(writer1 -> writer1.append("HEADER"))
.footerCallback(writer12 -> writer12.append("FOOTER"))
.build();
ExecutionContext executionContext = new ExecutionContext();
@@ -226,9 +268,16 @@ class FlatFileItemWriterBuilderTests {
String encoding = Charset.defaultCharset().name();
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo").resource(output)
.shouldDeleteIfEmpty(true).shouldDeleteIfExists(false).saveState(false).forceSync(true).append(true)
.transactional(false).lineAggregator(new PassThroughLineAggregator<>()).build();
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo")
.resource(output)
.shouldDeleteIfEmpty(true)
.shouldDeleteIfExists(false)
.saveState(false)
.forceSync(true)
.append(true)
.transactional(false)
.lineAggregator(new PassThroughLineAggregator<>())
.build();
validateBuilderFlags(writer, encoding);
}
@@ -238,9 +287,17 @@ class FlatFileItemWriterBuilderTests {
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));
String encoding = "UTF-8";
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo").encoding(encoding)
.resource(output).shouldDeleteIfEmpty(true).shouldDeleteIfExists(false).saveState(false).forceSync(true)
.append(true).transactional(false).lineAggregator(new PassThroughLineAggregator<>()).build();
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>().name("foo")
.encoding(encoding)
.resource(output)
.shouldDeleteIfEmpty(true)
.shouldDeleteIfExists(false)
.saveState(false)
.forceSync(true)
.append(true)
.transactional(false)
.lineAggregator(new PassThroughLineAggregator<>())
.build();
validateBuilderFlags(writer, encoding);
}
@@ -253,7 +310,11 @@ class FlatFileItemWriterBuilderTests {
// when
FlatFileItemWriter<Person> writer = new FlatFileItemWriterBuilder<Person>().name("personWriter")
.resource(output).delimited().sourceType(Person.class).names("id", "name").build();
.resource(output)
.delimited()
.sourceType(Person.class)
.names("id", "name")
.build();
// then
Object lineAggregator = ReflectionTestUtils.getField(writer, "lineAggregator");
@@ -278,7 +339,11 @@ class FlatFileItemWriterBuilderTests {
// when
FlatFileItemWriter<Person> writer = new FlatFileItemWriterBuilder<Person>().name("personWriter")
.resource(output).delimited().sourceType(Person.class).names("id", "name").build();
.resource(output)
.delimited()
.sourceType(Person.class)
.names("id", "name")
.build();
// then
Object lineAggregator = ReflectionTestUtils.getField(writer, "lineAggregator");
@@ -295,8 +360,11 @@ class FlatFileItemWriterBuilderTests {
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));
// when
FlatFileItemWriter writer = new FlatFileItemWriterBuilder<>().name("personWriter").resource(output).delimited()
.names("id", "name").build();
FlatFileItemWriter writer = new FlatFileItemWriterBuilder<>().name("personWriter")
.resource(output)
.delimited()
.names("id", "name")
.build();
// then
Object lineAggregator = ReflectionTestUtils.getField(writer, "lineAggregator");
@@ -316,7 +384,12 @@ class FlatFileItemWriterBuilderTests {
// when
FlatFileItemWriter<Person> writer = new FlatFileItemWriterBuilder<Person>().name("personWriter")
.resource(output).formatted().format("%2s%2s").sourceType(Person.class).names("id", "name").build();
.resource(output)
.formatted()
.format("%2s%2s")
.sourceType(Person.class)
.names("id", "name")
.build();
// then
Object lineAggregator = ReflectionTestUtils.getField(writer, "lineAggregator");
@@ -341,7 +414,12 @@ class FlatFileItemWriterBuilderTests {
// when
FlatFileItemWriter<Person> writer = new FlatFileItemWriterBuilder<Person>().name("personWriter")
.resource(output).formatted().format("%2s%2s").sourceType(Person.class).names("id", "name").build();
.resource(output)
.formatted()
.format("%2s%2s")
.sourceType(Person.class)
.names("id", "name")
.build();
// then
Object lineAggregator = ReflectionTestUtils.getField(writer, "lineAggregator");
@@ -358,8 +436,12 @@ class FlatFileItemWriterBuilderTests {
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));
// when
FlatFileItemWriter writer = new FlatFileItemWriterBuilder<>().name("personWriter").resource(output).formatted()
.format("%2s%2s").names("id", "name").build();
FlatFileItemWriter writer = new FlatFileItemWriterBuilder<>().name("personWriter")
.resource(output)
.formatted()
.format("%2s%2s")
.names("id", "name")
.build();
// then
Object lineAggregator = ReflectionTestUtils.getField(writer, "lineAggregator");

View File

@@ -59,8 +59,11 @@ class MultiResourceItemReaderBuilderTests extends AbstractItemStreamItemReaderTe
return 0; // preserve original ordering
};
return new MultiResourceItemReaderBuilder<Foo>().delegate(fileReader)
.resources(new Resource[] { r1, r2, r3, r4 }).saveState(true).comparator(comparator).name("FOO")
.build();
.resources(new Resource[] { r1, r2, r3, r4 })
.saveState(true)
.comparator(comparator)
.name("FOO")
.build();
}
@Test

View File

@@ -78,8 +78,12 @@ class MultiResourceItemWriterBuilderTests {
void testBasicMultiResourceWriteScenario() throws Exception {
this.writer = new MultiResourceItemWriterBuilder<String>().delegate(this.delegate)
.resource(new FileSystemResource(this.file)).resourceSuffixCreator(this.suffixCreator)
.itemCountLimitPerResource(2).saveState(true).name("foo").build();
.resource(new FileSystemResource(this.file))
.resourceSuffixCreator(this.suffixCreator)
.itemCountLimitPerResource(2)
.saveState(true)
.name("foo")
.build();
this.writer.open(this.executionContext);
@@ -108,8 +112,11 @@ class MultiResourceItemWriterBuilderTests {
SimpleResourceSuffixCreator simpleResourceSuffixCreator = new SimpleResourceSuffixCreator();
this.writer = new MultiResourceItemWriterBuilder<String>().delegate(this.delegate)
.resource(new FileSystemResource(this.file)).itemCountLimitPerResource(2).saveState(true).name("foo")
.build();
.resource(new FileSystemResource(this.file))
.itemCountLimitPerResource(2)
.saveState(true)
.name("foo")
.build();
this.writer.open(this.executionContext);
@@ -129,8 +136,12 @@ class MultiResourceItemWriterBuilderTests {
void testUpdateAfterDelegateClose() throws Exception {
this.writer = new MultiResourceItemWriterBuilder<String>().delegate(this.delegate)
.resource(new FileSystemResource(this.file)).resourceSuffixCreator(this.suffixCreator)
.itemCountLimitPerResource(2).saveState(true).name("foo").build();
.resource(new FileSystemResource(this.file))
.resourceSuffixCreator(this.suffixCreator)
.itemCountLimitPerResource(2)
.saveState(true)
.name("foo")
.build();
this.writer.update(this.executionContext);
assertEquals(0, this.executionContext.getInt(this.writer.getExecutionContextKey("resource.item.count")));
@@ -145,8 +156,12 @@ class MultiResourceItemWriterBuilderTests {
void testRestart() throws Exception {
this.writer = new MultiResourceItemWriterBuilder<String>().delegate(this.delegate)
.resource(new FileSystemResource(this.file)).resourceSuffixCreator(this.suffixCreator)
.itemCountLimitPerResource(2).saveState(true).name("foo").build();
.resource(new FileSystemResource(this.file))
.resourceSuffixCreator(this.suffixCreator)
.itemCountLimitPerResource(2)
.saveState(true)
.name("foo")
.build();
this.writer.write(Chunk.of("1", "2", "3"));
@@ -176,8 +191,12 @@ class MultiResourceItemWriterBuilderTests {
void testRestartNoSaveState() throws Exception {
this.writer = new MultiResourceItemWriterBuilder<String>().delegate(this.delegate)
.resource(new FileSystemResource(this.file)).resourceSuffixCreator(this.suffixCreator)
.itemCountLimitPerResource(2).saveState(false).name("foo").build();
.resource(new FileSystemResource(this.file))
.resourceSuffixCreator(this.suffixCreator)
.itemCountLimitPerResource(2)
.saveState(false)
.name("foo")
.build();
this.writer.write(Chunk.of("1", "2", "3"));
@@ -206,8 +225,10 @@ class MultiResourceItemWriterBuilderTests {
@Test
void testSaveStateNoName() {
var builder = new MultiResourceItemWriterBuilder<String>().delegate(this.delegate)
.resource(new FileSystemResource(this.file)).resourceSuffixCreator(this.suffixCreator)
.itemCountLimitPerResource(2).saveState(true);
.resource(new FileSystemResource(this.file))
.resourceSuffixCreator(this.suffixCreator)
.itemCountLimitPerResource(2)
.saveState(true);
Exception exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("A name is required when saveState is true.", exception.getMessage());
}
@@ -215,7 +236,8 @@ class MultiResourceItemWriterBuilderTests {
@Test
void testNoResource() {
var builder = new MultiResourceItemWriterBuilder<String>().delegate(this.delegate)
.resourceSuffixCreator(this.suffixCreator).itemCountLimitPerResource(2);
.resourceSuffixCreator(this.suffixCreator)
.itemCountLimitPerResource(2);
Exception exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("resource is required.", exception.getMessage());
}
@@ -223,7 +245,9 @@ class MultiResourceItemWriterBuilderTests {
@Test
void testNoDelegateNoName() {
var builder = new MultiResourceItemWriterBuilder<String>().resource(new FileSystemResource(this.file))
.resourceSuffixCreator(this.suffixCreator).itemCountLimitPerResource(2).saveState(false);
.resourceSuffixCreator(this.suffixCreator)
.itemCountLimitPerResource(2)
.saveState(false);
Exception exception = assertThrows(IllegalArgumentException.class, builder::build);
assertEquals("delegate is required.", exception.getMessage());
}

View File

@@ -152,7 +152,7 @@ class BeanWrapperFieldSetMapperTests {
ApplicationContext context = new ClassPathXmlApplicationContext("bean-wrapper.xml", getClass());
BeanWrapperFieldSetMapper<TestObject> mapper = (BeanWrapperFieldSetMapper<TestObject>) context
.getBean("fieldSetMapper");
.getBean("fieldSetMapper");
FieldSet fieldSet = new DefaultFieldSet(new String[] { "This is some dummy string", "true", "C" },
new String[] { "varString", "varBoolean", "varChar" });

View File

@@ -461,8 +461,9 @@ class DefaultFieldSetTests {
@Test
void testProperties() {
assertEquals("foo", new DefaultFieldSet(new String[] { "foo", "bar" }, new String[] { "Foo", "Bar" })
.getProperties().getProperty("Foo"));
assertEquals("foo",
new DefaultFieldSet(new String[] { "foo", "bar" }, new String[] { "Foo", "Bar" }).getProperties()
.getProperty("Foo"));
}
@Test
@@ -474,8 +475,9 @@ class DefaultFieldSetTests {
@Test
void testPropertiesWithWhiteSpace() {
assertEquals("bar", new DefaultFieldSet(new String[] { "foo", "bar " }, new String[] { "Foo", "Bar" })
.getProperties().getProperty("Bar"));
assertEquals("bar",
new DefaultFieldSet(new String[] { "foo", "bar " }, new String[] { "Foo", "Bar" }).getProperties()
.getProperty("Bar"));
}
@Test

View File

@@ -28,8 +28,8 @@ class RegexLineTokenizerTests {
@Test
void testCapturingGroups() {
String line = "Liverpool, England: 53d 25m 0s N 3d 0m 0s";
tokenizer.setRegex(
"([a-zA-Z]+), ([a-zA-Z]+): ([0-9]+). ([0-9]+). ([0-9]+). ([A-Z]) ([0-9]+). ([0-9]+). ([0-9]+).");
tokenizer
.setRegex("([a-zA-Z]+), ([a-zA-Z]+): ([0-9]+). ([0-9]+). ([0-9]+). ([A-Z]) ([0-9]+). ([0-9]+). ([0-9]+).");
List<String> tokens = tokenizer.doTokenize(line);
assertEquals(9, tokens.size());
assertEquals("England", tokens.get(1));

View File

@@ -49,7 +49,7 @@ class JmsItemReaderBuilderTests {
@Test
void testBasicRead() {
JmsItemReader<String> itemReader = new JmsItemReaderBuilder<String>().jmsTemplate(this.defaultJmsTemplate)
.build();
.build();
assertEquals("foo", itemReader.read());
}
@@ -60,15 +60,17 @@ class JmsItemReaderBuilderTests {
Date date = new java.sql.Date(0L);
when(jmsTemplate.receiveAndConvert()).thenReturn(date);
JmsItemReader<Date> itemReader = new JmsItemReaderBuilder<Date>().jmsTemplate(jmsTemplate).itemType(Date.class)
.build();
JmsItemReader<Date> itemReader = new JmsItemReaderBuilder<Date>().jmsTemplate(jmsTemplate)
.itemType(Date.class)
.build();
assertEquals(date, itemReader.read());
}
@Test
void testSetItemTypeMismatch() {
JmsItemReader<Date> itemReader = new JmsItemReaderBuilder<Date>().jmsTemplate(this.defaultJmsTemplate)
.itemType(Date.class).build();
.itemType(Date.class)
.build();
Exception exception = assertThrows(IllegalStateException.class, itemReader::read);
assertTrue(exception.getMessage().contains("wrong type"));
}
@@ -80,7 +82,8 @@ class JmsItemReaderBuilderTests {
when(jmsTemplate.receive()).thenReturn(message);
JmsItemReader<Message> itemReader = new JmsItemReaderBuilder<Message>().jmsTemplate(jmsTemplate)
.itemType(Message.class).build();
.itemType(Message.class)
.build();
assertEquals(message, itemReader.read());
}

View File

@@ -70,7 +70,9 @@ abstract class JsonFileItemWriterFunctionalTests {
Path outputFilePath = Paths.get("target", "trades-" + getMarshallerName() + ".json");
FileSystemResource resource = new FileSystemResource(outputFilePath);
JsonFileItemWriter<Trade> writer = new JsonFileItemWriterBuilder<Trade>().name("tradesItemWriter")
.resource(resource).jsonObjectMarshaller(getJsonObjectMarshaller()).build();
.resource(resource)
.jsonObjectMarshaller(getJsonObjectMarshaller())
.build();
// when
writer.open(new ExecutionContext());
@@ -87,7 +89,9 @@ abstract class JsonFileItemWriterFunctionalTests {
Path outputFilePath = Paths.get("target", "testJsonWritingWithMultipleWrite-" + getMarshallerName() + ".json");
FileSystemResource resource = new FileSystemResource(outputFilePath);
JsonFileItemWriter<Trade> writer = new JsonFileItemWriterBuilder<Trade>().name("tradesItemWriter")
.resource(resource).jsonObjectMarshaller(getJsonObjectMarshaller()).build();
.resource(resource)
.jsonObjectMarshaller(getJsonObjectMarshaller())
.build();
// when
writer.open(new ExecutionContext());
@@ -106,7 +110,9 @@ abstract class JsonFileItemWriterFunctionalTests {
Path outputFilePath = Paths.get("target", "testJsonWritingWithPrettyPrinting-" + getMarshallerName() + ".json");
FileSystemResource resource = new FileSystemResource(outputFilePath);
JsonFileItemWriter<Trade> writer = new JsonFileItemWriterBuilder<Trade>().name("tradesItemWriter")
.resource(resource).jsonObjectMarshaller(getJsonObjectMarshallerWithPrettyPrint()).build();
.resource(resource)
.jsonObjectMarshaller(getJsonObjectMarshallerWithPrettyPrint())
.build();
// when
writer.open(new ExecutionContext());
@@ -124,10 +130,11 @@ abstract class JsonFileItemWriterFunctionalTests {
"testJsonWritingWithEnclosingObject-" + getMarshallerName() + ".json");
FileSystemResource resource = new FileSystemResource(outputFilePath);
JsonFileItemWriter<Trade> writer = new JsonFileItemWriterBuilder<Trade>().name("tradesItemWriter")
.resource(resource).jsonObjectMarshaller(getJsonObjectMarshaller())
.headerCallback(headerWriter -> headerWriter.write("{\"trades\":["))
.footerCallback(footerWriter -> footerWriter.write(JsonFileItemWriter.DEFAULT_LINE_SEPARATOR + "]}"))
.build();
.resource(resource)
.jsonObjectMarshaller(getJsonObjectMarshaller())
.headerCallback(headerWriter -> headerWriter.write("{\"trades\":["))
.footerCallback(footerWriter -> footerWriter.write(JsonFileItemWriter.DEFAULT_LINE_SEPARATOR + "]}"))
.build();
// when
writer.open(new ExecutionContext());
@@ -145,7 +152,10 @@ abstract class JsonFileItemWriterFunctionalTests {
Path outputFilePath = Paths.get("target", "testForcedWrite-" + getMarshallerName() + ".json");
FileSystemResource resource = new FileSystemResource(outputFilePath);
JsonFileItemWriter<Trade> writer = new JsonFileItemWriterBuilder<Trade>().name("tradesItemWriter")
.resource(resource).jsonObjectMarshaller(getJsonObjectMarshaller()).forceSync(true).build();
.resource(resource)
.jsonObjectMarshaller(getJsonObjectMarshaller())
.forceSync(true)
.build();
// when
writer.open(new ExecutionContext());
@@ -163,7 +173,10 @@ abstract class JsonFileItemWriterFunctionalTests {
Path outputFilePath = Paths.get("target", "testWriteWithDelete-" + getMarshallerName() + ".json");
FileSystemResource resource = new FileSystemResource(outputFilePath);
JsonFileItemWriter<Trade> writer = new JsonFileItemWriterBuilder<Trade>().name("tradesItemWriter")
.resource(resource).jsonObjectMarshaller(getJsonObjectMarshaller()).shouldDeleteIfExists(true).build();
.resource(resource)
.jsonObjectMarshaller(getJsonObjectMarshaller())
.shouldDeleteIfExists(true)
.build();
// when
writer.open(executionContext);
@@ -184,7 +197,9 @@ abstract class JsonFileItemWriterFunctionalTests {
Path outputFilePath = Paths.get("target", "testRestart-" + getMarshallerName() + ".json");
FileSystemResource resource = new FileSystemResource(outputFilePath);
JsonFileItemWriter<Trade> writer = new JsonFileItemWriterBuilder<Trade>().name("tradesItemWriter")
.resource(resource).jsonObjectMarshaller(getJsonObjectMarshaller()).build();
.resource(resource)
.jsonObjectMarshaller(getJsonObjectMarshaller())
.build();
// when
writer.open(executionContext);
@@ -219,7 +234,9 @@ abstract class JsonFileItemWriterFunctionalTests {
Path outputFilePath = Paths.get("target", "testTransactionalRestart-" + getMarshallerName() + ".json");
FileSystemResource resource = new FileSystemResource(outputFilePath);
JsonFileItemWriter<Trade> writer = new JsonFileItemWriterBuilder<Trade>().name("tradesItemWriter")
.resource(resource).jsonObjectMarshaller(getJsonObjectMarshaller()).build();
.resource(resource)
.jsonObjectMarshaller(getJsonObjectMarshaller())
.build();
// when
writer.open(executionContext);
@@ -271,9 +288,11 @@ abstract class JsonFileItemWriterFunctionalTests {
Path outputFilePath = Paths.get("target", "testItemMarshallingFailure-" + getMarshallerName() + ".json");
FileSystemResource resource = new FileSystemResource(outputFilePath);
JsonFileItemWriter<Trade> writer = new JsonFileItemWriterBuilder<Trade>().name("tradesItemWriter")
.resource(resource).jsonObjectMarshaller(item -> {
throw new IllegalArgumentException("Bad item");
}).build();
.resource(resource)
.jsonObjectMarshaller(item -> {
throw new IllegalArgumentException("Bad item");
})
.build();
// when
writer.open(executionContext);
@@ -296,8 +315,10 @@ abstract class JsonFileItemWriterFunctionalTests {
FileSystemResource resource = new FileSystemResource(outputFilePath);
Files.deleteIfExists(outputFilePath);
JsonFileItemWriter<Trade> writer = new JsonFileItemWriterBuilder<Trade>().name("tradesItemWriter")
.resource(new FileSystemResource(outputFilePath)).jsonObjectMarshaller(getJsonObjectMarshaller())
.append(true).build();
.resource(new FileSystemResource(outputFilePath))
.jsonObjectMarshaller(getJsonObjectMarshaller())
.append(true)
.build();
// when
writer.open(executionContext);

View File

@@ -46,8 +46,9 @@ abstract class JsonItemReaderFunctionalTests {
@Test
void testJsonReading() throws Exception {
JsonItemReader<Trade> itemReader = new JsonItemReaderBuilder<Trade>().jsonObjectReader(getJsonObjectReader())
.resource(new ClassPathResource("org/springframework/batch/item/json/trades.json"))
.name("tradeJsonItemReader").build();
.resource(new ClassPathResource("org/springframework/batch/item/json/trades.json"))
.name("tradeJsonItemReader")
.build();
itemReader.open(new ExecutionContext());
@@ -86,7 +87,9 @@ abstract class JsonItemReaderFunctionalTests {
@Test
void testEmptyResource() throws Exception {
JsonItemReader<Trade> itemReader = new JsonItemReaderBuilder<Trade>().jsonObjectReader(getJsonObjectReader())
.resource(new ByteArrayResource("[]".getBytes())).name("tradeJsonItemReader").build();
.resource(new ByteArrayResource("[]".getBytes()))
.name("tradeJsonItemReader")
.build();
itemReader.open(new ExecutionContext());
@@ -98,7 +101,9 @@ abstract class JsonItemReaderFunctionalTests {
void testInvalidResourceFormat() {
// given
JsonItemReader<Trade> itemReader = new JsonItemReaderBuilder<Trade>().jsonObjectReader(getJsonObjectReader())
.resource(new ByteArrayResource("{}, {}".getBytes())).name("tradeJsonItemReader").build();
.resource(new ByteArrayResource("{}, {}".getBytes()))
.name("tradeJsonItemReader")
.build();
// when
final Exception expectedException = assertThrows(ItemStreamException.class,
@@ -113,7 +118,9 @@ abstract class JsonItemReaderFunctionalTests {
void testInvalidResourceContent() {
// given
JsonItemReader<Trade> itemReader = new JsonItemReaderBuilder<Trade>().jsonObjectReader(getJsonObjectReader())
.resource(new ByteArrayResource("[{]".getBytes())).name("tradeJsonItemReader").build();
.resource(new ByteArrayResource("[{]".getBytes()))
.name("tradeJsonItemReader")
.build();
itemReader.open(new ExecutionContext());
// when

View File

@@ -68,7 +68,7 @@ class JsonFileItemWriterBuilderTests {
@Test
void testMandatoryNameWhenSaveStateIsSet() {
var builder = new JsonFileItemWriterBuilder<String>().resource(this.resource)
.jsonObjectMarshaller(this.jsonObjectMarshaller);
.jsonObjectMarshaller(this.jsonObjectMarshaller);
assertThrows(IllegalArgumentException.class, builder::build);
}
@@ -87,10 +87,18 @@ class JsonFileItemWriterBuilderTests {
// when
JsonFileItemWriter<String> writer = new JsonFileItemWriterBuilder<String>().name("jsonFileItemWriter")
.resource(this.resource).jsonObjectMarshaller(this.jsonObjectMarshaller).append(append)
.encoding(encoding).forceSync(forceSync).headerCallback(headerCallback).footerCallback(footerCallback)
.lineSeparator(lineSeparator).shouldDeleteIfEmpty(shouldDeleteIfEmpty)
.shouldDeleteIfExists(shouldDeleteIfExists).transactional(transactional).build();
.resource(this.resource)
.jsonObjectMarshaller(this.jsonObjectMarshaller)
.append(append)
.encoding(encoding)
.forceSync(forceSync)
.headerCallback(headerCallback)
.footerCallback(footerCallback)
.lineSeparator(lineSeparator)
.shouldDeleteIfEmpty(shouldDeleteIfEmpty)
.shouldDeleteIfExists(shouldDeleteIfExists)
.transactional(transactional)
.build();
// then
validateBuilderFlags(writer, encoding, lineSeparator, headerCallback, footerCallback);
@@ -111,10 +119,17 @@ class JsonFileItemWriterBuilderTests {
// when
JsonFileItemWriter<String> writer = new JsonFileItemWriterBuilder<String>().name("jsonFileItemWriter")
.resource(this.resource).jsonObjectMarshaller(this.jsonObjectMarshaller).append(append)
.forceSync(forceSync).headerCallback(headerCallback).footerCallback(footerCallback)
.lineSeparator(lineSeparator).shouldDeleteIfEmpty(shouldDeleteIfEmpty)
.shouldDeleteIfExists(shouldDeleteIfExists).transactional(transactional).build();
.resource(this.resource)
.jsonObjectMarshaller(this.jsonObjectMarshaller)
.append(append)
.forceSync(forceSync)
.headerCallback(headerCallback)
.footerCallback(footerCallback)
.lineSeparator(lineSeparator)
.shouldDeleteIfEmpty(shouldDeleteIfEmpty)
.shouldDeleteIfExists(shouldDeleteIfExists)
.transactional(transactional)
.build();
// then
validateBuilderFlags(writer, encoding, lineSeparator, headerCallback, footerCallback);

View File

@@ -55,8 +55,13 @@ class JsonItemReaderBuilderTests {
@Test
void testConfiguration() {
JsonItemReader<String> itemReader = new JsonItemReaderBuilder<String>().jsonObjectReader(this.jsonObjectReader)
.resource(this.resource).saveState(true).strict(true).name("jsonItemReader").maxItemCount(100)
.currentItemCount(50).build();
.resource(this.resource)
.saveState(true)
.strict(true)
.name("jsonItemReader")
.maxItemCount(100)
.currentItemCount(50)
.build();
assertEquals(this.jsonObjectReader, getField(itemReader, "jsonObjectReader"));
assertEquals(this.resource, getField(itemReader, "resource"));
@@ -71,7 +76,12 @@ class JsonItemReaderBuilderTests {
@Test
void shouldBuildJsonItemReaderWhenResourceIsNotProvided() {
JsonItemReader<String> itemReader = new JsonItemReaderBuilder<String>().jsonObjectReader(this.jsonObjectReader)
.saveState(true).strict(true).name("jsonItemReader").maxItemCount(100).currentItemCount(50).build();
.saveState(true)
.strict(true)
.name("jsonItemReader")
.maxItemCount(100)
.currentItemCount(50)
.build();
assertEquals(this.jsonObjectReader, getField(itemReader, "jsonObjectReader"));
assertEquals(100, getField(itemReader, "maxItemCount"));

View File

@@ -61,7 +61,7 @@ class KafkaItemReaderBuilderTests {
void testNullConsumerProperties() {
// given
final KafkaItemReaderBuilder<Object, Object> builder = new KafkaItemReaderBuilder<>().name("kafkaItemReader")
.consumerProperties(null);
.consumerProperties(null);
// when
final Exception expectedException = assertThrows(IllegalArgumentException.class, builder::build);
@@ -93,15 +93,19 @@ class KafkaItemReaderBuilderTests {
assertEquals("value.deserializer property must be provided", exception.getMessage());
consumerProperties.put("value.deserializer", StringDeserializer.class.getName());
new KafkaItemReaderBuilder<>().name("kafkaItemReader").consumerProperties(consumerProperties).topic("test")
.partitions(0, 1).build();
new KafkaItemReaderBuilder<>().name("kafkaItemReader")
.consumerProperties(consumerProperties)
.topic("test")
.partitions(0, 1)
.build();
}
@Test
void testNullTopicName() {
// given
final KafkaItemReaderBuilder<Object, Object> builder = new KafkaItemReaderBuilder<>().name("kafkaItemReader")
.consumerProperties(this.consumerProperties).topic(null);
.consumerProperties(this.consumerProperties)
.topic(null);
// when
final Exception expectedException = assertThrows(IllegalArgumentException.class, builder::build);
@@ -114,7 +118,8 @@ class KafkaItemReaderBuilderTests {
void testEmptyTopicName() {
// given
final KafkaItemReaderBuilder<Object, Object> builder = new KafkaItemReaderBuilder<>().name("kafkaItemReader")
.consumerProperties(this.consumerProperties).topic("");
.consumerProperties(this.consumerProperties)
.topic("");
// when
final Exception expectedException = assertThrows(IllegalArgumentException.class, builder::build);
@@ -127,7 +132,9 @@ class KafkaItemReaderBuilderTests {
void testNullPollTimeout() {
// given
final KafkaItemReaderBuilder<Object, Object> builder = new KafkaItemReaderBuilder<>().name("kafkaItemReader")
.consumerProperties(this.consumerProperties).topic("test").pollTimeout(null);
.consumerProperties(this.consumerProperties)
.topic("test")
.pollTimeout(null);
// when
final Exception expectedException = assertThrows(IllegalArgumentException.class, builder::build);
@@ -140,7 +147,9 @@ class KafkaItemReaderBuilderTests {
void testNegativePollTimeout() {
// given
final KafkaItemReaderBuilder<Object, Object> builder = new KafkaItemReaderBuilder<>().name("kafkaItemReader")
.consumerProperties(this.consumerProperties).topic("test").pollTimeout(Duration.ofSeconds(-1));
.consumerProperties(this.consumerProperties)
.topic("test")
.pollTimeout(Duration.ofSeconds(-1));
// when
final Exception expectedException = assertThrows(IllegalArgumentException.class, builder::build);
@@ -153,7 +162,9 @@ class KafkaItemReaderBuilderTests {
void testZeroPollTimeout() {
// given
final KafkaItemReaderBuilder<Object, Object> builder = new KafkaItemReaderBuilder<>().name("kafkaItemReader")
.consumerProperties(this.consumerProperties).topic("test").pollTimeout(Duration.ZERO);
.consumerProperties(this.consumerProperties)
.topic("test")
.pollTimeout(Duration.ZERO);
// when
final Exception expectedException = assertThrows(IllegalArgumentException.class, builder::build);
@@ -166,7 +177,9 @@ class KafkaItemReaderBuilderTests {
void testEmptyPartitions() {
// given
final KafkaItemReaderBuilder<Object, Object> builder = new KafkaItemReaderBuilder<>().name("kafkaItemReader")
.consumerProperties(this.consumerProperties).topic("test").pollTimeout(Duration.ofSeconds(10));
.consumerProperties(this.consumerProperties)
.topic("test")
.pollTimeout(Duration.ofSeconds(10));
// when
final Exception expectedException = assertThrows(IllegalArgumentException.class, builder::build);
@@ -189,8 +202,13 @@ class KafkaItemReaderBuilderTests {
// when
KafkaItemReader<String, String> reader = new KafkaItemReaderBuilder<String, String>().name("kafkaItemReader")
.consumerProperties(this.consumerProperties).topic(topic).partitions(partitions)
.partitionOffsets(partitionOffsets).pollTimeout(pollTimeout).saveState(saveState).build();
.consumerProperties(this.consumerProperties)
.topic(topic)
.partitions(partitions)
.partitionOffsets(partitionOffsets)
.pollTimeout(pollTimeout)
.saveState(saveState)
.build();
// then
assertNotNull(reader);

View File

@@ -52,7 +52,7 @@ class KafkaItemWriterBuilderTests {
void testNullKafkaTemplate() {
// given
final KafkaItemWriterBuilder<String, String> builder = new KafkaItemWriterBuilder<String, String>()
.itemKeyMapper(this.itemKeyMapper);
.itemKeyMapper(this.itemKeyMapper);
// when
final Exception expectedException = assertThrows(IllegalArgumentException.class, builder::build);
@@ -65,7 +65,7 @@ class KafkaItemWriterBuilderTests {
void testNullItemKeyMapper() {
// given
final KafkaItemWriterBuilder<String, String> builder = new KafkaItemWriterBuilder<String, String>()
.kafkaTemplate(this.kafkaTemplate);
.kafkaTemplate(this.kafkaTemplate);
// when
final Exception expectedException = assertThrows(IllegalArgumentException.class, builder::build);
@@ -82,8 +82,11 @@ class KafkaItemWriterBuilderTests {
// when
KafkaItemWriter<String, String> writer = new KafkaItemWriterBuilder<String, String>()
.kafkaTemplate(this.kafkaTemplate).itemKeyMapper(this.itemKeyMapper).delete(delete).timeout(timeout)
.build();
.kafkaTemplate(this.kafkaTemplate)
.itemKeyMapper(this.itemKeyMapper)
.delete(delete)
.timeout(timeout)
.build();
// then
assertTrue((Boolean) ReflectionTestUtils.getField(writer, "delete"));

View File

@@ -64,7 +64,7 @@ class SimpleMailMessageItemWriterBuilderTests {
@Test
void testSend() {
SimpleMailMessageItemWriter writer = new SimpleMailMessageItemWriterBuilder().mailSender(this.mailSender)
.build();
.build();
writer.write(Chunk.of(this.items));
verify(this.mailSender).send(this.foo, this.bar);
@@ -80,11 +80,11 @@ class SimpleMailMessageItemWriterBuilderTests {
@Test
void testErrorHandler() {
SimpleMailMessageItemWriter writer = new SimpleMailMessageItemWriterBuilder().mailSender(this.mailSender)
.build();
.build();
this.mailSender.send(this.foo, this.bar);
when(this.mailSender)
.thenThrow(new MailSendException(Collections.singletonMap(this.foo, new MessagingException("FOO"))));
.thenThrow(new MailSendException(Collections.singletonMap(this.foo, new MessagingException("FOO"))));
assertThrows(MailSendException.class, () -> writer.write(Chunk.of(this.items)));
}
@@ -92,16 +92,18 @@ class SimpleMailMessageItemWriterBuilderTests {
void testCustomErrorHandler() {
final AtomicReference<String> content = new AtomicReference<>();
SimpleMailMessageItemWriter writer = new SimpleMailMessageItemWriterBuilder()
.mailErrorHandler(new MailErrorHandler() {
@Override
public void handle(MailMessage message, Exception exception) throws MailException {
content.set(exception.getMessage());
}
}).mailSender(this.mailSender).build();
.mailErrorHandler(new MailErrorHandler() {
@Override
public void handle(MailMessage message, Exception exception) throws MailException {
content.set(exception.getMessage());
}
})
.mailSender(this.mailSender)
.build();
this.mailSender.send(this.foo, this.bar);
when(this.mailSender)
.thenThrow(new MailSendException(Collections.singletonMap(this.foo, new MessagingException("FOO"))));
.thenThrow(new MailSendException(Collections.singletonMap(this.foo, new MessagingException("FOO"))));
writer.write(Chunk.of(this.items));
assertEquals("FOO", content.get());
}

View File

@@ -194,7 +194,7 @@ class ScriptItemProcessorTests {
void testScriptSourceWithNoLanguage() {
ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>();
assertThrows(IllegalArgumentException.class, () -> scriptItemProcessor
.setScriptSource("function process(item) { return item.toUpperCase(); } process(item);", null));
.setScriptSource("function process(item) { return item.toUpperCase(); } process(item);", null));
}
@Test

View File

@@ -43,7 +43,8 @@ class ClassifierCompositeItemProcessorBuilderTests {
routingConfiguration.put("foo", fooProcessor);
routingConfiguration.put("*", defaultProcessor);
ClassifierCompositeItemProcessor<String, String> processor = new ClassifierCompositeItemProcessorBuilder<String, String>()
.classifier(new PatternMatchingClassifier<>(routingConfiguration)).build();
.classifier(new PatternMatchingClassifier<>(routingConfiguration))
.build();
assertEquals("bar", processor.process("bar"));
assertEquals("foo: foo", processor.process("foo"));

View File

@@ -58,7 +58,8 @@ class ClassifierCompositeItemWriterBuilderTests {
map.put("foo", fooWriter);
map.put("*", defaultWriter);
ClassifierCompositeItemWriter<String> writer = new ClassifierCompositeItemWriterBuilder<String>()
.classifier(new PatternMatchingClassifier<>(map)).build();
.classifier(new PatternMatchingClassifier<>(map))
.build();
writer.write(Chunk.of("foo", "foo", "one", "two", "three"));
assertIterableEquals(Chunk.of("foo", "foo"), foos);

View File

@@ -60,7 +60,8 @@ class CompositeItemProcessorBuilderTests {
Object itemAfterFirstTransformation = new Object();
Object itemAfterSecondTransformation = new Object();
CompositeItemProcessor<Object, Object> composite = new CompositeItemProcessorBuilder<>()
.delegates(this.processors).build();
.delegates(this.processors)
.build();
when(processor1.process(item)).thenReturn(itemAfterFirstTransformation);
when(processor2.process(itemAfterFirstTransformation)).thenReturn(itemAfterSecondTransformation);
@@ -74,7 +75,8 @@ class CompositeItemProcessorBuilderTests {
Object itemAfterFirstTransformation = new Object();
Object itemAfterSecondTransformation = new Object();
CompositeItemProcessor<Object, Object> composite = new CompositeItemProcessorBuilder<>()
.delegates(this.processor1, this.processor2).build();
.delegates(this.processor1, this.processor2)
.build();
when(processor1.process(item)).thenReturn(itemAfterFirstTransformation);
when(processor2.process(itemAfterFirstTransformation)).thenReturn(itemAfterSecondTransformation);

View File

@@ -97,7 +97,8 @@ class CompositeItemWriterBuilderTests {
List<ItemWriter<? super Object>> writers = new ArrayList<>();
writers.add(writer);
CompositeItemWriter<Object> itemWriter = new CompositeItemWriterBuilder<>().delegates(writers)
.ignoreItemStream(ignoreItemStream).build();
.ignoreItemStream(ignoreItemStream)
.build();
itemWriter.open(executionContext);
int openCount = 0;

View File

@@ -58,7 +58,9 @@ class ScriptItemProcessorBuilderTests {
@Test
void testScriptSource() throws Exception {
ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessorBuilder<String, Object>()
.scriptSource("item.toUpperCase();").language("javascript").build();
.scriptSource("item.toUpperCase();")
.language("javascript")
.build();
scriptItemProcessor.afterPropertiesSet();
assertEquals("AA", scriptItemProcessor.process("aa"), "Incorrect transformed value");
@@ -67,7 +69,10 @@ class ScriptItemProcessorBuilderTests {
@Test
void testItemBinding() throws Exception {
ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessorBuilder<String, Object>()
.scriptSource("foo.contains('World');").language("javascript").itemBindingVariableName("foo").build();
.scriptSource("foo.contains('World');")
.language("javascript")
.itemBindingVariableName("foo")
.build();
scriptItemProcessor.afterPropertiesSet();
assertEquals(true, scriptItemProcessor.process("Hello World"), "Incorrect transformed value");
@@ -77,7 +82,8 @@ class ScriptItemProcessorBuilderTests {
void testScriptResource() throws Exception {
Resource resource = new ClassPathResource("org/springframework/batch/item/support/processor-test-simple.js");
ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessorBuilder<String, Object>()
.scriptResource(resource).build();
.scriptResource(resource)
.build();
scriptItemProcessor.afterPropertiesSet();
assertEquals("BB", scriptItemProcessor.process("bb"), "Incorrect transformed value");

View File

@@ -41,7 +41,8 @@ class SingleItemPeekableItemReaderBuilderTests {
@Test
void testPeek() throws Exception {
SingleItemPeekableItemReader<String> reader = new SingleItemPeekableItemReaderBuilder<String>()
.delegate(new ListItemReader<>(Arrays.asList("a", "b"))).build();
.delegate(new ListItemReader<>(Arrays.asList("a", "b")))
.build();
assertEquals("a", reader.peek());
assertEquals("a", reader.read());
assertEquals("b", reader.read());

View File

@@ -46,7 +46,8 @@ class SynchronizedItemStreamReaderBuilderTests {
final SynchronizedItemStreamReaderBuilderTests.TestItemReader testItemReader = new SynchronizedItemStreamReaderBuilderTests.TestItemReader();
final SynchronizedItemStreamReader<Integer> synchronizedItemStreamReader = new SynchronizedItemStreamReaderBuilder<Integer>()
.delegate(testItemReader).build();
.delegate(testItemReader)
.build();
// Open the ItemReader and make sure it's initialized properly.
synchronizedItemStreamReader.open(executionContext);

View File

@@ -92,7 +92,7 @@ abstract class AbstractStaxEventWriterItemWriterTests {
logger.info("Timing for XML writer: " + stopWatch);
assertThat(Input.from(expected.getFile()), CompareMatcher.isSimilarTo(Input.from(resource.getFile()))
.withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.byNameAndText)));
.withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.byNameAndText)));
}
@BeforeEach

View File

@@ -55,7 +55,7 @@ class Jaxb2NamespaceUnmarshallingTests {
@Test
void testUnmarshal() throws Exception {
QualifiedTrade trade = (QualifiedTrade) getUnmarshaller()
.unmarshal(new StreamSource(new StringReader(TRADE_XML)));
.unmarshal(new StreamSource(new StringReader(TRADE_XML)));
assertEquals("XYZ0001", trade.getIsin());
assertEquals(5, trade.getQuantity());
assertEquals(new BigDecimal("11.39"), trade.getPrice());

View File

@@ -424,7 +424,7 @@ class StaxEventItemWriterTests {
writer.write(items);
writer.update(executionContext);
long writeStatistics = executionContext
.getLong(ClassUtils.getShortName(StaxEventItemWriter.class) + ".record.count");
.getLong(ClassUtils.getShortName(StaxEventItemWriter.class) + ".record.count");
assertEquals(i, writeStatistics);
}
@@ -993,10 +993,11 @@ class StaxEventItemWriterTests {
public void marshal(Object graph, Result result) throws XmlMappingException, IOException {
Assert.isInstanceOf(Result.class, result);
try {
StaxTestUtils.getXmlEventWriter(result).add(
XMLEventFactory.newInstance().createStartElement(namespacePrefix, namespace, graph.toString()));
StaxTestUtils.getXmlEventWriter(result).add(
XMLEventFactory.newInstance().createEndElement(namespacePrefix, namespace, graph.toString()));
StaxTestUtils.getXmlEventWriter(result)
.add(XMLEventFactory.newInstance()
.createStartElement(namespacePrefix, namespace, graph.toString()));
StaxTestUtils.getXmlEventWriter(result)
.add(XMLEventFactory.newInstance().createEndElement(namespacePrefix, namespace, graph.toString()));
}
catch (Exception e) {
throw new RuntimeException("Exception while writing to output file", e);

View File

@@ -224,7 +224,7 @@ class TransactionalStaxEventItemWriterTests {
public void marshal(Object graph, Result result) throws XmlMappingException, IOException {
try {
StaxTestUtils.getXmlEventWriter(result)
.add(XMLEventFactory.newInstance().createComment(graph.toString()));
.add(XMLEventFactory.newInstance().createComment(graph.toString()));
}
catch (Exception e) {
throw new RuntimeException("Exception while writing to output file", e);

View File

@@ -68,7 +68,8 @@ class StaxEventItemReaderBuilderTests {
@Test
void testBuildWithoutProvidingResource() {
StaxEventItemReader<Foo> reader = new StaxEventItemReaderBuilder<Foo>().name("fooReader")
.addFragmentRootElements("foo").build();
.addFragmentRootElements("foo")
.build();
assertNotNull(reader);
}
@@ -79,8 +80,13 @@ class StaxEventItemReaderBuilderTests {
unmarshaller.setClassesToBeBound(Foo.class);
StaxEventItemReader<Foo> reader = new StaxEventItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource(SIMPLE_XML)).addFragmentRootElements("foo").currentItemCount(1).maxItemCount(2)
.unmarshaller(unmarshaller).xmlInputFactory(XMLInputFactory.newInstance()).build();
.resource(getResource(SIMPLE_XML))
.addFragmentRootElements("foo")
.currentItemCount(1)
.maxItemCount(2)
.unmarshaller(unmarshaller)
.xmlInputFactory(XMLInputFactory.newInstance())
.build();
reader.afterPropertiesSet();
@@ -110,9 +116,14 @@ class StaxEventItemReaderBuilderTests {
ByteBuffer xml = charset.encode(SIMPLE_XML);
StaxEventItemReader<Foo> reader = new StaxEventItemReaderBuilder<Foo>().name("fooReader")
.resource(new ByteArrayResource(xml.array())).encoding(charset.name()).addFragmentRootElements("foo")
.currentItemCount(1).maxItemCount(2).unmarshaller(unmarshaller)
.xmlInputFactory(XMLInputFactory.newInstance()).build();
.resource(new ByteArrayResource(xml.array()))
.encoding(charset.name())
.addFragmentRootElements("foo")
.currentItemCount(1)
.maxItemCount(2)
.unmarshaller(unmarshaller)
.xmlInputFactory(XMLInputFactory.newInstance())
.build();
reader.afterPropertiesSet();
@@ -136,7 +147,10 @@ class StaxEventItemReaderBuilderTests {
unmarshaller.setClassesToBeBound(Foo.class);
StaxEventItemReader<Foo> reader = new StaxEventItemReaderBuilder<Foo>().name("fooReader")
.resource(this.resource).addFragmentRootElements("foo").unmarshaller(unmarshaller).build();
.resource(this.resource)
.addFragmentRootElements("foo")
.unmarshaller(unmarshaller)
.build();
reader.afterPropertiesSet();
@@ -150,8 +164,11 @@ class StaxEventItemReaderBuilderTests {
unmarshaller.setClassesToBeBound(Foo.class);
StaxEventItemReader<Foo> reader = new StaxEventItemReaderBuilder<Foo>().name("fooReader")
.resource(getResource(SIMPLE_XML)).addFragmentRootElements("foo").unmarshaller(unmarshaller)
.saveState(false).build();
.resource(getResource(SIMPLE_XML))
.addFragmentRootElements("foo")
.unmarshaller(unmarshaller)
.saveState(false)
.build();
reader.afterPropertiesSet();

View File

@@ -84,7 +84,10 @@ class StaxEventItemWriterBuilderTests {
@Test
void testOverwriteOutput() throws Exception {
StaxEventItemWriter<Foo> staxEventItemWriter = new StaxEventItemWriterBuilder<Foo>().name("fooWriter")
.marshaller(marshaller).resource(this.resource).overwriteOutput(false).build();
.marshaller(marshaller)
.resource(this.resource)
.overwriteOutput(false)
.build();
staxEventItemWriter.afterPropertiesSet();
assertThrows(ItemStreamException.class, () -> staxEventItemWriter.open(new ExecutionContext()));
}
@@ -94,7 +97,10 @@ class StaxEventItemWriterBuilderTests {
ExecutionContext executionContext = new ExecutionContext();
StaxEventItemWriter<Foo> staxEventItemWriter = new StaxEventItemWriterBuilder<Foo>().name("fooWriter")
.resource(this.resource).marshaller(this.marshaller).shouldDeleteIfEmpty(true).build();
.resource(this.resource)
.marshaller(this.marshaller)
.shouldDeleteIfEmpty(true)
.build();
staxEventItemWriter.afterPropertiesSet();
staxEventItemWriter.open(executionContext);
@@ -111,7 +117,11 @@ class StaxEventItemWriterBuilderTests {
void testTransactional() {
StaxEventItemWriter<Foo> staxEventItemWriter = new StaxEventItemWriterBuilder<Foo>().name("fooWriter")
.resource(this.resource).marshaller(this.marshaller).transactional(true).forceSync(true).build();
.resource(this.resource)
.marshaller(this.marshaller)
.transactional(true)
.forceSync(true)
.build();
ExecutionContext executionContext = new ExecutionContext();
@@ -130,24 +140,32 @@ class StaxEventItemWriterBuilderTests {
rootElementAttributes.put("baz", "quix");
StaxEventItemWriter<Foo> staxEventItemWriter = new StaxEventItemWriterBuilder<Foo>().name("fooWriter")
.marshaller(marshaller).encoding("UTF-16").footerCallback(writer -> {
XMLEventFactory factory = XMLEventFactory.newInstance();
try {
writer.add(factory.createEndElement("ns", "https://www.springframework.org/test", "group"));
}
catch (XMLStreamException e) {
throw new RuntimeException(e);
}
}).headerCallback(writer -> {
XMLEventFactory factory = XMLEventFactory.newInstance();
try {
writer.add(factory.createStartElement("ns", "https://www.springframework.org/test", "group"));
}
catch (XMLStreamException e) {
throw new RuntimeException(e);
}
}).resource(this.resource).rootTagName("foobarred").rootElementAttributes(rootElementAttributes)
.saveState(false).version("1.1").build();
.marshaller(marshaller)
.encoding("UTF-16")
.footerCallback(writer -> {
XMLEventFactory factory = XMLEventFactory.newInstance();
try {
writer.add(factory.createEndElement("ns", "https://www.springframework.org/test", "group"));
}
catch (XMLStreamException e) {
throw new RuntimeException(e);
}
})
.headerCallback(writer -> {
XMLEventFactory factory = XMLEventFactory.newInstance();
try {
writer.add(factory.createStartElement("ns", "https://www.springframework.org/test", "group"));
}
catch (XMLStreamException e) {
throw new RuntimeException(e);
}
})
.resource(this.resource)
.rootTagName("foobarred")
.rootElementAttributes(rootElementAttributes)
.saveState(false)
.version("1.1")
.build();
staxEventItemWriter.afterPropertiesSet();
@@ -178,7 +196,9 @@ class StaxEventItemWriterBuilderTests {
@Test
void testStandaloneDeclarationInHeaderWhenNotSet() throws Exception {
StaxEventItemWriter<Foo> staxEventItemWriter = new StaxEventItemWriterBuilder<Foo>().name("fooWriter")
.marshaller(marshaller).resource(this.resource).build();
.marshaller(marshaller)
.resource(this.resource)
.build();
staxEventItemWriter.afterPropertiesSet();
@@ -194,7 +214,10 @@ class StaxEventItemWriterBuilderTests {
@Test
void testStandaloneDeclarationInHeaderWhenSetToTrue() throws Exception {
StaxEventItemWriter<Foo> staxEventItemWriter = new StaxEventItemWriterBuilder<Foo>().name("fooWriter")
.marshaller(marshaller).resource(this.resource).standalone(true).build();
.marshaller(marshaller)
.resource(this.resource)
.standalone(true)
.build();
staxEventItemWriter.afterPropertiesSet();
@@ -210,7 +233,10 @@ class StaxEventItemWriterBuilderTests {
@Test
void testStandaloneDeclarationInHeaderWhenSetToFalse() throws Exception {
StaxEventItemWriter<Foo> staxEventItemWriter = new StaxEventItemWriterBuilder<Foo>().name("fooWriter")
.marshaller(marshaller).resource(this.resource).standalone(false).build();
.marshaller(marshaller)
.resource(this.resource)
.standalone(false)
.build();
staxEventItemWriter.afterPropertiesSet();

View File

@@ -52,13 +52,13 @@ class CompositeCompletionPolicyTests {
@Test
void testNonTrivialPolicies() {
CompositeCompletionPolicy policy = new CompositeCompletionPolicy();
policy.setPolicies(
new CompletionPolicy[] { new MockCompletionPolicySupport(), new MockCompletionPolicySupport() {
@Override
public boolean isComplete(RepeatContext context) {
return true;
}
} });
policy
.setPolicies(new CompletionPolicy[] { new MockCompletionPolicySupport(), new MockCompletionPolicySupport() {
@Override
public boolean isComplete(RepeatContext context) {
return true;
}
} });
RepeatContext context = policy.start(null);
assertTrue(policy.isComplete(context));
}
@@ -66,13 +66,13 @@ class CompositeCompletionPolicyTests {
@Test
void testNonTrivialPoliciesWithResult() {
CompositeCompletionPolicy policy = new CompositeCompletionPolicy();
policy.setPolicies(
new CompletionPolicy[] { new MockCompletionPolicySupport(), new MockCompletionPolicySupport() {
@Override
public boolean isComplete(RepeatContext context, RepeatStatus result) {
return true;
}
} });
policy
.setPolicies(new CompletionPolicy[] { new MockCompletionPolicySupport(), new MockCompletionPolicySupport() {
@Override
public boolean isComplete(RepeatContext context, RepeatStatus result) {
return true;
}
} });
RepeatContext context = policy.start(null);
assertTrue(policy.isComplete(context, null));
}

View File

@@ -121,7 +121,7 @@ class TransactionAwareBufferedWriterTests {
ArgumentCaptor<ByteBuffer> byteBufferCaptor = ArgumentCaptor.forClass(ByteBuffer.class);
when(fileChannel.write(byteBufferCaptor.capture()))
.thenAnswer(invocation -> ((ByteBuffer) invocation.getArguments()[0]).remaining());
.thenAnswer(invocation -> ((ByteBuffer) invocation.getArguments()[0]).remaining());
writer.write("foo");
writer.close();

View File

@@ -63,7 +63,7 @@ class TransactionAwareProxyFactoryTests {
@Test
void testCreateMapWithValues() {
Map<String, String> map = TransactionAwareProxyFactory
.createTransactionalMap(Collections.singletonMap("foo", "bar"));
.createTransactionalMap(Collections.singletonMap("foo", "bar"));
assertEquals(1, map.size());
}