Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

MoDisco/JavaDiscoverer2

The goal of Java Discoverer plugin is to allow practical extractions of Java models from a Java project. The Java models could also be converted in KDM models (OMG specifications).


Description

This plugin aims at analysing Java source code compliant with J2SE 5.0 standard and providing a model describing the information found. As shown in next figure, this model can conform either to the Java metamodel or to the KDM metamodel.

Overall approach of the Java discoverer


The Java model is built from the source code by a Java component using the JDT, while the KDM model is built by a model transformation (powered by ATL) applied on the Java model.

The Java model contains the full abstract syntax tree of the Java program : each statement such as attribute definition, method invocation or loop is described. In addition, links between elements are resolved (by resolved link we mean for instance a link between a method invocation and the declaration of this method, or the usage of a variable and its declaration). The model can thus be seen as an abstract syntax graph (ASG).

The KDM model represents only the structure of the Java application. The mapping between Java concepts and elements of Java and KDM metamodels is described in the following table.

Java to KDM mapping

In this version, the only data flow elements (below the method declaration) described in the KDM model are : • The creation of instances (Creates) • The method invocations (Calls) • The return statements returning a variable (UsesType)

The mapping to KDM can be changed or completed easily by updating the ATL rules.


Requirements

To use the plug-in you need:

  • JDK 1.5 or above
  • a version of Eclipse 3.3 or above with the following set of plugins installed


Team

Gabriel Barbier (Mia-Software)

Fabien Giquel (Mia-Software)

Frédéric Madiot (Mia-Software)

Install

You will find a version of this plug-in attached in following bug.

As IP review of this plugin is not finished, here is installation instructions :

  • Extract archive file in your Eclipse workspace, then use "import" menu to import this project.
  • Use "export" menu to export this project as a plugin (Deployable plugins and fragments) in your Eclipse installation. Don't forget to choose "Package plug-ins as individual jar archives" option.
  • re-start your Eclipse to take in account this plug-in

User manual

The plugin provides the user with a contextual menu to easily create models.

By right-clicking on a Java Project in the Eclipse Package Explorer view, you can quickly create the J2SE5 or KDM model of your application (see next Figure). Each of these models can then be used with any other tool compliant with the corresponding metamodel.


Menus in Eclipse to create models from source code

If you want to create a KDM model using an existing J2SE5 model, you can also right-click on a J2SE5 model file and select “Convert J2SE5 to KDM Model” in the contextual menu (see next Figure).


Menus in Eclipse to create KDM model from J2SE5 model

A progress bar will appear at the bottom of the window as soon as the operation begins. Depending on the size of your application, the reverse engineering and transformation might take some time to complete (see next Figure).


Progress bar during models creation

At the end of the process, the newly created model files are added at the root of your project and are automatically opened in the default editor (see next Figure).

KDM model in the package explorer

.kdm files and .j2se5 files could be opened in the Sample Reflexive Ecore Model Editor (see next Figure).

J2SE5 and KDM models viewed with EMF browser

They could also be opened in MoDisco model browser (see next Figure) which brings some graphical improvements.

J2SE5 model viewed with MoDisco browser
KDM model viewed with MoDisco browser

Current limitations

Links to unresolved types (types whose declaration is available neither in source code nor in a library) are not created in the KDM model. This should be fixed in the next version.

The actual transformation to KDM creates only the elements describing the structure of the Java application. It means that the instructions contained within a method are not transformed into KDM elements (except instance creations, method invocations and return instructions).

Some particular cases are not yet managed by the transformation: • generic types • enumerations • anonymous classes and any class or interface which is not directly contained in a package.

Those limitations could be managed in future versions. As soon as this project will be available in SVN, a patch will be submitted to correct "generic types" and "anonymous classes" limitations.

Back to the top