Java Mailing List Archive

http://www.ant-tasks.com/

Home » Ant Developers List »

checking task configuration

Jan Materne

2008-01-28

Replies:

Author LoginPost Reply
I prefer collecting all configuration errors and reporting them at once
over throwing a BuildException for each error. Ok Ant is not a GUI ....
I implemented a helper class for that - is it worth to introduce that
into Ant Core?


Jan



/**
* @see <a
href="http://martinfowler.com/eaaDev/Notification.html">Notification
Pattern</a>
*/
public class AntConfigurationChecker {
 List errors = new ArrayList();
 Task task;

 public AntConfigurationChecker(Task task) {
   this.task = task;
 }
 
 public void assertConfig(boolean bedingung, String
fehlermeldung) {
   if (bedingung) {
     errors.add(fehlermeldung);
   }
 }
 
 public void fail(String fehlermeldung) {
   errors.add(fehlermeldung);
 }
 
 public void checkErrors() throws BuildException {
   if (!errors.isEmpty()) {
     StringBuffer sb = new StringBuffer();
     sb.append("Configuration error on <");
     sb.append(task.getTaskName());
     sb.append(">:");
     sb.append(System.getProperty("line.separator"));
     for (Iterator it = errors.iterator();
it.hasNext();) {
       String msg = (String) it.next();
       sb.append("- ");
       sb.append(msg);
 
sb.append(System.getProperty("line.separator"));
     }
     throw new BuildException(sb.toString());
   }    
 }
}



public class MyTask {
 private void checkConfiguration() {
   AntConfigurationChecker checker = new
AntConfigurationChecker(this);
   checker.assertConfig(
     xmlfile == null && txtfile == null,
     "You have to specify one of 'txtfile' or
'xmlfile'.");
   checker.assertConfig(
     release == null,
     "You have to specify the 'release'.");
   checker.checkErrors();
 }
 public void execute() throws BuildException {
   checkConfiguration();
   ...
 }
}

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@(protected)
For additional commands, e-mail: dev-help@(protected)

©2008 ant-tasks.com - Jax Systems, LLC, U.S.A.