/**
* Copyright (c) 2004-2006 IBM Corporation and others.
* 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:
* IBM - Initial API and implementation
*/
package org.eclipse.emf.ant.taskdefs;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.eclipse.ant.core.AntCorePlugin;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
/**
* Base class for the tasks that are defined in this plugin. Provides common behavior
* and facilities.
*
* @since 2.1.0
*/
public abstract class EMFTask extends Task
{
/**
* Throws a <tt>BuildException</tt> if <tt>expression</tt> is false.
* @param message
* @param expression
* @throws BuildException
*/
public static void assertTrue(String message, boolean expression) throws BuildException
{
if (!expression)
{
throw new BuildException(message);
}
}
protected IProgressMonitor getProgressMonitor()
{
try
{
if (getProject() != null)
{
IProgressMonitor progressMonitor = (IProgressMonitor)getProject().getReferences().get(AntCorePlugin.ECLIPSE_PROGRESS_MONITOR);
if (progressMonitor != null)
{
return progressMonitor;
}
}
}
catch (Exception e)
{
// Ignore
}
return new NullProgressMonitor();
}
@Override
public final void execute() throws BuildException
{
checkAttributes();
try
{
doExecute();
}
catch (Exception e)
{
if (e instanceof BuildException)
{
throw (BuildException)e;
}
else
{
throw new BuildException(e);
}
}
}
/**
* All the attribute checks should be performed in this method.
* @throws BuildException
*/
protected void checkAttributes() throws BuildException
{
// Subclasses may override this method
}
/**
* Performs the task specific code.
* @throws Exception
*/
abstract protected void doExecute() throws Exception;
}