Releases: Permafrost/Tundra
v0.0.38
The changes included in this release are as follows:
- add
tundra.smtp:send
for sending emails via SMTP - change
./pub/configuration/index.dsp
to include a refresh all button - change
tundra.content.deliver:mailto
to usetundra.smtp:send
rather thanpub.client:smtp
for its SMTP implementation - change
tundra.html:emit
to support specifying the orientation used when emittingIData
documents - fix
tundra.excel:emit
when given a String value to suppress number format exceptions (if the value cannot be parsed as a number using the BigDecimal grammar) and fall back to treating the value as aString
- fix
tundra.system:reflect
to support both package-level and server-level global variables in Integration Server 10.15 - fix DSP pages to always use light mode/theme to match webMethods page style
- fix scheduling of
tundra.support.log:purge
for log compression and purging to create and remove against target$self
only - upgrade Bulma CSS framework to v1.0.0
- upgrade Fontawesome icons to v6.5.1
To install, download Tundra-v0.0.38.zip
, copy to IntegrationServer/replicate/instances/<instance>/inbound
, install the release via the package management web page.
v0.0.37
The changes included in this release are as follows:
- add
./pub/configuration/
DSP pages for viewing and editing package configuration (note that only server-specific package configuration files are supported for editing via this user interface) - add
tundra.mime.type:text
for returning whether a given MIME media type describes a text-based data type - add
tundra.schedule.create:list
for creating a list of scheduled tasks from anIData[]
document list input - add
tundra.schedule.create:pivot
for creating a list of scheduled tasks from a pivotedIData
document input - add
tundra.schedule:expedite
to run a given scheduled task immediately rather than wait for its next scheduled time - add
tundra.security.hmac:authenticate
to authenticate a given HMAC authentication code against given content, secret key, and algorithm - add
tundra.security.hmac:calculate
to calculate an HMAC authentication code for the given content, secret key, and algorithm - add
tundra.security.hmac:verify
to verify a given HMAC authentication code against the given content, secret key, and algorithm - add
tundra.service:redirect
for registering a service redirection which then routes all subsequent invocations of the given source service to the given target service - add
tundra.support.system.acl:export
andtundra.support.system.acl:merge
services to support migrating ACLs from one Integration Server instance to another - add
tundra.support.system.global:export
andtundra.support.system.global:merge
services to support migrating global variables from one Integration Server instance to another - add Tundra package configuration settings to support auto-starting the service usage and service statistics features at package startup (note both of the settings default to
false
to preserve existing behaviour):feature/service/usage/started
, andfeature/service/statistics/started
- change
./pub/message/format/list.dsp
enabled/disabled icon to improve clarity - change
tundra.bool:format
to support formatting arbitrarily specified strings - change
tundra.collection.list.*:arrayify
to also return the array length for convenience - change
tundra.collection.map.*:keys
to also return the number of keys for convenience - change
tundra.collection.map.*:values
to also return the number of values for convenience - change
tundra.content.deliver:http
to gzip compress the request body if the following HTTP header is specified:X-Request-Body-Compression: gzip
(note that this is an alternative to the standard and already supported approach for HTTP request body compression, which is to specify the HTTP headerContent-Encoding: gzip
; theX-Request-Body-Compression
header, unlike the standardContent-Encoding
header, will not be handled automatically by HTTP servers or intermediates, and therefore provides a way to tunnel gzip compressed content through HTTP intermediates to be handled in the software that is ultimately processing the HTTP request) - change
tundra.content.deliver:jms
to use ajavax.jms.TextMessage
when the content type is a text-based data type, otherwise ajavax.jms.BytesMessage
is used to send the JMS message - change
tundra.content.deliver:sftp
to only change directory when required, and to ignore errors when touching the delivered file to set the modification datetime as delivery should be considered successful even if the touch operation does not work for some reason - change
tundra.content.retrieve:jms
to support arbitrary pipeline variables being provided to the content processing service - change
tundra.content:deliver
file delivery to support specifying the size in bytes of the in memory buffer used when writing the content to the file using the query string parameterbuffer
- change
tundra.content:deliver
parameters to be consistent with other content processing services - change
tundra.content:retrieve
to support retrieving JMS message content from a JMS alias topic or queue using a source URI such as:jms://jms-alias-name?queue=jms-queue-name
orjms://jms-alias-name?topic=jms-topic-name
- change
tundra.content:split
parameter naming to be consistent with other content processing services - change
tundra.directory:purge
andtundra.directory:gzip
to continue processing files even if an exception is encountered, and to throw all encountered exceptions after attempting to process all files rather than failing fast on the first exception encountered - change
tundra.document:deliver
parameter naming to be consistent with other content processing services - change
tundra.file:copy
andtundra.file:write
to support specifying the size in bytes of the in memory buffer used when reading, copying, and writing data to files with the new input parameter$file.buffer.size
- change
tundra.http:client
$request/method
to include patch method in the pick list of methods - change
tundra.http:client
implementation to Java to improve performance - change
tundra.http:client
to silently support passingtrustStore
andfollowRedirect
inputs topub.client:http
if they are provided - change
tundra.list.object:sort
andtundra.list.string:sort
to support sorting in either ascending or descending order - change
tundra.list.string:normalize
to use parameter naming consistent with other content processing services - change
tundra.packages:get
,tundra.packages:list
, andtundra.packages:self
to include optional package description in output - change
tundra.schedule:create
to not set$schedule.name
on the scheduled task's input pipeline unless it is a singleton task - change
tundra.schedule:create
to use a new single input parameter$schedule.create
, which allows schedules to be created easily from an object stored in a JSON or similar configuration file format that supports hierarchical data structures. - change
tundra.stream:close
input parameter name to$content.stream
to be consistent with other content processing services - change
tundra.stream:copy
parameter names to be consistent with other content processing services - change
tundra.stream:copy
to support specifying the size in bytes of the in memory buffer used when copying data between the input and output streams with the new input parameter$stream.buffer.size
- change
tundra.stream:normalize
parameters to be consistent with other content processing services - change
tundra.stream:transcode
parameters to be consistent with other content processing services - change
tundra.string:capitalize
input parameter naming to be prefixed with the operation being performed - change
tundra.string:coalesce
input parameter naming to be prefixed with the operation being performed - change
tundra.string:concatenate
input parameter naming to be prefixed with the operation being performed - change
tundra.string:condense
input parameter naming to be prefixed with the operation being performed - change
tundra.string:legalize
input parameter naming to be prefixed with the operation being performed - change
tundra.string:lowercase
to support converting one or more arbitrarily specified strings to lower case - change
tundra.string:normalize
parameter naming to be consistent with other content related services - change
tundra.string:pad
to support padding one or more arbitrarily specified strings - change
tundra.string:remove
to support removing patterns from one or more arbitrarily specified strings - change
tundra.string:replace
to support replacing patterns in one or more arbitrarily specified string values - change
tundra.string:reverse
to support reversing one or more arbitrarily specified strings - change
tundra.string:slice
parameter naming to be prefixed with the operation being performed - change
tundra.string:split
parameter naming to be prefixed with the operation being performed - change
tundra.string:translate
to support excluding values with no translation, and to support dedicated reverse default and null values - change
tundra.string:translate
to support raising an exception when translation values are missing - change
tundra.string:trim
to support trimming one or more arbitrarily specified string values - change
tundra.string:truncate
parameter naming to be prefixed with the operation being performed - change
tundra.string:uppercase
to support converting one or more arbitrarily specified strings to upper case - change
tundra.support.content.deliver:sftp
to use$content.encoding
rather than$encoding
input parameter - change
tundra.thread:current
,tundra.thread:get
, andtundra.thread:list
to return the Integration Server generated thread dump for the thread in question - change
tundra.uri:emit
to not include explicit port in resulting URI string if port specified is the default port for the given scheme - change
tundra.uri:substitute
to support both local and global variable substitution - change
tundra:log
input parameter$log.context
to support any type of object rather than justIData
documents - change thread names used by Tundra thread pools for clarity and simplicity
- change Tundra variable substitution feature to support mustache-template style double-curly brace delimited variables and to support resolving recursive variable references
- fix
tundra.bytes:normalize
,tundra.stream:normalize
, andtundra.string:normalize
backwards-compatibility to work correctly when both old$object
and new$content
input parameters both exist in the pipeline - fix
tundra.content.deliver:jms
to use ajavax.jms.TextMessage
when the content type is a text-based data type, otherwise ajavax.jms.BytesMessage
is used to send the JMS message - fix
tundra.content.deliver:mailto
to correctly use$content.encoding
input parameter - fix
tundra.content:deliver
branch on$destination
to work correctly - fix
tundra.content:translate
to not drop `...
v0.0.36
The changes included in this release are as follows:
- add
tundra.file:equal
for comparing the contents of two files - add
tundra.service:retry
for invoking a service and retrying it when the invocation fails - add
tundra.xml.namespace:normalize
for normalizing namespace prefixes in the givenIData
document's keys and/or values to be the prefix with the highest precedence in the given namespace prefix declarations - change
README.md
to recommend using git reset rather than git checkout - change
tundra.content:amend
input variable names to be consistent withtundra.content:parse
andtundra.content:emit
- change
tundra.content:deliver
ftp
delivery to support arename
setting which whentrue
will first write the remote file with a.tmp
extension and then rename it, which ensures existing files are not overwritten - change
tundra.datetime:add
to support datetime shifting arbitrarily specified datetime strings rather than just one string at a time - change
tundra.datetime:subtract
to support datetime shifting arbitrarily specified datetime strings rather than just one string at a time - change
tundra.datetime:within
to support start of range being after end of range - change
tundra.deliver:content
to return optional$response.context
to provide additional context to the delivery response, for example the response status and headers for an HTTP delivery - change
tundra.document:log
to support disabling the prefixing of the log statement with the current user and callstack, and to support logging to arbitrarily named server log files - change
tundra.list.content:emit
input variable names to be consistent withtundra.content:emit
- change
tundra.pipeline:log
to support disabling the prefixing of the log statement with the current user and callstack, and to support logging to arbitrarily named server log files - change
tundra.pipeline:sanitize
to support the option to recursively sanitize childIData
documents andIData[]
document lists, and to not remove undeclared fields from documents which have been configured to "Allow unspecified fields" - change
tundra.service:invoke
to return$duration
truncated to millisecond precision - change
tundra.system:reflect
to return the localhost address and unique reference identity and datetime, which are useful for common variable substitution scenarios - change
tundra:log
to support disabling the prefixing of the log statement with the current user and callstack, and to support logging to arbitrarily named server log files - fix
tundra.content:amend
to normalize namespace prefixes in the given$amendments/key
values to be the prefix with the highest precedence in the given$content.namespace
namespace declarations, so that the amended keys use the same prefixes as the parsed content - fix
tundra.content:deliver
documentation offile:
protocol to specify correct input pipeline parameter name$filemode
which is used for controlling whether to append / write / create the file - fix
tundra.file:digest
to work correctly withfile://
URIs - fix
tundra.list.directory:compact
to use a new empty array when callingList.toArray(T[])
method to take advantage of JVM optimizations - fix
tundra.list.directory:squeeze
to use a new empty array when callingList.toArray(T[])
method to take advantage of JVM optimizations - fix
tundra.list.document:find
to use a new empty array when callingList.toArray(T[])
method to take advantage of JVM optimizations - fix
tundra.list.document:match
to use a new empty array when callingList.toArray(T[])
method to take advantage of JVM optimizations - fix
tundra.list.string:find
to use a new empty array when callingList.toArray(T[])
method to take advantage of JVM optimizations - fix
tundra.list.string:match
to use a new empty array when callingList.toArray(T[])
method to take advantage of JVM optimizations - fix
tundra.node:list
to use a new empty array when callingList.toArray(T[])
method to take advantage of JVM optimizations - fix
tundra.pipeline:clear
to not throwjava.lang.NullPointerException
when$preserve
argument is not specified - fix
tundra.support.content.retrieve.file:reflect
to use a new empty array when callingList.toArray(T[])
method to take advantage of JVM optimizations
To install, download Tundra-v0.0.36.zip
, copy to IntegrationServer/replicate/inbound
, install the release via the package management web page.
v0.0.35
The changes included in this release are as follows:
- add
tundra.content:transfer
for transferring content retrieved from a source location and delivering directly to a destination location - add
tundra.datetime:within
for determining if a given datetime is within a given range - add
tundra.file:digest
for calculating a message digest for a given file - add
tundra.file:purge
for deleting files matching the given filename pattern older than the given duration in the same directory - add
tundra.pipeline:sanitize
for dropping undeclared inputs or outputs when compared with the current service's signature - add
tundra.pipeline:validate
for imperatively validating the pipeline against the current service's input or output signature - add
tundra.service:restful
for marking a service as a REST service, which then automatically handles output serialization, exception handling, and pipeline validation - add
tundra.service:synchronize
for performing a thread-synchronized invoke of a service - add
tundra.thread:get
to return the thread with the given identity - add
tundra.thread:interrupt
to interrupt the thread with the given identity - add
tundra.thread:stop
to stop the thread with the given identity (use sparingly, and at your own peril) - change
tundra.base64:decode
to use$content.mode
and$content.encoding
inputs rather than$mode
and$encoding
respectively to remove ambiguity - change
tundra.base64:encode
to use$content.mode
and$content.encoding
inputs rather than$mode
and$encoding
respectively to remove ambiguity - change
tundra.bytes:normalize
to use$content.mode
and$content.encoding
inputs rather than$mode
and$encoding
respectively to remove ambiguity - change
tundra.bytes:transcode
to use$content.mode
and$content.encoding
inputs rather than$mode
and$encoding
respectively to remove ambiguity - change
tundra.cache.memory:*
services to support cache entry expiration - change
tundra.cache.memory:get
to also return$cache.expiry.datetime
when it is applicable to the cache entry in question - change
tundra.cache.memory:put
to return the previously associated value if any and to return a boolean flag explicitly indicating if the attempted put updated the cache - change
tundra.content.deliver:file
to set the last modified datetime of the file to the given$content.updated
datetime if specified - change
tundra.content.deliver:file
to support query string parameterfilemode
for specifying the file mode to use when callingtundra.file:write
- change
tundra.content.deliver:http
to use new input arguments totundra.gzip:compress
- change
tundra.content.deliver:jms
to provide content schema and content type asJMSMessage
properties namedContent-Schema
andContent-Type
respectively - change
tundra.content.deliver:mailto
to use the following Integration Server settings if they exist when using the default SMTP server:watt.server.smtpServerPort
,watt.server.smtpTransportSecurity
, andwatt.server.smtpTrustStoreAlias
- change
tundra.content.deliver:sftp
to set the last modified datetime of the file to the given$content.updated
datetime if specified - change
tundra.content.delivery:sap_idoc
return message format to be consistent with the other deliver protocol implementations - change
tundra.content.retrieve:file
to provide$content.updated
to the content processing service - change
tundra.content.retrieve:sftp
to provide$content.updated
to the content processing service - change
tundra.content:emit
implementation to Java for easier reuse by other components and better performance - change
tundra.content:parse
implementation to Java for easier reuse by other components and better performance - change
tundra.content:retrieve
file
protocol handler to support limiting the files retrieved by specifying a new query string parameterupdated
to only retrieve files within the specified last modified time window - change
tundra.content:retrieve
ftp
retrieval to support disabling the file rename prior to retrieval by setting the query string parameterrename
tofalse
(example:ftp://user:password@server:port/directory/*.txt?rename=false
) - change
tundra.content:retrieve
sftp
protocol handler to support limiting the files retrieved by specifying a new query string parameterupdated
to only retrieve files within the specified last modified time window - change
tundra.content:retrieve
sftp
retrieval to support disabling the file rename prior to retrieval by setting the query string parameterrename
tofalse
(example:sftp://useralias/./path/*.txt?rename=false
) - change
tundra.content:translate
to support translation service returning$content
which can be used forIData
tobyte[]
conversions - change
tundra.datetime:format
to support formatting non-String objects - change
tundra.datetime
services to support new named patternseconds
which is the seconds since the unix epoch - change
tundra.document:log
implementation to Java for 10x performance improvement, and add support for an optional log message to prefix the logged IData document - change
tundra.document:substitute
to support replacing an entire value with a non-String value - change
tundra.document:validate
implementation to Java for easier reuse by other components and better performance - change
tundra.file:copy
$mode
input to be named$file.mode
and default tocreate
rather thanappend
, which is now the safest default - change
tundra.file:match
$mode
input to be named$pattern.mode
to remove ambiguity - change
tundra.file:process
$mode
input to be named$file.mode
and add support forcreate
mode which will not overwrite the file if it already exists - change
tundra.file:read
$mode
input to be named$content.mode
, and$encoding
to be named$content.encoding
to remove ambiguity - change
tundra.file:touch
to allow file creation to be optional rather than mandatory - change
tundra.file:touch
to support specifying the last modification datetime to use when touching the file - change
tundra.file:write
$mode
input to be named$file.mode
and default tocreate
rather thanappend
, which is now the safest default - change
tundra.gzip:compress
to use$content.mode
and$content.encoding
inputs rather than$mode
and$encoding
respectively to remove ambiguity - change
tundra.gzip:decompress
to use$content.mode
and$content.encoding
inputs rather than$mode
and$encoding
respectively to remove ambiguity - change
tundra.html:emit
to remove support for table dimension limits - change
tundra.http.response:handle
to include HTTP request context (URI, response status code and message, and headers) in exception if applicable - change
tundra.http.response:handle
to treat4xx
response codes other than429
as unrecoverable failures - change
tundra.http:client
to default password to an empty string if a user and no password has been specified in the request credentials - change
tundra.list.document:substitute
to support replacing an entire value with a non-String value - change
tundra.list.object:difference
to return$list.length
with the number of items in the returned$list
results - change
tundra.list.string:difference
to return$list.length
with the number of items in the returned$list
results - change
tundra.list.string:substitute
to support replacing an entire value with a non-String value - change
tundra.mesesage:route
to use newtundra.zip:decompress
inputs - change
tundra.pipeline:log
implementation to Java for 10x performance improvement, and add support for an optional log message to prefix the logged pipeline - change
tundra.pipeline:substitute
to support replacing an entire value with a non-String value - change
tundra.schema.content.retrieve:processor
schema to optionally support providing the content creation and update datetimes to the content processing service - change
tundra.security.content:digest
input and output parameter names for clarity and consistency - change
tundra.service:respond
input names to be prefixed withresponse
for clarity - change
tundra.service:respond
to make input argument$response.code
optional and default to HTTP 200 OK response if not specified - change
tundra.service:respond
to rename$encoding
input parameter to$content.encoding
to remove ambiguity - change
tundra.soap.fault:accept
to serialize fault to minified JSON in exception message for brevity - change
tundra.string.base64:decode
to use new input parameters when callingtundra.base64:decode
- change
tundra.string.base64:enocde
to use new input parameters when callingtundra.base64:encode
- change
tundra.string:lines
to support both CRLF and LF line endings - change
tundra.string:substitute
to support replacing an entire value with a non-String value - change
tundra.support.receive:respond
to use the thrown exception's innermost cause when determining the HTTP response status code, which affectsTundra/tundra.message:receive
andTundraTN/tundra.tn:receive
- change
tundra.uri:substitute
to also support URI template variable curly bracket delimiters - change
tundra.xml:canonicalize
services to use$content.encoding
and$content.mode
instead of$encoding
and$mode
to remove ambiguity - change
tundra.xml:emit
services to use$content.encoding
and$content.mode
instead of$encoding
and$mode
to remove ambiguity - change
tundra.xml:minify
services to use$content.encoding
and$content.mode
instead of$encoding
and$mode
to remove ambiguity - change
tundra.xml:parse
services to use$content.encoding
and$content.namespace
instead of$encoding
and$namespace
to remove ambiguity - change
tundra.xpath:exists
to use$content.encoding
and$content.namespace
instead...
v0.0.34
The changes included in this release are as follows:
- add
tundra.bool:random
,tundra.bytes:random
,tundra.decimal:random
, andtundra.integer:random
, for returning cryptographically strong randomly generated numbers - add
tundra.collection.map.*:documentify
to convert aMap
object to anIData
document - add
tundra.configuration:clear
andtundra.configuration:refresh
for clearing the in-memory cache and refreshing the in-memory cache respectively - add
tundra.document:capitalize
andtundra.list.document:capitalize
for capitalizing strings inIData
documents andIData[]
document lists - add
tundra.schedule:runnable
to determine if a scheduled task should run or continue to run based on the task's state and the server's task scheduler's state - add
tundra.soap.fault:accept
to provide a fault handler that does not thow an exception - add
tundra.string:translate
for translating arbitrarily specified string values using a translation table - add
tundra.thread:prioritize
for changing the priority of the current thread - add experimental HTTP logging feature, disabled by default; to enable run
tundra.support.http.log:start
and then HTTP requests will be logged in./logs/tundra-http.log
, and then to disable runtundra.support.http.log:stop
- change
./pub/service/statistics.dsp
to also show the number of successful and failed invocations for each sampled service - change
tundra.assertion.document:equal
andtundra.assertion.document:unequal
to ignore key position by default - change
tundra.assertion.list.document:equal
andtundra.assertion.list.document:unequal
to ignore key position by default - change
tundra.configuration:list
to return list and document lengths - change
tundra.content:emit
to usetundra.xml:encode
for escaping values prior to XML serialization, and therefore attributes values will now be escaped in a way that preserves whitespace characters - change
tundra.content:emit
use oftundra.xml:encode
to support custom XML attribute prefixes - change
tundra.content:retrieve
server log statement format to be consistent - change
tundra.csv:emit
andtundra.csv:parse
to support customizing the escape character, quote character, and quote mode used - change
tundra.csv:emit
to support serializing aString[]
string list of values in addition to anIData[]
document list of records - change
tundra.csv:parse
to support the string$null
as a way of disabling quoting completely via the quote character input argument - change
tundra.document:amend
and dependent services to supportmerge
,create
,update
, anddelete
actions on key value pairs - change
tundra.document:condense
andtundra.list.document:condense
to support condensing keys as well as values - change
tundra.document:emit
andtundra.document:parse
input argument names to be consistent, and to support XML, JSON, and YAML formats as per thetundra.pipeline:emit
andtundra.pipeline:parse
services respectively - change
tundra.excel:emit
input argument names to be consistent - change
tundra.file:write
to support newcreate
mode which will throw an exception if the file already exists - change
tundra.hjson:emit
andtundra.hjson:parse
input argument names to be consistent - change
tundra.html:emit
input argument names to be consistent - change
tundra.http:client
to rename$service
input to$response.handler
to not clash with other more generic uses of the$service
variable name - change
tundra.http:client
to silently support allpub.client:http
inputs - change
tundra.json:emit
andtundra.json:parse
input argument names to be consistent - change
tundra.json:emit
andtundra.json:parse
to improve performance by 1000x or more by using theorg.glassfish.json
implementation classes directly, which avoids the disk access caused by the class loading in thejavax.json.spi.JsonProvider.provider()
method on every invocation - change
tundra.object:convert
to support$mode
ofbase64
- change
tundra.pipeline:emit
andtundra.pipeline:parse
input argument names to be consistent - change
tundra.service:ensure
andtundra.service:invoke
to support changing the current thread's priority before service invocation - change
tundra.string:capitalize
to support capitalizing arbitrarily specifiedString
,String[]
, andString[][]
values - change
tundra.string:concatenate
to support sanitizingIData
operands - change
tundra.string:condense
to support condensing arbitrarily specifiedString
,String[]
, andString[][]
values - change
tundra.string:slice
to support slicing arbitrarily specifiedString
,String[]
, andString[][]
values - change
tundra.string:split
to support splitting arbitrarily specified strings - change
tundra.user:current
to use current invoke state user for implementation - change
tundra.xml:emit
andtundra.xml:parse
input argument names to be consistent - change
tundra.xml:encode
to support custom XML attribute prefixes - change
tundra.yaml:emit
andtundra.yaml:parse
input argument names to be consistent - change
./pub/**/*.dsp
web page styles to give sortable table headings sortable affordances, such as showing which column has been sorted and in which direction, and changing the mouse cursor to be a pointer when hovering over headings that support sorting via a mouse click, and also update to use a grey colour schema to clash less with the new styling used in Integration Server 10.x - fix
tundra.configuration:get
NullPointerException
when password cannot be retrieved from password store to be ignored - fix
tundra.duration:multiply
to correctly format output using specified pattern - fix
tundra.schedule:create
to not modify$schedule
input parameter - fix
tundra.string:concatenate
to not return anything when given all null input arguments - rename
tundra.soap.fault:handle
totundra.soap.fault:raise
To install, download Tundra-v0.0.34.zip
, copy to IntegrationServer/replicate/inbound
, install the release via the package management web page.
v0.0.33
The changes included in this release are as follows:
- add
tundra.directory:tar
for adding files in a given directory to a new tar archive, optionally compressed with gzip - add
tundra.directory:zip
for compressing files in a given directory into a zip archive - add
tundra.mime.type:extensions
for returning the file extensions associated with a given MIME type - add Tundra > Service Statistics web dashboard for collecting and viewing service execution duration statistics
- change
tundra.content.retrieve:file
to purge the archive directory on a different thread to the main thread which is now used exclusively for processing inbound files, and to purge less frequently - change
tundra.directory:ls
to return a sorted listing and to also return the length of the listing - change
tundra.document:join
to support converting nulls to blanks sanitization - change
tundra.file:write
service comment to reflect that this service attempts to create the directories comprising the file path if the path does not already exist before writing the file - change
tundra.http:client
to support JSSE and fallback to non-JSSE automatically if TLS 1.1 or higher is not supported by the HTTP server - change
tundra.list.object:join
to support converting nulls to blanks sanitization - change
tundra.list.string:join
to support converting nulls to blanks sanitization - change
tundra:test
to invoke sibling:setup
and:teardown
services, if they exist alongside the test case service, before and after the test case executes respectively; also now supports executing tests using multiple threads - fix
./pub/assets/icons
to be accessible byAdministrators
andDevelopers
- fix
tundra.content.retrieve:ftp
to not include an extraneous/
character between the path and file components of the$content.source
argument provided to the content processing service - fix
tundra.content.retrieve:sftp
to not include an extraneous/
character between the path and file components of the$content.source
argument provided to the content processing service - fix
tundra.system:reflect
to correctly handle non-String properties - fix
tundra.xml:decode
to correctly decode XML character entities - fix
tundra.xml:encode
to correctly encode XML character entities; previously this service incorrectly used some HTML character entities which are not supported in XML - fix the problem reported in Software AG Empower KB article 1780344 "webMethods CloudStreams Server - WmCloudstream package is partially loaded" by removing the dependency on the spring framework to avoid version clashes with other Software AG components that depend on spring, such as webMethods CloudStreams
To install, download Tundra-v0.0.33.zip
, copy to IntegrationServer/replicate/inbound
, install the release via the package management web page.
v0.0.32
The changes included in this release are as follows:
- add
tundra.configuration:peek
for inspecting and verifying an on disk package configuration without affecting the cached configuration - add
tundra.datetime:timezone
for returning information about the time zone of a given datetime string - add
tundra.document:empty
which returns a newly created emptyIData
document - add
tundra.excel:emit
for serializing anIData
document to a Microsoft Excel spreadsheet - add
tundra.excel:parse
for deserializing a Microsoft Excel spreadsheet to anIData
document - add
tundra.list.document:find
for filtering anIData[]
document list by values associated with a given key containing a given pattern - add
tundra.list.document:match
for filtering anIData[]
document list by values associated with a given key that match a given pattern - add
tundra.schedule:invoke
for manually invoking a scheduled task's service with it's configured input pipeline - add
tundra.string:prefixed
to check if a given string starts with a given prefix - add
tundra.string:suffixed
to check if a given string ends with a given suffix - add
tundra.string:wrap
for breaking a string into lines of a specified length - change
tundra.list.document:group
to return list lengths in returned group structure for convenience - change
tundra.list.string:match
to improve performance by avoiding reallocation of result arrays - change
tundra.support.http.connect:response
to return HTML doctype in response body - change
tundra.xml:validate
to throw either aMalformedException
if the XML is malformed, or aValidationException
if a schema is specified and the XML is invalid, when$raise?
istrue
- fix
tundra.datetime:add
to correctly handle negative non-XML durations - fix
tundra.datetime:parse
service comment formatting in Designer - fix
tundra.datetime:subtract
to correctly handle negative non-XML durations - fix
tundra.decimal:*
services to accept decimals using scientific notation as input, but to always return results normalized as plain decimal strings - fix
tundra.directory:*
services to correctly handleFile.listFiles()
returning null - fix
tundra.list.string:find
input name to be$pattern.literal?
rather than$literal?
- fix
tundra.list.string:match
input name to be$pattern.literal?
rather than$literal?
- fix
tundra.string:squeeze
to not return null when input is null or missing - fix
tundra.timezone:*
services to correctly handleGMT+hh:mm
andGMT-hh:mm
time zone IDs - fix
tundra.xml:encode
to declare correct input and output variables
To install, download Tundra-v0.0.32.zip
, copy to IntegrationServer/replicate/inbound
, install the release via the package management web page, and restart Integration Server.
v0.0.31
The changes included in this release are as follows:
- add
tundra.document:condense
for replacing runs of multiple whitespace characters with a single space - add
tundra.duration:start
andtundra.duration:end
for using monotonic time to reliably measure elapsed durations - add
tundra.list.document:condense
for replacing runs of multiple whitespace characters with a single space - add
tundra.scheduler:pause
to pause the scheduled task manager from running any tasks - add
tundra.scheduler:resume
to resume the scheduled task manager running tasks - add
tundra.scheduler:status
to return the current status of the scheduled task manager - add
tundra.string:build
to efficiently build a string using ajava.lang.StringBuilder
object - add
tundra.string:condense
for replacing runs of multiple whitespace characters with a single space - add
tundra.list.integer:add
for calculating an addition using each item in a list of integers - add
tundra.list.integer:divide
for calculating a division using each item in a list of integers - add
tundra.list.integer:multiply
for calculating a multiplication using each item in a list of integers - add
tundra.list.integer:remainder
for calculating a division remainder using each item in a list of integers - add
tundra.list.integer:subtract
for calculating a subtraction using each item in a list of integers - add
tundra.sap.idoc:identify
to assign aDOCNUM
to each item in a givenIDocList
equal to its list index - add
tundra.sap.idoc:length
to return the length of a givenIDocList
- add
tundra.sap.idoc:partition
to partition a givenIDocList
into a newIDocList[]
where each item contains at most the given limit - change
tundra.content.deliver:ftp
to support relative paths, which can be specified with a path starting with the prefix./
, for example:ftp://example.com/./relative/path/file
- change
tundra.content.deliver:sap_idoc
to support partitioning an IDoc batch delivery into multiple TIDs using the limit query string value or$limit
pipeline argument - change
tundra.content.deliver:sftp
to default to treating a URI that does not specify a path as being an absolute path to the root of the file system - change
tundra.content.deliver:sftp
to use the given filename with a.tmp
suffix when writing the temporary file prior to renaming when the rename option is enabled - change
tundra.content.retrieve:file
working and archive file names to use both current datetime (yyyyMMddHHmmssSSS
) to provide the file processing datetime, and a newly-generated UUID to provide uniqueness - change
tundra.content.retrieve:ftp
to default to treating paths as absolute unless they start with the prefix./
to indicate that a relative path is being specified - change
tundra.content.retrieve:ftp
to rename each file to have a.tmp
suffix prior to retrieval - change
tundra.content.retrieve:sftp
to default to treating a URI that does not specify a path as being an absolute path to the root of the file system - change
tundra.content.retrieve:sftp
to rename each file to have a.tmp
suffix prior to retrieval - change
tundra.csv:emit
to support CSVs without header rows - change
tundra.csv:parse
to support CSVs without header rows - change
tundra.datetime:emit
to supportjava.lang.Number
andjava.util.Calendar
objects, in addition tojava.util.Date
objects - change
tundra.document:keys
to support filtering on associated values, and also return the length of the$keys
list as$keys.length
- change
tundra.duration:*
services to support nanosecond precision - change
tundra.list.string:find
to support literal patterns and use input arguments consistent withtundra.document
regular expression services - change
tundra.list.string:lowercase
implementation to Java for better performance - change
tundra.list.string:match
to support literal patterns and use input arguments consistent withtundra.document
regular expression services - change
tundra.list.string:remove
to support literal patterns and use input arguments consistent withtundra.document
regular expression services - change
tundra.list.string:replace
to support literal patterns and use input arguments consistent withtundra.document
regular expression services - change
tundra.list.string:split
to support literal patterns and use input arguments consistent withtundra.document
regular expression services - change
tundra.list.string:squeeze
implementation to Java for better performance - change
tundra.list.string:trim
implementation to Java for better performance - change
tundra.list.string:uppercase
implementation to Java for better performance - change
tundra.mime.type:classify
implementation to Java for better performance - change
tundra.string:find
to support literal patterns and use input arguments consistent withtundra.document
regular expression services - change
tundra.string:match
to support literal patterns and use input arguments consistent withtundra.document
regular expression services - change
tundra.string:remove
to support literal patterns and use input arguments consistent withtundra.document
regular expression services - change
tundra.string:replace
to support literal patterns and use input arguments consistent withtundra.document
regular expression services - change
tundra.string:split
to support literal patterns and use input arguments consistent withtundra.document
regular expression services - deprecate
tundra.string:squeeze
, usetundra.string:condense
instead - fix
./pub/service/usage.dsp
rowspan bug for Event Manager threads - fix
tundra.content.deliver:sap_idoc
to work around the WmSAP hard limit of 9,999 items in aIDocList
by assigningDOCNUM
explicitly to be each item's respective list index - fix
tundra.content.deliver:sftp
when renaming from a temporary file name and therefore overwriting the destination file, to first delete the destination file before attempting the rename so that if the file already exists it will be overwritten - fix
tundra.string:split
input argument to be correctly named$pattern.literal?
To install, download Tundra-v0.0.31.zip
, copy to IntegrationServer/replicate/inbound
, install the release via the package management web page, and restart Integration Server.
v0.0.30
The changes included in this release are as follows:
- add
tundra.integer:format
as an alias fortundra.decimal:format
- add
tundra.pipeline:squeeze
for recursively trimming string values, removing empty string values, arrays, andIData
documents, and removing nulls from the pipeline - add
tundra.pipeline:trim
for recursively trimming all string values of leading and trailing whitespace in the pipeline - change
tundra.content.retrieve:file
to process files in ascending filename order - change
tundra.content:deliver
to supportsftp
delivery on Integration Server versions 9.0 and higher - change
tundra.content:retrieve
to supportsftp
retrieval on Integration Server versions 9.0 and higher - change
tundra.datetime:format
to support formatting one or more arbitrarily specified datetime strings in one invocation - change
tundra.decimal:format
to support formatting one or more arbitrarily specified datetime strings in one invocation - change
tundra.duration:format
to support formatting one or more arbitrarily specified datetime strings in one invocation - change
tundra.html:decode
to support decoding one or more arbitrarily specified string values in one invocation - change
tundra.html:encode
to support encoding one or more arbitrarily specified string values in one invocation - change
tundra.http.response:accept
to drop null response body from$response
argument - change
tundra.pipeline:emit
to support JSON and YAML content in addition toIData
XML content - change
tundra.pipeline:parse
to support JSON and YAML content in addition toIData
XML content - change
tundra.support.receive:respond
to not return exception class in the HTTP response body when handling exceptions - change
tundra.uri:decode
to support decoding one or more arbitrarily specified string values in one invocation - change
tundra.uri:emit
to support unadorned path strings and files - change
tundra.uri:encode
to support encoding one or more arbitrarily specified string values in one invocation - change
tundra.uri:parse
to support unadorned path strings and files - change
tundra.xml:decode
to support decoding one or more arbitrarily specified string values in one invocation - change
tundra.xml:encode
to support encoding one or more arbitrarily specified string values in one invocation - fix
tundra.content.deliver:http
to work correctly even if pipeline already contains anIData
document named$document
- fix
tundra.content.retrieve:ftp
to allow arbitrary variables to be passed in the pipeline to the file processing service - fix
tundra.content:retrieve
to work correctly for theftp
protocol when the file retrieve fails - fix
tundra.http:client
to correctly default$request/method
toget
when not specified - fix
tundra.support:access
to drop unrequired$nodes
variable - fix
tundra.uri:emit
to work correctly for opaque URIs with a body but no query string
To install, download Tundra-v0.0.30.zip
, copy to IntegrationServer/replicate/inbound
, install the release via the package management web page, and restart Integration Server.
v0.0.29
The changes included in this release are as follows:
- add
tundra.bytes:transcode
for converting abyte[]
containing text data from one character set to another - add
tundra.document:flip
which flips a givenIData
document so that the keys become the values and the values become the keys - add
tundra.document:legalize
for converting to legal Java identifiers either the keys, values, or both keys and values of a givenIData
document - add
tundra.document:lowercase
for converting to lowercase either the keys, values, or both in a givenIData
document - add
tundra.document:prefix
for prepending a given prefix to the keys, or values, or both in a givenIData
document - add
tundra.document:remove
for removing a pattern from either the values, keys, or both keys and values of a givenIData
document - add
tundra.document:replace
for replacing a pattern in either the values, keys, or both keys and values of a givenIData
document - add
tundra.document:suffix
for appending a given suffix to the keys, or values, or both in a givenIData
document - add
tundra.document:unprefix
for removing a given prefix from the keys, or values, or both in a givenIData
document - add
tundra.document:unsuffix
for removing a given suffix from the keys, or values, or both in a givenIData
document - add
tundra.document:uppercase
for converting to uppercase either the keys, values, or both in a givenIData
document - add
tundra.integer:rebase
for converting an integer string from one radix to another - add
tundra.list.document:flip
which flips a givenIData[]
document list so that the keys become the values and the values become the keys - add
tundra.list.document:lowercase
for converting to lowercase either the keys, values, or both in a givenIData[]
document list - add
tundra.list.document:prefix
for prepending a given prefix to the keys, or values, or both in a givenIData[]
document list - add
tundra.list.document:remove
for removing a pattern from either the values, keys, or both keys and values of a givenIData[]
document list - add
tundra.list.document:replace
for replacing a pattern in either the values, keys, or both keys and values of a givenIData[]
document list - add
tundra.list.document:suffix
for appending a given suffix to the keys, or values, or both in a givenIData[]
document list - add
tundra.list.document:trim
for trimming leading and trailing whitespace from either the keys, values, or both, in a givenIData[]
document list - add
tundra.list.document:unprefix
for removing a given prefix from the keys, or values, or both in a givenIData[]
document list - add
tundra.list.document:unsuffix
for removing a given suffix from the keys, or values, or both in a givenIData[]
document list - add
tundra.list.document:uppercase
for converting to uppercase either the keys, values, or both in a givenIData[]
document list - add
tundra.list.exception:raise
for throwing a new exception whose message is the concatenation of the messages from the given list of exceptions - add
tundra.list.object:create
for creating a new empty array with a given length for the given component class - add
tundra.message:connect
to allow a client to test connecting to and authenticating with Integration Server - add
tundra.soap.fault:handle
for handling SOAP faults by throwing an exception - add
tundra.stream:transcode
for converting ajava.io.InputStream
containing text data from one character set to another - add
tundra.string:legalize
for converting a given string to a legal Java identifier - add
tundra.uuid:generate
for generating a new UUID - change
tundra.bytes:normalize
to return the$encoding
used - change
tundra.collection.list.document:append
to not recurse$items
structure and instead only use the top-level objects instead - change
tundra.collection.list.document:insert
to not recurse$items
structure and instead only use the top-level objects instead - change
tundra.collection.list.document:prepend
to not recurse$items
structure and instead only use the top-level objects instead - change
tundra.collection.list.object:append
to not recurse$items
structure and instead only use the top-level objects instead - change
tundra.collection.list.object:insert
to not recurse$items
structure and instead only use the top-level objects instead - change
tundra.collection.list.object:prepend
to not recurse$items
structure and instead only use the top-level objects instead - change
tundra.collection.list.string:append
to not recurse$items
structure and instead only use the top-level objects instead - change
tundra.collection.list.string:insert
to not recurse$items
structure and instead only use the top-level objects instead - change
tundra.collection.list.string:prepend
to not recurse$items
structure and instead only use the top-level objects instead - change
tundra.configuration:get
to support resolving variable subsitution%key%
substrings against the configuration itself, allowing for configuration values to be built from other configuration values to reduce repetition - change
tundra.content.retrieve:file
to attempt to move a file that has failed to process back to its original location and name so that it will be retried next time the service runs, and to return any exceptions encountered while processing in the output pipeline - change
tundra.content.retrieve:file
to include$content.length
in the input pipeline when calling the file processing service - change
tundra.content.retrieve:file
to use a newly generated UUID for the suffix used on files while processing - change
tundra.content:deliver
to drop$encoding
after call totundra.xml:emit
- change
tundra.content:retrieve
to rethrow any exceptions returned by the handler service - change
tundra.content:retrieve
to rethrow exceptions encountered during FTP retrievals - change
tundra.content:retrieve
to support FTP and FTPS file retrieval - change
tundra.document:get
to replace$default.object
and$default.string
inputs with$value.default
- change
tundra.document:get
to return$value.list
when the value associated with the given$key
is a list - change
tundra.document:log
to drop unused variables - change
tundra.duration:format
to support a list of possible duration patterns used to parse the input duration string, which is useful when the exact pattern is not known - change
tundra.file:process
to support specifying whether to rethrow exceptions encountered while processing via$raise?
input argument - change
tundra.http.response:accept
to drop$encoding
after call totundra.bytes:normalize
- change
tundra.http.route
implementation to returnX-Response-Duration
header in HTTP responses - change
tundra.list.object:partition
output$results/remainder
to be optional - change
tundra.message:receive
to extract the response handling code intotundra.support.receive:respond
- change
tundra.message:receive
to usetundra.service:invoke
instead oftundra.service:ensure
for a simpler implementation - change
tundra.message:retrieve
to support FTP and FTPS file retrieval - change
tundra.object:coalesce
to not recurse$operands
structure and only work on top-level objects instead - change
tundra.object:coalesce
to support arbitrarily specified inputs for coalescing - change
tundra.pipeline:log
to drop unused variables - change
tundra.schema.content.retrieve:handler
to support handler service optionally returning a list ofjava.lang.Throwable
exception objects thrown while processing the retrieved content - change
tundra.schema.content.retrieve:processor
to include new optional input$content.length
- change
tundra.service:benchmark
to exclude their input arguments from the subsequent invocation pipeline - change
tundra.service:callstack
to return$caller.initiator
, which is the top-level service in the current call stack - change
tundra.service:defer
to exclude their input arguments from the subsequent invocation pipeline - change
tundra.service:ensure
to exclude their input arguments from the subsequent invocation pipeline - change
tundra.service:ensure
to support catch and finally specific pipelines - change
tundra.service:fork
to exclude their input arguments from the subsequent invocation pipeline - change
tundra.service:invoke
to exclude their input arguments from the subsequent invocation pipeline - change
tundra.service:invoke
to log unthrown exceptions to the error log - change
tundra.stream:normalize
to return the$encoding
used - change
tundra.string:coalesce
to not recurse$operands
structure and only work on top-level objects instead - change
tundra.string:coalesce
to support arbitrarily specified inputs for coalescing - change
tundra.xml:emit
to return the$encoding
used - change
tundra:log
to drop unused variables - deprecate
tundra.document.key:lowercase
, usetundra.document:lowercase
instead - deprecate
tundra.document.key:normalize
, usetundra.document:legalize
instead - deprecate
tundra.document.key:remove
, usetundra.document:remove
instead - deprecate
tundra.document.key:replace
, usetundra.document:replace
instead - deprecate
tundra.document.key:trim
, usetundra.document:trim
instead - deprecate
tundra.document.key:uppercase
, usetundra.document:uppercase
instead - deprecate
tundra.document.value:lowercase
, usetundra.document:lowercase
instead - deprecate
tundra.document.value:remove
, usetundra.document:remove
instead - deprecate
tundra.document.value:replace
, usetundra.document:replace
instead - deprecate
tundra.document.value:trim
, usetundra.document:trim
instead - deprecate
tundra.document.value:uppercase
, usetundra.document:uppercase
instead - deprecate
tundra.id:generate
, use `t...