@@ -14,6 +14,7 @@ import org.apache.ant.configuration.Configuration;
import org.apache.ant.configuration.Configurer;
import org.apache.ant.configuration.Configurer;
import org.apache.ant.configuration.DefaultConfigurer;
import org.apache.ant.configuration.DefaultConfigurer;
import org.apache.ant.convert.ConverterEngine;
import org.apache.ant.convert.ConverterEngine;
import org.apache.ant.datatypes.DataTypeEngine;
import org.apache.ant.tasklet.Tasklet;
import org.apache.ant.tasklet.Tasklet;
import org.apache.ant.tasklet.TaskletContext;
import org.apache.ant.tasklet.TaskletContext;
import org.apache.avalon.Component;
import org.apache.avalon.Component;
@@ -23,13 +24,13 @@ import org.apache.avalon.Context;
import org.apache.avalon.Contextualizable;
import org.apache.avalon.Contextualizable;
import org.apache.avalon.DefaultComponentManager;
import org.apache.avalon.DefaultComponentManager;
import org.apache.avalon.Disposable;
import org.apache.avalon.Disposable;
import org.apache.avalon.Loggable;
import org.apache.avalon.Initializable;
import org.apache.avalon.Initializable;
import org.apache.avalon.Loggable;
import org.apache.avalon.camelot.DefaultFactory;
import org.apache.avalon.camelot.DefaultFactory;
import org.apache.avalon.camelot.DefaultLocatorRegistry;
import org.apache.avalon.camelot.FactoryException;
import org.apache.avalon.camelot.FactoryException;
import org.apache.avalon.camelot.LocatorRegistry;
import org.apache.avalon.camelot.Locator;
import org.apache.avalon.camelot.Locator;
import org.apache.avalon.camelot.Default LocatorRegistry;
import org.apache.avalon.camelot.LocatorRegistry;
import org.apache.avalon.camelot.RegistryException;
import org.apache.avalon.camelot.RegistryException;
import org.apache.log.Logger;
import org.apache.log.Logger;
@@ -41,6 +42,7 @@ public class DefaultTaskletEngine
protected LocatorRegistry m_locatorRegistry;
protected LocatorRegistry m_locatorRegistry;
protected Configurer m_configurer;
protected Configurer m_configurer;
protected Logger m_logger;
protected Logger m_logger;
protected DataTypeEngine m_dataTypeEngine;
protected ConverterEngine m_converterEngine;
protected ConverterEngine m_converterEngine;
public void setLogger( final Logger logger )
public void setLogger( final Logger logger )
@@ -58,27 +60,41 @@ public class DefaultTaskletEngine
return m_converterEngine;
return m_converterEngine;
}
}
public LocatorRegistry getLocator Registry()
public LocatorRegistry getRegistry()
{
{
return m_locatorRegistry;
return m_locatorRegistry;
}
}
/**
* Retrieve datatype engine.
*
* @return the DataTypeEngine
*/
public DataTypeEngine getDataTypeEngine()
{
return m_dataTypeEngine;
}
public void init()
public void init()
throws Exception
throws Exception
{
{
m_locatorRegistry = createLocatorRegistry();
m_factory = createFactory();
setupSubComponent( m_factory );
//converter must be created before configurerer
//so that it gets placed in configurers componentManager
m_converterEngine = createConverterEngine();
m_converterEngine = createConverterEngine();
m_converterEngine.setLogger( m_logger );
setupSubComponent( m_converterEngine );
setupSubComponent( m_converterEngine );
m_configurer = createConfigurer();
m_configurer = createConfigurer();
setupSubComponent( m_configurer );
setupSubComponent( m_configurer );
m_locatorRegistry = createLocatorRegistry();
m_factory = createFactory();
setupSubComponent( m_factory );
m_dataTypeEngine = createDataTypeEngine();
setupSubComponent( m_dataTypeEngine );
m_tskDeployer = createTskDeployer();
m_tskDeployer = createTskDeployer();
m_tskDeployer.setLogger( m_logger );
setupSubComponent( m_tskDeployer );
setupSubComponent( m_tskDeployer );
}
}
@@ -93,10 +109,10 @@ public class DefaultTaskletEngine
if( component instanceof Composer )
if( component instanceof Composer )
{
{
final DefaultComponentManager componentManager = new DefaultComponentManager();
final DefaultComponentManager componentManager = new DefaultComponentManager();
componentManager.put( "org.apache.ant.convert.Converter",
getConverterEngine() );
componentManager.put( "org.apache.ant.convert.ConverterEngine",
componentManager.put( "org.apache.ant.convert.Converter",
getConverterEngine() );
getConverterEngine() );
componentManager.put( "org.apache.ant.configuration.Configurer",
m_configurer );
componentManager.put( "org.apache.ant.tasklet.engine.TaskletEngine",
componentManager.put( "org.apache.ant.tasklet.engine.TaskletEngine",
this );
this );
@@ -108,6 +124,13 @@ public class DefaultTaskletEngine
((Initializable)component).init();
((Initializable)component).init();
}
}
}
}
protected DataTypeEngine createDataTypeEngine()
{
final TaskletDataTypeEngine engine = new TaskletDataTypeEngine();
engine.setFactory( m_factory );
return engine;
}
protected TskDeployer createTskDeployer()
protected TskDeployer createTskDeployer()
{
{
@@ -143,9 +166,9 @@ public class DefaultTaskletEngine
final ComponentManager componentManager )
final ComponentManager componentManager )
throws AntException
throws AntException
{
{
m_logger.debug( "Creating" );
m_logger.debug( "Creating" );
final Tasklet tasklet = createTasklet( task );
final Tasklet tasklet = createTasklet( task.getName() );
tasklet.setLogger( m_logger );
m_logger.debug( "Contextualizing" );
m_logger.debug( "Contextualizing" );
doContextualize( tasklet, task, context );
doContextualize( tasklet, task, context );
@@ -185,9 +208,15 @@ public class DefaultTaskletEngine
final ComponentManager componentManager )
final ComponentManager componentManager )
throws AntException
throws AntException
{
{
final DefaultComponentManager subComponentManager =
new DefaultComponentManager( componentManager );
subComponentManager.put( "org.apache.ant.configuration.Configurer", m_configurer );
if( tasklet instanceof Composer )
if( tasklet instanceof Composer )
{
{
try { ((Composer)tasklet).compose( componentManager ); }
try { ((Composer)tasklet).compose( subC omponentManager ); }
catch( final Throwable throwable )
catch( final Throwable throwable )
{
{
throw new AntException( "Error composing task " + task.getName() + " at " +
throw new AntException( "Error composing task " + task.getName() + " at " +
@@ -244,10 +273,9 @@ public class DefaultTaskletEngine
}
}
}
}
protected Tasklet createTasklet( final Configuration configuration )
protected Tasklet createTasklet( final String name )
throws AntException
throws AntException
{
{
final String name = configuration.getName();
try
try
{
{
final Locator locator = m_locatorRegistry.getLocator( name );
final Locator locator = m_locatorRegistry.getLocator( name );