blob: ad4bf23330672c63004c07b3026d7aa49a87b01b [file] [log] [blame]
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.ant.tasklet;
import org.apache.ant.AntException;
import org.apache.avalon.AbstractLoggable;
import org.apache.avalon.Context;
import org.apache.avalon.Initializable;
/**
* This is abstract base class for tasklets.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public abstract class AbstractTasklet
extends AbstractLoggable
implements Tasklet, Initializable
{
//the user should set this in constructors of sub-classes
protected JavaVersion m_requiredJavaVersion;
private TaskletContext m_context;
/**
* Retrieve context from container.
*
* @param context the context
*/
public void contextualize( final Context context )
{
m_context = (TaskletContext)context;
}
/**
* This will be called before run() method and checks any preconditions.
*
* Intially preconditions just include JVM version but in future it
* will automagically also check if all required parameters are present.
*
* @exception AntException if an error occurs
*/
public void init()
throws AntException
{
if( null != m_requiredJavaVersion )
{
final JavaVersion suppliedVersion = m_context.getJavaVersion();
if( m_requiredJavaVersion.isLessThan( suppliedVersion ) )
{
throw new AntException( "Task requires a JavaVersion of at least " +
m_requiredJavaVersion + " but current version is " +
suppliedVersion );
}
}
}
/**
* Convenience method for sub-class to retrieve context.
*
* @return the context
*/
protected TaskletContext getContext()
{
return m_context;
}
}