Skip to content

Releases: Permafrost/Tundra

v0.0.37

12 Oct 01:23
Compare
Choose a tag to compare
v0.0.37 Pre-release
Pre-release

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 an IData[] document list input
  • add tundra.schedule.create:pivot for creating a list of scheduled tasks from a pivoted IData 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 and tundra.support.system.acl:merge services to support migrating ACLs from one Integration Server instance to another
  • add tundra.support.system.global:export and tundra.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, and feature/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 header Content-Encoding: gzip; the X-Request-Body-Compression header, unlike the standard Content-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 a javax.jms.TextMessage when the content type is a text-based data type, otherwise a javax.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 parameter buffer
  • 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 or jms://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 and tundra.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 and tundra.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 passing trustStore and followRedirect inputs to pub.client:http if they are provided
  • change tundra.list.object:sort and tundra.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, and tundra.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, and tundra.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 just IData 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, and tundra.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 a javax.jms.TextMessage when the content type is a text-based data type, otherwise a javax.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 `...
Read more

v0.0.36

01 Jul 07:26
Compare
Choose a tag to compare
v0.0.36 Pre-release
Pre-release

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 given IData 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 with tundra.content:parse and tundra.content:emit
  • change tundra.content:deliver ftp delivery to support a rename setting which when true 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 with tundra.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 child IData documents and IData[] 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 of file: 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 with file:// URIs
  • fix tundra.list.directory:compact to use a new empty array when calling List.toArray(T[]) method to take advantage of JVM optimizations
  • fix tundra.list.directory:squeeze to use a new empty array when calling List.toArray(T[]) method to take advantage of JVM optimizations
  • fix tundra.list.document:find to use a new empty array when calling List.toArray(T[]) method to take advantage of JVM optimizations
  • fix tundra.list.document:match to use a new empty array when calling List.toArray(T[]) method to take advantage of JVM optimizations
  • fix tundra.list.string:find to use a new empty array when calling List.toArray(T[]) method to take advantage of JVM optimizations
  • fix tundra.list.string:match to use a new empty array when calling List.toArray(T[]) method to take advantage of JVM optimizations
  • fix tundra.node:list to use a new empty array when calling List.toArray(T[]) method to take advantage of JVM optimizations
  • fix tundra.pipeline:clear to not throw java.lang.NullPointerException when $preserve argument is not specified
  • fix tundra.support.content.retrieve.file:reflect to use a new empty array when calling List.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

03 Jul 07:19
Compare
Choose a tag to compare
v0.0.35 Pre-release
Pre-release

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 parameter filemode for specifying the file mode to use when calling tundra.file:write
  • change tundra.content.deliver:http to use new input arguments to tundra.gzip:compress
  • change tundra.content.deliver:jms to provide content schema and content type as JMSMessage properties named Content-Schema and Content-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, and watt.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 parameter updated 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 parameter rename to false (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 parameter updated 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 parameter rename to false (example: sftp://useralias/./path/*.txt?rename=false)
  • change tundra.content:translate to support translation service returning $content which can be used for IData to byte[] conversions
  • change tundra.datetime:format to support formatting non-String objects
  • change tundra.datetime services to support new named pattern seconds 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 to create rather than append, 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 for create 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 to create rather than append, 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 treat 4xx response codes other than 429 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 new tundra.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 with response 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 calling tundra.base64:decode
  • change tundra.string.base64:enocde to use new input parameters when calling tundra.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 affects Tundra/tundra.message:receive and TundraTN/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...
Read more

v0.0.34

06 Aug 07:51
Compare
Choose a tag to compare
v0.0.34 Pre-release
Pre-release

The changes included in this release are as follows:

  • add tundra.bool:random, tundra.bytes:random, tundra.decimal:random, and tundra.integer:random, for returning cryptographically strong randomly generated numbers
  • add tundra.collection.map.*:documentify to convert a Map object to an IData document
  • add tundra.configuration:clear and tundra.configuration:refresh for clearing the in-memory cache and refreshing the in-memory cache respectively
  • add tundra.document:capitalize and tundra.list.document:capitalize for capitalizing strings in IData documents and IData[] 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 run tundra.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 and tundra.assertion.document:unequal to ignore key position by default
  • change tundra.assertion.list.document:equal and tundra.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 use tundra.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 of tundra.xml:encode to support custom XML attribute prefixes
  • change tundra.content:retrieve server log statement format to be consistent
  • change tundra.csv:emit and tundra.csv:parse to support customizing the escape character, quote character, and quote mode used
  • change tundra.csv:emit to support serializing a String[] string list of values in addition to an IData[] 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 support merge, create, update, and delete actions on key value pairs
  • change tundra.document:condense and tundra.list.document:condense to support condensing keys as well as values
  • change tundra.document:emit and tundra.document:parse input argument names to be consistent, and to support XML, JSON, and YAML formats as per the tundra.pipeline:emit and tundra.pipeline:parse services respectively
  • change tundra.excel:emit input argument names to be consistent
  • change tundra.file:write to support new create mode which will throw an exception if the file already exists
  • change tundra.hjson:emit and tundra.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 all pub.client:http inputs
  • change tundra.json:emit and tundra.json:parse input argument names to be consistent
  • change tundra.json:emit and tundra.json:parse to improve performance by 1000x or more by using the org.glassfish.json implementation classes directly, which avoids the disk access caused by the class loading in the javax.json.spi.JsonProvider.provider() method on every invocation
  • change tundra.object:convert to support $mode of base64
  • change tundra.pipeline:emit and tundra.pipeline:parse input argument names to be consistent
  • change tundra.service:ensure and tundra.service:invoke to support changing the current thread's priority before service invocation
  • change tundra.string:capitalize to support capitalizing arbitrarily specified String, String[], and String[][] values
  • change tundra.string:concatenate to support sanitizing IData operands
  • change tundra.string:condense to support condensing arbitrarily specified String, String[], and String[][] values
  • change tundra.string:slice to support slicing arbitrarily specified String, String[], and String[][] 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 and tundra.xml:parse input argument names to be consistent
  • change tundra.xml:encode to support custom XML attribute prefixes
  • change tundra.yaml:emit and tundra.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 to tundra.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

30 Aug 11:28
Compare
Choose a tag to compare
v0.0.33 Pre-release
Pre-release

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 by Administrators and Developers
  • 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

21 Apr 04:17
Compare
Choose a tag to compare
v0.0.32 Pre-release
Pre-release

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 empty IData document
  • add tundra.excel:emit for serializing an IData document to a Microsoft Excel spreadsheet
  • add tundra.excel:parse for deserializing a Microsoft Excel spreadsheet to an IData document
  • add tundra.list.document:find for filtering an IData[] document list by values associated with a given key containing a given pattern
  • add tundra.list.document:match for filtering an IData[] 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 a MalformedException if the XML is malformed, or a ValidationException if a schema is specified and the XML is invalid, when $raise? is true
  • 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 handle File.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 handle GMT+hh:mm and GMT-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

09 Jan 03:57
Compare
Choose a tag to compare
v0.0.31 Pre-release
Pre-release

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 and tundra.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 a java.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 a DOCNUM to each item in a given IDocList equal to its list index
  • add tundra.sap.idoc:length to return the length of a given IDocList
  • add tundra.sap.idoc:partition to partition a given IDocList into a new IDocList[] 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 support java.lang.Number and java.util.Calendar objects, in addition to java.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 with tundra.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 with tundra.document regular expression services
  • change tundra.list.string:remove to support literal patterns and use input arguments consistent with tundra.document regular expression services
  • change tundra.list.string:replace to support literal patterns and use input arguments consistent with tundra.document regular expression services
  • change tundra.list.string:split to support literal patterns and use input arguments consistent with tundra.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 with tundra.document regular expression services
  • change tundra.string:match to support literal patterns and use input arguments consistent with tundra.document regular expression services
  • change tundra.string:remove to support literal patterns and use input arguments consistent with tundra.document regular expression services
  • change tundra.string:replace to support literal patterns and use input arguments consistent with tundra.document regular expression services
  • change tundra.string:split to support literal patterns and use input arguments consistent with tundra.document regular expression services
  • deprecate tundra.string:squeeze, use tundra.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 a IDocList by assigning DOCNUM 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

06 Nov 10:17
Compare
Choose a tag to compare
v0.0.30 Pre-release
Pre-release

The changes included in this release are as follows:

  • add tundra.integer:format as an alias for tundra.decimal:format
  • add tundra.pipeline:squeeze for recursively trimming string values, removing empty string values, arrays, and IData 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 support sftp delivery on Integration Server versions 9.0 and higher
  • change tundra.content:retrieve to support sftp 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 to IData XML content
  • change tundra.pipeline:parse to support JSON and YAML content in addition to IData 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 an IData 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 the ftp protocol when the file retrieve fails
  • fix tundra.http:client to correctly default $request/method to get 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

16 Sep 02:25
Compare
Choose a tag to compare
v0.0.29 Pre-release
Pre-release

The changes included in this release are as follows:

  • add tundra.bytes:transcode for converting a byte[] containing text data from one character set to another
  • add tundra.document:flip which flips a given IData 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 given IData document
  • add tundra.document:lowercase for converting to lowercase either the keys, values, or both in a given IData document
  • add tundra.document:prefix for prepending a given prefix to the keys, or values, or both in a given IData document
  • add tundra.document:remove for removing a pattern from either the values, keys, or both keys and values of a given IData document
  • add tundra.document:replace for replacing a pattern in either the values, keys, or both keys and values of a given IData document
  • add tundra.document:suffix for appending a given suffix to the keys, or values, or both in a given IData document
  • add tundra.document:unprefix for removing a given prefix from the keys, or values, or both in a given IData document
  • add tundra.document:unsuffix for removing a given suffix from the keys, or values, or both in a given IData document
  • add tundra.document:uppercase for converting to uppercase either the keys, values, or both in a given IData document
  • add tundra.integer:rebase for converting an integer string from one radix to another
  • add tundra.list.document:flip which flips a given IData[] 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 given IData[] document list
  • add tundra.list.document:prefix for prepending a given prefix to the keys, or values, or both in a given IData[] document list
  • add tundra.list.document:remove for removing a pattern from either the values, keys, or both keys and values of a given IData[] document list
  • add tundra.list.document:replace for replacing a pattern in either the values, keys, or both keys and values of a given IData[] document list
  • add tundra.list.document:suffix for appending a given suffix to the keys, or values, or both in a given IData[] document list
  • add tundra.list.document:trim for trimming leading and trailing whitespace from either the keys, values, or both, in a given IData[] document list
  • add tundra.list.document:unprefix for removing a given prefix from the keys, or values, or both in a given IData[] document list
  • add tundra.list.document:unsuffix for removing a given suffix from the keys, or values, or both in a given IData[] document list
  • add tundra.list.document:uppercase for converting to uppercase either the keys, values, or both in a given IData[] 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 a java.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 to tundra.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 to tundra.bytes:normalize
  • change tundra.http.route implementation to return X-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 into tundra.support.receive:respond
  • change tundra.message:receive to use tundra.service:invoke instead of tundra.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 of java.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, use tundra.document:lowercase instead
  • deprecate tundra.document.key:normalize, use tundra.document:legalize instead
  • deprecate tundra.document.key:remove, use tundra.document:remove instead
  • deprecate tundra.document.key:replace, use tundra.document:replace instead
  • deprecate tundra.document.key:trim, use tundra.document:trim instead
  • deprecate tundra.document.key:uppercase, use tundra.document:uppercase instead
  • deprecate tundra.document.value:lowercase, use tundra.document:lowercase instead
  • deprecate tundra.document.value:remove, use tundra.document:remove instead
  • deprecate tundra.document.value:replace, use tundra.document:replace instead
  • deprecate tundra.document.value:trim, use tundra.document:trim instead
  • deprecate tundra.document.value:uppercase, use tundra.document:uppercase instead
  • deprecate tundra.id:generate, use `t...
Read more

v0.0.28

05 Jun 07:18
Compare
Choose a tag to compare
v0.0.28 Pre-release
Pre-release

The changes included in this release are as follows:

  • add tundra.cache.memory services which provide in-process on-heap caching of arbitrary key value pairs
  • add tundra.collection.map services for document and string maps
  • add tundra.decimal:deviate for calculating the standard deviation and related statistics for the given list of decimal numbers
  • add tundra.directory:gzip for compressing files in a given directory using the gzip algorithm
  • add tundra.document:log for logging a given IData document to the server log as a minified JSON string
  • add tundra.file:gzip for compressing a given file with the gzip algorithm
  • add tundra.file:zip for compressing a given file with the zip algorithm
  • add tundra.list.document:partition for partitioning a given list into a number of lists using the given conditions
  • add tundra.list.node:access for granting permissions to a list of nodes
  • add tundra.list.object:partition for partitioning a given list into a number of lists using the given conditions
  • add tundra.list.string:partition for partitioning a given list into a number of lists using the given conditions
  • add tundra.mime.type:classify service which replaces the existing tundra.<type>.mime.type:check services with a single service
  • add tundra.support.log:purge feature, for compressing and/or purging log files daily (currently disabled in the package configuration file ./config/package.hjson)
  • add tundra.thread:sleep for sleeping the current thread for the given duration
  • change tundra.collection.map.*.:get services to return boolean indicating if the given key exists in the given map
  • change tundra.directory:purge input argument $duration to be optional
  • change tundra.document:trim to include $mode argument which allows for either values, keys, or keys and values to be trimmed
  • change tundra.json:emit to support minifying the returned JSON content by removing all extraneous white space
  • change tundra.list.document:filter to return the length of the resulting list
  • change tundra.list.document:reject to return the length of the resulting list
  • change tundra.list.document:take to support taking items from the tail of the given list by specifying a negative count
  • change tundra.list.object:filter to return the length of the resulting list
  • change tundra.list.object:reject to return the length of the resulting list
  • change tundra.list.object:take to support taking items from the tail of the given list by specifying a negative count
  • change tundra.list.string:filter to return the length of the resulting list
  • change tundra.list.string:reject to return the length of the resulting list
  • change tundra.list.string:remove to support literal patterns in addition to regular expression patterns
  • change tundra.list.string:take to support taking items from the tail of the given list by specifying a negative count
  • change tundra.message:route to support $message being specified as a com.sap.conn.idoc.IDocDocumentList object
  • change tundra.message:route to support Content-Encoding header values of base64, gzip, and zip
  • change tundra.message:route to support defaulting the routing of an unrecognized message provided as an IData document using pub.publish:publish with the $message.format/name used as the documentTypeName
  • change tundra.packages:get to return the union set of all element references for all services in the given package
  • change tundra.packages:self to return the union set of all element references for all services in the given package
  • change tundra.pipeline:log to log the pipeline as a minified JSON string
  • change tundra.service:reflect to return service references and dependents
  • change tundra.service:sleep to support multiple duration string formats
  • change tundra.string:remove to support literal patterns in addition to regular expression patterns
  • change tundra.thread:sleep to support multiple duration string formats
  • delete all tundra.<type>.mime.type:check services, now replaced with the tundra.mime.type:classify service
  • fix tundra.collection.map.document:get to work correctly
  • fix tundra.collection.map.string:get to work correctly
  • fix tundra.configuration:all to ignore exceptions thrown by individual configurations when they are attempted to be read from disk and parsed; this ensures that one badly formatted file does not break accessing all other configurations (any exceptions encountered are logged to the server error log)
  • fix tundra.configuration:list to ignore exceptions thrown by individual configurations when they are attempted to be read from disk and parsed; this ensures that one badly formatted file does not break accessing all other configurations (any exceptions encountered are logged to the server error log)
  • fix tundra.file:copy to not overwite the file when the source and target represent the same canonical path
  • fix tundra.html:emit to not throw a java.lang.NullPointerException when serializing an IData[] with null items
  • fix tundra.list.object:join $separator argument to be string (it was previously incorrectly constrained to boolean)
  • fix tundra.schedule:get to not return null if schedule does not exist; nothing is now returned instead if the schedule does not exist
  • fix tundra.yaml:emit to correctly handle top-level objects other than key value maps
  • fix tundra.yaml:parse to correctly handle top-level objects other than key value maps
  • upgrade commons-csv library from v1.2 to v1.4
  • upgrade hjson library from v1.1.4 to v2.1.1
  • upgrade snakeyaml library from v1.15 to v1.18

To install, download Tundra-v0.0.28.zip, copy to IntegrationServer/replicate/inbound, install the release via the package management web page, and restart Integration Server.