package org.wamblee.system; import javax.sql.DataSource; import org.wamblee.test.EventTracker; public class Application extends AbstractComponent { private static RequiredInterface[] required() { return new RequiredInterface[] { new DefaultRequiredInterface("datasource", DataSource.class), new DefaultRequiredInterface("integer", Integer.class) }; } private EventTracker _tracker; public Application() { super("application", new ProvidedInterface[0], required()); } public Application(EventTracker aTracker) { this(); _tracker = aTracker; } @Override protected void doStart(String aContext) { track("start." + getName()); } @Override protected void doStop() { track("stop." + getName()); } private void track(String aString) { if ( _tracker == null ) { return; } _tracker.eventOccurred(aString); } }