PacktLib: Groovy 2 Cookbook

Groovy 2 Cookbook


About the Authors

About the Reviewers


Getting Started with Groovy


Installing Groovy on Windows

Installing Groovy on Linux and OS X

Executing Groovy code from the command line

Using Groovy as a command-line text file editor

Using Groovy to start a server on the command line

Running Groovy with invokedynamic support

Building Groovy from source

Managing multiple Groovy installations on Linux

Using groovysh to try out Groovy commands

Starting groovyConsole to execute Groovy snippets

Configuring Groovy in Eclipse

Configuring Groovy in IntelliJ IDEA

Using Groovy Ecosystem


Using Java classes from Groovy

Embedding Groovy into Java

Compiling Groovy code

Simplifying dependency management with Grape

Integrating Groovy into the build process using Ant

Integrating Groovy into the build process using Maven

Integrating Groovy into the build process using Gradle

Generating documentation for Groovy code

Checking Groovy code's quality with CodeNarc

Using Groovy Language Features


Searching strings with regular expressions

Writing less verbose Java Beans with Groovy Beans

Inheriting constructors in Groovy classes

Adding the cloning functionality to Groovy Beans

Defining code as data in Groovy

Defining data structures as code in Groovy

Implementing multiple inheritance in Groovy

Adding a functionality to the existing Java/Groovy classes

Defining type-checking rules for dynamic code

Adding automatic logging to Groovy classes

Working with Files in Groovy


Reading from a file

Reading a text file line by line

Processing every word in a text file

Writing to a file

Replacing tabs with spaces in a text file

Filtering a text file's content

Deleting a file or directory

Walking through a directory recursively

Searching for files

Changing file attributes on Windows

Reading data from a ZIP file

Reading an Excel file

Extracting data from a PDF

Working with XML in Groovy


Reading XML using XmlSlurper

Reading XML using XmlParser

Reading XML content with namespaces

Searching in XML with GPath

Searching in XML with XPath

Constructing XML content

Modifying XML content

Sorting XML nodes

Serializing Groovy Beans to XML

Working with JSON in Groovy


Parsing JSON messages with JsonSlurper

Constructing JSON messages with JsonBuilder

Modifying JSON messages

Validating JSON messages

Converting JSON message to XML

Converting JSON message to Groovy Bean

Using JSON to configure your scripts

Working with Databases in Groovy


Creating a database table

Connecting to an SQL database

Querying an SQL database

Modifying data in an SQL database

Calling a stored procedure

Reading BLOB/CLOB from a database

Building a simple ORM framework

Using Groovy to access Redis

Using Groovy to access MongoDB

Using Groovy to access Apache Cassandra

Working with Web Services in Groovy


Downloading content from the Internet

Executing an HTTP GET request

Executing an HTTP POST request

Constructing and modifying complex URLs

Issuing a REST request and parsing a response

Issuing a SOAP request and parsing a response

Consuming RSS and Atom feeds

Using basic authentication for web service security

Using OAuth for web service security

Metaprogramming and DSLs in Groovy


Querying methods and properties

Dynamically extending classes with new methods

Overriding methods dynamically

Adding performance logging to methods

Adding a caching functionality around methods

Adding transparent imports to a script

DSL for executing commands over SSH

DSL for generating reports from logfiles

Concurrent Programming in Groovy


Processing collections concurrently

Downloading files concurrently

Splitting a large task into smaller parallel jobs

Running tasks in parallel and asynchronously

Using actors to build message-based concurrency

Using STM to atomically update fields

Using dataflow variables for lazy evaluation