Monday, September 27, 2010

How to create EMF models from JSP pages ?

The next release of MoDisco (version 0.9) is under development and is planned to be released with Indigo. This release will come with new components for creating EMF models from the source code of JEE applications.

The current version (version 0.8) already provides components for creating EMF models from java source code (see this older post). In next version, new components will be dedicated to JSP reverse-engineering. They have been developped by Fabien Giquel and Nicolas Guyomar of Mia-Software.

They are composed of:
  • a metamodel for describing a JSP
  • a discoverer for creating a model from a set of JSP pages
  • a generator for generating JSP pages from a model
The JSP metamodel (defined with Ecore) is an extention of the XML metamodel (also provided by MoDisco) which contains types such as Page, JSPScriptlet, JSPExpression, JSPTagLib, etc.

The discoverer, is a component which analyzes JSP pages and creates an EMF model conforming to the JSP metamodel.

It can be launched from a project, or directly from JSP pages.

The result is an EMF model which can be opened with the MoDisco Model Browser.

The generator allows regenerating JSP files from an EMF model (conforming to the JSP metamodel). While it still needs to be improved to support a better formatting, yet it can already be used to produce JSP files.

With these new components, you can reverse-enginer JSP files and use EMF APIs in order to control coding norms, detect patterns, document existing pages or refactor them by applying transformation at the model level (and then use the generator to get a new version of your JSPs).

Thursday, September 23, 2010

EMF Facet project has been created

EMF Facet is a new Eclipse/Modeling project which will provide solutions to extend existing metamodels without changing them. It has been provisioned recently in EMFT by Greg Dupé of Mia-Software, the co-leader of the project.

With EMF Facet, it will be more easy to dynamically extend and customize a tool based on EMF.

The idea is to allow defining new attributes, new relations and new types in a non-intrusive way (you can read this older post about EMF Facet).

This mechanism has already been developped in the MoDisco project (the Eclipse/Modeling project dedicated to Software Modernization). It is completed by a QueryManager component which allow executing queries on a EMF model independently from the query technology (bridges for OCL, Java and XPath are already available). As it is independent from Software Modernization purposes, the corresponding code is going to move to this new EMF Facet project.

After some refactoring, it will be enriched with other components (such as customizable widgets to display extended EMF models). First version is planned to be ready in June 2011 for Indigo, the next Eclipse release. Before this date, early versions will be available with intermediate Indigo milestones.

To know more about this project, don't miss the talk EMF Facet: a Non-Intrusive Metamodel Extension Tooling, Thursday, the 4th of November during Eclipse Summit Europe 2010, in Germany.