Releases: Permafrost/Tundra
v0.0.18
The changes included in this release are as follows:
- add
tundra.list.document:values
for returning a list of values associated with a given$key
from the respective items in the givenIData[]
document list - add
tundra.list.string:coalesce
for returning the first non-null item in a given string list - add
tundra.string.base64:decode
service for convenience when working with base-64 encoded strings in Developer or Designer - add
tundra.string.base64:encode
service for convenience when working with base-64 encoded strings in Developer or Designer - add
tundra.string:coalesce
for returning the first non-null string argument - change
tundra.content:emit
to return$content.type
and$encoding
, which is useful for knowing the inferred values when not provided as an input arguments - change
tundra.document:get
to support optionally specifying a default value to be returned when either the given$key
doesn't exist or when it is associated with a null value - change
tundra.duration:*
andtundra.list.duration:*
services to support specifying different input and output duration patterns - change
tundra.service:ensure
to include$exception.service
,$exception.package
, and the output ofWmPublic/pub.flow:getLastError
as$exception.info
in the$catch
service's input pipeline when an exception is thrown by$service
- change default character encoding to be UTF-8 rather than the JVM default charset
- fix
tundra.list.document:group
to correctly handle grouping key value tuples where the values are null - fix
tundra.xml:validate
to not return$errors
as null when there are no errors
To install, download Tundra-v0.0.18.zip
, copy to IntegrationServer/replicate/inbound
, and install the release via the package management web page.
v0.0.17
The changes included in this release are as follows:
- add
tundra.list.document:group
for grouping like items together in anIData[]
document list similar to a SQLGROUP BY
clause
To install, download Tundra-v0.0.17.zip
, copy to IntegrationServer/replicate/inbound
, and install the release via the package management web page.
v0.0.16
The changes included in this release are as follows:
- add
tundra.document:blankify
for converting all null values in an IData document to empty strings - add
tundra.list.document:first
for returning the first item in a given list - add
tundra.list.document:last
for returning the last item from a given list - add
tundra.list.object:first
for returning the first item from a list - add
tundra.list.object:last
to return the last item from a given list - add
tundra.list.string:first
to return the first item in a given list - add
tundra.list.string:last
to return the last item from a given list - add
tundra.pipeline:sort
for sorting the pipeline's top-level keys in natural ascending order - add
tundra.service:create
for creating a new empty flow service in an existing package - add
tundra.service:defer
for running services asynchronously on a single dedicated thread; the thread pool is created on first use, instead of at package startup, so that if the service is never used, no thread pool will ever get created - add
tundra.string:blankify
which returns an empty string if given a null string, otherwise returns the given string unchanged - add
tundra.string:capitalize
for converting the first character in either the first word or all words to upper case - add
tundra.string:characters
for returning a list of characters from a given string - add
tundra.string:compare
for lexicographically comparing two strings - add
tundra.xml:canonicalize
for converting XML content to canonical form - change
tundra.content.deliver:mailto
to not compute the from email address if not provided, and instead use themail.from
property returned bytundra.system:reflect
- change
tundra.datetime:earlier
to support optionally specifying the timezone for the returned datetime - change
tundra.datetime:emit
to support optionally specifying the timezone for the returned datetime - change
tundra.datetime:format
to support optionally specifying the timezone for the returned datetime - change
tundra.datetime:later
to support optionally specifying the timezone for the returned datetime - change
tundra.datetime:now
to support optionally specifying the timezone for the returned datetime - change
tundra.decimal:add
to include a singleton input decimal to make it easier to use in a transformer with a hard-coded value - change
tundra.decimal:multiply
to include a singleton$decimal
input variable to make the service easier to use as a transformer - change
tundra.integer:add
to include a singleton input integer to make it easier to use in a transformer when adding a hard-coded value - change
tundra.integer:multiply
to include a singleton input integer to make it easier to use in a transformer when multiplying by a hard-coded value - change
tundra.json:*
services to use latest version of javax.json library, v1.0.4 - change
tundra.list.datetime:format
to support$patterns.input
and$timezone.output
arguments - change
tundra.list.document:sort
to support sorting integers, decimals, datetimes, and durations, as well as strings; also disallow null$criteria/key
input - change
tundra.pipeline:parse
to disable output pipeline validation as its not required, and to include URL for the default charset link in the service comment - change
tundra.service:benchmark
to return the minimum and maximum durations - change
tundra.service:self
to return nothing rather than null, if invoked directly; change implementation to be more efficient - change
tundra.system:reflect
to compute a value for themail.from
system property, if it is not already set (value will be computed as "Integration-Server@" + fully-qualified domain name of the server) - change
tundra.timezone:get
to support a time zone ID of$default
which represents the default or local host time zone - change default buffer size used by the
tundra.bytes:*
andtundra.stream:*
services from 4096 to 8192 bytes - change unit tests from to use the
tundra.support.test
folder instead of thetundra.test
folder, as they are not part of the public API of the package - fix
tundra.document:stringify
to not return a null value when no input$document
is specified - fix
tundra.string:normalize
to not return anything when$object
is null
To install, download Tundra-v0.0.16.zip
, copy to IntegrationServer/replicate/inbound
, and install the release via the package management web page.
v0.0.15
The changes included in this release are as follows:
- add
tundra.csv.mime.type:check
which returns true if the given MIME media type is a recognised CSV type - add
tundra.csv:emit
for serializing CSV content - add
tundra.csv:parse
for deserializing CSV content - add
tundra.datetime:earlier
for returning current datetime minus a given duration - add
tundra.datetime:later
for returning the current datetime plus a given duration - add
tundra.datetime:maximum
for returning the largest datetime in a given list - add
tundra.datetime:minimum
for returning the smallest datetime in a given list - add
tundra.decimal:emit
for converting Java decimal objects to strings - add
tundra.decimal:parse
for converting strings to Java decimal objects - add
tundra.directory:purge
for (optionally recursively) deleting files older than a given age from a given directory - add
tundra.directory:reflect
for returning meta-data about a given directory - add
tundra.document.key:normalize
for converting all keys in anIData
document to legal Java identifiers by replacing illegal characters with underscores - add
tundra.document:pivot
for iterating over anIData
document whose structure is not known - add
tundra.document:stringify
for converting all values in a givenIData
document to strings - add
tundra.file:reflect
for returning meta-data about a given file - add
tundra.http.response:accept
which is a response handler that accepts all response codes - add
tundra.id:normalize
for converting a string to a legal Java identifier by replacing illegal characters with underscores - add
tundra.integer:emit
for converting Java integer objects to strings - add
tundra.integer:parse
for converting strings to Java integer objects - add
tundra.json.content.type:check
which returns true if the given MIME media type is a recognised JSON media type - add
tundra.json:emit
for serializing JSON content - add
tundra.json:parse
for deserializing JSON content - add
tundra.list.document:keys
which returns a union set of all top-level keys for each item in the givenIData[]
document list - add
tundra.list.document:pivot
for converting anIData[]
document list to anIData
document - add
tundra.list.string:find
for checking if the items in the given list include the given regular expression or literal string pattern - add
tundra.list.string:quote
for constructing a regular expression that matches any of the literal strings in the given list - add
tundra.service:reflect
for returning meta-data about a given service - add
tundra.string:capture
for matching a regular expression pattern against a string and returning the associated capturing groups - add
tundra.string:find
for partial regular expression and literal pattern matching - add
tundra.string:pad
for left and right padding of strings - add
tundra.string:slice
for forward and reverse indexed substrings - add
tundra.test
unit test services, deprecating separateTundraTest
package, as version management acrossTundra
andTundraTest
packages proved too difficult - add
tundra.thread:current
which returns the currently executing thread - add
tundra.thread:list
which returns all threads currently scheduled on the JVM - add
tundra.uri:normalize
for normalizing a URI string - add
tundra.xml.content.type:check
which returns true if the given MIME media type is a recognised XML media type - add
tundra.yaml.mime.type:check
which returns true if the given MIME media type is a recognised YAML type - add
tundra.yaml:emit
for serializing YAML content - add
tundra.yaml:parse
for deserializing YAML content - change
tundra.content:deliver
to not attempt delivery when no destination is specified - change
tundra.content:deliver
to sanitize destination URI scheme when looking for the delivery implementation service by replacing all non-alphanumeric characters with underscores - change
tundra.content:deliver
to support deliveringIData
documents by first serializing the document prior to delivery - change
tundra.content:deliver
to supportftp
delivery scheme - change
tundra.content:deliver
to supportjms
delivery scheme - change
tundra.content:deliver
to supportsap+idoc
delivery scheme - change
tundra.content:deliver
to use charset parameter from$content.type
if$encoding
is not specified - change
tundra.content:discard
to be stateless - change
tundra.content:emit
to support serializing CSV, JSON, and YAML content - change
tundra.content:emit
,tundra.content:parse
, and related services to support XML namespaces - change
tundra.content:parse
to support deserializing CSV, JSON, and YAML content - change
tundra.content:reject
to be stateless - change
tundra.content:retrieve
to append a timestamp to archived file names - change
tundra.content:retrieve
to optionally clean up archived files older than a given age - change
tundra.content:retrieve
to use a working directory when processing files - change
tundra.datetime:format
to accept an array of datetime patterns when the exact pattern is not known - change
tundra.datetime:parse
to accept an array of datetime patterns when the exact pattern is not known - change
tundra.decimal:*
services to support optional inputs - change
tundra.document:duplicate
to return nothing if no input$document
is given, rather than null - change
tundra.document:keys
to retain key order - change
tundra.document:values
to return an array of the nearest ancestor class in common to all values, rather than anObject[]
- change
tundra.duration:*
services to return nothing if no input was specified, rather than returning null - change
tundra.http.response:handle
to usetundra.http.response:accept
in its implementation - change
tundra.http:client
$request/timeout
input to be constrained to an XML duration formatted string [backwards incompatible] - change
tundra.integer:*
services to support optional inputs - change
tundra.list.document:resize
to support specifying a negative length which results in the given list being truncated by that many items - change
tundra.list.document:sort
to support sorting by multiple keys in ascending or descending order - change
tundra.list.object:resize
to support specifying a negative length which results in the given list being truncated by that many items - change
tundra.list.service:chain
to return total invocation duration - change
tundra.list.string:match
to return boolean flags indicating if all, any, or none of the items in the given list matched the given pattern - change
tundra.list.string:match
to support literal patterns as well as regular expression patterns - change
tundra.list.string:resize
to support specifying a negative length which results in the given list being truncated by that many items - change
tundra.object:reflect
to return identity hash code of the object, which can be used to compare object identities - change
tundra.service:benchmark
to first validate the service exists before attempting to benchmark it - change
tundra.service:invoke
to return invocation duration - change
tundra.string:match
to support both regular expression and literal pattern matches - change
tundra.string:quote
input argument to be optional - change
tundra.timezone:get
services to handle custom datetime patterns - change
tundra.timezone:get
to return UTC zone when given timezone ID "Z" - change
tundra.timezone:get
to support retrieving a timezone using either a raw millisecond offset value, an XML duration offset value, or an offset specified in the form (+|-)HH:mm - change
tundra.timezone:list
services to handle custom datetime patterns - change
tundra.timezone:self
services to handle custom datetime patterns - change
tundra.uri:emit
to not include user, password, or fragment in resulting URI string if specified as emtpy strings - fix
tundra.content:deliver
to correctly support additional HTTP settings in$pipeline
- fix
tundra.datetime:add
to work correctly with very large durations (larger than a signed 32-bit integer) - fix
tundra.datetime:subtract
to work correctly with very large durations (larger than a signed 32-bit integer) - fix
tundra.decimal:average
to work correctly when given an empty list - fix
tundra.decimal:maximum
to work correctly when given an empty list - fix
tundra.decimal:minimum
to work correctly when given an empty list - fix
tundra.gzip:compress
to work correctly by first closing the byte array output stream before accessing the underlying byte array - fix
tundra.http:client
to correctly support HTTP PUT method - fix
tundra.list.document:sort
to copy the inputIData[]
object before sorting, rather than mutating the originalIData[]
object - fix
tundra.service:benchmark
NaN NumberFormatException thrown when all sample durations were 0 by returning a standard deviation of 0, rather than attempting a division by zero calculation - fix
tundra.timezone:get
to return nothing when given timezone ID is not found, rather than returning UTC - fix
tundra.uri:parse
to correctly parse opaque URIs that include variable substitution in the query string
To install, download Tundra-v0.0.15.zip
, copy to IntegrationServer/replicate/inbound
, and install the release via the package management web page.
v0.0.14
The changes included in this release are as follows:
- add
tundra.content:deliver
protocol handlers to the Tundra public API in the foldertundra.content.deliver
- add
tundra.list.document:filter
to filter a list with a given conditional statement - add
tundra.list.object:filter
to filter a list with a given conditional statement - add
tundra.list.string:filter
to filter a list with a given conditional statement - add
tundra.schedule:*
services for creating, manipulating, and deleting scheduled tasks - add
tundra.service:benchmark
for measuring the performance of a given service - add
tundra.string:quote
to escape a string value so that it can be used in a regular expression pattern to match the literal value - change
tundra.condition:evaluate
to evaluate null and empty conditions to true - change
tundra.condition:evaluate
to use the exact same implementation of conditional expressions as used by flow branch steps - change
tundra.datetime:*
services to emit XML dates and times without the time zone offset suffix - change
tundra.document:compact
to support recursively compacting embeddedcom.wm.data.IData
,com.wm.util.Table
, andcom.wm.data.IData[]
objects - change
tundra.document:get
to support retrieving values by indexed key from com.wm.util.Table objects - change
tundra.document:keys
to support filtering the returned list of keys with a given regular expression pattern - change
tundra.document:squeeze
to remove emptycom.wm.data.IData
andjava.lang.Object[]
objects - change
tundra.list.document:compact
to support recursively compacting embeddedcom.wm.data.IData
,com.wm.util.Table
, andcom.wm.data.IData[]
objects - change
tundra.list.document:squeeze
to remove emptycom.wm.data.IData
andjava.lang.Object[]
objects - change
tundra.object:reflect
to be able to reflect on a pipeline variable identified by key, which is useful when reflecting on objects that may be lists/array (because mapping them to $object will implicitly dereference the array's zeroth element) - change
tundra.pipeline:get
to support retrieving values by indexed keycom.wm.util.Table
objects - fix
tundra.uri:parse
to correctly handle paths that include variable substitution strings
To install, download Tundra-v0.0.14.zip
, copy to IntegrationServer/replicate/inbound
, and install the release via the package management web page.
v0.0.13
The changes included in this release are as follows:
- change
tundra.content:discard
implementation to usetundra.service:respond
- change
tundra.content:reject
implementation to usetundra.service:respond
To install, download Tundra-v0.0.13.zip
, copy to IntegrationServer/replicate/inbound
, and install the release via the package management web page.
v0.0.12
The changes included in this release are as follows:
- add
tundra.gzip:*
services for compressing and decompressing data using the gzip format - add
tundra.service:initiator
to check if the calling service is the initiating top-level
service for this thread - add
tundra.service:respond
for setting a transport-specific response to be returned to the calling process - add
tundra.timezone:*
services for inspecting time zone offsets - add
tundra.zip:*
services for compressing and decompressing data in the zip format - change
tundra.content:retrieve
to allow the archive directory for file protocol to be configurable via a query string parameter - change
tundra.duration:format
to correctly parse fractional millisecond values - change
tundra.mime.type:parse
to fix typo in service comment
To install, download Tundra-v0.0.12.zip
, copy to IntegrationServer/replicate/inbound
, and install the release via the package management web page.
v0.0.11
The changes included in this release are as follows:
- add
tundra.file:copy
for copying content from a source file to a target file - change
tundra.content:deliver
to fix HTTP and HTTPS delivery compatibility with some web servers by not specifying the user/password in the destination URI when callingpub.client:http
; instead the user and password is provided in theauth
argument - change
tundra.list.document:join
to simplify the default settings to use a single map step - change
tundra.list.document:get
to add$iteration
input argument, to make the service easier to use from within a loop - change
tundra.list.object:get
to add$iteration
input argument, to make the service easier to use from within a loop - change
tundra.list.string:get
to add$iteration
input argument, to make the service easier to use from within a loop - change
tundra.stream:copy
to use default buffer size consistently
To install, download Tundra-v0.0.11.zip
, copy to IntegrationServer/replicate/inbound
, and install the release via the package management web page.
v0.0.10
The changes included in this release are as follows:
- add
tundra.list.*:grow
,:resize
and:shrink
services for resizing lists - add
tundra.list.object:difference
and:intersection
, andtundra.list.string:difference
and:intersection
to return the set difference and intersection of two lists respectively - add
tundra.schema.exception:handler
specification describing the service signature required of atundra.service:ensure
$catch
service - change tundra.assertion.list.object:unequal to fix typo in service comment
- change
tundra.condition:evaluate
to include the ANTLR4 grammar used to generate the parser in the service comments - change
tundra.content:amend
andtundra.document:amend
to add an optional conditional statement to each amendment to control whether the amendment gets applied - change
tundra.decimal:add
to allow nulls in input list, defaulting them to zero - change
tundra.integer:average
,:maximum
, and:minimum
to disallow nulls in input list
To install, download Tundra-v0.0.10.zip
, copy to IntegrationServer/replicate/inbound
, and install the release via the package management web page.
v0.0.9
The changes included in this release are as follows:
- fix
tundra.http:client
variable substitution bug in the resulting exception message when an unexpected HTTP response code is encountered
To install, download Tundra-v0.0.9.zip
, copy to IntegrationServer/replicate/inbound
, and install the release via the package management web page.