Micronaut is a new JVM-based framework that is designed for building twelve-factor microservice applications.

The project was initiated by OCI and the team that built the Grails framework, officially announced by Graeme Rocher at Greach Conference 2018, and publicly open-sourced under Apache License 2 on May 23rd, 2018. The first…


To activate type checking for all your Groovy classes, you can add the Groovy compilation configuration from this article to your compileGroovy Gradle task. Doing that is equivalent to annotating each class with the @TypeChecked annotation.

gradle.build:

apply plugin: 'groovy'compileGroovy.groovyOptions.configurationScript = file('gradle/config/groovyc.groovy')

Add the file gradle/config/groovyc.groovy Groovy compiler configuration…


The OWASP dependency-check provides monitoring of the libraries you use in your Java project to identify the use of known vulnerable components.

It produces an individual analysis report for the issue of “Using Components with Known Vulnerabilities” which is listed in the OWASP Top Ten 2017.

Gradle plugin

The gradle plugin can…


As of today, Travis CI only supports Java ≤ 9.

But you can download and use another version of the JDK for your Travis CI build. There is a shell-script in the Java Shell Builder project that determines the most recent (early-access) build number (for the JDK version you want)…


The RemoteWebDriver does not directly implement Selenium’s role interfaces such as WebStorage and LocationContext.

To access that functionality, your driver needs to be augmented with an Augmenter and then cast to the appropriate interface:

WebStorage webStorage = (WebStorage) new Augmenter().augment(driver);LocalStorage localStorage = webStorage.getLocalStorage();SessionStorage sessionStorage = webStorage.getSessionStorage();

I recommend to provide access in a test base class. This is an example I am using for Groovy end-to-end browser tests with Geb:

abstract class EndToEndTest extends GebReportingSpec {  LocalStorage localStorage() {
webStorage().localStorage
}

SessionStorage sessionStorage() {
webStorage().sessionStorage
}

private WebStorage webStorage() {
new Augmenter().augment(driver) as WebStorage
}
}


Spring Boot has default support for Flyway DB, a library for database migrations. Thanks to Spring Boot’s auto-configuration, you just have to provide the dependency to flyway-core and you’re ready to go.

You can use Flyway DB’s afterMigrate callback to prepare the environment with test data. Flyway DB looks after…


There are several ways to use JUnit 5 with Gradle.

One possibility is to use Gradle ≥ 4.6 which comes with native support for the JUnit platform. Add the following code to your build.gradle to use JUnit 5:

repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.1.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.1.1' …


The Tagged Image File Format (TIFF or TIF) is a computer file format for storing raster graphics images. If you want to deliver TIFF data with Spring MVC, you basically return the bytes you receive from an input stream to the client.

When the client sends a request with an…


In cases where you do not want to handle unique constraint violation errors that are caused by duplicate entries, an UPSERT would be useful to have with PostgreSQL. An UPSERT is similar to an INSERT INTO … IF NOT EXISTS.

In the following example, the users table has a primary…


By default, Spring MVC is tolerant and accepts requests to URL mappings with request URLs both ending with and without a trailing slash if you do not explicitly define one within your mapping.

However, if you want to be more strict about the trailing slashes for certain URLs, i.e. you…

Jonas Havers

Remote Freelance Software Engineer. Translates ideas into products with Java, Kotlin, TypeScript and JavaScript. Feedback?@JonasHavers https://jonas-havers.de/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store