| EngineState.java |
/*
* $Id: EngineState.java,v 1.15 2010/09/29 17:21:48 agoubard Exp $
*
* See the COPYRIGHT file for redistribution and use restrictions.
*/
package org.xins.server;
import org.xins.common.MandatoryArgumentChecker;
/**
* State of an <code>Engine</code>.
*
* @version $Revision: 1.15 $ $Date: 2010/09/29 17:21:48 $
* @author <a href="mailto:ernst@ernstdehaan.com">Ernst de Haan</a>
*/
final class EngineState {
static final Type INTERMEDIATE_STATE = new Type();
static final Type USABLE_STATE = new Type();
static final Type ERROR_STATE = new Type();
/**
* The <em>INITIAL</em> state.
*/
static final EngineState INITIAL =
new EngineState("INITIAL", INTERMEDIATE_STATE);
/**
* The <em>BOOTSTRAPPING_FRAMEWORK</em> state.
*/
static final EngineState BOOTSTRAPPING_FRAMEWORK =
new EngineState("BOOTSTRAPPING_FRAMEWORK", INTERMEDIATE_STATE);
/**
* The <em>FRAMEWORK_BOOTSTRAP_FAILED</em> state.
*/
static final EngineState FRAMEWORK_BOOTSTRAP_FAILED =
new EngineState("FRAMEWORK_BOOTSTRAP_FAILED", ERROR_STATE);
/**
* The <em>CONSTRUCTING_API</em> state.
*/
static final EngineState CONSTRUCTING_API =
new EngineState("CONSTRUCTING_API", INTERMEDIATE_STATE);
/**
* The <em>API_CONSTRUCTION_FAILED</em> state.
*/
static final EngineState API_CONSTRUCTION_FAILED =
new EngineState("API_CONSTRUCTION_FAILED", ERROR_STATE);
/**
* The <em>BOOTSTRAPPING_API</em> state.
*/
static final EngineState BOOTSTRAPPING_API =
new EngineState("BOOTSTRAPPING_API", INTERMEDIATE_STATE);
/**
* The <em>API_BOOTSTRAP_FAILED</em> state.
*/
static final EngineState API_BOOTSTRAP_FAILED =
new EngineState("API_BOOTSTRAP_FAILED", ERROR_STATE);
/**
* The <em>INITIALIZING_API</em> state.
*/
static final EngineState INITIALIZING_API =
new EngineState("INITIALIZING_API", INTERMEDIATE_STATE);
/**
* The <em>API_INITIALIZATION_FAILED</em> state.
*/
static final EngineState API_INITIALIZATION_FAILED =
new EngineState("API_INITIALIZATION_FAILED", ERROR_STATE);
/**
* The <em>READY</em> state.
*/
static final EngineState READY =
new EngineState("READY", USABLE_STATE);
/**
* The <em>DISPOSING</em> state.
*/
static final EngineState DISPOSING =
new EngineState("DISPOSING", INTERMEDIATE_STATE);
/**
* The <em>DISPOSED</em> state.
*/
static final EngineState DISPOSED
= new EngineState("DISPOSED", INTERMEDIATE_STATE);
/**
* The name of this state. Cannot be <code>null</code>.
*/
private final String _name;
/**
* The type of this state. Never <code>null</code>.
*/
private final Type _type;
/**
* Constructs a new <code>EngineState</code> object.
*
* @param name
* the name of this state, cannot be <code>null</code>.
*
* @param type
* the type of this state, cannot be <code>null</code>.
*
* @throws IllegalArgumentException
* if <code>name == null || type == null</code>.
*/
EngineState(String name, Type type)
throws IllegalArgumentException {
// Check preconditions
MandatoryArgumentChecker.check("name", name, "type", type);
// Initialize fields
_name = name;
_type = type;
}
/**
* Returns the name of this state.
*
* @return
* the name of this state, cannot be <code>null</code>.
*/
public String getName() {
return _name;
}
/**
* Checks if this state is an error state.
*
* @return
* <code>true</code> if this is an error state, <code>false</code>
* otherwise.
*/
public boolean isError() {
return _type == ERROR_STATE;
}
/**
* Checks if this state allows function invocations.
*
* @return
* <code>true</code> if this state allows function invocations,
* <code>false</code> otherwise.
*/
public boolean allowsInvocations() {
return _type == USABLE_STATE;
}
/**
* Returns a textual representation of this object.
*
* @return
* the name of this state, never <code>null</code>.
*/
public String toString() {
return _name;
}
/**
* Categorization of an engine state.
*
* @version $Revision: 1.15 $ $Date: 2010/09/29 17:21:48 $
* @author <a href="mailto:ernst@ernstdehaan.com">Ernst de Haan</a>
*/
static class Type {
/**
* Constructs a new instance.
*/
private Type() {
// empty
}
}
}