Add support to build JsonItemReader when no Resource is provided

Resolves #3731
This commit is contained in:
Santiago Molano
2020-07-07 13:21:16 -05:00
committed by Mahmoud Ben Hassine
parent 743da96fcf
commit c78e2b518b
3 changed files with 26 additions and 13 deletions

View File

@@ -73,6 +73,9 @@ public class JsonItemReader<T> extends AbstractItemCountingItemStreamItemReader<
this.jsonObjectReader = jsonObjectReader;
setExecutionContextName(ClassUtils.getShortName(JsonItemReader.class));
}
public JsonItemReader(){
setExecutionContextName(ClassUtils.getShortName(JsonItemReader.class));
}
/**
* Set the {@link JsonObjectReader} to use to read and map Json fragments to domain objects.

View File

@@ -140,12 +140,13 @@ public class JsonItemReaderBuilder<T> {
*/
public JsonItemReader<T> build() {
Assert.notNull(this.jsonObjectReader, "A json object reader is required.");
Assert.notNull(this.resource, "A resource is required.");
if (this.saveState) {
Assert.state(StringUtils.hasText(this.name), "A name is required when saveState is set to true.");
}
JsonItemReader<T> reader = new JsonItemReader<>(this.resource, this.jsonObjectReader);
JsonItemReader<T> reader = new JsonItemReader<>();
reader.setResource(this.resource);
reader.setJsonObjectReader(this.jsonObjectReader);
reader.setName(this.name);
reader.setStrict(this.strict);
reader.setSaveState(this.saveState);

View File

@@ -57,17 +57,6 @@ public class JsonItemReaderBuilderTest {
iae.getMessage());
}
try {
new JsonItemReaderBuilder<String>()
.jsonObjectReader(this.jsonObjectReader)
.build();
fail("A resource is required.");
}
catch (IllegalArgumentException iae) {
assertEquals("A resource is required.",
iae.getMessage());
}
try {
new JsonItemReaderBuilder<String>()
.jsonObjectReader(this.jsonObjectReader)
@@ -102,4 +91,24 @@ public class JsonItemReaderBuilderTest {
Object executionContext = getField(itemReader, "executionContextUserSupport");
Assert.assertEquals("jsonItemReader", getField(executionContext, "name"));
}
@Test
public void shouldBuildJsonItemReaderWhenResourceIsNotProvided(){
JsonItemReader<String> itemReader = new JsonItemReaderBuilder<String>()
.jsonObjectReader(this.jsonObjectReader)
.saveState(true)
.strict(true)
.name("jsonItemReader")
.maxItemCount(100)
.currentItemCount(50)
.build();
Assert.assertEquals(this.jsonObjectReader, getField(itemReader, "jsonObjectReader"));
Assert.assertEquals(100, getField(itemReader, "maxItemCount"));
Assert.assertEquals(50, getField(itemReader, "currentItemCount"));
Assert.assertTrue((Boolean) getField(itemReader, "saveState"));
Assert.assertTrue((Boolean) getField(itemReader, "strict"));
Object executionContext = getField(itemReader, "executionContextUserSupport");
Assert.assertEquals("jsonItemReader", getField(executionContext, "name"));
}
}