Skip to main content
Jump to: navigation, search

Difference between revisions of "MoDisco/Components/Java/Composition/Documentation/0.9"

 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{MoDiscoTabs|Java/Composition|{{MoDiscoTab|Java/Composition|Documentation|0.9}}{{MoDiscoTab|Java/Composition|Architecture|}}}}
+
#REDIRECT [[MoDisco/Moved To Help Center]]
 
+
== Java Composition Metamodel ==
+
 
+
=== Description ===
+
This ''JavaApplication'' metamodel aims at weaving a MoDisco Java Model with a MoDisco KDM Inventory Model. It relies on the core metamodel described in the
+
[[MoDisco/Components/KDMSourceExtension/Documentation/0.9|kdm.source extension framework]].
+
 
+
Such a metamodel allows linking java nodes to their physical position in the source files (''JavaNodeSourceRegion'' metaclass owning ''startLine'', ''endLine'' properties).
+
 
+
As proposed in the [[MoDisco/Components/KDMSourceExtension/Documentation/0.9|kdm.source extension framework]], the reference ''JavaASTNodeSourceRegion.javaNode'' derives from ''ASTNodeSourceRegion.node''. So does ''Java2File.javaUnit'' from ''CodeUnit2File.unit''.
+
 
+
[[Image:JavaApplicationMetaModel.png|frame|center|JavaApplication Metamodel]]
+
 
+
Note : the references ''java2DirectoryChildren'' and ''java2FileChildren'' are expected to be containment references. For some technical reasons (memory usage tuning via lazy loading), they are not containments to make sure that the ''Java2Directory'', ''Java2File'' and ''JavaNodeSourceRegion'' instances are managed in their own graph compared with ''JavaApplication'' instances (see [[MoDisco/Components/Java/Composition/Architecture#Benchmark|benchmark]]).
+
 
+
==Java Composition Discoverer==
+
 
+
=== Description ===
+
 
+
MoDisco provides a discoverer associated to the metamodel definition described here.
+
 
+
The discovery takes a workspace Java project as input.
+
 
+
* The first step of the discovery creates one Java model, using the associated discoverer.
+
* The second step of the discovery creates one Kdm inventory model, using the associated discoverer.
+
* The third step creates a model with ''JavaApplication'' metamodel instances with references to the two ''leaf'' models.
+
 
+
[[Image:Javakdmdiscovery.JPG|frame|center|Java and kdm inventory discovery]]
+
 
+
=== User manual  ===
+
 
+
The plug-in provides the user with a contextual menu to easily create models.
+
 
+
By right-clicking on a Java Project in the Eclipse '''Package Explorer''' view and choosing '''Discovery > Discoverers > Discover Java and Inventory model from Java project''' you can quickly create the Java Application model of your application:
+
 
+
[[Image:MoDisco_JavaComposition_Discoverer_Menu.png|frame|center|Discovering a JavaApplication model]]
+
 
+
A discovery parameters dialog opens to let you specify the parameters of the discovery:
+
 
+
[[Image:Launching_discovery_org.eclipse.modisco.java.composition.discoverer.fromJavaProject.png]]
+
 
+
See the [[MoDisco/Components/Java/Documentation/0.9#User_manual|documentation of the Java discoverer for an explanation of the parameters.
+
 
+
Once launched, a progress dialog will appear as soon as the operation begins. Depending on the size of your application, the reverse engineering process might take some time to complete:
+
 
+
[[Image:MoDisco_discoverer_org.eclipse.modisco.java.composition.discoverer.fromJavaProject_in_progress.png|frame|center|Progress bar during model creation]]
+
 
+
At the end of the process, the newly created model files are added to the root of your project if you set SERIALIZE_TARGET to true:
+
 
+
[[Image:MoDisco_JavaKDM_ResultInProject.png|frame|center|JavaApplication xmi files in the package explorer]]
+
 
+
And the model is opened in the default model browser if you selected '''Open model in editor after discovery''':
+
 
+
[[Image:MoDisco_JavaKDM_ModelBrowser.png|frame|center|JavaApplication model in the MoDisco model browser]]
+
 
+
A xmi file suffixed by ''_java2kdm.xmi'' contains the root element of the model, which refers to the ''_java.xmi'' Java model file and the ''_kdm.xmi'' Inventory model file.
+
 
+
Some referenced xmi ''fragment'' files are serialized into a ''java2kdmFragments'' directory (see Resources distribution in the [[MoDisco/Components/Java/Composition/Architecture|benchmark]]).
+
 
+
[[Image:MoDisco_JavaKDM_infraCommonCore_PackageExplorer.png|frame|center|JavaApplication xmi files in the package explorer]]
+
 
+
Once the main file ''_java2kdm.xmi'' has been opened in the MoDisco model Browser, you may navigate through the ''JavaApplication'' metamodel instances to the ''Java'' and ''kdm.source'' metamodel instances.
+
 
+
[[Image:MoDisco_infraCommonCore_Java2KDM_ModelBrowser.png|frame|center|browsing the JavaApplication model]]
+
 
+
<!-- [[Image:JavakdmBrowsing.JPG|frame|center|browsing the JavaApplication model]] -->
+
 
+
Some facets called ''javaToKdmShortcuts'' and ''KdmToJavaShortcuts'' are available for allowing navigation shortcuts from some Java/Kdm.source model elements.
+
(enabling the "Show Derived Links" option is necessary to view the shorcut links)
+
 
+
[[Image:MoDisco_Applied_facets_kdmToJavaShortcuts.png|frame|center|Applying the Facets]]
+
 
+
[[Image:MoDisco_Java2KDM_SourceRegion_FacetReference.png|frame|center|Navigation shortcut from a java element to the associated source region]]
+
 
+
To take advantage of memory usage tuning (see the [[MoDisco/Components/Java/Composition/Architecture|benchmark]]), for huge Java legacy code, the MoDisco global preferences should have the "resources loading depth" set to 1 (0 works but is less interesting for browsing). This setting allows the lazy loading of xmi fragment files, through the model navigation, for less memory usage than with an initial complete loading of resources.
+
 
+
[[Image:MoDisco_Preferences_LoadingDepth.png|frame|center|Setting MoDisco global loading depth preference]]
+
 
+
Using the ''Group by package'' setting will ease the selection in the types panel considering the metamodels (EPackages instances) involved.
+
 
+
[[Image:Modiscobrowsergroup.JPG|frame|center|Group by package in MoDisco model browser]]
+
 
+
=== Discoverer API ===
+
 
+
Each MoDisco discoverer implements a normalized interface and can be called programmatically (see org.eclipse.modisco.infra.discovery.core.IDiscoverer<T>).
+
 
+
As an example, you may checkout the code from the org.eclipse.modisco.java.composition.discoverer.tests project:
+
 
+
https://dev.eclipse.org/svnroot/modeling/org.eclipse.mdt.modisco/tests/trunk/org.eclipse.modisco.java.composition.discoverer.tests
+
 
+
== Java source code synchronization ==
+
===Description===
+
A new step in Java model browsing is to link model elements directly with their source code. This synchronization is possible thanks to the MoDisco Source Code Synchronization Framework. Basically, this new feature allows the MoDisco Model Browser to behave like the Eclipse outline.
+
 
+
===How does it work===
+
 
+
Prerequisite is to [[MoDisco/Components/Java/Composition/Documentation/0.9#User_manual|create a Composition model]]
+
 
+
Once your composition model is opened, all you have to do to navigate from your java model to its source code is to activate the source code synchronization (this will prevent the Eclipse Properties view from opening on double-click):
+
[[Image:MoDisco-ActivateCodeSynchronization.jpg|frame|center|Source code synchronisation]]
+
 
+
And then double click on an element to directly open its file and get this element selected : on the following figure we double-clicked on the method "setMyInteger"
+
 
+
[[Image:MoDisco-CodeSynchronizationDoubleClick.jpg|frame|center|Java source file opened and element selected]]
+
 
+
If you prefer to keep the action "Open the '''Properties''' view" on the double click action, you can use the contextual menu to perform a single synchronization : the result will be exactly the same
+
 
+
[[Image:MoDisco-CodeSynchronization-ContextualMenujpg.jpg|frame|center|Contextual menu]]
+
 
+
== Requirements  ==
+
 
+
To use the plug-ins you need:
+
 
+
*JDK 1.5 or above
+
*a version of Eclipse 3.6 or above with the following set of plug-ins installed
+
 
+
:*[[EMF|EMF]] 2.5.0 or higher
+
 
+
== Source Repository  ==
+
 
+
All of the source code is stored in a public source repository, which you can access at:
+
 
+
[https://dev.eclipse.org/svnroot/modeling/org.eclipse.mdt.modisco/plugins/trunk/org.eclipse.modisco.java.composition/ https://dev.eclipse.org/svnroot/modeling/org.eclipse.mdt.modisco/plugins/trunk/org.eclipse.modisco.java.composition/]
+
 
+
[https://dev.eclipse.org/svnroot/modeling/org.eclipse.mdt.modisco/plugins/trunk/org.eclipse.modisco.java.composition.discoverer/ https://dev.eclipse.org/svnroot/modeling/org.eclipse.mdt.modisco/plugins/trunk/org.eclipse.modisco.java.composition.discoverer/]
+
 
+
Source code repository for Java Source Code Synchronization Strategy :
+
[https://dev.eclipse.org/svnroot/modeling/org.eclipse.mdt.modisco/plugins/trunk/org.eclipse.modisco.java.composition.ui  https://dev.eclipse.org/svnroot/modeling/org.eclipse.mdt.modisco/plugins/trunk/org.eclipse.modisco.java.composition.ui/]
+
 
+
{{MoDisco}}
+
[[Category:MoDisco]]
+

Latest revision as of 11:46, 2 April 2012

  1. REDIRECT MoDisco/Moved To Help Center

Back to the top