This post originated from an RSS feed registered with Java Buzz
by Thomas Gideon.
Original Post: Navel Project
Feed Title: Command Line Interface
Feed URL: http://www.gideonfamily.org/roller/rss/cmdln?catname=Java
Feed Description: The blog of a programmer-hacktivist-curmudgeon who occasional rants about society, work, and technology, among other things. Now how do I get to a command prompt on this thing?
In my newly found spare time, I have hacked together implementations of some of my ideas for a better JavaBeans support library. Rather than the unsophisticated approach the Commons Beans guys took, I created a couple of invocation handlers to work with dynamic proxies for lightweight, easy to define simple beans. Beans that are true beans and can be introspected as such.
I like XML well enough, but I question using it to define code when using the code it generates or defines will require some Java skill to begin with. With dynamic proxies, beans are defined as interfaces, easy enough for the most entry level Java programmer without sacrificing static type safety. Have I mentioned how I hate this movement to turn Java into VB by abandoning or circumventing it's type safety?
I wrote a simple property bean handler using a Map for property storage and supporting simple JavaBeans properties as well as indexed properties. The implementation includes some clear contracts implemented in the constructors such that you cannot use it with an interface it cannot support. I also extended this handler to allow delegation to extra interfaces with concrete objects stored in the handler as targets of that delegation. This second handler was developed with the intent of having a way to hook life cycle support methods, like for Struts ActionForms, onto the nice Map based property bean plumbing code.
I also wrote a BeanManipulator that can describe and populate Beans generically, just using introspection. I intend to expand this with the ability to declare property type conversions, hopefully using code from the java.beans package but the exact implementation remains to be seen. I also want to take the code so far and wrote a plug-in or extend code from Struts so that my package can be used seamlessly with it. Failing that, I'm thinking about possibly starting a competing project. More on that later, after I've figured out how easy or hard it is going to be to use my code with Struts.
Anyway, I nicknamed my project Navel, as in navel gazing, as a pun on introspection. I registered it with SourceForge but haven't been able to get in the shell server, yet, so it may be a bit before I can import my CVS module and issue my first file release. Stay tuned.