Maven-eclipse-plugin woes fixed

There is quite some anti-mavenism going around, about plugins suddenly not working, etc. And often this is true, case in point: maven-eclipse-plugin version 2.6 botched all projects working with Wicket by being very anal about what should live in the src/main/java directory tree (only Java files! God forbid you’d like to put web resources such as .properties (i18n for your web components), .js, .css, .html, etc next to your Java files. This version not only broke Wicket projects, but AspectJ as well.

Fortunately, the Maven community (more specifically Barrie Treloar and Arnaud Heritier) were helpful in finding the root cause of our pain: a conflict in merging the resources paths during the classpath generation.

With the latest snapshot of maven-eclipse-plugin 2.7 we now have our old build stability back, and can enjoy the new features of the maven-eclipse-plugin, such as searching your workspace for projects that are snapshot dependencies, and adding a project link instead of a jar dependency.

Yes, maven can sometimes be a pain, but ultimately with a great supporting and responsive community it will deliver. Many thanks to Barrie and Arnaud for being patient with us.

Upgrade and new theme

Just upgraded WordPress to the latest and greatest (stable version), and took the liberty of downloading and installing a new theme. I’m hoping that the new WordPress makes the site faster and easier to maintain.

I’m trying to find a good plugin to manage a conference: CfP, publishing the schedule, registering attendants, etc. Our company website runs on WordPress, so a WordPress plugin would be great. If not, I’ll have to convince the powers that be to move to RadiantCMS and use the ApacheCon conference plugin, created by J. Aaron Farr.

Wicket trainings at ApacheCon

ApacheCon EU hosts 2 days worth of Wicket training March 23rd and 24th in Amsterdam: Introduction to Wicket and Behavior Driven Development with Wicket and JDave. These trainings will be given by core team members of the Apache Wicket project, giving you access to the experts.

You can pick and choose, but if you want the best experience you should book both courses. On monday I’ll be giving an introduction course to Apache Wicket. On tuesday, Timo Rantalaiho will give a course on driving your web application development using Wicket, WebDriver and JDave.

Pricing is available at the ApacheCon website. Book now and get your team up to speed with the best Java web development experience in just two days!

Introduction to Wicket

March 23rd, Martijn Dashorst, full description

Learn how to use Apache Wicket to create web applications on your own from the masters. This hands-on lab will provide a quick introduction to the Wicket framework and we’ll start with coding right away. At the basis for this course lies the Wicket in Action book, written by the course leader. We’ll start with setting up our project, move on from a simple hello world application to implementing an online cheese store. We’ll learn to connect it to services delivered by Spring and a back end served with a JPA provider (Hibernate or OpenJPA). During this course we’ll cover the end-to-end basics of web application development: unit testing, writing maintainable code, internationalization, security and deployment.

Behavior-Driving Your Apache Wicket Application: Making the Most of Webdriver and JDave-Wicket

March 24th, Timo Rantalaiho, full description

How to get good unit and black-box test coverage by expressive, executable specifications on your Apache Wicket application code, with JDave BDD framework and WebDriver functional testing tool.The training is mostly hands-on programming assignments of applying WebDriver and jdave-wicket for testing and adding features to a Wicket application.

Daily WTF: ehcache startup code

I found this gem in the ehcache library while debugging my own code and using the thrown and uncaught exception breakpoint filter from Eclipse (in ConfigurationHelper:

public final BootstrapCacheLoader createBootstrapCacheLoader(
        CacheConfiguration.BootstrapCacheLoaderFactoryConfiguration factoryConfiguration) throws CacheException {
    String className = null;
    BootstrapCacheLoader bootstrapCacheLoader = null;
    try {
        className = factoryConfiguration.fullyQualifiedClassPath;
    } catch (Throwable t) {
        //No class created because the config was missing
    }
    if (className == null || className.length() == 0) {
        LOG.debug("No BootstrapCacheLoaderFactory class specified. Skipping...");
    } else {
        BootstrapCacheLoaderFactory factory = (BootstrapCacheLoaderFactory)
                ClassLoaderUtil.createNewInstance(className);
        Properties properties = PropertyUtil.parseProperties(factoryConfiguration.getProperties());
        return factory.createBootstrapCacheLoader(properties);
    }
    return bootstrapCacheLoader;
}

Notice that the parameter given to this method can be null. I always suspected that using an if-statement to check for null-ness was an over-engineered approach.

Writing with cats in the house: Hallmarks of felinity

I’m a big fan of Brooke McEldowney‘s work. His drawings are really nice and his style depicts the movement and grace of his characters perfectly. The most popular series is the 9 Chickweed Lane comic, which often surpasses funny and becomes hilarious.

As a cat owner I really enjoy the special care and attention Brooke puts into one of the characters of 9 Chickweed Lane: the Siamese cat named Solange. In an ongoing series of sub plots called “Hallmarks of Felinity” Brooke depicts the character of cats 100% spot on. I have read many books on the subject of cat character, but none of them can even get close to the way Brooke dissects the cat soul (no cats have been harmed I am sure).

Today’s comic depicts a situation all to familiar to me:

9 Chickweed Lane