LogixNG Tutorial - Chapter 99

Note to reviewers of JMRI. When to merge LogixNG?

LogixNG is a huge PR. Around 800 files, where most of them are new. On the other hand, almost all of LogixNG are in separate folders and if it's not used by the user, the impact on the rest of JMRI should be minimal.

Version numbers

LogixNG has been developed for the last two years. Once consequence is that there are version numbers for older versions of JMRI that needs to be changed once it's time to release LogixNG. The ones I'm aware of now is:
  • help/en/releasenotes/current-draft-note.shtml
  • xml/schema/layout-4-19-2.xsd
  • xml/schema/logixng/... - the schema files has version numbers and all of these needs to be changed.

File structure

Almost all of LogixNG is in separate folders with a few exceptions. The exceptions are:
  • help/en/releasenotes/current-draft-note.shtml
  • java/src/apps/Apps.java - Setup the LogixNGs when the application starts
  • java/src/apps/AppsBase.java - Setup the LogixNGs when the application starts
  • java/src/jmri/configurexml/LoadXmlConfigAction.java - Setup the LogixNGs when loaded
  • java/src/jmri/jmrit/Bundle.properties
  • java/src/jmri/jmrit/ToolsMenu.java - Adds the LogixNG menu items
  • java/src/jmri/jmrit/beantable/AbstractLogixNGTableAction.java - abstract class for the LogixNG bean tables
  • java/src/jmri/jmrit/beantable/BeanTableBundle.properties
  • java/src/jmri/jmrit/beantable/BeanTableStartupActionFactory.java
  • java/src/jmri/jmrit/beantable/ListedTableFrame.java - Add LogixNG bean tables to the list of bean tables
  • java/src/jmri/jmrit/beantable/LogixNGModuleTableAction.java
  • java/src/jmri/jmrit/beantable/LogixNGTableAction.java
  • java/src/jmri/jmrit/beantable/LogixNGTableTableAction.java
  • java/test/jmri/configurexml/LoadAndStoreTestBase.java - REMOVE THIS!!!
  • java/test/jmri/jmrit/beantable/LogixNGTableActionTest.java
  • java/test/jmri/util/JUnitUtil.java - the method initLogixNGManager()
  • xml/schema/layout-4-19-2.xsd - includes the LogixNG schema files

The folders for LogixNG are:

  • java/src/jmri/jmrit/logixng/ - Tests for LogixNG
  • java/test/jmri/jmrit/logixng/ - Tests for LogixNG
  • java/src/jmri/jmrix/loconet/logixng/ - LocoNet actions and expressions for LogixNG
  • java/test/jmri/jmrix/loconet/logixng/ - Tests for LocoNet actions and expressions for LogixNG
  • xml/schema/logixng/ - schema files for LogixNG

Tests

There is not enough tests of LogixNG to be satisfied, but much of the code base are tested. LogixNG has the benefit of having a huge amount of small classes, there most of the classes is quite easy to test. On the other hand, due to the size of LogixNG, there is a huge amount of code that needs to be written to test LogixNG throughout.