Skip to content

#89 #331 Explicitly choose exit behavior of Application.run() functions.

I removed dependence on implicit exit behavior of Application.run() based on the presents of OSGi Platform.

Now Application.run() only calls System.exit() if the calling function is called with true as exit argument. When exit argument equals false the Application.run() method returns the applications exit code.

Closes #89 (closed) Closes #331 (closed)

Executed tests.

Standard unit test on Linux only.

  • chi/org.eclipse.escet.chi.codegen/src/org/eclipse/escet/chi/codegen/JavaCodeGenerator.java
  • tooldef/org.eclipse.escet.tooldef.interpreter/src/org/eclipse/escet/tooldef/interpreter/ToolDefBasedPluginUnitTest.java

Command line without paramaters on Linux and Windows.

  • chisim* chi/org.eclipse.escet.chi.simulator/src/org/eclipse/escet/chi/simulator/SimulatorApplication.java

  • cif2cif* cif/org.eclipse.escet.cif.cif2cif.app/src/org/eclipse/escet/cif/cif2cif/app/CifToCifApp.java

  • cif2mcrl2* cif/org.eclipse.escet.cif.cif2mcrl2/src/org/eclipse/escet/cif/cif2mcrl2/Cif2Mcrl2Application.java

  • cif2plc* cif/org.eclipse.escet.cif.cif2plc/src/org/eclipse/escet/cif/cif2plc/CifToPlcApp.java

  • cif2supremica* cif/org.eclipse.escet.cif.cif2supremica/src/org/eclipse/escet/cif/cif2supremica/CifToSupremicaApp.java

  • cif2uppaal* cif/org.eclipse.escet.cif.cif2uppaal/src/org/eclipse/escet/cif/cif2uppaal/CifToUppaalApp.java

  • cif2yed* cif/org.eclipse.escet.cif.cif2yed/src/org/eclipse/escet/cif/cif2yed/CifToYedApp.java

  • cifcodegen* cif/org.eclipse.escet.cif.codegen/src/org/eclipse/escet/cif/codegen/CodeGenApp.java

  • cifcontrollercheck* cif/org.eclipse.escet.cif.controllercheck/src/org/eclipse/escet/cif/controllercheck/ControllerCheckApp.java

  • cifdatasynth*
    cif/org.eclipse.escet.cif.datasynth/src/org/eclipse/escet/cif/datasynth/CifDataSynthesisApp.java

  • cifabstr* cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/AutomatonAbstractionApplication.java

  • cifctrlchk* cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/ControllabilityCheckApplication.java

  • cifdfamin* cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/DfaMinimizationApplication.java

  • ciflngeqv* cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/LanguageEquivalenceCheckApplication.java

  • cifnfadfa* cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/NfaToDfaApplication.java

  • cifncchk* cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/NonconflictingCheckApplication.java

  • cifobschk* cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/ObserverCheckApplication.java

  • cifproj* cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/ProjectionApplication.java

  • cifsupsynth* cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/SupervisorSynthesisApplication.java

  • cifprod* cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/SynchronousProductApplication.java

  • cifsynthanalys* cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/SynthesisAnalysisApplication.java

  • ciftrim* cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/TrimApplication.java

  • ciftrimchk* cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/TrimCheckApplication.java

  • cifevtdis* cif/org.eclipse.escet.cif.eventdisabler/src/org/eclipse/escet/cif/eventdisabler/EventDisablerApplication.java

  • cifexplorer* cif/org.eclipse.escet.cif.explorer/src/org/eclipse/escet/cif/explorer/app/ExplorerApplication.java. See Error [1]. Solved in #658 (closed)

  • cifmerge* cif/org.eclipse.escet.cif.merger/src/org/eclipse/escet/cif/merger/CifMergerApp.java

  • cifsim* cif/org.eclipse.escet.cif.simulator/src/org/eclipse/escet/cif/simulator/CifSimulatorApp.java

  • dsmclustering* common/org.eclipse.escet.common.dsm.app/src/org/eclipse/escet/common/dsm/app/DsmApplication.java

  • setextgen* setext/org.eclipse.escet.setext.generator/src/org/eclipse/escet/setext/generator/SeTextGeneratorApp.java

  • tooldef* tooldef/org.eclipse.escet.tooldef.interpreter/src/org/eclipse/escet/tooldef/interpreter/ToolDefInterpreterApp.java

Tested by any of the scripts and Eclipse Cif Simulator on Linux and Windows:

  • common/org.eclipse.escet.common.app.framework/src/org/eclipse/escet/common/app/framework/AppEclipseApplication.java
  • common/org.eclipse.escet.common.app.framework/src/org/eclipse/escet/common/app/framework/Application.java

Run Eclipse Cif Simulator on Linux and Windows:

  • common/org.eclipse.escet.common.app.framework/src/org/eclipse/escet/common/app/framework/ChildAppStarter.java
  • common/org.eclipse.escet.common.eclipse.ui/src/org/eclipse/escet/common/eclipse/ui/BaseFileCommandHandler.java

Standalone unit-tests on Linux only.

  • common/org.eclipse.escet.common.app.framework/src-test/org/eclipse/escet/common/app/framework/ReportExceptionTest.java

Run as java application on Linux only.

  • cif/org.eclipse.escet.cif.multilevel/src/org/eclipse/escet/cif/multilevel/MultilevelApp.java
  • cif/org.eclipse.escet.cif.plcgen/src/org/eclipse/escet/cif/plcgen/CifPlcGenApp.java

[1] error running cifexplorer.

The cifexplorer script currently references an incorrect package. org.eclipse.escet.cif.explorer.app should be org.eclipse.escet.cif.explorer. This is an existing problem.

!SESSION 2023-09-23 13:45:20.473 -----------------------------------------------
eclipse.buildId=unknown
java.version=17.0.5
java.vendor=Eclipse Adoptium
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en
Framework arguments:  -application org.eclipse.escet.common.app.framework.application org.eclipse.escet.cif.explorer.app org.eclipse.escet.cif.explorer.app.ExplorerApplication
Command-line arguments:  -os linux -ws gtk -arch x86_64 -application org.eclipse.escet.common.app.framework.application org.eclipse.escet.cif.explorer.app org.eclipse.escet.cif.explorer.app.ExplorerApplication

!ENTRY org.eclipse.osgi 4 0 2023-09-23 13:45:21.540
!MESSAGE Application error
!STACK 1
OSGi bundle "org.eclipse.escet.cif.explorer.app" not found.
        at org.eclipse.escet.common.app.framework.AppEclipseApplication.start(AppEclipseApplication.java:64)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1440)

The solution is to change the script cifexplorer to:

... -application org.eclipse.escet.common.app.framework.application -nosplash org.eclipse.escet.cif.explorer org.eclipse.escet.cif.explorer.app.ExplorerApplication $* 
Edited by Patrick van Berkel

Merge request reports