private CommandListener createExitHandler()

in surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java [283:326]


    private CommandListener createExitHandler(final PpidChecker ppidChecker) {
        return new CommandListener() {
            @Override
            public void update(Command command) {
                Shutdown shutdown = command.toShutdownData();
                if (shutdown.isKill()) {
                    if (ppidChecker != null) {
                        ppidChecker.stop();
                    }

                    logger.error("Surefire is going to kill self fork JVM. " + "Received SHUTDOWN {" + shutdown
                            + "} command from Maven shutdown hook.");
                    DumpErrorSingleton.getSingleton()
                            .dumpText("Killing self fork JVM. Received SHUTDOWN command from Maven shutdown hook."
                                    + NL
                                    + "Thread dump before killing the process (" + getProcessName() + "):"
                                    + NL
                                    + generateThreadDump());

                    kill();
                } else if (shutdown.isExit()) {
                    if (ppidChecker != null) {
                        ppidChecker.stop();
                    }
                    cancelPingScheduler();
                    logger.error("Surefire is going to exit self fork JVM. " + "Received SHUTDOWN {" + shutdown
                            + "} command from Maven shutdown hook.");
                    DumpErrorSingleton.getSingleton()
                            .dumpText("Exiting self fork JVM. Received SHUTDOWN command from Maven shutdown hook."
                                    + NL
                                    + "Thread dump before exiting the process (" + getProcessName() + "):"
                                    + NL
                                    + generateThreadDump());
                    exitBarrier.release();
                    exit1();
                } else {
                    // else refers to shutdown=testset, but not used now, keeping reader open
                    DumpErrorSingleton.getSingleton()
                            .dumpText(
                                    "Thread dump for process (" + getProcessName() + "):" + NL + generateThreadDump());
                }
            }
        };
    }