All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.finos.tracdap.common.exception.EStartup Maven / Gradle / Ivy

/*
 * Licensed to the Fintech Open Source Foundation (FINOS) under one or
 * more contributor license agreements. See the NOTICE file distributed
 * with this work for additional information regarding copyright ownership.
 * FINOS licenses this file to you under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with the
 * License. You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.finos.tracdap.common.exception;


/**
 * EStartup is an exception that can be raised during the startup sequence
 * to signal a startup failure. It should always be fatal.
 *
 * Examples of things that can cause EStartup exceptions are invalid configuration
 * or problems connecting to key services during startup.
 *
 * Generally EStartup will cause the main thread to exit with a stack trace. Any
 * resources that are already allocated should be closed.
 */
public class EStartup extends ETracPublic {

    private final int exitCode;
    private final boolean quiet;

    public EStartup(String message, int exitCode, Throwable cause) {
        super(message, cause);
        this.exitCode = exitCode;
        this.quiet = false;
    }

    public EStartup(String message, int exitCode) {
        this(message, exitCode, null);
    }

    public EStartup(String message, Throwable cause) {
        this(message, -1, cause);
    }

    public EStartup(String message) {
        this(message, -1);
    }

    private EStartup(int exitCode, boolean quiet) {
        super("Quiet shutdown");
        this.exitCode = exitCode;
        this.quiet = quiet;
    }

    /**
     * Using the quiet shutdown flag is a signal not to print extra error info to the console or log
     *
     * This can be useful if error information is already printed at the site where the exception is
     * raised and no further processing is needed.
     *
     * @param exitCode The exit code to use when the process terminates
     * @return An EStartup exception ready to be thrown
     */
    public static EStartup quietShutdown(int exitCode) {
        return new EStartup(exitCode, true);
    }

    public int getExitCode() {
        return exitCode;
    }

    public boolean isQuiet() {
        return quiet;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy