Class ProxyWriter
java.lang.Object
com.northconcepts.datapipeline.core.DataObject
com.northconcepts.datapipeline.core.Endpoint
com.northconcepts.datapipeline.core.DataEndpoint
com.northconcepts.datapipeline.core.DataWriter
com.northconcepts.datapipeline.core.ProxyWriter
- Direct Known Subclasses:
AsyncWriter,DebugWriter,IntegrationProxyWriter,JdbcMultiUpsertWriter,JdbcMultiWriter,MeteredWriter,PdfWriter,RetryingWriter,SequenceWriter,TransformingWriter
Abstract super-class for writing records to another
DataWriter,
possibly transforming them along the way. The only method that a subclass
should implement is interceptRecord(Record).-
Nested Class Summary
Nested classes/interfaces inherited from class com.northconcepts.datapipeline.core.DataEndpoint
DataEndpoint.State -
Field Summary
Fields inherited from class com.northconcepts.datapipeline.core.DataEndpoint
lastRecord, PRODUCT, PRODUCT_VERSION, VENDOR, XML_INPUT_FACTORY_KEYFields inherited from class com.northconcepts.datapipeline.core.Endpoint
BUFFER_SIZE, captureElapsedTime, DEFAULT_READ_BUFFER_SIZEFields inherited from class com.northconcepts.datapipeline.core.DataObject
id, log, name, TIMESTAMP_FORMAT -
Constructor Summary
ConstructorsConstructorDescriptionProxyWriter(DataWriter nestedDataWriter) Creates a proxy for the given (non-null) writer, which is opened and closed along with this proxy. -
Method Summary
Modifier and TypeMethodDescriptionaddExceptionProperties(DataException exception) Adds this endpoint's current state to aDataException.intReturns the number of records that can probably be written without blocking.voidclose()Indicates that this endpoint has finished reading or writing.Returns theDataWriterheld inside this one ornullif there isn't one.protected RecordinterceptRecord(Record record) Overridden by subclasses to transform, drop, or observe a record on its way through this proxy.static ProxyWritermap(DataWriter writer, BiFunction<ProxyWriter, Record, Record> mapper) Wraps the writer in a proxy that passes itself and each record to the mapper before writing; a null result drops the record.static ProxyWritermap(DataWriter Writer, Function<Record, Record> mapper) Wraps the writer in a proxy that passes each record through the mapper before writing it; a null result drops the record.voidopen()Makes this endpoint ready for reading or writing.protected voidsetNestedDataWriter(DataWriter nestedDataWriter) Make sure to close old target and open the new one or callsetNestedDataWriter(DataWriter, boolean)withtrue.protected voidsetNestedDataWriter(DataWriter nestedDataWriter, boolean manageLifecycle) Replaces the nested writer; withmanageLifecyclethe old writer is closed and, if this proxy is open, the new one is opened.protected voidOverridden by subclasses to write the specified record to thisDataWriter.Methods inherited from class com.northconcepts.datapipeline.core.DataWriter
getNestedEndpoint, getRootEndpoint, getRootWriter, getWriter, writeMethods inherited from class com.northconcepts.datapipeline.core.DataEndpoint
decrementRecordCount, enableJmx, getLastRecord, getRecordCount, getRecordCountAsBigInteger, getRecordCountAsString, incrementRecordCount, isRecordCountBigInteger, resetRecordCount, toStringMethods inherited from class com.northconcepts.datapipeline.core.Endpoint
addElapsedtime, assertClosed, assertNotOpened, assertOpened, finalize, getClosedOn, getDescription, getElapsedTime, getElapsedTimeAsString, getOpenedOn, getOpenElapsedTime, getOpenElapsedTimeAsString, getSelfTime, getSelfTimeAsString, getState, isCaptureElapsedTime, isClosed, isOpen, setCaptureElapsedTime, setDescription
-
Constructor Details
-
ProxyWriter
Creates a proxy for the given (non-null) writer, which is opened and closed along with this proxy.
-
-
Method Details
-
map
Wraps the writer in a proxy that passes each record through the mapper before writing it; a null result drops the record.- Throws:
Throwable
-
map
public static ProxyWriter map(DataWriter writer, BiFunction<ProxyWriter, Record, throws ThrowableRecord> mapper) Wraps the writer in a proxy that passes itself and each record to the mapper before writing; a null result drops the record.- Throws:
Throwable
-
getNestedWriter
Description copied from class:DataWriterReturns theDataWriterheld inside this one ornullif there isn't one.- Overrides:
getNestedWriterin classDataWriter
-
setNestedDataWriter
Make sure to close old target and open the new one or callsetNestedDataWriter(DataWriter, boolean)withtrue. -
setNestedDataWriter
protected void setNestedDataWriter(DataWriter nestedDataWriter, boolean manageLifecycle) throws DataException Replaces the nested writer; withmanageLifecyclethe old writer is closed and, if this proxy is open, the new one is opened.- Throws:
DataException
-
available
Description copied from class:DataWriterReturns the number of records that can probably be written without blocking.- Overrides:
availablein classDataWriter- Throws:
DataException
-
open
Description copied from class:DataEndpointMakes this endpoint ready for reading or writing.- Overrides:
openin classDataEndpoint- Throws:
DataException
-
close
Description copied from class:DataEndpointIndicates that this endpoint has finished reading or writing.- Overrides:
closein classDataEndpoint- Throws:
DataException
-
interceptRecord
Overridden by subclasses to transform, drop, or observe a record on its way through this proxy.Contract for subclasses (see also
docs/authoring/ProxyWriter.md):- Return the record (possibly modified) to forward it to the nested
DataWriter. - Return
nullto drop the record; the framework will not write it downstream. - Throw to fail the pipeline; the framework wraps the throwable in a
DataExceptionwith.setRecord(record). - The nested
DataWriteris opened and closed for you; do not write to it here. - Do not call
DataEndpoint.incrementRecordCount()here.
- Throws:
Throwable
- Return the record (possibly modified) to forward it to the nested
-
writeImpl
Description copied from class:DataWriterOverridden by subclasses to write the specified record to thisDataWriter.Contract for subclasses (see also
docs/authoring/DataWriter.md):- Do not call this method directly —
DataWriter.write(Record)is the template method that wraps exceptions, increments the record count, and attaches the offending record to thrownDataExceptions. - Do not call
DataEndpoint.incrementRecordCount()here;DataWriter.write(Record)already does. - Throw raw exceptions;
DataWriter.write(Record)wraps them viaexception(throwable).setRecord(record).
- Specified by:
writeImplin classDataWriter- Throws:
Throwable
- Do not call this method directly —
-
addExceptionProperties
Description copied from class:EndpointAdds this endpoint's current state to aDataException. Since this method is called whenever an exception is thrown, subclasses should override it to add their specific information.- Overrides:
addExceptionPropertiesin classDataWriter
-