Today's work has been really intense. You can see this also from this post's issue hour: it's 20 pm here, and for the first time I took some work home.
Today we started working on the CouchDb handling of custom fields. In our application - you can see the link in the previous post - we already wrote the CRD parts of the CRUD; we needed the Update functionalities.
At first we wrote our code keeping the previous structure with fixed fields in the class Person. This was not so good for the CouchDB approach: when we had to insert a custom field, we had to overcome the limitation of the fixed fields.
So we decided to make a major design change into our application: we switched from the standard class design to a more flexible one, where instead of fixed named attributes we put them into an HashMap.
This way we could handle variable-length lists of attributes, and also attributes with variable names; in a while it was possible to handle the update part successfully.
We had some problems because a part of our application was still old-fashion code, and we forgot to convert it; when we got that, we felt really stupid, because we were getting mad looking for the cause of some missing functionalities.