FileDocCategorySizeDatePackage
StateImpl.javaAPI DocJava SE 5 API1809Fri Aug 26 14:54:40 BST 2005com.sun.corba.se.spi.orbutil.fsm

StateImpl.java

/*
 * @(#)StateImpl.java	1.9 03/12/19
 *
 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

package com.sun.corba.se.spi.orbutil.fsm ;

import com.sun.corba.se.impl.orbutil.fsm.NameBase ;

import java.util.Map ;
import java.util.HashMap ;
import java.util.Set ;
import java.util.HashSet ;

import com.sun.corba.se.impl.orbutil.fsm.GuardedAction ;
import com.sun.corba.se.impl.orbutil.fsm.NameBase ;

/** Base class for all states in a StateEngine.  This must be used
* as the base class for all states in transitions added to a StateEngine.
*/
public class StateImpl extends NameBase implements State {
    private Action defaultAction ;
    private State defaultNextState ;
    private Map inputToGuardedActions ;

    public StateImpl( String name ) 
    { 
	super( name ) ; 
	defaultAction = null ;
	inputToGuardedActions = new HashMap() ;
    } 

    public void preAction( FSM fsm ) 
    {
    }

    public void postAction( FSM fsm )
    {
    }

    // Methods for use only by StateEngineImpl.

    public State getDefaultNextState()
    {
	return defaultNextState ;
    }

    public void setDefaultNextState( State defaultNextState )
    {
	this.defaultNextState = defaultNextState ;
    }

    public Action getDefaultAction()
    {
	return defaultAction ;
    }

    public void setDefaultAction( Action defaultAction )
    {
	this.defaultAction = defaultAction ;
    }

    public void addGuardedAction( Input in, GuardedAction ga )
    {
	Set gas = (Set)inputToGuardedActions.get( in ) ;
	if (gas == null) {
	    gas = new HashSet() ;
	    inputToGuardedActions.put( in, gas ) ;
	}

	gas.add( ga ) ;
    }

    public Set getGuardedActions( Input in )
    {
	return (Set)inputToGuardedActions.get( in ) ;
    }
}