IntelliJ Idea Configuration

FWD since bzr branch 3821c revision 12128 contains preconfigured IntelliJ Idea module. It can be found in tools/ide/idea. Use it directly in your own Idea project or indirectly through Hotel GUI Demo Application, which since bzr revision 228 contains a complete Idea project. The following lines document this project. Use it to your own development needs.

Quick start

1. Checkout or download Hotel GUI Demo Application revision 228+.
2. Build the sample project by following the wiki page at least up to the point Hotel GUI Demo Application: Build Your Application.
3. Fetch the IDE dependencies (this is needed only once or after the dependencies change):

cd <hotel_gui_root>/p2j
./gradlew fetchDependencies

4. Run Idea.
5. Configure Java 8 in Idea, FWD requires this particular version.
6. From Idea open the project file <hotel_gui_root>/tools/ide/idea/hotel.ipr.

Project layout

The Hotel GUI Idea project contains two Idea modules. One for the core FWD itself and second for the Hotel GUI generated code and related resources. The modules point to the needed set of Java dependencies located in <project_root>/p2j/.lib/ and resolved by fetchDependencies Gradle target. The project is configured to write build outputs in <project_root>/tools/ide/idea/out.

The project has two run/debug configurations. FWD Server and FWD Client Swing GUI. As the names imply, the former is used to start FWD server, where all the converted business logic runs and the latter is the client Java process for presenting the program outputs and for handling user input.

FWD utilizes AspectJ framework. When built with Gradle the code is compiled with AspectJ compiler and all aspect-related code magic (weaving) is performed during compile time. Idea has only limited support for AspectJ and so the project is setup to perform the weaving on runtime, when the Hotel GUI application starts. For this reason both run/debug configurations supply -javaagent JVM arguments with the AspectJ weaver jar file and reference aop.xml in <project_root>/p2j/tools/ide/res/META-INF with all the needed AspectJ configurations.

The class path dependencies for both modules are declared in a particular order so that the expected class or resource is correctly resolved. For instance the class path for the Hotel GUI module must contain hotel.jar (to satisfy some of the FWD requirements on resource jars), which already contains the compiled converted legacy Java classes. For this reason the jar must appear on the class path after the project sources so that any edited Java classes are resolved first.

The classpath dependencies of both modules are defined as follows:


1. Java 1.8 classes
2. Module sources
3. FWD jar file dependencies

Hotel GUI

1. Java 1.8 classes
2. Module sources
3. hotel.jar
4. FWD module

Running/Debugging FWD

To run (or debug) the Hotel GUI project from Idea:

1. Start FWD Server run configuration.
2. Wait for the server to finish its initialization. Make sure there are no exceptions or error messages in the run/debug output window and wait for the output message "Server ready".
3. Start FWD Client Swing GUI run configuration.
4. The Hotel GUI login window will come up.

To automate the launch process feel free to install Multirun Idea plugin or similar.

Editing the code

Any Java source code changes in Idea will be correctly compiled by the IDE, no need to run Gradle. However certain changes do require hotel.jar to be rebuilt with Gradle (with the ant jar command). These changes include changes in the bitmap files used in the GUI, certain XML files, and so on. If your change doesn't show up in the launched application instance, rebuild with Gradle.

Obviously any changes to the ABL code must be reconverted following the CLI conversion process. This can't be currently handled by the IDE. Also make sure you backup any manual changes to the converted classes before reconversion.

© 2004-2021 Golden Code Development Corporation. ALL RIGHTS RESERVED.