1
package com.eucalyptus.component;
3
import java.util.NavigableMap;
4
import java.util.concurrent.ConcurrentSkipListMap;
5
import org.apache.log4j.Logger;
6
import com.eucalyptus.component.Lifecycles.State;
7
import com.eucalyptus.records.EventType;
8
import com.eucalyptus.util.Transition;
9
import com.eucalyptus.records.EventRecord;
14
public class Lifecycle implements ComponentInformation {
15
private static Logger LOG = Logger.getLogger( Lifecycle.class );
16
private final NavigableMap<Transition, Class> transitions = new ConcurrentSkipListMap<Transition, Class>( );
17
private final Component parent;
18
private Lifecycles.State state;
20
public Lifecycle( Component parent ) {
22
this.state = Lifecycles.State.INITIALIZED;
23
for ( DefaultTransitionList t : DefaultTransitionList.values( ) ) {
24
this.addTransition( t.newInstance( ) );
28
public Boolean isInitialized( ) {
29
return State.STARTED.equals( this.state );
32
public void setState( State newState ) {
33
this.state = newState;
36
public Lifecycles.State getState( ) {
41
public String toString( ) {
42
StringBuilder builder = new StringBuilder( );
43
builder.append( "Lifecycle [" );
44
if ( this.state != null ) {
45
builder.append( "state=" ).append( this.state ).append( ", " );
47
builder.append( "]" );
48
return builder.toString( );
51
public void addTransition( Transition transition ) {
52
Class old = this.transitions.put( transition, transition.getClass( ) );
54
EventRecord.caller( Lifecycle.class, EventType.LIFECYCLE_TRANSITION_DEREGISTERED, transition.toString( ), old.getCanonicalName( ) );
56
EventRecord.caller( Lifecycle.class, EventType.LIFECYCLE_TRANSITION_REGISTERED, transition.toString( ) );
60
public String getName( ) {
61
return this.parent.getName( );