1 /* 2 * @(#)IState.java 3 * 4 * Copyright (C) 2002-2003 Matt Albrecht 5 * groboclown@users.sourceforge.net 6 * http://groboutils.sourceforge.net 7 * 8 * Part of the GroboUtils package at: 9 * http://groboutils.sourceforge.net 10 * 11 * Permission is hereby granted, free of charge, to any person obtaining a 12 * copy of this software and associated documentation files (the "Software"), 13 * to deal in the Software without restriction, including without limitation 14 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 15 * and/or sell copies of the Software, and to permit persons to whom the 16 * Software is furnished to do so, subject to the following conditions: 17 * 18 * The above copyright notice and this permission notice shall be included in 19 * all copies or substantial portions of the Software. 20 * 21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 24 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 26 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 27 * DEALINGS IN THE SOFTWARE. 28 */ 29 package net.sourceforge.groboutils.mbtf.v1; 30 31 32 /** 33 * Associates a system state with the transitions leading out of the state, 34 * and with the validation of the state. The state object should be immutable 35 * once the path generation begins. 36 * 37 * @author Matt Albrecht <a HREF="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a> 38 * @version $Date: 2003/02/10 22:52:25 $ 39 * @since June 12, 2002 40 */ 41 public interface IState 42 { 43 /** 44 * Retrieves the name for the state. This should be unique for 45 * state-machine assembly purposes, but it does not have to be. 46 * 47 * @return a non-null name for this state. 48 */ 49 public String getName(); 50 51 52 /** 53 * Retrieves the list of transitions leading from this state. 54 * 55 * @return a non-null list of all transitions from this state. If the 56 * length of the list is 0, then this is a terminal state. 57 */ 58 public ITransition[] getTransitions(); 59 60 61 /** 62 * Retrieves the list of all validation instances used to assert that 63 * the current state is valid. 64 * 65 * @return a non-null list of all validation instances for this state. 66 * An empty list will cause a warning on all but the first 67 * (initial) state. This list should not include the included 68 * Transitions' validates. 69 */ 70 public IValidate[] getValidates(); 71 } 72 73