From 5655531365978f4c751b2403cf139b2eeb93ad48 Mon Sep 17 00:00:00 2001 From: MLenterman Date: Mon, 4 Nov 2024 05:05:05 +0000 Subject: [PATCH] build(dependencies): bump f!f version to 9.0.0-20241102.042334 --- Dockerfile | 2 +- docker-compose.zaakbrug.dev.yml | 2 +- frank-runner.properties | 2 +- src/main/FrankConfig.xsd | 571 ++++++++++-------------- src/main/configurations/FrankConfig.xsd | 571 ++++++++++-------------- 5 files changed, 461 insertions(+), 687 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5dc7e847..09b667b2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # Keep in sync with version in frank-runner.properties. Detailed instructions can be found in CONTRIBUTING.md. # Check whether java-orig files have changed in F!F and update custom code (java and java-orig files) accordingly -ARG FF_VERSION=9.0.0-20241026.042336 +ARG FF_VERSION=9.0.0-20241102.042334 FROM docker.io/frankframework/frankframework:${FF_VERSION} as ff-base # Copy dependencies diff --git a/docker-compose.zaakbrug.dev.yml b/docker-compose.zaakbrug.dev.yml index 4b13d6f2..eb1eb5e3 100644 --- a/docker-compose.zaakbrug.dev.yml +++ b/docker-compose.zaakbrug.dev.yml @@ -17,7 +17,7 @@ services: build: context: . args: - FF_VERSION: ${FF_VERSION:-9.0.0-20241026.042336} + FF_VERSION: ${FF_VERSION:-9.0.0-20241102.042334} image: wearefrank/zaakbrug:${ZAAKBRUG_VERSION:-latest} container_name: zaakbrug.dev environment: diff --git a/frank-runner.properties b/frank-runner.properties index ff97667c..f6a25c89 100644 --- a/frank-runner.properties +++ b/frank-runner.properties @@ -1,4 +1,4 @@ classloader.type=ScanningDirectoryClassLoader # Keep in sync with version in Dockerfile. Detailed instructions can be found in CONTRIBUTING.md. -ff.version=9.0.0-20241026.042336 \ No newline at end of file +ff.version=9.0.0-20241102.042334 \ No newline at end of file diff --git a/src/main/FrankConfig.xsd b/src/main/FrankConfig.xsd index 44042d99..bec59ff9 100644 --- a/src/main/FrankConfig.xsd +++ b/src/main/FrankConfig.xsd @@ -1,5 +1,5 @@ - + Container of Adapters that belong together. @@ -332,87 +332,6 @@ - - - Placeholder class to allow legacy configuration notations <code>&lt;param type='number' /&gt;</code> in the new Frank!Config XSD. - <p> - The attribute <code>type</code> has been removed in favor of explicit ParameterTypes such as: <code>NumberParameter</code>, <code>DateParameter</code> and <code>BooleanParameter</code>. - Using the new elements enables the use of auto-completion for the specified type. - - - - - - - The target data type of the parameter, related to the database or XSLT stylesheet to which the parameter is applied. Default: STRING - - - - - - - - Name of the parameter - - - - - - - - - URL to a stylesheet that wil be applied to the contents of the message or the value of the session-variable. - - - - - the XPath expression to extract the parameter value from the (xml formatted) input or session-variable. - - - - - If set to <code>2</code> or <code>3</code> a Saxon (net.sf.saxon) xslt processor 2.0 or 3.0 respectively will be used, otherwise xslt processor 1.0 (org.apache.xalan). <code>0</code> will auto-detect Default: 0 - - - - - Namespace definitions for xpathExpression. Must be in the form of a comma or space separated list of - <code>prefix=namespaceuri</code> definitions. One entry can be without a prefix, that will define the default namespace. - - - - - When set <code>true</code> namespaces (and prefixes) in the input message are removed before the stylesheet/xpathExpression is executed Default: <code>false</code> - - - - - - - - Alias used to obtain username and password, used when a <code>pattern</code> containing {username} or {password} is specified - - - - - Default username that is used when a <code>pattern</code> containing {username} is specified - - - - - Default password that is used when a <code>pattern</code> containing {password} is specified - - - - - - - - - - - - Required in each Adapter to transform incoming messages. A pipeline @@ -1108,10 +1027,10 @@ - + - + @@ -1158,10 +1077,30 @@ Name of the parameter - - - - + + + The value of the parameter, or the base for transformation using xpathExpression or stylesheet, or formatting. + + + + + Key of a PipelineSession-variable. <br/>If specified, the value of the PipelineSession variable is used as input for + the xpathExpression or stylesheet, instead of the current input message. <br/>If no xpathExpression or stylesheet are + specified, the value itself is returned. <br/>If the value '*' is specified, all existing sessionkeys are added as + parameter of which the name starts with the name of this parameter. <br/>If also the name of the parameter has the + value '*' then all existing sessionkeys are added as parameter (except tsReceived) + + + + + key of message context variable to use as source, instead of the message found from input message or sessionKey itself + + + + + Instead of a fixed <code>sessionKey</code> it's also possible to use a XPath expression applied to the input message to extract the name of the session-variable. + + URL to a stylesheet that wil be applied to the contents of the message or the value of the session-variable. @@ -1188,9 +1127,44 @@ When set <code>true</code> namespaces (and prefixes) in the input message are removed before the stylesheet/xpathExpression is executed Default: <code>false</code> - - - + + + If the result of sessionKey, xpathExpression and/or stylesheet returns null or an empty string, this value is returned + + + + + Comma separated list of methods (<code>defaultValue</code>, <code>sessionKey</code>, <code>pattern</code>, <code>value</code> or <code>input</code>) to use as default value. Used in the order they appear until a non-null value is found. Default: <code>defaultValue</code> + + + + + Value of parameter is determined using substitution and formatting, following MessageFormat syntax with named parameters. The expression can contain references + to <code>session-variables</code> or other <code>parameters</code> using the {name-of-parameter} and is formatted using java.text.MessageFormat. + <br/><b>NB: When referencing other <code>parameters</code> these MUST be defined before the parameter using pattern substitution.</b> + <br/> + <br/> + If for instance <code>fname</code> is a parameter or session-variable that resolves to Eric, then the pattern + 'Hi {fname}, how do you do?' resolves to 'Hi Eric, do you do?'.<br/> + The following predefined reference can be used in the expression too:<ul> + <li>{now}: the current system time</li> + <li>{uid}: an unique identifier, based on the IP address and java.rmi.server.UID</li> + <li>{uuid}: an unique identifier, based on the IP address and java.util.UUID</li> + <li>{hostname}: the name of the machine the application runs on</li> + <li>{username}: username from the credentials found using authAlias, or the username attribute</li> + <li>{password}: password from the credentials found using authAlias, or the password attribute</li> + <li>{fixeddate}: fake date, for testing only</li> + <li>{fixeduid}: fake uid, for testing only</li> + <li>{fixedhostname}: fake hostname, for testing only</li> + </ul> + A guid can be generated using {hostname}_{uid}, see also + <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/uid.html">http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/uid.html</a> for more information about (g)uid's or + <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/util/uuid.html">http://docs.oracle.com/javase/1.5.0/docs/api/java/util/uuid.html</a> for more information about uuid's. + <br/> + When combining a date or time <code>pattern</code> like {now} or {fixeddate} with a DATE, TIME, DATETIME or TIMESTAMP <code>type</code>, the effective value of the attribute + <code>formatString</code> must match the effective value of the formatString in the <code>pattern</code>. + + Alias used to obtain username and password, used when a <code>pattern</code> containing {username} or {password} is specified @@ -1206,11 +1180,40 @@ Default password that is used when a <code>pattern</code> containing {password} is specified - - - - - + + + If set <code>true</code> pattern elements that cannot be resolved to a parameter or sessionKey are silently resolved to an empty string + + + + + If set (>=0) and the length of the value of the parameter falls short of this minimum length, the value is padded Default: -1 + + + + + If set (>=0) and the length of the value of the parameter exceeds this maximum length, the length is trimmed to this maximum length Default: -1 + + + + + If set to <code>true</code>, the value of the parameter will not be shown in the log (replaced by asterisks) Default: <code>false</code> + + + + + Set the mode of the parameter, which determines if the parameter is an INPUT, OUTPUT, or INOUT. + This parameter only has effect for StoredProcedureQuerySender. + An OUTPUT parameter does not need to have a value specified, but does need to have the type specified. + Parameter values will not be updated, but output values will be put into the result of the + StoredProcedureQuerySender. + <b/> + If not specified, the default is INPUT. + + + + + @@ -4039,8 +4042,8 @@ </ul> In the Adapter to be called: <ul> - <li>The adapter does not need to have a receiver configured to be called from a FrankSender,</li> - <li>The adapter will run in the same transaction as the calling adapter,</li> + <li>The adapter does not need to have a dedicated receiver configured to be called from a FrankSender.</li> + <li>The adapter will run in the same transaction as the calling adapter.</li> <li>If the called adapter does not to run in its own transaction, set the transaction attributes on the PipeLine attribute of this adapter or on the SenderPipe that contains this <code>FrankSender</code>.</li> </ul> @@ -9053,8 +9056,8 @@ </ul> In the Adapter to be called: <ul> - <li>The adapter does not need to have a receiver configured to be called from a FrankSender,</li> - <li>The adapter will run in the same transaction as the calling adapter,</li> + <li>The adapter does not need to have a dedicated receiver configured to be called from a FrankSender.</li> + <li>The adapter will run in the same transaction as the calling adapter.</li> <li>If the called adapter does not to run in its own transaction, set the transaction attributes on the PipeLine attribute of this adapter or on the SenderPipe that contains this <code>FrankSender</code>.</li> </ul> @@ -10500,7 +10503,7 @@ - + @@ -10589,7 +10592,7 @@ - + @@ -11766,7 +11769,7 @@ filename which will be wrapped into an ESB SOAP message. Please note: When writing files which need to be send through FxF they should be written to ${fxf.dir}/NNX00000/out. The property ${fxf.dir} will automatically be - available on the OTAP environment (define it in StageSpecifics_LOC.properties + available on the DTAP environment (define it in StageSpecifics_LOC.properties only). Replace NNX00000 with the specific flowId and generate a unique filename (files will automatically be cleaned after 30 days or any other value specified by ${fxf.retention}). @@ -12316,7 +12319,7 @@ filename which will be wrapped into an ESB SOAP message. Please note: When writing files which need to be send through FxF they should be written to ${fxf.dir}/NNX00000/out. The property ${fxf.dir} will automatically be - available on the OTAP environment (define it in StageSpecifics_LOC.properties + available on the DTAP environment (define it in StageSpecifics_LOC.properties only). Replace NNX00000 with the specific flowId and generate a unique filename (files will automatically be cleaned after 30 days or any other value specified by ${fxf.retention}). @@ -13801,50 +13804,39 @@ <h3>For using a 'resultString'</h3> You can use the EchoPipe for a static value. This looked like this before: - <pre> - <code>&lt;pipe name=&quot;HelloWorld&quot; className=&quot;org.frankframework.pipes.FixedResult&quot; returnString=&quot;Hello World&quot;&gt; + <pre><code>&lt;pipe name=&quot;HelloWorld&quot; className=&quot;org.frankframework.pipes.FixedResult&quot; returnString=&quot;Hello World&quot;&gt; &lt;forward name=&quot;success&quot; path=&quot;EXIT&quot;/&gt; - &lt;/pipe&gt;</code> - </pre> + &lt;/pipe&gt;</code></pre> Becomes: - <pre> - <code>&lt;pipe name=&quot;HelloWorld&quot; className=&quot;org.frankframework.pipes.EchoPipe&quot; getInputFromFixedValue=&quot;Hello World&quot;&gt; + <pre><code>&lt;pipe name=&quot;HelloWorld&quot; className=&quot;org.frankframework.pipes.EchoPipe&quot; getInputFromFixedValue=&quot;Hello World&quot;&gt; &lt;forward name=&quot;success&quot; path=&quot;EXIT&quot;/&gt; - &lt;/pipe&gt;</code> - </pre> + &lt;/pipe&gt;</code></pre> <h3>For replacing a value</h3> You can use the ReplacerPipe to replace a value in multiple ways. First, when you need to replace a placeholder with a parameter. This looked like: - <pre> - <code>&lt;pipe name=&quot;make unique message&quot; className=&quot;org.frankframework.pipes.FixedResultPipe&quot; + <pre><code>&lt;pipe name=&quot;make unique message&quot; className=&quot;org.frankframework.pipes.FixedResultPipe&quot; returnString=&quot;&amp;lt;msg mid=&amp;quot;MID&amp;quot; action=&amp;quot;ACTION&amp;quot; /&amp;gt;&quot; replaceFixedParams=&quot;true&quot;&gt; &lt;param name=&quot;MID&quot; sessionKey=&quot;mid&quot; /&gt; &lt;param name=&quot;ACTION&quot; xpathExpression=&quot;request/@action&quot; /&gt; - &lt;/pipe&gt;</code> - </pre> + &lt;/pipe&gt;</code></pre> And can now be written like this (note the ?{..} syntax): - <pre> - <code>&lt;pipe name=&quot;make unique message&quot; className=&quot;org.frankframework.pipes.ReplacerPipe&quot; + <pre><code>&lt;pipe name=&quot;make unique message&quot; className=&quot;org.frankframework.pipes.ReplacerPipe&quot; getInputFromFixedValue=&quot;&amp;lt;msg mid=&amp;quot;?{MID}&amp;quot; action=&amp;quot;?{ACTION}&amp;quot; /&amp;gt;&quot;&gt; &lt;param name=&quot;MID&quot; sessionKey=&quot;mid&quot; /&gt; &lt;param name=&quot;ACTION&quot; xpathExpression=&quot;request/@action&quot; /&gt; - &lt;/pipe&gt;</code> - </pre> + &lt;/pipe&gt;</code></pre> When you need to replace a fixed value use the ReplacerPipe with find and replace. This looked like this: - <pre> - <code>&lt;FixedResultPipe name=&quot;InputValidateError&quot; + <pre><code>&lt;FixedResultPipe name=&quot;InputValidateError&quot; filename=&quot;ManageFileSystem/xml/ErrorMessage.xml&quot; replaceFrom=&quot;%reasonCode&quot; replaceTo=&quot;NOT_WELL_FORMED_XML&quot;&gt; &lt;forward name=&quot;success&quot; path=&quot;EXIT&quot; /&gt; - &lt;/FixedResultPipe&gt;</code> - </pre> + &lt;/FixedResultPipe&gt;</code></pre> And now should be solved like this: - <pre> - <code>&lt;FixedResultPipe name=&quot;InputValidateError&quot; + <pre><code>&lt;FixedResultPipe name=&quot;InputValidateError&quot; filename=&quot;ManageFileSystem/xml/ErrorMessage.xml&quot;&gt; &lt;forward name=&quot;success&quot; path=&quot;replaceReasonCode&quot; /&gt; &lt;/FixedResultPipe&gt; @@ -13852,15 +13844,13 @@ find=&quot;%reasonCode&quot; replace=&quot;NOT_WELL_FORMED_XML&quot;&gt; &lt;forward name=&quot;success&quot; path=&quot;EXIT&quot; /&gt; - &lt;/ReplacerPipe&gt;</code> - </pre> + &lt;/ReplacerPipe&gt;</code></pre> This is also an example of now using two pipes to achieve the same result. Each pipe has its own responsibility. <h2>More complex configurations</h2> In some cases, a combination of the above is needed to achieve what worked before. In some cases, FixedResultPipe was also used to store information in the session. For example, a port of configuration in the JMS listener sender configuration looked like this: - <pre> - <code>&lt;CompareStringPipe name=&quot;compareIdAndCid&quot; &gt; + <pre><code>&lt;CompareStringPipe name=&quot;compareIdAndCid&quot; &gt; &lt;param name=&quot;operand1&quot; sessionKey=&quot;id&quot;/&gt; &lt;param name=&quot;operand2&quot; sessionKey=&quot;cid&quot;/&gt; &lt;forward name=&quot;equals&quot; path=&quot;IdAndCidSame&quot; /&gt; @@ -13881,12 +13871,10 @@ &lt;param name=&quot;CID&quot; sessionKey=&quot;cid&quot; /&gt; &lt;param name=&quot;SAME&quot; sessionKey=&quot;IdAndCidSame&quot; /&gt; &lt;forward name=&quot;success&quot; path=&quot;EXIT&quot; /&gt; - &lt;/pipe&gt;</code> - </pre> + &lt;/pipe&gt;</code></pre> Was rewritten to the following: - <pre> - <code>&lt;CompareStringPipe name=&quot;compareIdAndCid&quot; &gt; + <pre><code>&lt;CompareStringPipe name=&quot;compareIdAndCid&quot; &gt; &lt;param name=&quot;operand1&quot; sessionKey=&quot;id&quot;/&gt; &lt;param name=&quot;operand2&quot; sessionKey=&quot;cid&quot;/&gt; &lt;forward name=&quot;equals&quot; path=&quot;IdAndCidSame&quot; /&gt; @@ -13910,8 +13898,7 @@ &lt;param name=&quot;CID&quot; sessionKey=&quot;cid&quot; /&gt; &lt;param name=&quot;SAME&quot; sessionKey=&quot;IdAndCidSame&quot; /&gt; &lt;forward name=&quot;success&quot; path=&quot;EXIT&quot; /&gt; - &lt;/pipe&gt;</code> - </pre> + &lt;/pipe&gt;</code></pre> <p> <h2>The features/documentation of the deprecated features</h2> @@ -14003,7 +13990,7 @@ filename which will be wrapped into an ESB SOAP message. Please note: When writing files which need to be send through FxF they should be written to ${fxf.dir}/NNX00000/out. The property ${fxf.dir} will automatically be - available on the OTAP environment (define it in StageSpecifics_LOC.properties + available on the DTAP environment (define it in StageSpecifics_LOC.properties only). Replace NNX00000 with the specific flowId and generate a unique filename (files will automatically be cleaned after 30 days or any other value specified by ${fxf.retention}). @@ -14577,16 +14564,15 @@ This Pipe is used to replace values in a few ways. The following steps are performed: <ol> - <li>If <code>find</code> is provided, it will be replaced by <code>replace</code></li> + <li>If the attribute <code>find</code> is provided, the pipe will attempt to replace the provided value with the content of the attribute <code>replace</code>.</li> <li>The resulting string is substituted based on the parameters of this pipe. It will replace values in the input enclosed - with ?{}, for instance: ?{parameterOne}, with parameters of this pipe. If a parameter for the given value is not found, it - will not be replaced and the '?{parameterOne}' value will remain in the output. + with <code>?{...}</code>, for instance text like: <code>?{parameterOne}</code> in combination with a parameter <code>parameterOne</code> will use the value of this Parameter. + If a parameter for the given value is not found, it will not be replaced and the <code>?{parameterOne}</code> value will remain in the output.</li> <p> - See Parameter to see how parameter values are determined.</li> <p> <li>If attribute <code>substituteVars</code> is <code>true</code>, then expressions <code>${...}</code> are substituted using system properties, session variables and application properties. Please note that no <code>${...}</code> patterns are left in the input. </li> - </ol> + </ol><br><br><b>TIP</b><p>See Parameter to see how parameter values are determined.</p> @@ -15457,11 +15443,7 @@ Alternatively: xpath-expression to create stylesheet from - - - Namespace defintions for xpathExpression. Must be in the form of a comma or space separated list of <code>prefix=namespaceuri</code>-definitions. For some use other cases (NOT xpathExpression), one entry can be without a prefix, that will define the default namespace. - - + Only valid for xpathexpression Default: text @@ -15611,11 +15593,7 @@ Alternatively: xpath-expression to create stylesheet from - - - Namespace defintions for xpathExpression. Must be in the form of a comma or space separated list of <code>prefix=namespaceuri</code>-definitions. For some use other cases (NOT xpathExpression), one entry can be without a prefix, that will define the default namespace. - - + Only valid for xpathexpression Default: text @@ -20557,100 +20535,6 @@ - - - - - Renders the contents of the first node (in combination with xslt or xpath). Please note that - if there are child nodes, only the contents are returned, use <code>XML</code> if the xml tags are required - - - - - Renders an xml-nodeset as an xml-string (in combination with xslt or xpath). This will include the xml tags - - - - - Renders the CONTENTS of the first node as a nodeset - that can be used as such when passed as xslt-parameter (only for XSLT 1.0). - Please note that the nodeset may contain multiple nodes, without a common root node. - N.B. The result is the set of children of what you might expect it to be... - - - - - Renders XML as a DOM document; similar to <code>node</code> - with the distinction that there is always a common root node (required for XSLT 2.0) - - - - - Converts the result to a Date, by default using formatString <code>yyyy-MM-dd</code>. - When applied as a JDBC parameter, the method setDate() is used - - - - - Converts the result to a Date, by default using formatString <code>HH:mm:ss</code>. - When applied as a JDBC parameter, the method setTime() is used - - - - - Converts the result to a Date, by default using formatString <code>yyyy-MM-dd HH:mm:ss</code>. - When applied as a JDBC parameter, the method setTimestamp() is used - - - - - Similar to <code>DATETIME</code>, except for the formatString that is <code>yyyy-MM-dd HH:mm:ss.SSS</code> by default - - - - - Converts the result from a XML formatted dateTime to a Date. - When applied as a JDBC parameter, the method setTimestamp() is used - - - - - Converts the result to a Number, using decimalSeparator and groupingSeparator. - When applied as a JDBC parameter, the method setDouble() is used - - - - - Converts the result to an Integer - - - - - Converts the result to a Boolean - - - - - Forces the parameter value to be treated as binary data (e.g. when using a SQL BLOB field). - When applied as a JDBC parameter, the method setBinaryStream() or setBytes() is used - - - - - Forces the parameter value to be treated as character data (e.g. when using a SQL CLOB field). - When applied as a JDBC parameter, the method setCharacterStream() or setString() is used - - - - - Used for StoredProcedure OUT parameters when the database type is a <code>CURSOR</code> or java.sql.JDBCType#REF_CURSOR. - See also org.frankframework.jdbc.StoredProcedureQuerySender. - <br/> - DEPRECATED: Type LIST can also be used in larva test to Convert a List to an xml-string (&lt;items&gt;&lt;item&gt;...&lt;/item&gt;&lt;item&gt;...&lt;/item&gt;&lt;/items&gt;) - - - - @@ -20782,6 +20666,100 @@ + + + + + Renders the contents of the first node (in combination with xslt or xpath). Please note that + if there are child nodes, only the contents are returned, use <code>XML</code> if the xml tags are required + + + + + Renders an xml-nodeset as an xml-string (in combination with xslt or xpath). This will include the xml tags + + + + + Renders the CONTENTS of the first node as a nodeset + that can be used as such when passed as xslt-parameter (only for XSLT 1.0). + Please note that the nodeset may contain multiple nodes, without a common root node. + N.B. The result is the set of children of what you might expect it to be... + + + + + Renders XML as a DOM document; similar to <code>node</code> + with the distinction that there is always a common root node (required for XSLT 2.0) + + + + + Converts the result to a Date, by default using formatString <code>yyyy-MM-dd</code>. + When applied as a JDBC parameter, the method setDate() is used + + + + + Converts the result to a Date, by default using formatString <code>HH:mm:ss</code>. + When applied as a JDBC parameter, the method setTime() is used + + + + + Converts the result to a Date, by default using formatString <code>yyyy-MM-dd HH:mm:ss</code>. + When applied as a JDBC parameter, the method setTimestamp() is used + + + + + Similar to <code>DATETIME</code>, except for the formatString that is <code>yyyy-MM-dd HH:mm:ss.SSS</code> by default + + + + + Converts the result from a XML formatted dateTime to a Date. + When applied as a JDBC parameter, the method setTimestamp() is used + + + + + Converts the result to a Number, using decimalSeparator and groupingSeparator. + When applied as a JDBC parameter, the method setDouble() is used + + + + + Converts the result to an Integer + + + + + Converts the result to a Boolean + + + + + Forces the parameter value to be treated as binary data (e.g. when using a SQL BLOB field). + When applied as a JDBC parameter, the method setBinaryStream() or setBytes() is used + + + + + Forces the parameter value to be treated as character data (e.g. when using a SQL CLOB field). + When applied as a JDBC parameter, the method setCharacterStream() or setString() is used + + + + + Used for StoredProcedure OUT parameters when the database type is a <code>CURSOR</code> or java.sql.JDBCType#REF_CURSOR. + See also org.frankframework.jdbc.StoredProcedureQuerySender. + <br/> + DEPRECATED: Type LIST can also be used in larva test to Convert a List to an xml-string (&lt;items&gt;&lt;item&gt;...&lt;/item&gt;&lt;item&gt;...&lt;/item&gt;&lt;/items&gt;) + + + + @@ -20995,102 +20973,6 @@ - - - The value of the parameter, or the base for transformation using xpathExpression or stylesheet, or formatting. - - - - - Key of a PipelineSession-variable. <br/>If specified, the value of the PipelineSession variable is used as input for - the xpathExpression or stylesheet, instead of the current input message. <br/>If no xpathExpression or stylesheet are - specified, the value itself is returned. <br/>If the value '*' is specified, all existing sessionkeys are added as - parameter of which the name starts with the name of this parameter. <br/>If also the name of the parameter has the - value '*' then all existing sessionkeys are added as parameter (except tsReceived) - - - - - key of message context variable to use as source, instead of the message found from input message or sessionKey itself - - - - - Instead of a fixed <code>sessionKey</code> it's also possible to use a XPath expression applied to the input message to extract the name of the session-variable. - - - - - If the result of sessionKey, xpathExpression and/or stylesheet returns null or an empty string, this value is returned - - - - - Comma separated list of methods (<code>defaultValue</code>, <code>sessionKey</code>, <code>pattern</code>, <code>value</code> or <code>input</code>) to use as default value. Used in the order they appear until a non-null value is found. Default: <code>defaultValue</code> - - - - - Value of parameter is determined using substitution and formatting, following MessageFormat syntax with named parameters. The expression can contain references - to <code>session-variables</code> or other <code>parameters</code> using the {name-of-parameter} and is formatted using java.text.MessageFormat. - <br/><b>NB: When referencing other <code>parameters</code> these MUST be defined before the parameter using pattern substitution.</b> - <br/> - <br/> - If for instance <code>fname</code> is a parameter or session-variable that resolves to Eric, then the pattern - 'Hi {fname}, how do you do?' resolves to 'Hi Eric, do you do?'.<br/> - The following predefined reference can be used in the expression too:<ul> - <li>{now}: the current system time</li> - <li>{uid}: an unique identifier, based on the IP address and java.rmi.server.UID</li> - <li>{uuid}: an unique identifier, based on the IP address and java.util.UUID</li> - <li>{hostname}: the name of the machine the application runs on</li> - <li>{username}: username from the credentials found using authAlias, or the username attribute</li> - <li>{password}: password from the credentials found using authAlias, or the password attribute</li> - <li>{fixeddate}: fake date, for testing only</li> - <li>{fixeduid}: fake uid, for testing only</li> - <li>{fixedhostname}: fake hostname, for testing only</li> - </ul> - A guid can be generated using {hostname}_{uid}, see also - <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/uid.html">http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/uid.html</a> for more information about (g)uid's or - <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/util/uuid.html">http://docs.oracle.com/javase/1.5.0/docs/api/java/util/uuid.html</a> for more information about uuid's. - <br/> - When combining a date or time <code>pattern</code> like {now} or {fixeddate} with a DATE, TIME, DATETIME or TIMESTAMP <code>type</code>, the effective value of the attribute - <code>formatString</code> must match the effective value of the formatString in the <code>pattern</code>. - - - - - If set <code>true</code> pattern elements that cannot be resolved to a parameter or sessionKey are silently resolved to an empty string - - - - - If set (>=0) and the length of the value of the parameter falls short of this minimum length, the value is padded Default: -1 - - - - - If set (>=0) and the length of the value of the parameter exceeds this maximum length, the length is trimmed to this maximum length Default: -1 - - - - - If set to <code>true</code>, the value of the parameter will not be shown in the log (replaced by asterisks) Default: <code>false</code> - - - - - Set the mode of the parameter, which determines if the parameter is an INPUT, OUTPUT, or INOUT. - This parameter only has effect for StoredProcedureQuerySender. - An OUTPUT parameter does not need to have a value specified, but does need to have the type specified. - Parameter values will not be updated, but output values will be put into the result of the - StoredProcedureQuerySender. - <b/> - If not specified, the default is INPUT. - - - - - Name of the JMS destination (queue or topic) to use for sending replies. If <code>useReplyTo=true</code>, @@ -22106,6 +21988,11 @@ Session key for retrieving a schema + + + Namespace defintions for xpathExpression. Must be in the form of a comma or space separated list of <code>prefix=namespaceuri</code>-definitions. For some use other cases (NOT xpathExpression), one entry can be without a prefix, that will define the default namespace. + + Key of session variable to store number of items processed, i.e. the position or index in the set of items to be processed. When handling the first item, the value will be 1. diff --git a/src/main/configurations/FrankConfig.xsd b/src/main/configurations/FrankConfig.xsd index 44042d99..bec59ff9 100644 --- a/src/main/configurations/FrankConfig.xsd +++ b/src/main/configurations/FrankConfig.xsd @@ -1,5 +1,5 @@ - + Container of Adapters that belong together. @@ -332,87 +332,6 @@ - - - Placeholder class to allow legacy configuration notations <code>&lt;param type='number' /&gt;</code> in the new Frank!Config XSD. - <p> - The attribute <code>type</code> has been removed in favor of explicit ParameterTypes such as: <code>NumberParameter</code>, <code>DateParameter</code> and <code>BooleanParameter</code>. - Using the new elements enables the use of auto-completion for the specified type. - - - - - - - The target data type of the parameter, related to the database or XSLT stylesheet to which the parameter is applied. Default: STRING - - - - - - - - Name of the parameter - - - - - - - - - URL to a stylesheet that wil be applied to the contents of the message or the value of the session-variable. - - - - - the XPath expression to extract the parameter value from the (xml formatted) input or session-variable. - - - - - If set to <code>2</code> or <code>3</code> a Saxon (net.sf.saxon) xslt processor 2.0 or 3.0 respectively will be used, otherwise xslt processor 1.0 (org.apache.xalan). <code>0</code> will auto-detect Default: 0 - - - - - Namespace definitions for xpathExpression. Must be in the form of a comma or space separated list of - <code>prefix=namespaceuri</code> definitions. One entry can be without a prefix, that will define the default namespace. - - - - - When set <code>true</code> namespaces (and prefixes) in the input message are removed before the stylesheet/xpathExpression is executed Default: <code>false</code> - - - - - - - - Alias used to obtain username and password, used when a <code>pattern</code> containing {username} or {password} is specified - - - - - Default username that is used when a <code>pattern</code> containing {username} is specified - - - - - Default password that is used when a <code>pattern</code> containing {password} is specified - - - - - - - - - - - - Required in each Adapter to transform incoming messages. A pipeline @@ -1108,10 +1027,10 @@ - + - + @@ -1158,10 +1077,30 @@ Name of the parameter - - - - + + + The value of the parameter, or the base for transformation using xpathExpression or stylesheet, or formatting. + + + + + Key of a PipelineSession-variable. <br/>If specified, the value of the PipelineSession variable is used as input for + the xpathExpression or stylesheet, instead of the current input message. <br/>If no xpathExpression or stylesheet are + specified, the value itself is returned. <br/>If the value '*' is specified, all existing sessionkeys are added as + parameter of which the name starts with the name of this parameter. <br/>If also the name of the parameter has the + value '*' then all existing sessionkeys are added as parameter (except tsReceived) + + + + + key of message context variable to use as source, instead of the message found from input message or sessionKey itself + + + + + Instead of a fixed <code>sessionKey</code> it's also possible to use a XPath expression applied to the input message to extract the name of the session-variable. + + URL to a stylesheet that wil be applied to the contents of the message or the value of the session-variable. @@ -1188,9 +1127,44 @@ When set <code>true</code> namespaces (and prefixes) in the input message are removed before the stylesheet/xpathExpression is executed Default: <code>false</code> - - - + + + If the result of sessionKey, xpathExpression and/or stylesheet returns null or an empty string, this value is returned + + + + + Comma separated list of methods (<code>defaultValue</code>, <code>sessionKey</code>, <code>pattern</code>, <code>value</code> or <code>input</code>) to use as default value. Used in the order they appear until a non-null value is found. Default: <code>defaultValue</code> + + + + + Value of parameter is determined using substitution and formatting, following MessageFormat syntax with named parameters. The expression can contain references + to <code>session-variables</code> or other <code>parameters</code> using the {name-of-parameter} and is formatted using java.text.MessageFormat. + <br/><b>NB: When referencing other <code>parameters</code> these MUST be defined before the parameter using pattern substitution.</b> + <br/> + <br/> + If for instance <code>fname</code> is a parameter or session-variable that resolves to Eric, then the pattern + 'Hi {fname}, how do you do?' resolves to 'Hi Eric, do you do?'.<br/> + The following predefined reference can be used in the expression too:<ul> + <li>{now}: the current system time</li> + <li>{uid}: an unique identifier, based on the IP address and java.rmi.server.UID</li> + <li>{uuid}: an unique identifier, based on the IP address and java.util.UUID</li> + <li>{hostname}: the name of the machine the application runs on</li> + <li>{username}: username from the credentials found using authAlias, or the username attribute</li> + <li>{password}: password from the credentials found using authAlias, or the password attribute</li> + <li>{fixeddate}: fake date, for testing only</li> + <li>{fixeduid}: fake uid, for testing only</li> + <li>{fixedhostname}: fake hostname, for testing only</li> + </ul> + A guid can be generated using {hostname}_{uid}, see also + <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/uid.html">http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/uid.html</a> for more information about (g)uid's or + <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/util/uuid.html">http://docs.oracle.com/javase/1.5.0/docs/api/java/util/uuid.html</a> for more information about uuid's. + <br/> + When combining a date or time <code>pattern</code> like {now} or {fixeddate} with a DATE, TIME, DATETIME or TIMESTAMP <code>type</code>, the effective value of the attribute + <code>formatString</code> must match the effective value of the formatString in the <code>pattern</code>. + + Alias used to obtain username and password, used when a <code>pattern</code> containing {username} or {password} is specified @@ -1206,11 +1180,40 @@ Default password that is used when a <code>pattern</code> containing {password} is specified - - - - - + + + If set <code>true</code> pattern elements that cannot be resolved to a parameter or sessionKey are silently resolved to an empty string + + + + + If set (>=0) and the length of the value of the parameter falls short of this minimum length, the value is padded Default: -1 + + + + + If set (>=0) and the length of the value of the parameter exceeds this maximum length, the length is trimmed to this maximum length Default: -1 + + + + + If set to <code>true</code>, the value of the parameter will not be shown in the log (replaced by asterisks) Default: <code>false</code> + + + + + Set the mode of the parameter, which determines if the parameter is an INPUT, OUTPUT, or INOUT. + This parameter only has effect for StoredProcedureQuerySender. + An OUTPUT parameter does not need to have a value specified, but does need to have the type specified. + Parameter values will not be updated, but output values will be put into the result of the + StoredProcedureQuerySender. + <b/> + If not specified, the default is INPUT. + + + + + @@ -4039,8 +4042,8 @@ </ul> In the Adapter to be called: <ul> - <li>The adapter does not need to have a receiver configured to be called from a FrankSender,</li> - <li>The adapter will run in the same transaction as the calling adapter,</li> + <li>The adapter does not need to have a dedicated receiver configured to be called from a FrankSender.</li> + <li>The adapter will run in the same transaction as the calling adapter.</li> <li>If the called adapter does not to run in its own transaction, set the transaction attributes on the PipeLine attribute of this adapter or on the SenderPipe that contains this <code>FrankSender</code>.</li> </ul> @@ -9053,8 +9056,8 @@ </ul> In the Adapter to be called: <ul> - <li>The adapter does not need to have a receiver configured to be called from a FrankSender,</li> - <li>The adapter will run in the same transaction as the calling adapter,</li> + <li>The adapter does not need to have a dedicated receiver configured to be called from a FrankSender.</li> + <li>The adapter will run in the same transaction as the calling adapter.</li> <li>If the called adapter does not to run in its own transaction, set the transaction attributes on the PipeLine attribute of this adapter or on the SenderPipe that contains this <code>FrankSender</code>.</li> </ul> @@ -10500,7 +10503,7 @@ - + @@ -10589,7 +10592,7 @@ - + @@ -11766,7 +11769,7 @@ filename which will be wrapped into an ESB SOAP message. Please note: When writing files which need to be send through FxF they should be written to ${fxf.dir}/NNX00000/out. The property ${fxf.dir} will automatically be - available on the OTAP environment (define it in StageSpecifics_LOC.properties + available on the DTAP environment (define it in StageSpecifics_LOC.properties only). Replace NNX00000 with the specific flowId and generate a unique filename (files will automatically be cleaned after 30 days or any other value specified by ${fxf.retention}). @@ -12316,7 +12319,7 @@ filename which will be wrapped into an ESB SOAP message. Please note: When writing files which need to be send through FxF they should be written to ${fxf.dir}/NNX00000/out. The property ${fxf.dir} will automatically be - available on the OTAP environment (define it in StageSpecifics_LOC.properties + available on the DTAP environment (define it in StageSpecifics_LOC.properties only). Replace NNX00000 with the specific flowId and generate a unique filename (files will automatically be cleaned after 30 days or any other value specified by ${fxf.retention}). @@ -13801,50 +13804,39 @@ <h3>For using a 'resultString'</h3> You can use the EchoPipe for a static value. This looked like this before: - <pre> - <code>&lt;pipe name=&quot;HelloWorld&quot; className=&quot;org.frankframework.pipes.FixedResult&quot; returnString=&quot;Hello World&quot;&gt; + <pre><code>&lt;pipe name=&quot;HelloWorld&quot; className=&quot;org.frankframework.pipes.FixedResult&quot; returnString=&quot;Hello World&quot;&gt; &lt;forward name=&quot;success&quot; path=&quot;EXIT&quot;/&gt; - &lt;/pipe&gt;</code> - </pre> + &lt;/pipe&gt;</code></pre> Becomes: - <pre> - <code>&lt;pipe name=&quot;HelloWorld&quot; className=&quot;org.frankframework.pipes.EchoPipe&quot; getInputFromFixedValue=&quot;Hello World&quot;&gt; + <pre><code>&lt;pipe name=&quot;HelloWorld&quot; className=&quot;org.frankframework.pipes.EchoPipe&quot; getInputFromFixedValue=&quot;Hello World&quot;&gt; &lt;forward name=&quot;success&quot; path=&quot;EXIT&quot;/&gt; - &lt;/pipe&gt;</code> - </pre> + &lt;/pipe&gt;</code></pre> <h3>For replacing a value</h3> You can use the ReplacerPipe to replace a value in multiple ways. First, when you need to replace a placeholder with a parameter. This looked like: - <pre> - <code>&lt;pipe name=&quot;make unique message&quot; className=&quot;org.frankframework.pipes.FixedResultPipe&quot; + <pre><code>&lt;pipe name=&quot;make unique message&quot; className=&quot;org.frankframework.pipes.FixedResultPipe&quot; returnString=&quot;&amp;lt;msg mid=&amp;quot;MID&amp;quot; action=&amp;quot;ACTION&amp;quot; /&amp;gt;&quot; replaceFixedParams=&quot;true&quot;&gt; &lt;param name=&quot;MID&quot; sessionKey=&quot;mid&quot; /&gt; &lt;param name=&quot;ACTION&quot; xpathExpression=&quot;request/@action&quot; /&gt; - &lt;/pipe&gt;</code> - </pre> + &lt;/pipe&gt;</code></pre> And can now be written like this (note the ?{..} syntax): - <pre> - <code>&lt;pipe name=&quot;make unique message&quot; className=&quot;org.frankframework.pipes.ReplacerPipe&quot; + <pre><code>&lt;pipe name=&quot;make unique message&quot; className=&quot;org.frankframework.pipes.ReplacerPipe&quot; getInputFromFixedValue=&quot;&amp;lt;msg mid=&amp;quot;?{MID}&amp;quot; action=&amp;quot;?{ACTION}&amp;quot; /&amp;gt;&quot;&gt; &lt;param name=&quot;MID&quot; sessionKey=&quot;mid&quot; /&gt; &lt;param name=&quot;ACTION&quot; xpathExpression=&quot;request/@action&quot; /&gt; - &lt;/pipe&gt;</code> - </pre> + &lt;/pipe&gt;</code></pre> When you need to replace a fixed value use the ReplacerPipe with find and replace. This looked like this: - <pre> - <code>&lt;FixedResultPipe name=&quot;InputValidateError&quot; + <pre><code>&lt;FixedResultPipe name=&quot;InputValidateError&quot; filename=&quot;ManageFileSystem/xml/ErrorMessage.xml&quot; replaceFrom=&quot;%reasonCode&quot; replaceTo=&quot;NOT_WELL_FORMED_XML&quot;&gt; &lt;forward name=&quot;success&quot; path=&quot;EXIT&quot; /&gt; - &lt;/FixedResultPipe&gt;</code> - </pre> + &lt;/FixedResultPipe&gt;</code></pre> And now should be solved like this: - <pre> - <code>&lt;FixedResultPipe name=&quot;InputValidateError&quot; + <pre><code>&lt;FixedResultPipe name=&quot;InputValidateError&quot; filename=&quot;ManageFileSystem/xml/ErrorMessage.xml&quot;&gt; &lt;forward name=&quot;success&quot; path=&quot;replaceReasonCode&quot; /&gt; &lt;/FixedResultPipe&gt; @@ -13852,15 +13844,13 @@ find=&quot;%reasonCode&quot; replace=&quot;NOT_WELL_FORMED_XML&quot;&gt; &lt;forward name=&quot;success&quot; path=&quot;EXIT&quot; /&gt; - &lt;/ReplacerPipe&gt;</code> - </pre> + &lt;/ReplacerPipe&gt;</code></pre> This is also an example of now using two pipes to achieve the same result. Each pipe has its own responsibility. <h2>More complex configurations</h2> In some cases, a combination of the above is needed to achieve what worked before. In some cases, FixedResultPipe was also used to store information in the session. For example, a port of configuration in the JMS listener sender configuration looked like this: - <pre> - <code>&lt;CompareStringPipe name=&quot;compareIdAndCid&quot; &gt; + <pre><code>&lt;CompareStringPipe name=&quot;compareIdAndCid&quot; &gt; &lt;param name=&quot;operand1&quot; sessionKey=&quot;id&quot;/&gt; &lt;param name=&quot;operand2&quot; sessionKey=&quot;cid&quot;/&gt; &lt;forward name=&quot;equals&quot; path=&quot;IdAndCidSame&quot; /&gt; @@ -13881,12 +13871,10 @@ &lt;param name=&quot;CID&quot; sessionKey=&quot;cid&quot; /&gt; &lt;param name=&quot;SAME&quot; sessionKey=&quot;IdAndCidSame&quot; /&gt; &lt;forward name=&quot;success&quot; path=&quot;EXIT&quot; /&gt; - &lt;/pipe&gt;</code> - </pre> + &lt;/pipe&gt;</code></pre> Was rewritten to the following: - <pre> - <code>&lt;CompareStringPipe name=&quot;compareIdAndCid&quot; &gt; + <pre><code>&lt;CompareStringPipe name=&quot;compareIdAndCid&quot; &gt; &lt;param name=&quot;operand1&quot; sessionKey=&quot;id&quot;/&gt; &lt;param name=&quot;operand2&quot; sessionKey=&quot;cid&quot;/&gt; &lt;forward name=&quot;equals&quot; path=&quot;IdAndCidSame&quot; /&gt; @@ -13910,8 +13898,7 @@ &lt;param name=&quot;CID&quot; sessionKey=&quot;cid&quot; /&gt; &lt;param name=&quot;SAME&quot; sessionKey=&quot;IdAndCidSame&quot; /&gt; &lt;forward name=&quot;success&quot; path=&quot;EXIT&quot; /&gt; - &lt;/pipe&gt;</code> - </pre> + &lt;/pipe&gt;</code></pre> <p> <h2>The features/documentation of the deprecated features</h2> @@ -14003,7 +13990,7 @@ filename which will be wrapped into an ESB SOAP message. Please note: When writing files which need to be send through FxF they should be written to ${fxf.dir}/NNX00000/out. The property ${fxf.dir} will automatically be - available on the OTAP environment (define it in StageSpecifics_LOC.properties + available on the DTAP environment (define it in StageSpecifics_LOC.properties only). Replace NNX00000 with the specific flowId and generate a unique filename (files will automatically be cleaned after 30 days or any other value specified by ${fxf.retention}). @@ -14577,16 +14564,15 @@ This Pipe is used to replace values in a few ways. The following steps are performed: <ol> - <li>If <code>find</code> is provided, it will be replaced by <code>replace</code></li> + <li>If the attribute <code>find</code> is provided, the pipe will attempt to replace the provided value with the content of the attribute <code>replace</code>.</li> <li>The resulting string is substituted based on the parameters of this pipe. It will replace values in the input enclosed - with ?{}, for instance: ?{parameterOne}, with parameters of this pipe. If a parameter for the given value is not found, it - will not be replaced and the '?{parameterOne}' value will remain in the output. + with <code>?{...}</code>, for instance text like: <code>?{parameterOne}</code> in combination with a parameter <code>parameterOne</code> will use the value of this Parameter. + If a parameter for the given value is not found, it will not be replaced and the <code>?{parameterOne}</code> value will remain in the output.</li> <p> - See Parameter to see how parameter values are determined.</li> <p> <li>If attribute <code>substituteVars</code> is <code>true</code>, then expressions <code>${...}</code> are substituted using system properties, session variables and application properties. Please note that no <code>${...}</code> patterns are left in the input. </li> - </ol> + </ol><br><br><b>TIP</b><p>See Parameter to see how parameter values are determined.</p> @@ -15457,11 +15443,7 @@ Alternatively: xpath-expression to create stylesheet from - - - Namespace defintions for xpathExpression. Must be in the form of a comma or space separated list of <code>prefix=namespaceuri</code>-definitions. For some use other cases (NOT xpathExpression), one entry can be without a prefix, that will define the default namespace. - - + Only valid for xpathexpression Default: text @@ -15611,11 +15593,7 @@ Alternatively: xpath-expression to create stylesheet from - - - Namespace defintions for xpathExpression. Must be in the form of a comma or space separated list of <code>prefix=namespaceuri</code>-definitions. For some use other cases (NOT xpathExpression), one entry can be without a prefix, that will define the default namespace. - - + Only valid for xpathexpression Default: text @@ -20557,100 +20535,6 @@ - - - - - Renders the contents of the first node (in combination with xslt or xpath). Please note that - if there are child nodes, only the contents are returned, use <code>XML</code> if the xml tags are required - - - - - Renders an xml-nodeset as an xml-string (in combination with xslt or xpath). This will include the xml tags - - - - - Renders the CONTENTS of the first node as a nodeset - that can be used as such when passed as xslt-parameter (only for XSLT 1.0). - Please note that the nodeset may contain multiple nodes, without a common root node. - N.B. The result is the set of children of what you might expect it to be... - - - - - Renders XML as a DOM document; similar to <code>node</code> - with the distinction that there is always a common root node (required for XSLT 2.0) - - - - - Converts the result to a Date, by default using formatString <code>yyyy-MM-dd</code>. - When applied as a JDBC parameter, the method setDate() is used - - - - - Converts the result to a Date, by default using formatString <code>HH:mm:ss</code>. - When applied as a JDBC parameter, the method setTime() is used - - - - - Converts the result to a Date, by default using formatString <code>yyyy-MM-dd HH:mm:ss</code>. - When applied as a JDBC parameter, the method setTimestamp() is used - - - - - Similar to <code>DATETIME</code>, except for the formatString that is <code>yyyy-MM-dd HH:mm:ss.SSS</code> by default - - - - - Converts the result from a XML formatted dateTime to a Date. - When applied as a JDBC parameter, the method setTimestamp() is used - - - - - Converts the result to a Number, using decimalSeparator and groupingSeparator. - When applied as a JDBC parameter, the method setDouble() is used - - - - - Converts the result to an Integer - - - - - Converts the result to a Boolean - - - - - Forces the parameter value to be treated as binary data (e.g. when using a SQL BLOB field). - When applied as a JDBC parameter, the method setBinaryStream() or setBytes() is used - - - - - Forces the parameter value to be treated as character data (e.g. when using a SQL CLOB field). - When applied as a JDBC parameter, the method setCharacterStream() or setString() is used - - - - - Used for StoredProcedure OUT parameters when the database type is a <code>CURSOR</code> or java.sql.JDBCType#REF_CURSOR. - See also org.frankframework.jdbc.StoredProcedureQuerySender. - <br/> - DEPRECATED: Type LIST can also be used in larva test to Convert a List to an xml-string (&lt;items&gt;&lt;item&gt;...&lt;/item&gt;&lt;item&gt;...&lt;/item&gt;&lt;/items&gt;) - - - - @@ -20782,6 +20666,100 @@ + + + + + Renders the contents of the first node (in combination with xslt or xpath). Please note that + if there are child nodes, only the contents are returned, use <code>XML</code> if the xml tags are required + + + + + Renders an xml-nodeset as an xml-string (in combination with xslt or xpath). This will include the xml tags + + + + + Renders the CONTENTS of the first node as a nodeset + that can be used as such when passed as xslt-parameter (only for XSLT 1.0). + Please note that the nodeset may contain multiple nodes, without a common root node. + N.B. The result is the set of children of what you might expect it to be... + + + + + Renders XML as a DOM document; similar to <code>node</code> + with the distinction that there is always a common root node (required for XSLT 2.0) + + + + + Converts the result to a Date, by default using formatString <code>yyyy-MM-dd</code>. + When applied as a JDBC parameter, the method setDate() is used + + + + + Converts the result to a Date, by default using formatString <code>HH:mm:ss</code>. + When applied as a JDBC parameter, the method setTime() is used + + + + + Converts the result to a Date, by default using formatString <code>yyyy-MM-dd HH:mm:ss</code>. + When applied as a JDBC parameter, the method setTimestamp() is used + + + + + Similar to <code>DATETIME</code>, except for the formatString that is <code>yyyy-MM-dd HH:mm:ss.SSS</code> by default + + + + + Converts the result from a XML formatted dateTime to a Date. + When applied as a JDBC parameter, the method setTimestamp() is used + + + + + Converts the result to a Number, using decimalSeparator and groupingSeparator. + When applied as a JDBC parameter, the method setDouble() is used + + + + + Converts the result to an Integer + + + + + Converts the result to a Boolean + + + + + Forces the parameter value to be treated as binary data (e.g. when using a SQL BLOB field). + When applied as a JDBC parameter, the method setBinaryStream() or setBytes() is used + + + + + Forces the parameter value to be treated as character data (e.g. when using a SQL CLOB field). + When applied as a JDBC parameter, the method setCharacterStream() or setString() is used + + + + + Used for StoredProcedure OUT parameters when the database type is a <code>CURSOR</code> or java.sql.JDBCType#REF_CURSOR. + See also org.frankframework.jdbc.StoredProcedureQuerySender. + <br/> + DEPRECATED: Type LIST can also be used in larva test to Convert a List to an xml-string (&lt;items&gt;&lt;item&gt;...&lt;/item&gt;&lt;item&gt;...&lt;/item&gt;&lt;/items&gt;) + + + + @@ -20995,102 +20973,6 @@ - - - The value of the parameter, or the base for transformation using xpathExpression or stylesheet, or formatting. - - - - - Key of a PipelineSession-variable. <br/>If specified, the value of the PipelineSession variable is used as input for - the xpathExpression or stylesheet, instead of the current input message. <br/>If no xpathExpression or stylesheet are - specified, the value itself is returned. <br/>If the value '*' is specified, all existing sessionkeys are added as - parameter of which the name starts with the name of this parameter. <br/>If also the name of the parameter has the - value '*' then all existing sessionkeys are added as parameter (except tsReceived) - - - - - key of message context variable to use as source, instead of the message found from input message or sessionKey itself - - - - - Instead of a fixed <code>sessionKey</code> it's also possible to use a XPath expression applied to the input message to extract the name of the session-variable. - - - - - If the result of sessionKey, xpathExpression and/or stylesheet returns null or an empty string, this value is returned - - - - - Comma separated list of methods (<code>defaultValue</code>, <code>sessionKey</code>, <code>pattern</code>, <code>value</code> or <code>input</code>) to use as default value. Used in the order they appear until a non-null value is found. Default: <code>defaultValue</code> - - - - - Value of parameter is determined using substitution and formatting, following MessageFormat syntax with named parameters. The expression can contain references - to <code>session-variables</code> or other <code>parameters</code> using the {name-of-parameter} and is formatted using java.text.MessageFormat. - <br/><b>NB: When referencing other <code>parameters</code> these MUST be defined before the parameter using pattern substitution.</b> - <br/> - <br/> - If for instance <code>fname</code> is a parameter or session-variable that resolves to Eric, then the pattern - 'Hi {fname}, how do you do?' resolves to 'Hi Eric, do you do?'.<br/> - The following predefined reference can be used in the expression too:<ul> - <li>{now}: the current system time</li> - <li>{uid}: an unique identifier, based on the IP address and java.rmi.server.UID</li> - <li>{uuid}: an unique identifier, based on the IP address and java.util.UUID</li> - <li>{hostname}: the name of the machine the application runs on</li> - <li>{username}: username from the credentials found using authAlias, or the username attribute</li> - <li>{password}: password from the credentials found using authAlias, or the password attribute</li> - <li>{fixeddate}: fake date, for testing only</li> - <li>{fixeduid}: fake uid, for testing only</li> - <li>{fixedhostname}: fake hostname, for testing only</li> - </ul> - A guid can be generated using {hostname}_{uid}, see also - <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/uid.html">http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/uid.html</a> for more information about (g)uid's or - <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/util/uuid.html">http://docs.oracle.com/javase/1.5.0/docs/api/java/util/uuid.html</a> for more information about uuid's. - <br/> - When combining a date or time <code>pattern</code> like {now} or {fixeddate} with a DATE, TIME, DATETIME or TIMESTAMP <code>type</code>, the effective value of the attribute - <code>formatString</code> must match the effective value of the formatString in the <code>pattern</code>. - - - - - If set <code>true</code> pattern elements that cannot be resolved to a parameter or sessionKey are silently resolved to an empty string - - - - - If set (>=0) and the length of the value of the parameter falls short of this minimum length, the value is padded Default: -1 - - - - - If set (>=0) and the length of the value of the parameter exceeds this maximum length, the length is trimmed to this maximum length Default: -1 - - - - - If set to <code>true</code>, the value of the parameter will not be shown in the log (replaced by asterisks) Default: <code>false</code> - - - - - Set the mode of the parameter, which determines if the parameter is an INPUT, OUTPUT, or INOUT. - This parameter only has effect for StoredProcedureQuerySender. - An OUTPUT parameter does not need to have a value specified, but does need to have the type specified. - Parameter values will not be updated, but output values will be put into the result of the - StoredProcedureQuerySender. - <b/> - If not specified, the default is INPUT. - - - - - Name of the JMS destination (queue or topic) to use for sending replies. If <code>useReplyTo=true</code>, @@ -22106,6 +21988,11 @@ Session key for retrieving a schema + + + Namespace defintions for xpathExpression. Must be in the form of a comma or space separated list of <code>prefix=namespaceuri</code>-definitions. For some use other cases (NOT xpathExpression), one entry can be without a prefix, that will define the default namespace. + + Key of session variable to store number of items processed, i.e. the position or index in the set of items to be processed. When handling the first item, the value will be 1.