Blog Archives
Welcoming Maurizio Taverna as a new committer to Apache Isis
I’m delighted to announce that Maurizio Taverna has been voted in as a committer on Apache Isis.
Maurizio came across Isis at the beginning of the year, and since then has been working rapidly and enthusiastically to develop a new viewer using DHTMLX. Although (because of licensing restrictions) this codebase cannot be donated to Isis, it’s a substantial and impressive piece of work. If you’ve not seen it yet, there’s an online demo here and the code is on github.
Maurizio has also demonstrated the viewer as an app running on Google App Engine (the demo above is running on GAE). To do this he has identified and addressed several improvements; these have been fed back to a few changes to the JDO objectstore component, as well as new documentation on our website.
Maurizio has also had several ideas to help publicise and promote Isis, including a series of animated interviews (a draft of the first of which can be seen here).
I’d personally like to thank Maurizio for all his hard work so far, and to say that I’m very much looking forward to working with him and gaining from his experience in the future.
Eclipse Tips: using the Source menu
Everyone knows – or at least suspects – that most of the Eclipse goodies live under the Refactoring menu. However, there’s also a lot of goodness under the Source menu too.
In this quick tip, I’m using another example from my little Java TDD course, demonstrating how to quickly write an immutable value type using a bunch of those Source menu items.
Eclipse Tips: Quick Fix to generate code
Here’s another in my nascent series of quick tips for Eclipse. This one shows how you can use Eclipse’s quick fix feature (ctrl+1) to quickly generate code.
To demonstrate it, I’ve actually used one of the exercises from my little Java TDD course, so if you watch it you’ll learn a little about Hamcrest matchers, too
Eclipse Tips: Extract Local Variable
When I teach my little Java TDD course, I quite often do live coding demos …especially if we’re running behind schedule and I want to catch up; I’ll skip an exercise and work through the solution. And one of the remarks I often get at the end is “thanks for the course, but what I also found useful was learning about how to use Eclipse effectively”.
Well, I guess I have used Eclipse for over 10 years now, so I suppose I am reasonably familiar with it. So I thought I’d show some of these tips by way of a series of screencasts.
The first one in the series is nice and simple: the “Extract Local Variable” refactoring, and its corollary, “Inline Variable”; something I use an awful lot when working on Apache Isis codebase. You’ll find it just below…
Apache Isis Core 1.1.0, Isis Shiro Security 1.1.0, Isis Wicket Viewer 1.1.0
A few days ago we (that is to say, the Apache Isis team) pushed out a new point release of Apache Isis Core (v1.1.0), along with two of its components Isis Shiro Security (v1.1.0) and the Isis Wicket Viewer (v1.1.0). The Quickstart Archetype that combines Wicket, Shiro, Restful and JDO also got an update (v1.0.2).
New and notable features in this release are: Read the rest of this entry
Using Google Guava’s Ordering API
We’ve been playing a bit more with Google’s Guava library – what a great library! The most recent thing we used it for was to sort out the comparators for our domain objects. Here’s how. Read the rest of this entry
Apache Isis now has Shiro integration for security
Hot on the heels of Isis’ first release as an Apache top-level project, we’ve now released a new security component that integrates with Apache Shiro.
At the same time, we’ve updated our Maven archetype (that combines Wicket, Restful and JDO) to incorporate this new Shiro security component. Read the rest of this entry
Apache Isis codebase refactored, adopting semantic versioning
Following on from Isis’ recent graduation as an Apache top-level project, I also blogged about how we have a new CMS-based site and also how we’ve moved our code from Subversion and into Git. This is also part of a general theme to make Isis as easy as possible to contribute back to; all about growing the community.
Another change that we’ve made is that we’ve refactored the codebase into separately releasable components. Isis has Read the rest of this entry
A domain service for mail merging Word (OpenXML .docx) files … with repeating data
One requirement that most business apps have is to be able to dynamically generate Word documents. For scalar non-repeating data this is not too difficult in .docx; indeed the file format has built-in support for data binding using Custom XML Parts. However, there is no support for repeating data, at least, not prior to Word 2013. Which is where a little domain service that I’ve been working on comes into play Read the rest of this entry
Mockito-like automocking and optional autowiring in JMock
I’m running my little TDD course again, and (as usual) it’s given rise to another small idea to make unit testing easier: provide Mockito-like automocking (using a @Mock annotation), and in addition perform autowiring of all mocks into the class under test. Read the rest of this entry
Connecting to SQL Server from Java over TCP/IP
Been a while since I did this; turns out it’s easy enough.
First, you’ll need the current JDBC driver from Microsoft, which can be found here. Add to classpath as usual.
Set up your Java application to use the following JDBC connection settings: Read the rest of this entry
Filters don’t fire when bouncing off web.xml for error handling
Here’s a nice little gotcha for ya!
A fairly common pattern is to use a filter that wraps the (Http)ServletRequest and (Http)ServletResponse in an app-specific wrapper; this can be used to hold user credentials and state etc. In essence it is:
Read the rest of this entry
DB unit testing with dbUnit, JSON, HSQLDB and JUnit Rules
In this week’s run of my TDD course, I thought it would be interesting to write a little fixture to make it easier to use dbUnit. My original thought was just to teach dbUnit about JSON, but it turns out that Lieven Doclo has done that already. So I decided to go a step further and also combine dbUnit with JUnit Rules, and provide automatic bootstrapping of an HSQLDB in-memory object store.