Tuesday, December 05, 2006

Very close the next release 0.9.9 of Roma Framework

After about 3 months of work I'm ready to release the new release 0.9.9 of Roma Meta Framework Project.

This will be the last version before the official 1.0. Until now I always preferred to not sacrifice the refactoring of Roma sources to mantain compatibility with previous release. Starting from 1.0 I'm conscious I'll cannot change the sources in a rough manner as now!

I want to give thanks to all Roma users and developers for the patience to adapt their application sources after every SVN update command :-D

What are the news of the version 0.9.9?
  • New ETL aspect to import POJO from CSV files defining mapping rules by XPath
  • New rendering components (Accordion, ImageButton, Image, TableEdit) and enhanced existents
  • Integrated JSP module to use JSP along with Echo2 components
  • New Roma Test Presentation demo application
  • New IN operator in PersistenceAspect
  • Cache in database operations
  • Support for JDO2 Fetch Group to speed up queries
  • Enhanced USERS module with Active Sessions, Info Categories, and more
  • Tons of bugs fixed
  • Much other

Tuesday, November 28, 2006

Roma Framework: New XPath ETL Aspect

Finally in the Roma Framework's SVN repository there is the first ETL aspect implementation for Roma Framework. It allows to import data from CSV files and map content to object properties. Anything is declared in a XML file with XPath rules for mapping.

Easy and cool as usual! ;-)

Monday, November 20, 2006

Roma Framework vs JBoss Seam

After the last JUG Roma event, I've translated the Feature matrix of the match "Roma Meta Framework vs JBoss Seam" in a PDF document available here.

This comparison shows the different approaches of these two frameworks:
  • Roma wins as features for the very fast development: Automatic GUI generation, Much more powerful CRUDs, Users module, etc.
  • JBoss Seam wins for integration of Remoting (EJB 3.0) and for its jBPM and Drolls modules integrated.
By this match I've catched some interesting features of JBoss Seam to implement in Roma Meta Framework. Stay tuned! ;-)

Ciao, LG

Saturday, November 11, 2006

JPA vs JDO

Many people think that the newest JPA is always the best choice now that first EJB 3.0 implementations are released.

JPA is a subset of Sun Microsystem JDO 2.0 standard. JPOX team published a matrix to compare their.


Today Freshmeat wakes up my email account with the new version of JPOX 1.1.4. I'll try it tonight to release it in the next RomaFramework distribution.

Congratulation JPOX team, the best ORM tool I never used. If you cannot use a pure ODBMS, JPOX is the best choice to work with objects and a Relational DBMS. With no doubts!

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!

Tuesday, August 22, 2006

Roma Framework: finally the Users Module working


Today I've finished the first tests about the new Users module in ROMA Framework. What is the Users Module? It contains all domain POJO to manage login, accounts and profiles in the most classic fashion.

Yes, since most often applications handle User and authentication in the same way, why don't implement a flexible POJOs in ROMA? That is the Users Module. It depends by JPOX persistence module (JDO 2.0) to store user information in the database.

The most powerful thing, IMHO, is the profiling system. I tried to implement the most flexible system to define profiles:
  • Each profile defines the mode, namely the way functions play:
    • allow all but: you can define the exception. Use this when exception are less than all functionalities
    • deny all but: you can define only what the profile can access. Use this when functions are much less than the total.
  • Each profile can define a parent profile where to inherit the functionalities allowed and denied.
  • Functionalities are expressed as a simple name in the format below:
    • ClassName
    • ClassName.field
    • ClassName.action
  • In this way you can profile from the Class level until each field/action!
How to use it?

If you want to disable the Control Panel item from the main menu, just insert the function with name "MainMenu.controlPanel" (that is the action name that call the submenu) and with allow equals to false.

If you'd like to hide the employee's salary field to the "Visitor" profile, then set it with mode "Allow all but" and insert the function "Employee.salary" with allow equals to false. That is.

Roma controller will check for each POJO's fields and actions if the current user profile is allowed to display.

Simple, powerful and easy!

Users module contain also an Activity Log manager, a default implementation for the AuthenticationAspect using BaseAccount and BaseProfile POJOs, generic useful objects such as Info and GenericValue, and more.

To use it download the latest SVN revision and type:
roma addModule domain-users

Follow the link to know more: http://romaframework.xwiki.com/xwiki/bin/view/Doc/Domain+Users

Monday, August 21, 2006

Back to my PC

Holidays ended and I'm in Rome again in front to my PC to resolve some issues about Roma Framework and to implement some new cool features.

Rome city is too much beautiful on August, since there is zero traffic and very few people around the city. Yesterday it was a very hot day, but in the evening I've tested my brand new Roller Blade on bicycle path near Rome. Very cool!

Thursday, August 10, 2006

Roma Framework community and vacation

After a while I write on my tech blog... Now I'm on vacation (Tuscany, Italy) but sometime I connect to the Internet to read mails and messages. I'm very happy to see the community reply to the Roma Framework forum in my absence! ;-)

I'll return in the mid of august with a lot of feature requests and some (!) bugs to resolve.

And in the air I can feel a wind of changes...

Ciao, Luca

Tuesday, July 25, 2006

Very Glad...

I'm very glad when people thank to me and Roma's developers for the Roma Framework Project.

The bigger satisfaction is when developers say: "Developing a web application with Roma is incredible!", and then enlist all benefits to develop an application using only POJOs.

Roma Framework is much more than a web tool, also if most people use it to create Java Web Applications in short time...

Friday, June 23, 2006

Working for the next major release of Roma Framework: 0.9.7

Hi to all,
I'm working to release the new version of Roma Framework. Many improvements and new features. This week end I'll work to reach a stable release to send to SourceForge.

I want to hurry up to release it before the next JavaConference event on Monday!

When my holiday? I don't know yet... Sigh... :-(

Monday, June 05, 2006

Roma Framework to the next Java Conference 2006

Finally Sun Microsystems Italy has published the almost final session list of the upcoming Java Conference 2006 event. This year will be splitted in two appointments: June, 26th 2006 in Rome and June, 27th-28th 2006 in Milan.

My speak will be on Monday June, 26th 2006 at the "Centro Congressi Roma Eventi" in the center of Rome. Goto http://it.sun.com/eventi/jc06/logistica/index.html to look how to reach the Congress Centre.

The session abstract is: "How build a web application 100% Ajaxed in just one hour using Roma Framework". The session will begin at 17:00 and will finish at 17:45. I'll speak Italian all the time ;-)

I hope to show the new Salsero module to leave Java developers agape!

Friday, May 19, 2006

Released version 0.9.4

Yesterday night I've finally released the version 0.9.4 of Roma Framework. Many news in this release, but the greater satisfaction for me is to watch the project to growth. The download rate is growth along with Wiki page viewed along with external sites that link the Roma Project.

The JMX Monitoring aspect is almost finished, there is the very first preview of "Salsero", the Roma graphical designer tool and much other.

I hope to have a stable version of Salsero for the next Java Day and Java Conference 2006.

Stay tuned!

Friday, May 12, 2006

The FreshMeat effect

After the submission of Roma Project to the FreshMeat web site the XWiki.com hosting service (where Roma's WiKi is hosted) went down. I don't know if the cause was the high traffic reached, but for several hours the server was down. I redirected the domain to the Roma's SourceForge home until XWiki service went up.

My thought was to replace the WiKi service with something other, but now XWiki seems fast enought. I'll give to XWiki another chance ;-)

However, after the FreshMeat earthquake yesterday Roma web has reached 1,371 page view and 20 downloads. Thanks to this interest about the project the SourceForge ranking scaled up reaching the 107th position!

In the next days I'll release the new version with many interesting features...

Stay tuned! ;-)

Wednesday, May 10, 2006

Roma Framework on the FreshMeat HomePage

I've submitted the RomaFramework project to the FreshMeat website. By now you can see the RomaFramework evolution also in http://freshmeat.net/projects/romaframework/ ;-)

Official Roma Framework domain!

Yesterday I've registered the official domain name for the Roma Framework: http://www.romaframework.org/

This URL points to the Wiki Home Page.

Monday, May 08, 2006

Roma Framework: work in progress

Hi,
after some weeks Roma Framework catched the attention of some people at the last JUG Roma (Java User Group) event.

The community is born. Here the numbers:
  • 4 active developers in SourceForge
  • More than 1.000 page viewed in a week
  • in the Mailing list more than 50 messages in few days
I'm working in a very big refactoring to support multiple aspect management in XML config files. The refactoring is done, but some bugs afflict the behaviour of applications developed with Roma. I hope to commit anythings today.

In these days the community talked about Indexing Aspect (Lucene/Compass framework), Maven 2 (instead of Ant), Designer IDE, JMS Monitoring Aspect, and more.

Stay tuned with Roma if you want to learn how to create Web Applications (and other) in some hours using the most modern technologies such as Ajax and JDO.

Roma Development Mailing List: https://lists.sourceforge.net/lists/listinfo/romaframework-development

Tuesday, April 11, 2006

First one presentation of Roma Framework

Tomorrow, 11th april 2006 there will be the first one presentation of Roma Framework to the ProNetics company.

I've ready the slides and a basic car-sharing demo application to show the Roma power. In these days I worked to the wizards (ala Ruby On Rails) for auto generation of project scaffolding and modules (Internal affair ministery asked me this feature to speed up development ;-)).

I'm much satisfied for the work done until now but there are several things to fix up. In the mean time the community are increasing...

The next presentation, and the first very public, there will be to the next JUG-Roma on 27th April 2006.

Wednesday, March 29, 2006

JUG Roma meeting march 2006

Some hours ago there was the third JUG Roma meeting (For more information goto www.jugroma.it) in Aubay company. Below the sessions:

First talk: 18.00/19.00
Title: Beehive: Easy and speed for J2EE solutions (facilità e velocità per soluzioni JEE)
Speaker: Nino Guarnacci

Second talk: 19.00/20.00
Title: Persistence and JDO 2.0 (Persistenza e JDO 2.0)
Speaker: Luca Garulli (Yes, me...)

After the talk a good dinner in a restaurant near Piramide area, Rome.

Yes, during my talk I've spent 5 minutes to speak a little bit about the "Off Topic" Roma Framework. Is publicity the soul of business? ;-)

Monday, March 27, 2006

Roma Framework's wiki was born

Finally I've chosen a WiKi platform to handle Roma community and documentation: XWiki.com. The software is entirely written in Java and they offer free hosting at acceptable speed (From italy it's quite speed...). What's leave a bad in the mouth is the page layout that cannot be modified, but only at CSS level...

So bear in mind this URL: http://RomaFramework.xwiki.com

Instead I've chosen SourceForge to host the entire SCM of Roma. The main reason is for robustness and quality of service and because now SourceForge supports SVN! ;-)

Starting from today all Roma's news will be published in Wiki Blog at: http://RomaFramework.xwiki.com/xwiki/bin/view/Blog/WebHome

Monday, March 13, 2006

Roma: work in progress... part II

Hi,
after days and nights on my notebook I'm proud to test the first alpha version of the Roma Framework. I've build a car-sharing application as demo (I was tired of ordinary blog or java-pet shop applications). The meaning is to discover what I've missed to build a real world application using the MDA Roma framework...

Below the short roadmap for the alpha release planned for this friday 17th March 2006:
  1. View aspect: Radio and check button support
  2. View aspect: First Page Flow support
And below the roadmap for the next beta version:
  1. Workflow aspect: first implementation using Enhydra Shark (http://shark.objectweb.org/)
  2. Compile time wizards:
    1. Create Project Scaffolding
    2. Adding Persistence Aspect (JDO)
    3. Adding View Aspect (Echo2/Ajax)
    4. Generate CRUD Pattern against any complex entity
  3. Dynamic Run-Time Query Generator (something like Atlassian Jira filter)
Stay tuned, in the next days I'll publish the first one alpha release ;-)

Tuesday, February 28, 2006

First ProNetics GoKart contest

Rome, 24th February 2006 time 10:15 PM

On the last thursday Daniele organized the first one ProNetics GoKart contest. Only 6 of us have found the courage to partecipate. Only six proneticsians plus Riccardo (my friend) and Andrea (Daniele's friend)...

The track choosen was the HolyKart (http://www.holykartroma.it), a full rubberized track with perfect equilibrated karts in performances. HolyKart is very professional to simulate a true Grand Prix:
  • 10 minutes of free practices
  • 10 minutes of qualify, valid for the starting grid
  • 8 turns for the real race where anything could happens...
I preput that I never see a Kart before and in facts in the free practices my position was the fourth. Then in the qualify my position was go up until the first one, just a blow better than Spizzi.

In the final race after the firs
t one curve I didn't see anyone and it's finished with my kart that cutted the winning post and Spizzi second after 12,79 seconds... and Blade (Daniele) at 17,27... At the end there was the prize giving with podium and medals!

The day after, for the entire day, on my chest flamed the gold medal. I'm forgetting...everybody how wants can ask me free drive lessons... Muahahah Muahaha

See you to the next GoKart contest!


Monday, February 20, 2006

Rome, 19th february 2006.
The persistence aspect finally works! Now Roma Framework can search and create persistent object in transparent way. I've used the latest JPOX JDO implementation.

I've implemented the CRUD pattern and it works very well with Echo2 and its Ajax model reloading the resulting table without refreshing the page. Cool...

I've also changed the inheritance use of forms. Before all forms are derived strictly by the model, but now I've tested it's better create POJO forms and using domain objects per composition. Before:

class AccountNew extends Account
{
private String confirmPassword;
}

Now:

class AccountNew extends CRUDNew
{
private Account newValue;
private String confirmPassword;
}

The main reasons of this change are:
  • Persistence aspect can confuse the derived non-persistent class used for view
  • Can extend the pattern POJOs (like the CRUD, see above)
I hope to finish the jdo persistence aspect for this week and enhance the echo2 view aspect. Stay tuned!

Sunday, February 12, 2006

Roma Framework: UDM in practice

I've just finished to work at the 0.6.8 beta release of Roma Framework. In the last days I've refactored much classes in Roma Framework and, above all, the plugin architecture has changed in "aspects". Current implemented aspects are:
  • view (Echo2ViewAspect),
  • i18n (ResourceBundleI18NAspect),
  • validation (interfaces and exceptions),
  • content (containing section tree structure),
  • logging (using common-logging)
Core component has improved with much features:

The UDM (Unified Development Model) has improved with:
  • Management of application flow. Each user session is tracked. UDM allows to go back and forward implementing the full MVC2 pattern at component level
  • UDM allows to change at run-time class's fields and actions features such as hiding, changing label, style, rendering, etc.
  • UDM allows tracking of attributes changed by the Model to be refreshed by the view aspect.
  • Better FormFactory management allowing caching of forms abstracting the implementation.
Below an example of UDM to search accounts. Note that some features resides in external XML files. The search() method is not yet attached to persistence aspect since it's in construction. Now data are dummy values loaded by TestApp singleton.

public class AccountSearch {
public AccountFilter filter;

@FieldInfo(embeddedType = AccountList.class)
public List result;

public AccountSearch() {
filter = new AccountFilter();
result = new ArrayList();
}

public void create() {
ObjectContext.getInstance().setNext(new AccountNew());
}

public void edit() throws ConfigurationNotFoundException {
ObjectContext.getInstance().getFieldAttribute(filter, "name").setHidden(true);
}

public void search() {
// TEMPORARY: HERE WILL BE USER PERSISTENCE ASPECT SOON...
result = TestApp.getInstance().getAccounts();
ObjectContext.getInstance().addChangedProperty(this, "result");
}
}

Thursday, February 02, 2006

Roma: work in progress...

Hi,
the work in Roma framework continue. In this week I've refactored many things. But the most important news is the support for a XSL based front-end. The idea is to implement the FrontEnd interfaces building a dynamic form that generates XML. Before to send the XML to the browser it can be rendered by XSL. In this way there is a very SOC (Separation Of Concerns) and a web designer can work only to XSL and CSS.

My idea is to generate XML compatible with the Apache Cocoon CForms form instance format. In this way you can exchange XSLs between Roma and Cocoon... CForms seems to cover complex widget.

The concept rear the new XML front-end is quite near to the Apache Cocoon framework, but using the same cardinal Roma's concepts:
  • Unified Development Model (UDM): the form interaction is 100% object oriented and it's the same as for Echo2 plugin. Soon a tutorial that shows the powerful of OO user interaction.
  • Inheritance: everything in Roma is extensibile using the inheritance concept.
  • View derived from the model: once architect has developed the domain classes and their relationships, the developer can generate complex and full working forms in some minutes.
  • Transparent persistence using JDO 2.0 (JPox implementation) but in the future EJB3.
Stay tuned. I hope to publish the first public release in a couple of weeks.

If you are interested or just want to suggest some idea, please contact me! ;-)

Monday, January 23, 2006

First JUG-Roma meeting in Rome


The next wednesday, on 25th January 2006, there will be the first one Roma Java User Group (JUGRoma from now) meeting in ProNetics company. There will be two sessions:

First talk: 18.00/19.00
Title: Joone, neural networks in Java (reti neurali in Java)
Speaker: Paolo Marrone

Second talk: 19.00/20.00
Title: Alternative persistence systems (Sistemi di persistenza alternativi)
Speaker: Ugo Landini

After the talk there will be a pizza dinner. For more information see www.jugroma.it

Friday, January 20, 2006

Roma meta-framework

I'm working in the Roma project and I hope to show a demo for the begin of February. Some thinghs are changed from original idea:
  • Initial Front End implementation will be not more Apache Cocoon2 but Echo2 from NextApp (http://www.nextapp.com) . Echo2 is a very powerful Web Framework based on the Swing concepts: project a GUI using components. Echo2 is totally based on Ajax, support natively I18N and it uses the concept of stylesheet to change final render look and feel. Very cool! ;-)
  • The persistence behaviour (JDO) will be not more directly integrated in Roma, but it will use a generic interface to manage objects. Bundled-default implementation will work using the Spring DAO to allow JDO, Hibernate and direct JDBC.
The first internal release 0.5 has the following features:
  • Total POJO Domain introspection.
  • 70% Object Detail View. Now an object is correctly rendered inside a panel and events are hooked with class method. Are supported multi-columns view and rendering of embedded objects. I'm working to relationships using combo (select list) and by opening pop-up (no window, but as layer).
  • 50% Objec tList View. Now allows very complex table with components inside but it yet missed pagination and event management on the table.
  • 100% I18N support integrated.
  • 100% StyleSheet support.
  • 100% Domain POJO configuration by Annotation and XML files.
  • 90% Validation framework (allowing multi-exception in one-shot)
Soon I'll post the architecture and features.

Stay tuned to know more information with Roma!