When we need to create a URI
object in Ratpack we can use the HttpUrlBuilder
class.
We use several methods to build up a complete URI
object in an easy way.
This is very useful when we for example use Ratpack’s HttpClient
object and we need to pass an URI
to do a request.
In the following example specification we see several usages of the HttpUrlBuilder
class:
Continue reading →
Gradle has excellent incremental build support.
This means that Gradle can determine if a task needs to be executed based on the input and output of that task.
If for example nothing changed in one of the input and output files, then the task can be skipped.
We can add incremental build support for our custom tasks by defining the input and output of the task.
We can also define that a task can be skipped when a collection of files or a directory that is the input of the task are empty or not exists.
Gradle offers the @SkipWhenEmpty
annotation we can apply on the input of our task.
In the next example we have a task DisplayTask
that prints the contents of files in a directory.
We want to skip the task when the directory is empty.
Continue reading →
In Grails we can use the @Resource
annotation to make a domain class a REST resource.
The annotation adds a controller as URL endpoint for the domain class.
Values for the domain class properties are rendered with a default renderer.
We can use JSON and markup views to customize the rendering of the domain class annotated with a @Resource
annotation.
First we must make sure we include views plugin in our build configuration.
Then we must create a directory in the grails-app/views
directory with the same name as our domain class name.
Inside the directory we can add JSON and markup views with names that correspond with the controller actions.
For example a file index.gson
or index.gml
for the index
action.
We can also create a template view that is automatically used for a resource instance by adding a view with the name of the domain class prefixed with an underscore (_
).
In the next example application we create a custom view for the Book
domain class that is annotated with the @Resource
annotation:
Continue reading →