Skip to content

Releases: Permafrost/Tundra

v0.0.18

18 Nov 10:03
Compare
Choose a tag to compare
v0.0.18 Pre-release
Pre-release

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 given IData[] 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:* and tundra.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 of WmPublic/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

10 Nov 00:54
Compare
Choose a tag to compare
v0.0.17 Pre-release
Pre-release

The changes included in this release are as follows:

  • add tundra.list.document:group for grouping like items together in an IData[] document list similar to a SQL GROUP 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

10 Nov 00:31
Compare
Choose a tag to compare
v0.0.16 Pre-release
Pre-release

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 the mail.from property returned by tundra.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 the mail.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:* and tundra.stream:* services from 4096 to 8192 bytes
  • change unit tests from to use the tundra.support.test folder instead of the tundra.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

27 Aug 13:18
Compare
Choose a tag to compare
v0.0.15 Pre-release
Pre-release

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 an IData document to legal Java identifiers by replacing illegal characters with underscores
  • add tundra.document:pivot for iterating over an IData document whose structure is not known
  • add tundra.document:stringify for converting all values in a given IData 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 given IData[] document list
  • add tundra.list.document:pivot for converting an IData[] document list to an IData 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 separate TundraTest package, as version management across Tundra and TundraTest 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 delivering IData documents by first serializing the document prior to delivery
  • change tundra.content:deliver to support ftp delivery scheme
  • change tundra.content:deliver to support jms delivery scheme
  • change tundra.content:deliver to support sap+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 an Object[]
  • change tundra.duration:* services to return nothing if no input was specified, rather than returning null
  • change tundra.http.response:handle to use tundra.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 input IData[] object before sorting, rather than mutating the original IData[] 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

18 Aug 04:44
Compare
Choose a tag to compare
v0.0.14 Pre-release
Pre-release

The changes included in this release are as follows:

  • add tundra.content:deliver protocol handlers to the Tundra public API in the folder tundra.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 embedded com.wm.data.IData, com.wm.util.Table, and com.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 empty com.wm.data.IData and java.lang.Object[] objects
  • change tundra.list.document:compact to support recursively compacting embedded com.wm.data.IData, com.wm.util.Table, and com.wm.data.IData[] objects
  • change tundra.list.document:squeeze to remove empty com.wm.data.IData and java.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 key com.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

13 Feb 11:33
Compare
Choose a tag to compare
v0.0.13 Pre-release
Pre-release

The changes included in this release are as follows:

  • change tundra.content:discard implementation to use tundra.service:respond
  • change tundra.content:reject implementation to use tundra.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

13 Feb 11:30
Compare
Choose a tag to compare
v0.0.12 Pre-release
Pre-release

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

13 Feb 11:23
Compare
Choose a tag to compare
v0.0.11 Pre-release
Pre-release

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 calling pub.client:http; instead the user and password is provided in the auth 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

13 Feb 11:19
Compare
Choose a tag to compare
v0.0.10 Pre-release
Pre-release

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, and tundra.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 a tundra.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 and tundra.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

13 Feb 11:14
Compare
Choose a tag to compare
v0.0.9 Pre-release
Pre-release

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.