Upgrade spring-javaformat maven plugin to version 0.0.39
This commit is contained in:
@@ -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]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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<>());
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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.");
|
||||
|
||||
@@ -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());
|
||||
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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<>();
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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("¶meter", null));
|
||||
assertEquals(1, JdbcParameterUtils.countParameterPlaceholders("The \"big\" ¶meter 'bad wolf'", null));
|
||||
assertEquals(1, JdbcParameterUtils.countParameterPlaceholders("The big ¶meter ¶meter bad wolf", null));
|
||||
assertEquals(2, JdbcParameterUtils
|
||||
.countParameterPlaceholders("The big ¶meter &newparameter ¶meter bad wolf", null));
|
||||
.countParameterPlaceholders("The big ¶meter &newparameter ¶meter bad wolf", null));
|
||||
assertEquals(2, JdbcParameterUtils
|
||||
.countParameterPlaceholders("The big ¶meter, &newparameter, ¶meter bad wolf", null));
|
||||
.countParameterPlaceholders("The big ¶meter, &newparameter, ¶meter bad wolf", null));
|
||||
assertEquals(1,
|
||||
JdbcParameterUtils.countParameterPlaceholders("The \"big &x \" 'ba''ad&p' ¶meter wolf", null));
|
||||
assertEquals(2, JdbcParameterUtils
|
||||
.countParameterPlaceholders("The big :parameter, &newparameter, ¶meter bad wolf", null));
|
||||
.countParameterPlaceholders("The big :parameter, &newparameter, ¶meter 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));
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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"));
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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" });
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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"));
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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"));
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"));
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user