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

org.glassfish.api.admin.InstanceState Maven / Gradle / Ivy

There is a newer version: 8.0.0-JDK17-M7
Show newest version
/*
 * Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package org.glassfish.api.admin;

import java.util.ArrayList;
import java.util.List;

/**
 * This holds the late status of the instance, the commands that are Queued up while the instance was starting etc.
 *
 * @author Vijay Ramachandran
 */
public class InstanceState {
    public enum StateType {
        NO_RESPONSE {
            @Override
            public String getDescription() {
                return "NO_RESPONSE";
            }

            @Override
            public String getDisplayString() {
                return " no response";
            }
        },
        NOT_RUNNING {
            @Override
            public String getDescription() {
                return "NOT_RUNNING";
            }

            @Override
            public String getDisplayString() {
                return " not running";
            }
        },
        STARTING {
            @Override
            public String getDescription() {
                return "STARTING";
            }

            @Override
            public String getDisplayString() {
                return " starting";
            }
        },
        RUNNING {
            @Override
            public String getDescription() {
                return "RUNNING";
            }

            @Override
            public String getDisplayString() {
                return " running";
            }
        },
        RESTART_REQUIRED {
            @Override
            public String getDescription() {
                return "REQUIRES_RESTART";
            }

            @Override
            public String getDisplayString() {
                return " requires restart";
            }
        },
        NEVER_STARTED {
            @Override
            public String getDescription() {
                return "NEVER_STARTED";
            }

            @Override
            public String getDisplayString() {
                return " never started";
            }
        };

        public String getDescription() {
            return null;
        }

        public String getDisplayString() {
            return "NONE";
        }

        public static StateType makeStateType(String s) {
            for (StateType st : StateType.values()) {
                if (s.equals(st.getDescription())) {
                    return st;
                }
            }
            return null;
        }
    }

    private StateType currentState;
    private List failedCommands;

    public InstanceState(StateType st) {
        currentState = st;
        failedCommands = new ArrayList<>();
    }

    public StateType getState() {
        return currentState;
    }

    public void setState(StateType state) {
        currentState = state;
    }

    public List getFailedCommands() {
        return failedCommands;
    }

    public void addFailedCommands(String cmd) {
        if (currentState == StateType.NEVER_STARTED) {
            // do not keep track of failed commands for instances that
            // have never been started
            return;
        }
        failedCommands.add(cmd);
    }

    public void removeFailedCommands() {
        failedCommands.clear();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy