Friday, September 29, 2006

Roma Framework big refactoring

Hi,
yesterday night a great idea light my mind... A new way to define desktop in View Aspect. It was too much simple to catch before...

Below a default desktop (I replaced open/close characted with []):

[desktop]
[area name="main" render="column"\]
[area name="top" /]
[area name="body" render="grid"/]
[area name="bottom" /]
[/area]
[/desktop]


By using XML to define the desktop assure cross View Aspect portability. The idea is very simple: to define, by area tags, a way to create containers ala Swing. Each area has a name that can be used as layout foreach POJO fields and actions. Furthermore area tag allow optionally the render to use. Available renders are:

- Null (Empty container)
- Row
- Column
- Grid
- Tab (TabbedPane)

I'm working for a XmlDesktop working with Echo2 implementation. Thanks to this feature users will be able to build complex and nice pages without effort!

Echo2 XML stylesheet will make the rest changing colors, images, fonts, spacing, etc.

Cool!

Tuesday, September 26, 2006

The most strange bug in the Java Virtual Machine!

Rome, Italy. Yesterday night. My clock displays 1:23 AM.

Finally I found the bug that affects the CRUDSelect of RomaFramework project. Some users reported me a strange behaviour: the "select" button of CRUDSelect won't appear when the application is launched non in debug mode.

Initially I've leave out that report in favor of more concrete enhancements and problems. But some days ago I've catched the strange behaviour reported by the users.

How can the JVM hide my "select" button and show it when I launch the same application in debug mode? This is a case for the detective Luca. Since I cannot debug the application (in debug doesn't appears the bug), I've enabled the logging for the internal API of RomaFramework (just changing the log4j.xml file). It was not enought. So I've inserted much more logging and finally I saw the problem:

Java Reflection doesn't return the method public void select(). Much of Roma Framework working depends by Java Reflection. In a deeper analysis I've isolated the problem:

CRUDSelect class contains, between the others, these two methods:

public void select();
public void select(boolean iForceWindowClosing);

For a strange reason the first one is not returned when the JVM is in non-debug mode!!! Probably a bug in the HotSpot on method with the same name. I've renamed the second one method in:

public void selectAndForceClosing(boolean iForceWindowClosing);

And now anythings work!!! Now I submit the update in SVN repository, but tomorrow I'll open a bug report to Sun.com sending a test case that show the problem.

This time again, another case was resolved by detective Luca ;-)

Thursday, September 07, 2006

Greetings ProNetics

Today is the last day in ProNetics company. After about 2 years in ProNetics I leave my role to work as C.T.O. in AssetData. AssetData is a small-young private company specialized in the vertical market of Human Resources and E-Learning.

My mission will be to make the company more "horizontal" to the Software Development and System Integration. All new projects will use the Open Source RomaFramework technology to develop Java application in short time guaranteing good Time To Market. A small area will cover the PHP technology by using and customizing DOCEBO E-Learning software.

I want to give thanks to ProNetics people, specially to Mario Lanzillotta and Gianugo Rabellino to have instilled in me the Open Source culture. In the ProNetics period I've released my pearl Orient ODBMS as open source project on Source Forge community. Moreover in the last months I've created the RomaFramework project too...

I want to give thanks to other collegues, someone become a friend in my private life too... And I want to take advantage of this greeting to relaunch the challenge to tear away my gold medal in the Go-Kart competion!!! ;-)

So... Bye and Let's start!