Skip to content

Commit

Permalink
Change Resource to WritableResource in file-based item writers
Browse files Browse the repository at this point in the history
Resolves #756
  • Loading branch information
fmbenhassine committed May 9, 2022
1 parent 74e8caa commit 5bce152
Show file tree
Hide file tree
Showing 16 changed files with 73 additions and 70 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2006-2007 the original author or authors.
* Copyright 2006-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -19,15 +19,15 @@
import org.springframework.batch.item.ItemStream;
import org.springframework.batch.item.ItemStreamWriter;
import org.springframework.batch.item.ItemWriter;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;

/**
* Interface for {@link ItemWriter}s that implement {@link ItemStream} and write
* output to {@link Resource}.
* output to {@link WritableResource}.
*
* @author Robert Kasanicky
*/
public interface ResourceAwareItemWriterItemStream<T> extends ItemStreamWriter<T> {

void setResource(Resource resource);
void setResource(WritableResource resource);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2016-2019 the original author or authors.
* Copyright 2016-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -31,7 +31,7 @@
import org.springframework.batch.item.file.transform.FieldExtractor;
import org.springframework.batch.item.file.transform.FormatterLineAggregator;
import org.springframework.batch.item.file.transform.LineAggregator;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
import org.springframework.util.Assert;

/**
Expand All @@ -48,7 +48,7 @@ public class FlatFileItemWriterBuilder<T> {

protected Log logger = LogFactory.getLog(getClass());

private Resource resource;
private WritableResource resource;

private boolean forceSync = false;

Expand Down Expand Up @@ -108,13 +108,13 @@ public FlatFileItemWriterBuilder<T> name(String name) {
}

/**
* The {@link Resource} to be used as output.
* The {@link WritableResource} to be used as output.
*
* @param resource the output of the writer.
* @return The current instance of the builder.
* @see FlatFileItemWriter#setResource(Resource)
* @see FlatFileItemWriter#setResource(WritableResource)
*/
public FlatFileItemWriterBuilder<T> resource(Resource resource) {
public FlatFileItemWriterBuilder<T> resource(WritableResource resource) {
this.resource = resource;

return this;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2018 the original author or authors.
* Copyright 2018-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -20,13 +20,13 @@
import java.util.List;

import org.springframework.batch.item.support.AbstractFileItemWriter;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;

/**
* Item writer that writes data in json format to an output file. The location
* of the output file is defined by a {@link Resource} and must represent a
* of the output file is defined by a {@link WritableResource} and must represent a
* writable file. Items are transformed to json format using a
* {@link JsonObjectMarshaller}. Items will be enclosed in a json array as follows:
*
Expand Down Expand Up @@ -61,7 +61,7 @@ public class JsonFileItemWriter<T> extends AbstractFileItemWriter<T> {
* @param resource to write json data to
* @param jsonObjectMarshaller used to marshal object into json representation
*/
public JsonFileItemWriter(Resource resource, JsonObjectMarshaller<T> jsonObjectMarshaller) {
public JsonFileItemWriter(WritableResource resource, JsonObjectMarshaller<T> jsonObjectMarshaller) {
Assert.notNull(resource, "resource must not be null");
Assert.notNull(jsonObjectMarshaller, "json object marshaller must not be null");
setResource(resource);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2018 the original author or authors.
* Copyright 2018-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -20,7 +20,7 @@
import org.springframework.batch.item.file.FlatFileHeaderCallback;
import org.springframework.batch.item.json.JsonFileItemWriter;
import org.springframework.batch.item.json.JsonObjectMarshaller;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
import org.springframework.util.Assert;

/**
Expand All @@ -32,7 +32,7 @@
*/
public class JsonFileItemWriterBuilder<T> {

private Resource resource;
private WritableResource resource;
private JsonObjectMarshaller<T> jsonObjectMarshaller;
private FlatFileHeaderCallback headerCallback;
private FlatFileFooterCallback footerCallback;
Expand Down Expand Up @@ -119,13 +119,13 @@ public JsonFileItemWriterBuilder<T> jsonObjectMarshaller(JsonObjectMarshaller<T>
}

/**
* The {@link Resource} to be used as output.
* The {@link WritableResource} to be used as output.
*
* @param resource the output of the writer.
* @return The current instance of the builder.
* @see JsonFileItemWriter#setResource(Resource)
* @see JsonFileItemWriter#setResource(WritableResource)
*/
public JsonFileItemWriterBuilder<T> resource(Resource resource) {
public JsonFileItemWriterBuilder<T> resource(WritableResource resource) {
this.resource = resource;

return this;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2006-2021 the original author or authors.
* Copyright 2006-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -41,13 +41,13 @@
import org.springframework.batch.item.util.FileUtils;
import org.springframework.batch.support.transaction.TransactionAwareBufferedWriter;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
import org.springframework.util.Assert;

/**
* Base class for item writers that write data to a file or stream.
* This class provides common features like restart, force sync, append etc.
* The location of the output file is defined by a {@link Resource} which must
* The location of the output file is defined by a {@link WritableResource} which must
* represent a writable file.<br>
*
* Uses buffered writer to improve performance.<br>
Expand Down Expand Up @@ -81,7 +81,7 @@ public abstract class AbstractFileItemWriter<T> extends AbstractItemStreamItemWr

private static final String RESTART_DATA_NAME = "current.count";

private Resource resource;
private WritableResource resource;

protected OutputState state = null;

Expand Down Expand Up @@ -128,12 +128,12 @@ public void setLineSeparator(String lineSeparator) {
}

/**
* Setter for resource. Represents a file that can be written.
* Setter for a writable resource. Represents a file that can be written.
*
* @param resource the resource to be written to
*/
@Override
public void setResource(Resource resource) {
public void setResource(WritableResource resource) {
this.resource = resource;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2006-2020 the original author or authors.
* Copyright 2006-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -51,7 +51,7 @@
import org.springframework.batch.item.xml.stax.UnopenedElementClosingEventWriter;
import org.springframework.batch.support.transaction.TransactionAwareBufferedWriter;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
import org.springframework.dao.DataAccessResourceFailureException;
import org.springframework.oxm.Marshaller;
import org.springframework.oxm.XmlMappingException;
Expand Down Expand Up @@ -103,7 +103,7 @@ public class StaxEventItemWriter<T> extends AbstractItemStreamItemWriter<T> impl
private static final String WRITE_STATISTICS_NAME = "record.count";

// file system resource
private Resource resource;
private WritableResource resource;

// xml marshaller
private Marshaller marshaller;
Expand Down Expand Up @@ -177,7 +177,7 @@ public StaxEventItemWriter() {
* @param resource the output file
*/
@Override
public void setResource(Resource resource) {
public void setResource(WritableResource resource) {
this.resource = resource;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2017-2020 the original author or authors.
* Copyright 2017-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -19,7 +19,7 @@

import org.springframework.batch.item.xml.StaxEventItemWriter;
import org.springframework.batch.item.xml.StaxWriterCallback;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
import org.springframework.oxm.Marshaller;
import org.springframework.util.Assert;

Expand All @@ -34,7 +34,7 @@
*/
public class StaxEventItemWriterBuilder<T> {

private Resource resource;
private WritableResource resource;

private Marshaller marshaller;

Expand Down Expand Up @@ -80,13 +80,13 @@ public StaxEventItemWriterBuilder<T> name(String name) {
}

/**
* The {@link Resource} to be used as output.
* The {@link WritableResource} to be used as output.
*
* @param resource the output from the writer
* @return the current instance of the builder.
* @see StaxEventItemWriter#setResource(Resource)
* @see StaxEventItemWriter#setResource(WritableResource)
*/
public StaxEventItemWriterBuilder<T> resource(Resource resource) {
public StaxEventItemWriterBuilder<T> resource(WritableResource resource) {
this.resource = resource;

return this;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2006-2007 the original author or authors.
* Copyright 2006-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -39,7 +39,7 @@
import org.springframework.batch.item.file.transform.PassThroughLineAggregator;
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
Expand Down Expand Up @@ -838,7 +838,7 @@ public String aggregate(String item) {
* If append=true a new output file should still be created on the first run (not restart).
*/
public void testAppendToNotYetExistingFile() throws Exception {
Resource toBeCreated = new FileSystemResource("target/FlatFileItemWriterTests.out");
WritableResource toBeCreated = new FileSystemResource("target/FlatFileItemWriterTests.out");

outputFile = toBeCreated.getFile(); //enable easy content reading and auto-delete the file

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2016-2021 the original author or authors.
* Copyright 2016-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -30,6 +30,7 @@
import org.springframework.batch.item.file.transform.PassThroughLineAggregator;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
import org.springframework.test.util.ReflectionTestUtils;

import static org.junit.Assert.assertEquals;
Expand All @@ -55,7 +56,7 @@ public void testMissingLineAggregator() {

@Test(expected = IllegalStateException.class)
public void testMultipleLineAggregators() throws IOException {
Resource output = new FileSystemResource(File.createTempFile("foo", "txt"));
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));

new FlatFileItemWriterBuilder<Foo>()
.name("itemWriter")
Expand All @@ -72,7 +73,7 @@ public void testMultipleLineAggregators() throws IOException {
@Test
public void test() throws Exception {

Resource output = new FileSystemResource(File.createTempFile("foo", "txt"));
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));

FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>()
.name("foo")
Expand All @@ -98,7 +99,7 @@ public void test() throws Exception {
@Test
public void testDelimitedOutputWithDefaultDelimiter() throws Exception {

Resource output = new FileSystemResource(File.createTempFile("foo", "txt"));
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));

FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>()
.name("foo")
Expand All @@ -125,7 +126,7 @@ public void testDelimitedOutputWithDefaultDelimiter() throws Exception {
@Test
public void testDelimitedOutputWithEmptyDelimiter() throws Exception {

Resource output = new FileSystemResource(File.createTempFile("foo", "txt"));
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));

FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>()
.name("foo")
Expand Down Expand Up @@ -153,7 +154,7 @@ public void testDelimitedOutputWithEmptyDelimiter() throws Exception {
@Test
public void testDelimitedOutputWithDefaultFieldExtractor() throws Exception {

Resource output = new FileSystemResource(File.createTempFile("foo", "txt"));
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));

FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>()
.name("foo")
Expand Down Expand Up @@ -181,7 +182,7 @@ public void testDelimitedOutputWithDefaultFieldExtractor() throws Exception {
@Test
public void testDelimitedOutputWithCustomFieldExtractor() throws Exception {

Resource output = new FileSystemResource(File.createTempFile("foo", "txt"));
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));

FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>()
.name("foo")
Expand Down Expand Up @@ -209,7 +210,7 @@ public void testDelimitedOutputWithCustomFieldExtractor() throws Exception {
@Test
public void testFormattedOutputWithDefaultFieldExtractor() throws Exception {

Resource output = new FileSystemResource(File.createTempFile("foo", "txt"));
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));

FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>()
.name("foo")
Expand Down Expand Up @@ -237,7 +238,7 @@ public void testFormattedOutputWithDefaultFieldExtractor() throws Exception {
@Test
public void testFormattedOutputWithCustomFieldExtractor() throws Exception {

Resource output = new FileSystemResource(File.createTempFile("foo", "txt"));
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));

FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>()
.name("foo")
Expand Down Expand Up @@ -265,7 +266,7 @@ public void testFormattedOutputWithCustomFieldExtractor() throws Exception {
@Test
public void testFlags() throws Exception {

Resource output = new FileSystemResource(File.createTempFile("foo", "txt"));
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));

String encoding = Charset.defaultCharset().name();

Expand All @@ -287,7 +288,7 @@ public void testFlags() throws Exception {
@Test
public void testFlagsWithEncoding() throws Exception {

Resource output = new FileSystemResource(File.createTempFile("foo", "txt"));
WritableResource output = new FileSystemResource(File.createTempFile("foo", "txt"));
String encoding = "UTF-8";
FlatFileItemWriter<Foo> writer = new FlatFileItemWriterBuilder<Foo>()
.name("foo")
Expand Down
Loading

0 comments on commit 5bce152

Please sign in to comment.