Functions
The term 'functions' is used to refer to the collection of utility classes that are shipped with and exposed to the Martini development environment out-of-the-box, typically via extension modules1. They provide functions intended to solve common application problems with literally one line of code, hence the name 'functions'.
Most function classes are located in the io.toro.martini
package. They can all be used in
Groovy services, but some functions are intended for use in Gloop
only. These Gloop-specific functions are alternatively called 'Gloop core services' and are the set of functions shown
in the Navigator view. To see them, expand the services
directory of the core
package:
Not all functions are displayed in the Navigator
The functions shown in the Navigator view are those that are for use in services. Functions for Groovy are not displayed entirely.
Martini makes these core services easier and quicker to use by allowing them to be dragged and dropped into opened services:
Additionally, you can also view a function's Javadoc by right-clicking on it in the Navigator view and selecting Open Javadoc:
||| "Martini Desktop"
Collection of functions
Most functions are made and maintained by TORO and are specifically for use in Martini. These functions are listed and described in the following table:
Name | For Groovy | For Gloop | Description |
---|---|---|---|
io.toro.martini.Array |
No | Yes | Contains extension functions for performing operations on iterables. |
io.toro.martini.Boolean |
No | Yes | Contains utility functions for handling boolean primitives and Boolean objects. |
io.toro.martini.Cache |
Yes | Yes | Contains extension functions for managing caches. |
io.toro.martini.Core |
Yes | No | Contains extension functions for invoking services and getting objects from Martini's application context. |
io.toro.martini.Csv |
Yes | No | Contains extension functions for CSV-related operations. |
io.toro.martini.Email |
Yes | Yes | Contains utility functions for reading and sending emails. |
io.toro.martini.File |
Yes | Yes | Contains extension functions for reading and writing to files. |
io.toro.martini.FlatFile |
No | Yes | Contains utility functions for reading and writing to flat files. |
io.toro.martini.Flux |
Yes | Yes | Contains extension functions for executing, terminating, sending events, adding and removing tags, and getting the contexts of Flux services. |
io.toro.martini.Gloop |
No | Yes | Contains a variety of handy functions for use inside Gloop services. |
io.toro.martini.Groovy |
Yes | Yes | Contains extension functions that help manage packages, package properties, instance properties, and others. |
io.toro.martini.HttpClient |
Yes | No | Contains extension functions for HTTP operations. |
io.toro.martini.Http |
No | Yes | Contains utility functions for mapping HTTP-based operations in Gloop. |
io.toro.martini.Jabber |
Yes | Yes | Contains extension functions for sending and receiving instant messages from Jabber endpoints. |
io.toro.martini.DatabaseConnectionPool |
No | Yes | Contains extension functions for managing the lifecycle of database connection pools. |
io.toro.martini.Jms |
Yes | Yes | Contains extension functions for publishing and responding to JMS messages. |
io.toro.martini.Json |
No | Yes | Contains utility functions for creating a Gloop object from a JSON string and vice versa. |
io.toro.martini.KafkaClients |
Yes | Yes | Contains extension functions for interacting with Kafka. |
io.toro.martini.Logger |
Yes | Yes | Contains extension functions for logging messages. |
io.toro.martini.Marshaller |
Yes | No | Contains extension functions for converting objects to and from JSON or XML. |
io.toro.martini.Martini |
No | Yes | Contains utility functions for managing Martini packages and endpoints in Gloop. |
io.toro.martini.MongoDb |
No | Yes | Contains utility functions for performing MongoDB operations. |
io.toro.martini.Monitor |
Yes | Yes | Contains extension functions for searching invoke documents, managing monitor rules, and checking and setting API costs. |
io.toro.martini.Number |
Yes | Yes | Exposes Apache Commons Lang's NumberUtils class as a one-liner. |
io.toro.martini.ProxyRequest |
Yes | Yes | Contains extension functions used to proxy incoming HTTP requests to another server; helpful when dealing with legacy APIs. |
io.toro.martini.RemoteDeployment |
No | Yes | Contains utility functions for remotely deploying packages from one instance to another. |
io.toro.martini.Rest |
Yes | No | Contains extension functions for executing requests against REST endpoints. |
io.toro.martini.Rss |
Yes | Yes | Contains extension functions for fetching RSS feeds. |
io.toro.martini.Solr |
Yes | Yes | Contains extension functions for querying and writing to Solr cores and creating Solr schemas. |
io.toro.martini.Sql |
Yes | Yes | Contains extension functions for connecting to JDBC databases. |
io.toro.martini.Stream |
No | Yes | Contains utility functions for mapping Streams in Gloop. |
io.toro.martini.String |
Yes | Yes | Contains extension functions for manipulating streams; exposes Apache Commons Lang's StringUtils class as a one-liner. |
io.toro.martini.Throttling |
Yes | Yes | Contains extension functions for managing throttling rules. |
io.toro.martini.Tracker |
Yes | Yes | Contains extension functions for adding, searching, updating, and deleting documents in the Tracker search index. |
io.toro.martini.Url |
Yes | Yes | Contains extension functions for manipulating URLs. |
io.toro.martini.UserGroup |
No | Yes | Contains extension functions for managing access control. |
io.toro.martini.Util |
Yes | Yes | Contains extension functions for formatting and converting double and long values to string values. |
io.toro.martini.Velocity |
Yes | Yes | Contains extension functions for parsing Velocity templates. |
io.toro.martini.Vfs |
Yes | Yes | Contains extension functions for sending and fetching files, especially files from remote servers. |
io.toro.martini.WebSocket |
Yes | Yes | Contains extension functions for sending web socket messages. |
io.toro.martini.WidgetPage |
Yes | Yes | Contains extension functions for fetching pages and widgets made from the Report Builder. |
io.toro.martini.Xml |
No | Yes | Contains utility functions for creating a Gloop object from an XML string and vice versa. |
io.toro.martini.Yaml |
No | Yes | Contains utility functions for creating a Gloop object from a YAML string and vice versa. |
Why are some classes not meant for use in Gloop or Groovy?
All functions are written in Groovy or Java and thus, can be used in Groovy code2. As a consequence, they can also be used in Gloop invoke and some script steps. There are no restrictions in where or when to use functions but TORO recommends using Gloop or your chosen language's built-in features when they provide more or less the same benefit as using a function.
Some functions are not needed in Groovy because Groovy already provides the means to perform their operations inherently using a single line of code; likewise, some functions are not recommended for use in Gloop because Gloop already has the constructs necessary to perform those functions natively.
The following helper classes from Apache Commons are also exposed, for use in both Gloop and Groovy:
org.apache.commons.codec.digest.DigestUtils
org.apache.commons.lang3.BooleanUtils
org.apache.commons.lang3.RandomStringUtils
org.apache.commons.lang3.StringEscapeUtils
org.apache.commons.lang3.time.DateFormatUtils
org.apache.commons.lang3.time.DateUtils
Additionally, Martini exposes the Groovy class
org.codehaus.groovy.runtime.DefaultGroovyFunctions
which is
comprised of a variety of functions for modifying strings, performing operations on collections, reading and writing
to files, and more.
Create your own functions!
Martini allows you to register your own custom extension modules.
-
Gloop-specific functions are actually just regular
public
static
functions available for use for all classes. Functions usable in Groovy are those that are exposed via extension modules as instance extension functions. ↩ -
When using Gloop-specific functions in Groovy, call the function services as static functions as they are technically not extension functions. ↩