Browse Source

defer self-generated subBuildStarted event until project instance has been configured and basedir has been set. PR 45607.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@688732 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 17 years ago
parent
commit
c4ab43e8d7
2 changed files with 44 additions and 4 deletions
  1. +5
    -0
      WHATSNEW
  2. +39
    -4
      src/main/org/apache/tools/ant/listener/BigProjectLogger.java

+ 5
- 0
WHATSNEW View File

@@ -166,6 +166,11 @@ Fixed bugs:
contained the character '8'. contained the character '8'.
Bugzilla Report 45675. Bugzilla Report 45675.


* If the buildfile's project element didn't contain any basedir
attribute, BigProjectLogger would set the project's basedir to the
current working directory.
Bugzilla Report 45607.

Other changes: Other changes:
-------------- --------------




+ 39
- 4
src/main/org/apache/tools/ant/listener/BigProjectLogger.java View File

@@ -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 taskStarted(BuildEvent event) {
maybeRaiseSubBuildStarted(event);
super.taskStarted(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);
}
}
}
}
} }

Loading…
Cancel
Save