Project: ant4eclipse
/**********************************************************************
 * Copyright (c) 2005-2009 ant4eclipse project team. 
 * 
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Eclipse Public License v1.0 
 * which accompanies this distribution, and is available at 
 * http://www.eclipse.org/legal/epl-v10.html 
 * 
 * Contributors: 
 *     Nils Hartmann, Daniel Kasmeroglu, Gerd Wuetherich 
 **********************************************************************/
package org.ant4eclipse.ant.core; 
 
 
import org.apache.tools.ant.BuildException; 
import org.apache.tools.ant.ProjectComponent; 
import org.apache.tools.ant.taskdefs.condition.Condition; 
 
/**
 * <p> 
 * Abstract base class for all ant4eclipse conditions. 
 * </p> 
 *  
 * @author Gerd Wütherich ([email protected]
 */
 
public abstract class AbstractAnt4EclipseCondition extends ProjectComponent implements Condition { 
 
  /**
   * {@inheritDoc} 
   */
 
  public final boolean eval() throws BuildException { 
    // Validates the Ant4EclipseDataTypes 
    AbstractAnt4EclipseDataType.validateAll(); 
 
    // configure ant4eclipse 
    AntConfigurator.configureAnt4Eclipse(getProject()); 
 
    // delegate the implementation 
    try { 
      return doEval(); 
    } catch (Exception ex) { 
      throw new BuildException(ex.toString(), ex); 
    } 
  } 
 
  /**
   * <p> 
   * This method replaces the original <code>eval()</code> method defined in 
   * <code>org.apache.tools.ant.taskdefs.condition.Condition</code>. Overwrite this method to implement own condition 
   * logic. 
   * </p> 
   *  
   * @see Task#execute() 
   */
 
  protected abstract boolean doEval(); 
}