Creating CheckStyle rules for Sonar

This article aims to explain how we created and tested a CheckStyle rule and integrated it in Sonar. A project available at github provides a concrete example of this for a simple CheckStyle rule. [...]

Using Aether to resolve dependencies in a Maven plugin

When we upgraded to the latest version of Maven (3.0.4), some of our in-house plugins had issues with dependency resolution. We already has similar problems when migrating from Maven 2 to Maven 3, due to the new library used by Maven to access the repository system: Aether. These problems only came when using plugins that had to resolve dependencies by themselves. [...]

Vaadin WidgetSet compilation optimizations

Vaadin is a framework using GWT behind the scene. And for that it needs a WidgetSet, which is basically the definition of the widgets that you want to use on the client-side. If you are using the core widgets of Vaadin, you are good because the vaadin.jar ships with a default WidgetSet for all the [...]

Embed for Vaadin: run your Vaadin applications in an embedded server

Embed for vaadin is a Vaadin add-on that allows you to start your Vaadin application directly from your IDE. In this article, we will explain the rationale of such plugin and how you could use it in your own Vaadin applications. [...]

Spring profiles management for application customization

Spring 3.1 GA was announced early this month. One feature we have been looking for some time is the new environment abstraction with bean definitions profile. While this abstraction allows to configure the profiles to use in many different locations, we found useful to be able to customize this even further to suit our needs. This blog post contains a simple implementation showcase, available on github. [...]

Stabilizing & speeding up compilation and annotation processing in Maven builds

Stability and performance of a build is a critical point when a project dealing with a large codebase and is composed of many developers. A better stability can be achieved by limiting the amount of resources that are platform or environment dependent. Performance, when working on projects that are several years old, and have dozens developers working on it, can be regularly threatened by a significant growth of its codebase, making performance issues start arising in various areas. In this article, we will cover a configuration change that will help ensuring a better build stability, along with helping in performance (effects can be different depending or current tools used). [...]

Remote partitioning with Spring Batch

In a previous article, we have discussed how staging the data to process with a sequence number could help us to build partitions that can be executed concurrently.  As explained in the documentation, the PartitionHandler is the component that knows about the mean to transport StepExecution requests to the actual worker(s). It basically sends one [...]

Staging and business chunking with Spring Batch

Spring Batch is a powerful batch framework in Java with obviously a close integration with the Spring framework. One core feature for us is the ability to stage the data to process for a particular batch instance. In this article, we will cover how data can be staged and the features that can be built on top of it. More specifically, we will cover how a partition can contain business chunks, i.e. a set of elements to process that are linked to another business concept. [...]

Unit test production route in Apache Camel using mock endpoints

A previous article was focused on Apache Camel aggregation component, its new JDBC persistent repository more precisely. The sample provided includes a unit test which uses multiple good practices to test Camel routes. Let’s analyse them one by one.

Have a test spring context

The main idea is to keep unit test as simple as [...]

Load testing enterprise applications efficiently (3/3)

Tools orchestration

We have seen an overview of all necessary tools separately. A bash script file will orchestrate all tools together and will generate a report.

This report is then uploaded on our intranet so every one can consult and comments the results. In our case we use a confluence specific command line tool to [...]