February 01, 2011
Mark Wielaard: New GPG key.
Finally created a new GPG key using gnupg. The old one was a DSA/1024 bits one and 8 years old. The new one is a RSA/2048 bits one. I will use the new one in the future to sign any release tarballs I might create. pub 2048R/57816A6A 2011-01-29 Key f...
More »
February 01, 2011
Andrew Hughes: [SECURITY] IcedTea6 1.7.8, 1.8.5, 1.9.5 Released!.
We are pleased to announce a new set of security releases, IcedTea6 1.7.8, IcedTea6 1.8.5 and IcedTea6 1.9.5.
This update contains the following security updates:
The IcedTea project provides a harness to build the source code from OpenJDK6 u...
More »
December/2024
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | |
|
|
Building a fluent API (internal DSL) in Java
In this post I am going to sum up things I have learned while creating a fluent API (or internal DSL) in Java. I'll talk about the search API I created for my current position: it's not a toy problem, it's a real problem, which has a significant amount of complexity. Because of that complexity, you get to see techniques and ideas that you don't usually see in toy examples. I am not including the full source, which (if you really want) you can access on the project's site.
The model
First, I need to tell you a little bit about the problem I am trying to solve. IRMIS, the tool that I am developing, needs to keep track of all the components of a particle accelerator and their relationships. For example, you want to keep track where a particular card is, how is it getting power, and how messages from the control system are addressing it. The GUI, for example, would display something like:
Each component can be part of multiple hierarchies (control, housing, power), can have multiple children in each, can have multiple parents in each (though 99% of the time it has one). Each component has also a type and a set of properties:
public interface Component {
...
ComponentType getComponentType();
Set getParents(RelType relType);
Collection getChildren(RelType relType);
Map getProperties();
}
It has a bunch of other stuff too, but to we can limit our attention to this. Each relati...
Date: February, 04 2010
Url: http://www.java.net/blog/carcassi/archive/2010/02/04/building-fluent-api-internal-dsl-java
Others News
|