Add more contents authored by Ansgar Radermacher's avatar Ansgar Radermacher

Use .adoc as extension

Signed-off-by: default avatararadermache <ansgar.radermacher@cea.fr>
Through Eclipse Mars, the Java Reverse Engineering was available in the Papyrus extra plugins. Since Eclipse Neon, they are now in a separate Papyrus component, called Papyrus software designer.
The Java reverse tools allow Java files or packages to be reverse-engineered into a Papyrus class diagram.
[[installation_instructions]]
== Installation instructions
The Java features of Papyrus are available as part of the http://wiki.eclipse.org/Papyrus_Software_Designer[Papyrus Software Designer] extra feature.
You can install it by using the Papyrus Software Designer update-site (for Oxygen):
* http://download.eclipse.org/modeling/mdt/papyrus/components/designer/
Or you can use the nightly build update site for Oxygen (paste following url in eclipse update site):
* https://hudson.eclipse.org/papyrus/job/papyrus-designer-photon/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.designer.p2/target/repository/
Then select "Papyrus Java profile, library and code generation (Incubation)" feature. You need JDT installed (which comes with most Eclipse packages).
image:figs/JastallSWDesignerJavaFeature.png[Java feature]
[[how_to_use_reverse]]
== How to use Reverse
[[using_command]]
=== Using Command
[[reverse_engineer_a_java_class]]
==== Reverse-engineer a Java class
A Java class can be reverse-engineered into a Papyrus class diagram:
* open the class diagram,
* select a Java package from a project
* click the Reverse button image:figs/ReverseButton.jpg[Reverse button]
A UML class is created in Model Explorer. You can now add it into your diagram.
Note that all associated classes have also been added to the model.
[[reverse_engineer_a_package]]
==== Reverse-engineer a package
A Java package (and all classes included) can be reverse-engineered into a Papyrus class diagram:
* open the class diagram,
* select a Java package from a project,
* click the Reverse button image:figs/ReverseButton.jpg[Reverse button]
Packages and classes have been created in Model Explorer. Your can now add them to your diagram.
Note that all associated classes have also been added to the model.
[[reverse_engineering_settings]]
==== Reverse-engineering settings
By default, a package named "generated" is created for reverse-engineering. You can choose another package name on the options menu.
image:figs/JavaReverseOptionsMenu.jpg[Reverse options menu]
This option menu allows one to:
* change the default package of the reverse-engineering,
* add or remove search path. The reverse generator search existing UML classes and regenerate them.
* add or remove creation path. The reverse generator search on existing Java classes to generate a UML class. Useful for creating Java imports (e.g.: String, Integer).
[[using_drag_drop]]
=== Using Drag & Drop
You can reverse-engineer a class or a package by just dragging & dropping it on a Papyrus diagram:
* Drag one or more classes and/or packages,
* Drop the selection into an open diagram.
image:figs/JavaReverseDragAndDrop.png[Reverse drag and drop]
A settings dialog is opened. You can modify settings (please see Reverse settings).
When you're reverse-engineering via the drag & drop method, you can also choose to display model, packages, and classes / interfaces / enumerations in the Papyrus diagram. To enable display, just click the check-boxes:
image:figs/JavaReverseDnDPopUp.png[Reverse drag and drop popup]
When you click on the _OK_ button, your components are displayed in the Papyrus diagram. Note: while all selected components are reversed-engineered, only components which are selected, but not in the Papyrus diagram are displayed.
image:figs/JavaReverseDnDResult.png[Reverse drag and drop results]
[[change_default_reverse_engineering_settings]]
== Change default reverse-engineering settings
The Java code reverse-engineering plugin allows you to change default settings on eclipse preferences:
* Open _Eclipse Preferences_,
* Search for the _Papyrus_ section,
* Choose _Java Code Reverse_ sub-section
In this preferences page, you can change:
* default search path values,
* default creation path values.
Note that there are default values; if you have changed these values for a project, your changes are saved, and default values are not used.
image:figs/JavaCodeReversePreferences.png[Reverse preferences]
[[developer_resources]]
== Developer resources
* Git repo: https://gitlab.eclipse.org/eclipse/papyrus/org.eclipse.papyrus-designer
* Java plugins path: plugins/languages/java/
* Java reverse plugins:
** org.eclipse.papyrus.designer.languages.java.reverse.ui
*** Starting points when called from toolbar UI:
*** org.eclipse.papyrus.designer.languages.java.reverse.ui.handlers.JavaCodeReverseInJobHandler.doPrepareExecute(ExecutionEvent)
*** org.eclipse.papyrus.designer.languages.java.reverse.ui.handlers.JavaCodeReverseInJobHandler.doExecuteTransactionInJob(IProgressMonitor)
** org.eclipse.papyrus.designer.languages.java.reverse
*** Project explorer walker visits the project explorer resources recursively, until we reach a compilation unit called a "node" in this context.
**** org.eclipse.papyrus.designer.languages.java.reverse.ui.ProjectExplorerNodeWalkerWithIProgress.doSwitch(Object, SubMonitor)
**** org.eclipse.papyrus.designer.languages.java.reverse.ui.ProjectExplorerNodeWalkerWithIProgress.visitICompilationUnit(ICompilationUnit, SubMonitor)
*** Then we use a node visitor to visit its JDT elements.
**** {blank}
***** org.eclipse.papyrus.designer.languages.java.reverse.ui.ReverseSelectedNodeVisitor.visitICompilationUnit(ICompilationUnit)
*** Which uses its compilation unit analyzer to analyze and create UML elements
**** org.eclipse.papyrus.designer.languages.java.reverse.umlparser.CompilationUnitAnalyser.processCompilationUnit(CompilationUnit)
*** The compilation unit analyzer uses other classes which are all in the following package:
**** org.eclipse.papyrus.designer.languages.java.reverse.umlparser
** Java Parser and JDT Parser
*** To reverse Java code, it is parsed by Java Parser and an AST is built.
*** Java Parser is embedded in: org.eclipse.papyrus.designer.languages.java.reverse.javaparser
*** We are also experimenting with JDT Parser (currently deactivated for the user)
*** JDT Parser files are in: org.eclipse.papyrus.designer.languages.java.reverse.jdt
Category:Modeling Category:Papyrus Category:Papyrus-Software-Designer