diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java index 46a6ed855..de0654476 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java @@ -19,10 +19,9 @@ import javax.sound.sampled.LineEvent; import javax.sound.sampled.LineListener; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; -import org.apache.tools.ant.BuildEvent; -import org.apache.tools.ant.BuildListener; -import org.apache.tools.ant.Project; -import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.avalon.framework.logger.LogEnabled; +import org.apache.avalon.framework.logger.Logger; +import org.apache.myrmidon.listeners.AbstractProjectListener; /** * This class is designed to be used by any AntTask that requires audio output. @@ -35,8 +34,8 @@ import org.apache.avalon.framework.logger.AbstractLogEnabled; * @version $Revision$, $Date$ */ public class AntSoundPlayer - extends AbstractLogEnabled - implements LineListener, BuildListener + extends AbstractProjectListener + implements LineListener, LogEnabled { private File m_fileSuccess; private int m_loopsSuccess; @@ -46,110 +45,68 @@ public class AntSoundPlayer private int m_loopsFail; private Long m_durationFail; - public AntSoundPlayer() - { - } - - /** - * @param fileFail The feature to be added to the BuildFailedSound attribute - * @param loopsFail The feature to be added to the BuildFailedSound - * attribute - * @param durationFail The feature to be added to the BuildFailedSound - * attribute - */ - public void addBuildFailedSound( File fileFail, int loopsFail, Long durationFail ) - { - m_fileFail = fileFail; - m_loopsFail = loopsFail; - m_durationFail = durationFail; - } - - /** - * @param loops the number of times the file should be played when the build - * is successful - * @param duration the number of milliseconds the file should be played when - * the build is successful - * @param file The feature to be added to the BuildSuccessfulSound attribute - */ - public void addBuildSuccessfulSound( File file, int loops, Long duration ) - { - m_fileSuccess = file; - m_loopsSuccess = loops; - m_durationSuccess = duration; - } + private Logger m_logger; /** - * Fired after the last target has finished. This event will still be thrown - * if an error occured during the build. + * Provide component with a logger. * - * @see BuildEvent#getException() + * @param logger the logger */ - public void buildFinished( BuildEvent event ) + public void enableLogging( final Logger logger ) { - if( event.getException() == null && m_fileSuccess != null ) - { - // build successfull! - play( m_fileSuccess, m_loopsSuccess, m_durationSuccess ); - } - else if( event.getException() != null && m_fileFail != null ) - { - play( m_fileFail, m_loopsFail, m_durationFail ); - } + m_logger = logger; } - /** - * Fired before any targets are started. - */ - public void buildStarted( BuildEvent event ) + protected final Logger getLogger() { + return m_logger; } /** - * Fired whenever a message is logged. - * - * @see BuildEvent#getMessage() - * @see BuildEvent#getPriority() + * Notify listener of projectFinished event. */ - public void messageLogged( BuildEvent event ) + public void projectFinished() { + success(); } /** - * Fired when a target has finished. This event will still be thrown if an - * error occured during the build. + * Notify listener of log message event. * - * @see BuildEvent#getException() + * @param message the message + * @param throwable the throwable */ - public void targetFinished( BuildEvent event ) + public void log( final String message, final Throwable throwable ) { + failure(); } /** - * Fired when a target is started. - * - * @see BuildEvent#getTarget() - */ - public void targetStarted( BuildEvent event ) - { - } - - /** - * Fired when a task has finished. This event will still be throw if an - * error occured during the build. - * - * @see BuildEvent#getException() + * @param fileFail The feature to be added to the BuildFailedSound attribute + * @param loopsFail The feature to be added to the BuildFailedSound + * attribute + * @param durationFail The feature to be added to the BuildFailedSound + * attribute */ - public void taskFinished( BuildEvent event ) + public void addBuildFailedSound( File fileFail, int loopsFail, Long durationFail ) { + m_fileFail = fileFail; + m_loopsFail = loopsFail; + m_durationFail = durationFail; } /** - * Fired when a task is started. - * - * @see BuildEvent#getTask() + * @param loops the number of times the file should be played when the build + * is successful + * @param duration the number of milliseconds the file should be played when + * the build is successful + * @param file The feature to be added to the BuildSuccessfulSound attribute */ - public void taskStarted( BuildEvent event ) + public void addBuildSuccessfulSound( File file, int loops, Long duration ) { + m_fileSuccess = file; + m_loopsSuccess = loops; + m_durationSuccess = duration; } /** @@ -174,6 +131,23 @@ public class AntSoundPlayer } } + protected void success() + { + if( null != m_fileSuccess ) + { + // build successfull! + play( m_fileSuccess, m_loopsSuccess, m_durationSuccess ); + } + } + + protected void failure() + { + if( null != m_fileFail ) + { + play( m_fileFail, m_loopsFail, m_durationFail ); + } + } + /** * Plays the file for duration milliseconds or loops. */ diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java index 46a6ed855..de0654476 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java @@ -19,10 +19,9 @@ import javax.sound.sampled.LineEvent; import javax.sound.sampled.LineListener; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; -import org.apache.tools.ant.BuildEvent; -import org.apache.tools.ant.BuildListener; -import org.apache.tools.ant.Project; -import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.avalon.framework.logger.LogEnabled; +import org.apache.avalon.framework.logger.Logger; +import org.apache.myrmidon.listeners.AbstractProjectListener; /** * This class is designed to be used by any AntTask that requires audio output. @@ -35,8 +34,8 @@ import org.apache.avalon.framework.logger.AbstractLogEnabled; * @version $Revision$, $Date$ */ public class AntSoundPlayer - extends AbstractLogEnabled - implements LineListener, BuildListener + extends AbstractProjectListener + implements LineListener, LogEnabled { private File m_fileSuccess; private int m_loopsSuccess; @@ -46,110 +45,68 @@ public class AntSoundPlayer private int m_loopsFail; private Long m_durationFail; - public AntSoundPlayer() - { - } - - /** - * @param fileFail The feature to be added to the BuildFailedSound attribute - * @param loopsFail The feature to be added to the BuildFailedSound - * attribute - * @param durationFail The feature to be added to the BuildFailedSound - * attribute - */ - public void addBuildFailedSound( File fileFail, int loopsFail, Long durationFail ) - { - m_fileFail = fileFail; - m_loopsFail = loopsFail; - m_durationFail = durationFail; - } - - /** - * @param loops the number of times the file should be played when the build - * is successful - * @param duration the number of milliseconds the file should be played when - * the build is successful - * @param file The feature to be added to the BuildSuccessfulSound attribute - */ - public void addBuildSuccessfulSound( File file, int loops, Long duration ) - { - m_fileSuccess = file; - m_loopsSuccess = loops; - m_durationSuccess = duration; - } + private Logger m_logger; /** - * Fired after the last target has finished. This event will still be thrown - * if an error occured during the build. + * Provide component with a logger. * - * @see BuildEvent#getException() + * @param logger the logger */ - public void buildFinished( BuildEvent event ) + public void enableLogging( final Logger logger ) { - if( event.getException() == null && m_fileSuccess != null ) - { - // build successfull! - play( m_fileSuccess, m_loopsSuccess, m_durationSuccess ); - } - else if( event.getException() != null && m_fileFail != null ) - { - play( m_fileFail, m_loopsFail, m_durationFail ); - } + m_logger = logger; } - /** - * Fired before any targets are started. - */ - public void buildStarted( BuildEvent event ) + protected final Logger getLogger() { + return m_logger; } /** - * Fired whenever a message is logged. - * - * @see BuildEvent#getMessage() - * @see BuildEvent#getPriority() + * Notify listener of projectFinished event. */ - public void messageLogged( BuildEvent event ) + public void projectFinished() { + success(); } /** - * Fired when a target has finished. This event will still be thrown if an - * error occured during the build. + * Notify listener of log message event. * - * @see BuildEvent#getException() + * @param message the message + * @param throwable the throwable */ - public void targetFinished( BuildEvent event ) + public void log( final String message, final Throwable throwable ) { + failure(); } /** - * Fired when a target is started. - * - * @see BuildEvent#getTarget() - */ - public void targetStarted( BuildEvent event ) - { - } - - /** - * Fired when a task has finished. This event will still be throw if an - * error occured during the build. - * - * @see BuildEvent#getException() + * @param fileFail The feature to be added to the BuildFailedSound attribute + * @param loopsFail The feature to be added to the BuildFailedSound + * attribute + * @param durationFail The feature to be added to the BuildFailedSound + * attribute */ - public void taskFinished( BuildEvent event ) + public void addBuildFailedSound( File fileFail, int loopsFail, Long durationFail ) { + m_fileFail = fileFail; + m_loopsFail = loopsFail; + m_durationFail = durationFail; } /** - * Fired when a task is started. - * - * @see BuildEvent#getTask() + * @param loops the number of times the file should be played when the build + * is successful + * @param duration the number of milliseconds the file should be played when + * the build is successful + * @param file The feature to be added to the BuildSuccessfulSound attribute */ - public void taskStarted( BuildEvent event ) + public void addBuildSuccessfulSound( File file, int loops, Long duration ) { + m_fileSuccess = file; + m_loopsSuccess = loops; + m_durationSuccess = duration; } /** @@ -174,6 +131,23 @@ public class AntSoundPlayer } } + protected void success() + { + if( null != m_fileSuccess ) + { + // build successfull! + play( m_fileSuccess, m_loopsSuccess, m_durationSuccess ); + } + } + + protected void failure() + { + if( null != m_fileFail ) + { + play( m_fileFail, m_loopsFail, m_durationFail ); + } + } + /** * Plays the file for duration milliseconds or loops. */