Groovy does not require the end of a statement to be a semicolon, but it speeds up processing if they are included.
$ is a Groovy reserved word and will conflict with strings manipulation and regexp. In Groovy it is used to reference a variable within a string. If you need to use $ within a regular expression, use 'single quotes' around your regular expression.
BeanShell allows a character to be added to a string, Groovy does not. You need to convert the character to a string, one method is
newString = Character.toString(aCharacter) + aString;
For string replacement, such as to strip the trailing text off a string, escape the $ e.g.
stringS = stringS.replaceAll("last words\$", "");
BeanShell allowed the use of class imports directly, but Groovy does not - it reports 'No such property'. For example in BeanShell
java.text.DecimalFormat df = new java.text.DecimalFormat("#.##");
Groovy however requires
import java.text.DecimalFormat; DecimalFormat df = new java.text.DecimalFormat("#.##");
Checking for the existence of a variable (void check). Use in init.groovy to access anywhere.
if (binding.variables.containsKey("variableName") { ... }
A shortcut method, that does not test for null i.e. returns false for null value as well as missing variable
Map exists = binding.variables; if (exists.variableName) { ... }
File references (ignoring the need for File.separator if an OS file) are, using an actual file object
File f = new File(rootImageDirectory, "somedir/somefile");
and using a path
File f =new File(pathToDir + "somedir/somefile");
Lists are a simple
list = [];
A populated list is now
list = ["do", "re", "mi", "fa", "so", "la", "ti"];
A method can use either the 'def' or, for example, 'public String' format. The code below replaces single quotes with the html entity for a single quote
def aposSwap(String s) { if(s == null || s.equals("")) return null; return s.replaceAll("'","' ;").trim(); }
Calls to setAccessible(true) and/or setAccessibility(true) are no longer required to access jAlbum's private fields
Staments in Groovy requires an expression to be an on the same line before an operator ( +, - etc.)