Hi all mates, while providing some help in JWT, I noticed that the model shares a common "pattern" with commons library (and with the OAuth1.a implementation I was trying to give at the Amber early days):
* each model has known, established set of parameters/fields; * each model has an auxiliary set of parameters; * each model should be immutable; * each model requires a Builder to be built; * each model requires validation of required/optional fields; * each model could have the need to be (un)marshalled from/to JSON; * each model could have the need to be (un)marshalled from/to x-www-form-urlencoded; I think we all agree that doing that work for each model is a boring, redundant task, indeed the actual codebase brings a set of utilities to work with JSON format, by parsing json string to json object of jettison library, access and get to model properties by name... In JWT I tried to adopt a different approach, where known properties are not referred by name but by Builder setters and entity getters, JSON (un)marshalling by properties names. So, since adopting that pattern in all model entity could be time-consuming and repetitively boring, in my public whiteboard[1], taking inspiration from Codehaus Modello[2] (the tool used by Maven to generate the domain model), I started experimenting a KISS approach to generate all that boilerplate code. What I achieved is that, given a set of model properties, such as the JWT ClaimsSet[3] I can obtain a complete immutable POJO, with nested Builder, and json marshaller/unmarshaller, built on top of Jackson StAX-alike APIs. You can see the result on this gist[4]. So, there is enough space IMHO ti discuss the different options: 1) generate the entities at built-time, package them in an artifact and deploying it; OR 2) generate the entities "offline" and commit them where it is required; OR 3) ignore all of that and going ahead as is. WDYT? best, -Simo [1] http://svn.apache.org/repos/asf/oltu/whiteboard/simonetripodi/oltu-commons/ [2] http://modello.codehaus.org/index.html [3] http://svn.apache.org/repos/asf/oltu/whiteboard/simonetripodi/oltu-commons/src/main/mdo/org/apache/oltu/jwt/ClaimsSet.xml [4] https://gist.github.com/anonymous/5574938 http://people.apache.org/~simonetripodi/ http://simonetripodi.livejournal.com/ http://twitter.com/simonetripodi http://www.99soft.org/
