Ferma 2.0.3 has just been released. This version adds several new features including the following:
* Framed graph will return null when framing a null object (as opposed to a NullPointerException as before).
* remove() functionality added to traversals and iterators.
* Significant performance improvements when accessing the Framed graph V().has(key,value) method as well as numerous other related performance improvements.
* Comparators class is now properly implemented as utility class and can no longer be constructed.
* Replaced the Class argument in several methods which create new graph elements with a ClassInitializer argument. This provides additional functionality giving more control over how elements are instantiated.
ClassInitializers deserve a bit of an additional explanation. Their main purpose is similar to that of constructors in normal Java objects. They allow a new graph element to be initialized prior to being returned. This is useful, for example, if the framed element itself has properties which need to be set at the time of creation but are read-only for the life of the object after that. Before it would have been necessary to expose a set* method on the object and therefore wouldn't be read-only through the object anymore. It essentially makes for cleaner and more natural domains that can behave more like the java objects programmers are used to.