@@ -33,7 +33,11 @@ import java.io.File;
* @since Ant1.7.1
* @since Ant1.7.1
*/
*/
public class BigProjectLogger extends NoBannerLogger implements SubBuildListener {
public class BigProjectLogger extends NoBannerLogger
implements SubBuildListener {
private volatile boolean subBuildStartedRaised = false;
private final Object subBuildLock = new Object();
/**
/**
* Header string for the log.
* Header string for the log.
@@ -69,15 +73,24 @@ public class BigProjectLogger extends NoBannerLogger implements SubBuildListener
return super.getBuildSuccessfulMessage() + TimestampedLogger.SPACER + getTimestamp();
return super.getBuildSuccessfulMessage() + TimestampedLogger.SPACER + getTimestamp();
}
}
/**
* {@inheritDoc}
*
* @param event
*/
public void targetStarted(BuildEvent event) {
maybeRaiseSubBuildStarted(event);
super.targetStarted(event);
}
/**
/**
* {@inheritDoc}
* {@inheritDoc}
*
*
* @param event
* @param event
*/
*/
public void buildStarted(BuildEvent event) {
super.buildStarted(event);
subBuildStarted(event);
public void task Started(BuildEvent event) {
maybeRaiseSubB uildStarted(event);
super.task Started(event);
}
}
/**
/**
@@ -86,10 +99,21 @@ public class BigProjectLogger extends NoBannerLogger implements SubBuildListener
* @param event
* @param event
*/
*/
public void buildFinished(BuildEvent event) {
public void buildFinished(BuildEvent event) {
maybeRaiseSubBuildStarted(event);
subBuildFinished(event);
subBuildFinished(event);
super.buildFinished(event);
super.buildFinished(event);
}
}
/**
* {@inheritDoc}
*
* @param event
*/
public void messageLogged(BuildEvent event) {
maybeRaiseSubBuildStarted(event);
super.messageLogged(event);
}
/**
/**
* Override point, extract the target name
* Override point, extract the target name
*
*
@@ -173,4 +197,15 @@ public class BigProjectLogger extends NoBannerLogger implements SubBuildListener
return FOOTER;
return FOOTER;
}
}
private void maybeRaiseSubBuildStarted(BuildEvent event) {
// double checked locking should be OK since the flag is write-once
if (!subBuildStartedRaised) {
synchronized (subBuildLock) {
if (!subBuildStartedRaised) {
subBuildStartedRaised = true;
subBuildStarted(event);
}
}
}
}
}
}