Package org.frankframework.pipes
Class BytesOutputPipe
java.lang.Object
org.frankframework.core.TransactionAttributes
org.frankframework.pipes.AbstractPipe
org.frankframework.pipes.FixedForwardPipe
org.frankframework.pipes.BytesOutputPipe
- All Implemented Interfaces:
HasTransactionAttribute
,IConfigurable
,IConfigurationAware
,IForwardTarget
,INamedObject
,IPipe
,IScopeProvider
,IWithParameters
,EventThrowing
,HasStatistics
,org.springframework.beans.factory.Aware
,org.springframework.context.ApplicationContextAware
Output bytes as specified by the input XML.
Actions are taken on every field
tag found in the input XML. Every field tag should have a type attribute
that specifies the type of conversion that needs to be done on the string
specified by the value attribute. A value attribute also needs to be present
for every field tag. Currently, two types of conversion are supported:
GetBytesFromString
, a conversion from string to bytes as specified by java.lang.String.getBytes(String charsetName)PackedDecimal
, a conversion from string to Packed-decimal
<fields> <field type="GetBytesFromString" value=" TEST 1234 " charset="Cp037"/> </fields>The Packed-decimal conversion has been implemented according to information found in the following resources:
- A description as found at http://www.simotime.com/datapk01.htm
- AS400PackedDecimal.java from jtopen_6_1_source.zip downloaded at http://jt400.sourceforge.net/
- The string +12345 will be translated to three bytes with the following hexadecimal representation: 12 34 5C
- The string -12345 will be translated to three bytes with the following hexadecimal representation: 12 34 5D
- The string 12345 will be translated to three bytes with the following hexadecimal representation: 12 34 5F
- The string 1234 will be translated to three bytes with the following hexadecimal representation: 01 23 4F
<fields> <field type="PackedDecimal" value="+12345" size="16"/> <field type="PackedDecimal" value="+67890" size="16"/> <field type="PackedDecimal" value="+1234" size="16"/> <field type="PackedDecimal" value="-12345" size="16"/> <field type="PackedDecimal" value="-67890" size="16"/> <field type="PackedDecimal" value="-1234" size="16"/> <field type="PackedDecimal" value="12345" size="16"/> <field type="PackedDecimal" value="67890" size="16"/> <field type="PackedDecimal" value="1234" size="16"/> <field type="PackedDecimal" value="+1" size="16"/> <field type="PackedDecimal" value="-1" size="16"/> <field type="PackedDecimal" value="+12" size="16"/> <field type="PackedDecimal" value="-12" size="16"/> <field type="PackedDecimal" value="+123" size="16"/> <field type="PackedDecimal" value="-123" size="16"/> <field type="PackedDecimal" value="+1234" size="16"/> <field type="PackedDecimal" value="-1234" size="16"/> <field type="PackedDecimal" value="+12345" size="16"/> <field type="PackedDecimal" value="-12345" size="16"/> <field type="PackedDecimal" value="+123456" size="16"/> <field type="PackedDecimal" value="-123456" size="16"/> <field type="PackedDecimal" value="+1234567" size="16"/> <field type="PackedDecimal" value="-1234567" size="16"/> <field type="PackedDecimal" value="+12345678" size="16"/> <field type="PackedDecimal" value="-12345678" size="16"/> </fields>
- Since:
- 4.9
- Author:
- Jaco de Groot (***@dynasol.nl)
-
Field Summary
Fields inherited from class org.frankframework.pipes.AbstractPipe
parameterNamesMustBeUnique
Fields inherited from class org.frankframework.core.TransactionAttributes
log
Fields inherited from interface org.frankframework.core.IPipe
LONG_DURATION_MONITORING_EVENT, MESSAGE_SIZE_MONITORING_EVENT, PIPE_EXCEPTION_MONITORING_EVENT
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptiondoPipe
(Message message, PipeLineSession session) This is where the action takes place.Methods inherited from class org.frankframework.pipes.FixedForwardPipe
configure, getIfParam, getIfValue, getOnlyIfSessionKey, getOnlyIfValue, getParameterValue, getSuccessForward, getUnlessSessionKey, getUnlessValue, isSkipOnEmptyInput, setIfParam, setIfValue, setOnlyIfSessionKey, setOnlyIfValue, setSkipOnEmptyInput, setUnlessSessionKey, setUnlessValue, skipPipe
Methods inherited from class org.frankframework.pipes.AbstractPipe
addForward, addParameter, consumesSessionVariable, createBean, findForward, getAdapter, getApplicationContext, getChompCharSize, getConfigurationClassLoader, getDurationThreshold, getElementToMove, getElementToMoveChain, getElementToMoveSessionKey, getEmptyInputReplacement, getEventSourceName, getForwards, getGetInputFromFixedValue, getGetInputFromSessionKey, getHideRegex, getLocker, getLogIntermediaryResults, getMaxThreads, getName, getParameterList, getPipeLine, getSecLogSessionKeys, getStoreResultInSessionKey, hasRegisteredForward, isPreserveInput, isRemoveCompactMsgNamespaces, isRestoreMovedElements, isWriteToSecLog, registerEvent, setApplicationContext, setChompCharSize, setDurationThreshold, setElementToMove, setElementToMoveChain, setElementToMoveSessionKey, setEmptyInputReplacement, setEventPublisher, setGetInputFromFixedValue, setGetInputFromSessionKey, setHideRegex, setLocker, setLogIntermediaryResults, setMaxThreads, setName, setPipeLine, setPreserveInput, setRemoveCompactMsgNamespaces, setRestoreMovedElements, setSecLogSessionKeys, setSizeStatistics, setStoreResultInSessionKey, setWriteToSecLog, sizeStatisticsEnabled, start, stop, throwEvent
Methods inherited from class org.frankframework.core.TransactionAttributes
configureTransactionAttributes, getTransactionAttribute, getTransactionTimeout, getTxDef, isTransacted, isTransacted, setTransacted, setTransactionAttribute, setTransactionTimeout
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.frankframework.core.IPipe
throwEvent
-
Constructor Details
-
BytesOutputPipe
public BytesOutputPipe()
-
-
Method Details
-
doPipe
Description copied from interface:IPipe
This is where the action takes place. Pipes may only throw a PipeRunException, to be handled by the caller of this object. Implementations must either consume the message, or pass it on to the next Pipe in the PipeRunResult. If the result of the Pipe does not depend on the input, like for theFixedResultPipe
, the Pipe can schedule the input to be closed at session exit, by callingMessage.closeOnCloseOf(PipeLineSession, String)
This allows the previous Pipe to release any resources (e.g. connections) that it might have kept open until the message was consumed. Doing so avoids connections leaking from pools, while it enables efficient streaming processing of data while it is being read from a stream.- Throws:
PipeRunException
-