Package org.frankframework.pipes
Class ForEachChildElementPipe
java.lang.Object
org.frankframework.core.TransactionAttributes
org.frankframework.pipes.AbstractPipe
org.frankframework.pipes.FixedForwardPipe
org.frankframework.pipes.MessageSendingPipe
org.frankframework.pipes.IteratingPipe<String>
org.frankframework.pipes.StringIteratorPipe
org.frankframework.pipes.ForEachChildElementPipe
- All Implemented Interfaces:
FrankElement,HasApplicationContext,HasName,HasSender,HasTransactionAttribute,IConfigurable,IForwardTarget,IPipe,IScopeProvider,IWithParameters,NameAware,EventThrowing,IThreadCreator,org.springframework.beans.factory.Aware,org.springframework.context.ApplicationContextAware,org.springframework.context.Lifecycle
@Category(BASIC)
public class ForEachChildElementPipe
extends StringIteratorPipe
implements IThreadCreator
Sends a message to a Sender for each child element of the input XML.
The input can be a String containing XML, a filename (set processFile true), an InputStream, or a Reader.
- Since:
- 4.6.1
- Author:
- Gerrit van Brakel
- Parameters
- All parameters will be applied to the XSLT if an elementXPathExpression is specified.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classSAXException thrown to signal that the consumer of a stream does not want to receive more of it.static classSAXException thrown to signal that a timeout occurred in consuming the stream.Nested classes/interfaces inherited from class org.frankframework.pipes.IteratingPipe
IteratingPipe.ItemCallback, IteratingPipe.StopReasonNested classes/interfaces inherited from class org.frankframework.pipes.MessageSendingPipe
MessageSendingPipe.LinkMethod -
Field Summary
FieldsFields inherited from class org.frankframework.pipes.IteratingPipe
MAX_ITEMS_REACHED_FORWARD, msgTransformerPool, STOP_CONDITION_MET_FORWARDFields inherited from class org.frankframework.pipes.MessageSendingPipe
configurationMetrics, INPUT_VALIDATOR_NAME_PREFIX, INPUT_VALIDATOR_NAME_SUFFIX, INPUT_WRAPPER_NAME_PREFIX, INPUT_WRAPPER_NAME_SUFFIX, MAX_RETRY_INTERVAL, MESSAGE_LOG_NAME_PREFIX, MESSAGE_LOG_NAME_SUFFIX, MIN_RETRY_INTERVAL, msgLog, OUTPUT_VALIDATOR_NAME_PREFIX, OUTPUT_VALIDATOR_NAME_SUFFIX, OUTPUT_WRAPPER_NAME_PREFIX, OUTPUT_WRAPPER_NAME_SUFFIX, PIPE_CLEAR_TIMEOUT_MONITOR_EVENT, PIPE_EXCEPTION_MONITOR_EVENT, PIPE_TIMEOUT_MONITOR_EVENTFields inherited from class org.frankframework.pipes.AbstractPipe
parameterNamesMustBeUniqueFields inherited from class org.frankframework.core.TransactionAttributes
logFields inherited from interface org.frankframework.core.IPipe
LONG_DURATION_MONITORING_EVENT, MESSAGE_SIZE_MONITORING_EVENT, PIPE_EXCEPTION_MONITORING_EVENT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidChecks for correct configuration of forward.protected TransformerPoolprotected IteratingPipe.StopReasoniterateOverInput(Message input, PipeLineSession session, Map<String, Object> threadContext, IteratingPipe<String>.ItemCallback callback) protected StringmakeEncapsulatingXslt(String rootElementName, String xpathExpression, int xsltVersion, String namespaceDefs) voidsetContainerElement(String containerElement) Element name (not an XPath expression), qualified via attributenamespaceDefs, used to determine the 'root' of elements to be iterated over, i.e., the root of the set of child elements.voidsetElementXPathExpression(String string) XPath expression used to determine the set of elements to be iterated over, i.e., the set of child elements.voidsetRemoveNamespaces(boolean b) Iftrue, namespaces (and prefixes) are removed from the items just before forwarding them to the sender.voidsetTargetElement(String targetElement) Element name (not an XPath expression), qualified via attributenamespaceDefs, used to determine the type of elements to be iterated over, i.e. the element name of each of the child elements.voidsetXsltVersion(int xsltVersion) If set to2or3, a Saxon (net.sf.saxon) XSLT processor 2.0 or 3.0 will be used, supporting XPath 2.0 or 3.0 respectively.voidstart()Perform necessary action to start the pipe.voidstop()Perform necessary actions to stop thePipe.
For instance, closing JMS connections, DBMS connections etc.Methods inherited from class org.frankframework.pipes.StringIteratorPipe
createItemCallBack, getKey, setBlockPrefix, setBlockSize, setBlockSuffix, setCombineBlocks, setEndPosition, setEscapeXml, setLinePrefix, setLineSuffix, setStartPositionMethods inherited from class org.frankframework.pipes.IteratingPipe
getItem, getIterator, getStatisticsKeeper, getStopConditionTp, itemToMessage, sendMessage, setAddInputToResult, setCloseIteratorOnExit, setCollectResults, setIgnoreExceptions, setItemNoSessionKey, setMaxChildThreads, setMaxItems, setNamespaceDefs, setOmitXmlDeclaration, setOutputType, setParallel, setRemoveDuplicates, setRemoveXmlDeclarationInResults, setSender, setStopConditionXPathExpression, setStyleSheetName, setXpathExpressionMethods inherited from class org.frankframework.pipes.MessageSendingPipe
consumesSessionVariable, doLogToMessageLog, doPipe, increaseRetryIntervalAndWait, postSendAction, propagateName, sendMessageWithRetries, setCheckRootTag, setCheckXmlWellFormed, setExceptionOnResult, setHideMethod, setHideRegex, setInputValidator, setInputWrapper, setLinkMethod, setMaxRetries, setMessageLog, setName, setOutputValidator, setOutputWrapper, setPresumedTimeOutInterval, setResultOnTimeOut, setRetryMaxInterval, setRetryMinInterval, setRetryNamespaceDefs, setRetryXPath, setStubFilename, setTimeoutOnResult, setTimeOutOnResult, sizeStatisticsEnabled, storeMessageMethods inherited from class org.frankframework.pipes.FixedForwardPipe
getParameterValue, setIfParam, setIfValue, setOnlyIfSessionKey, setOnlyIfValue, setSkipOnEmptyInput, setUnlessSessionKey, setUnlessValue, skipPipeMethods inherited from class org.frankframework.pipes.AbstractPipe
addForward, addParameter, createBean, findForward, getAdapter, getEventSourceName, getForwards, getParameterList, hasRegisteredForward, isRunning, registerEvent, setApplicationContext, setChompCharSize, setDurationThreshold, setElementToMove, setElementToMoveChain, setElementToMoveSessionKey, setEmptyInputReplacement, setGetInputFromFixedValue, setGetInputFromSessionKey, setLocker, setLogIntermediaryResults, setMaxThreads, setPreserveInput, setRemoveCompactMsgNamespaces, setRestoreMovedElements, setSecLogSessionKeys, setSizeStatistics, setStoreResultInSessionKey, setWriteToSecLog, throwEventMethods inherited from class org.frankframework.core.TransactionAttributes
configureTransactionAttributes, isTransacted, isTransacted, setTransacted, setTransactionTimeoutMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.frankframework.core.FrankElement
addConfigWarningMethods inherited from interface org.frankframework.core.HasApplicationContext
getApplicationContext, getConfigurationClassLoaderMethods inherited from interface org.frankframework.core.HasTransactionAttribute
getTransactionAttribute, getTransactionTimeout, getTxDef, setTransactionAttributeMethods inherited from interface org.frankframework.core.IForwardTarget
getNameMethods inherited from interface org.frankframework.core.IPipe
getChompCharSize, getDurationThreshold, getElementToMove, getElementToMoveChain, getElementToMoveSessionKey, getEmptyInputReplacement, getGetInputFromFixedValue, getGetInputFromSessionKey, getHideRegex, getLocker, getLogIntermediaryResults, getMaxThreads, getSecLogSessionKeys, getStoreResultInSessionKey, isPreserveInput, isRemoveCompactMsgNamespaces, isRestoreMovedElements, isWriteToSecLog, setPipeLine, throwEventMethods inherited from interface org.frankframework.threading.IThreadCreator
setThreadLifeCycleEventListener
-
Field Details
-
DEFAULT_XSLT_VERSION
public static final int DEFAULT_XSLT_VERSION- See Also:
-
-
Constructor Details
-
ForEachChildElementPipe
public ForEachChildElementPipe()
-
-
Method Details
-
configure
Description copied from class:FixedForwardPipeChecks for correct configuration of forward.- Specified by:
configurein interfaceIConfigurable- Overrides:
configurein classStringIteratorPipe- Throws:
ConfigurationException- in case it was not able to configure the component.
-
start
public void start()Description copied from interface:IPipePerform necessary action to start the pipe. This method is executed after theIConfigurable.configure()method, for each start and stop command of the adapter.- Specified by:
startin interfaceIPipe- Specified by:
startin interfaceorg.springframework.context.Lifecycle- Overrides:
startin classMessageSendingPipe
-
stop
public void stop()Description copied from interface:IPipePerform necessary actions to stop thePipe.
For instance, closing JMS connections, DBMS connections etc.- Specified by:
stopin interfaceIPipe- Specified by:
stopin interfaceorg.springframework.context.Lifecycle- Overrides:
stopin classMessageSendingPipe
-
makeEncapsulatingXslt
-
iterateOverInput
protected IteratingPipe.StopReason iterateOverInput(Message input, PipeLineSession session, Map<String, Object> threadContext, IteratingPipe<String>.ItemCallback callback) throws SenderException, TimeoutException- Overrides:
iterateOverInputin classIteratingPipe<String>- Throws:
SenderExceptionTimeoutException
-
getExtractElementsTp
-
setContainerElement
Element name (not an XPath expression), qualified via attributenamespaceDefs, used to determine the 'root' of elements to be iterated over, i.e., the root of the set of child elements. When empty, the pipe will iterate over each direct child element of the root. -
setTargetElement
Element name (not an XPath expression), qualified via attributenamespaceDefs, used to determine the type of elements to be iterated over, i.e. the element name of each of the child elements. When empty, the pipe will iterate over any direct child element of the root or specifiedcontainerElement. -
setElementXPathExpression
XPath expression used to determine the set of elements to be iterated over, i.e., the set of child elements. When empty, the effective value is \/*\/*, i.e., the pipe will iterate over each direct child element of the root. Be aware that memory consumption appears to increase with file size when this attribute is used. When possible, use containerElement and/or targetElement instead. -
setXsltVersion
public void setXsltVersion(int xsltVersion) If set to2or3, a Saxon (net.sf.saxon) XSLT processor 2.0 or 3.0 will be used, supporting XPath 2.0 or 3.0 respectively. Otherwise, an XSLT processor 1.0 (org.apache.xalan), supporting XPath 1.0, will be used. N.B. Be aware that setting this to a value other than 1 might cause the input file to be read in its entirety into memory, as XSLT Streaming is currently only supported by the XSLT Processor that is used for xsltVersion=1.- Default value
- 1
-
setRemoveNamespaces
public void setRemoveNamespaces(boolean b) Iftrue, namespaces (and prefixes) are removed from the items just before forwarding them to the sender. N.B. This takes place after the transformation forelementXPathExpressionif that is specified.
-