Hey, I have now implemented @Optional. This means that by default all method parameters are mandatory, and any that can be null have to be marked with @Optional. This is in contrast to before, where no assumptions were made, and it was possible to use a @NotNull constraint to mark a parameter as being mandatory. Since @NotNull should be the normal case that led to a whole lot of @NotNulls, but even worse, in many cases where it *should* be it wasn't.
With the default being that a parameter is mandatory, this immediately made all our API's a whole lot more strict, and a bunch of tests started failing (fixing this was actually the bulk of the work). This was GREAT! A lot of things were API bugs were found through this change, which is a Good Thing! I also implemented this for Property, which was even more revealing. All of a sudden ALL Properties became mandatory, with the consequence that a whole lot of cases where Entities had been created with newEntity and then immediately populated stopped working. This is GOOD! This avoids the situation that the Entity is maybe not properly initiated by accident. In a ton of places I fixed so that EntityBuilders were used, and the state was populated to the builder rather than the entity. Much better! All in all, I think this change will drastically improve the quality of code that uses Qi4j. /Rickard _______________________________________________ qi4j-dev mailing list [email protected] http://lists.ops4j.org/mailman/listinfo/qi4j-dev

