public class FileSplitter extends AbstractMessageSplitter
AbstractMessageSplitter
implementation to split the File
Message
payload to lines.
With iterator = true
(defaults to true
) this class produces an
Iterator
to process file lines on demand from Iterator.next()
. Otherwise
a List
of all lines is returned to the to further
AbstractMessageSplitter.handleRequestMessage(org.springframework.messaging.Message<?>)
process.
Can accept String
as file path, File
, Reader
or
InputStream
as payload type. All other types are ignored and returned to the
AbstractMessageSplitter
as is.
If setFirstLineAsHeader(String)
is specified, the first line of the content is
treated as a header and carried as a header with the provided name in the messages
emitted for the remaining lines. In this case, if markers are enabled, the line count
in the END marker does not include the header line and, if
applySequence
is true, the header is not included in
the sequence.
Modifier and Type | Class and Description |
---|---|
static class |
FileSplitter.FileMarker |
AbstractReplyProducingMessageHandler.RequestHandler
IntegrationManagement.ManagementOverrides
messagingTemplate
EXPRESSION_PARSER, logger
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME
Constructor and Description |
---|
FileSplitter()
Construct a splitter where the
splitMessage(Message) method returns
an iterator and the file is read line-by-line during iteration. |
FileSplitter(boolean iterator)
Construct a splitter where the
splitMessage(Message) method returns
an iterator, and the file is read line-by-line during iteration, or a list
of lines from the file. |
FileSplitter(boolean iterator,
boolean markers)
Construct a splitter where the
splitMessage(Message) method returns
an iterator, and the file is read line-by-line during iteration, or a list
of lines from the file. |
FileSplitter(boolean iterator,
boolean markers,
boolean markersJson)
Construct a splitter where the
splitMessage(Message) method returns an
iterator, and the file is read line-by-line during iteration, or a list of lines
from the file. |
Modifier and Type | Method and Description |
---|---|
protected void |
addHeaders(Message<?> message,
Map<String,Object> headers)
Allows subclasses to add extra headers to the output messages.
|
void |
setCharset(Charset charset)
Set the charset to be used when reading the file, when something other than the default
charset is required.
|
void |
setFirstLineAsHeader(String firstLineHeaderName)
Specify the header name for the first line to be carried as a header in the
messages emitted for the remaining lines.
|
protected Object |
splitMessage(Message<?> message)
Subclasses must override this method to split the received Message.
|
protected boolean |
willAddHeaders(Message<?> message)
Return true if the subclass needs to add headers in the resulting splits.
|
doInit, getComponentType, getDiscardChannel, getIntegrationPatternType, handleRequestMessage, obtainSizeIfPossible, obtainSizeIfPossible, produceOutput, setApplySequence, setDiscardChannel, setDiscardChannelName, shouldCopyRequestHeaders
doInvokeAdvisedRequestHandler, getBeanClassLoader, getRequiresReply, handleMessageInternal, hasAdviceChain, onInit, setAdviceChain, setBeanClassLoader, setRequiresReply
addNotPropagatedHeaders, createOutputMessage, getNotPropagatedHeaders, getOutputChannel, isAsync, messageBuilderForReply, resolveErrorChannel, sendErrorMessage, sendOutput, sendOutputs, setAsync, setNotPropagatedHeaders, setOutputChannel, setOutputChannelName, setSendTimeout, shouldSplitOutput, updateNotPropagatedHeaders
handleMessage, onComplete, onError, onNext, onSubscribe
buildSendTimer, destroy, getManagedName, getManagedType, getMetricsCaptor, getOrder, getOverrides, isLoggingEnabled, registerMetricsCaptor, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrack
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
handleMessage
getThisAs
getBeanName, getComponentName
public FileSplitter()
splitMessage(Message)
method returns
an iterator and the file is read line-by-line during iteration.public FileSplitter(boolean iterator)
splitMessage(Message)
method returns
an iterator, and the file is read line-by-line during iteration, or a list
of lines from the file.iterator
- true to return an iterator, false to return a list of lines.public FileSplitter(boolean iterator, boolean markers)
splitMessage(Message)
method returns
an iterator, and the file is read line-by-line during iteration, or a list
of lines from the file. When file markers are enabled (START/END)
applySequence
is false by default. If enabled,
the markers are included in the sequence size.iterator
- true to return an iterator, false to return a list of lines.markers
- true to emit start of file/end of file marker messages before/after the data.public FileSplitter(boolean iterator, boolean markers, boolean markersJson)
splitMessage(Message)
method returns an
iterator, and the file is read line-by-line during iteration, or a list of lines
from the file. When file markers are enabled (START/END)
applySequence
is false by default. If enabled,
the markers are included in the sequence size.iterator
- true to return an iterator, false to return a list of lines.markers
- true to emit start of file/end of file marker messages before/after
the data.markersJson
- when true, markers are represented as JSON.public void setCharset(@Nullable Charset charset)
charset
- the charset.public void setFirstLineAsHeader(String firstLineHeaderName)
firstLineHeaderName
- the header name to carry first line.protected Object splitMessage(Message<?> message)
AbstractMessageSplitter
splitMessage
in class AbstractMessageSplitter
message
- The message.protected boolean willAddHeaders(Message<?> message)
AbstractMessageSplitter
AbstractMessageSplitter.addHeaders(org.springframework.messaging.Message<?>, java.util.Map<java.lang.String, java.lang.Object>)
will be called.willAddHeaders
in class AbstractMessageSplitter
message
- the message.protected void addHeaders(Message<?> message, Map<String,Object> headers)
AbstractMessageSplitter
addHeaders
in class AbstractMessageSplitter
message
- the inbound message.headers
- the headers to add messages to.