diff --git a/proposal/myrmidon/src/java/org/apache/ant/Main.java b/proposal/myrmidon/src/java/org/apache/ant/Main.java
index e5dd62b14..3bab8dec7 100644
--- a/proposal/myrmidon/src/java/org/apache/ant/Main.java
+++ b/proposal/myrmidon/src/java/org/apache/ant/Main.java
@@ -20,15 +20,14 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Properties;
import org.apache.myrmidon.launcher.LauncherClassLoader;
import org.apache.ant.project.LogTargetToListenerAdapter;
import org.apache.ant.project.Project;
import org.apache.ant.project.ProjectBuilder;
import org.apache.ant.project.ProjectEngine;
import org.apache.ant.project.ProjectListener;
-import org.apache.ant.runtime.AntEngine;
-import org.apache.ant.runtime.DefaultAntEngine;
+import org.apache.myrmidon.components.embeddor.Embeddor;
+import org.apache.myrmidon.components.embeddor.MyrmidonEmbeddor;
import org.apache.myrmidon.api.JavaVersion;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.DefaultTaskContext;
@@ -45,6 +44,7 @@ import org.apache.avalon.framework.camelot.CamelotUtil;
import org.apache.avalon.framework.camelot.Deployer;
import org.apache.avalon.framework.camelot.DeploymentException;
import org.apache.avalon.framework.logger.AbstractLoggable;
+import org.apache.avalon.framework.parameters.Parameters;
import org.apache.log.Hierarchy;
import org.apache.log.Logger;
import org.apache.log.LogTarget;
@@ -275,10 +275,10 @@ public class Main
//that was set up by launcher.
if( null == homeDir ) homeDir = System.getProperty( "ant.home" );
- final Properties properties = new Properties();
- properties.setProperty( "ant.home", homeDir );
+ final Parameters parameters = new Parameters();
+ parameters.setParameter( "ant.home", homeDir );
- if( null != taskLibDir ) properties.setProperty( "ant.path.task-lib", taskLibDir );
+ if( null != taskLibDir ) parameters.setParameter( "ant.path.task-lib", taskLibDir );
m_homeDir = (new File( homeDir )).getAbsoluteFile();
if( !m_homeDir.isDirectory() )
@@ -309,17 +309,17 @@ public class Main
//getLogger().debug( "Ant Lib Directory: " + m_libDir );
//getLogger().debug( "Ant Task Lib Directory: " + m_taskLibDir );
- final AntEngine antEngine = new DefaultAntEngine();
- setupLogger( antEngine );
- antEngine.setProperties( properties );
- antEngine.initialize();
+ final Embeddor embeddor = new MyrmidonEmbeddor();
+ setupLogger( embeddor );
+ embeddor.parameterize( parameters );
+ embeddor.initialize();
- final ProjectBuilder builder = antEngine.getProjectBuilder();
+ final ProjectBuilder builder = embeddor.getProjectBuilder();
//create the project
final Project project = builder.build( buildFile );
- final ProjectEngine engine = antEngine.getProjectEngine();
+ final ProjectEngine engine = embeddor.getProjectEngine();
engine.addProjectListener( listener );
BufferedReader reader = null;
@@ -352,7 +352,7 @@ public class Main
}
- antEngine.dispose();
+ embeddor.dispose();
}
/**
diff --git a/proposal/myrmidon/src/java/org/apache/ant/runtime/AntContextResources.java b/proposal/myrmidon/src/java/org/apache/ant/runtime/AntContextResources.java
deleted file mode 100644
index 20f43f40b..000000000
--- a/proposal/myrmidon/src/java/org/apache/ant/runtime/AntContextResources.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.runtime;
-
-/**
- * Interface that holds constants used to access variables from context.
- *
- * @author Peter Donald
- */
-public interface AntContextResources
-{
- // the directory of ant
- String HOME_DIR = "ant.install.dir";
-
- // the bin directory of ant
- String BIN_DIR = "ant.install.bin";
-
- // the lib directory of ant
- String LIB_DIR = "ant.install.lib";
-
- // the tasklib directory of ant
- String TASKLIB_DIR = "ant.install.task-lib";
-
- // the directory to look for per user ant information
- String USER_DIR = "ant.user.dir";
-
- // the directory to look for per project ant information
- String PROJECT_DIR = "ant.project.dir";
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/runtime/AntEngine.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/Embeddor.java
similarity index 64%
rename from proposal/myrmidon/src/java/org/apache/ant/runtime/AntEngine.java
rename to proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/Embeddor.java
index 30ea0c291..3a0e5ff4a 100644
--- a/proposal/myrmidon/src/java/org/apache/ant/runtime/AntEngine.java
+++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/Embeddor.java
@@ -5,34 +5,26 @@
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
-package org.apache.ant.runtime;
+package org.apache.myrmidon.components.embeddor;
-import java.util.Properties;
import org.apache.ant.project.ProjectBuilder;
import org.apache.ant.project.ProjectEngine;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.component.Component;
+import org.apache.avalon.framework.parameters.Parameterizable;
/**
- * Interface to the Ant runtime.
+ * Interface through which you embed Myrmidon into applications.
*
* @author Peter Donald
*/
-public interface AntEngine
- extends Component, Initializable, Disposable
+public interface Embeddor
+ extends Component, Parameterizable, Initializable, Disposable
{
- /**
- * Setup basic properties of engine.
- * Called before init() and can be used to specify alternate components in system.
- *
- * @param properties the properties
- */
- void setProperties( Properties properties );
-
/**
* Retrieve builder for runtime.
- * Valid after init() call
+ * Valid after initialize() call
*
* @return the ProjectBuilder
*/
@@ -40,7 +32,7 @@ public interface AntEngine
/**
* Retrieve project engine for runtime.
- * Valid after init() call
+ * Valid after initialize() call
*
* @return the ProjectBuilder
*/
diff --git a/proposal/myrmidon/src/java/org/apache/ant/runtime/DefaultAntEngine.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/MyrmidonEmbeddor.java
similarity index 74%
rename from proposal/myrmidon/src/java/org/apache/ant/runtime/DefaultAntEngine.java
rename to proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/MyrmidonEmbeddor.java
index 65beb9bb4..3af50e00e 100644
--- a/proposal/myrmidon/src/java/org/apache/ant/runtime/DefaultAntEngine.java
+++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/MyrmidonEmbeddor.java
@@ -5,68 +5,69 @@
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
-package org.apache.ant.runtime;
+package org.apache.myrmidon.components.embeddor;
import java.io.File;
-import java.util.Properties;
import org.apache.ant.AntException;
-import org.apache.myrmidon.components.configurer.Configurer;
import org.apache.ant.convert.engine.ConverterEngine;
import org.apache.ant.project.ProjectBuilder;
import org.apache.ant.project.ProjectEngine;
-import org.apache.myrmidon.api.JavaVersion;
import org.apache.ant.tasklet.engine.DataTypeEngine;
import org.apache.ant.tasklet.engine.TaskletEngine;
import org.apache.ant.tasklet.engine.TskDeployer;
-import org.apache.avalon.framework.logger.AbstractLoggable;
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.component.DefaultComponentManager;
+import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.camelot.CamelotUtil;
import org.apache.avalon.framework.camelot.DefaultFactory;
import org.apache.avalon.framework.camelot.Deployer;
import org.apache.avalon.framework.camelot.Factory;
-import org.apache.avalon.excalibur.io.FileUtil;
+import org.apache.avalon.framework.component.Component;
+import org.apache.avalon.framework.component.Composable;
+import org.apache.avalon.framework.component.DefaultComponentManager;
+import org.apache.avalon.framework.logger.AbstractLoggable;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.myrmidon.api.JavaVersion;
+import org.apache.myrmidon.components.configurer.Configurer;
/**
* Default implementation of Ant runtime.
*
* @author Peter Donald
*/
-public class DefaultAntEngine
+public class MyrmidonEmbeddor
extends AbstractLoggable
- implements AntEngine, Initializable
+ implements Embeddor
{
- protected ConverterEngine m_converterEngine;
- protected DataTypeEngine m_dataTypeEngine;
- protected TaskletEngine m_taskletEngine;
- protected ProjectEngine m_projectEngine;
-
- protected ProjectBuilder m_builder;
- protected TskDeployer m_deployer;
- protected Configurer m_configurer;
-
- protected Factory m_factory;
-
- protected DefaultComponentManager m_componentManager;
- protected Properties m_properties;
- protected Properties m_defaults;
-
- protected File m_homeDir;
- protected File m_binDir;
- protected File m_libDir;
- protected File m_taskLibDir;
-
+ private ConverterEngine m_converterEngine;
+ private DataTypeEngine m_dataTypeEngine;
+ private TaskletEngine m_taskEngine;
+ private ProjectEngine m_projectEngine;
+
+ private ProjectBuilder m_builder;
+ private TskDeployer m_deployer;
+ private Configurer m_configurer;
+
+ private Factory m_factory;
+
+ private DefaultComponentManager m_componentManager;
+ private Parameters m_parameters;
+ private Parameters m_defaults;
+
+ private File m_homeDir;
+ private File m_binDir;
+ private File m_libDir;
+ private File m_taskLibDir;
+
/**
- * Setup basic properties of engine.
+ * Setup basic properties of engine.
* Called before init() and can be used to specify alternate components in system.
*
* @param properties the properties
*/
- public void setProperties( final Properties properties )
+ public void parameterize( final Parameters parameters )
{
- m_properties = properties;
+ m_parameters = parameters;
}
/**
@@ -100,7 +101,7 @@ public class DefaultAntEngine
throws Exception
{
//setup default properties
- m_defaults = createDefaultProperties();
+ m_defaults = createDefaultParameters();
//create all the components
m_factory = new DefaultFactory();
@@ -126,50 +127,50 @@ public class DefaultAntEngine
{
m_converterEngine = null;
m_dataTypeEngine = null;
- m_taskletEngine = null;
+ m_taskEngine = null;
m_projectEngine = null;
m_builder = null;
m_deployer = null;
m_configurer = null;
m_factory = null;
m_componentManager = null;
- m_properties = null;
+ m_parameters = null;
m_defaults = null;
m_homeDir = null;
m_binDir = null;
m_libDir = null;
m_taskLibDir = null;
}
-
+
/**
* Create default properties which includes default names of all components.
* Overide this in sub-classes to change values.
*
- * @return the Properties
+ * @return the Parameters
*/
- protected Properties createDefaultProperties()
+ private Parameters createDefaultParameters()
{
- final Properties defaults = new Properties();
+ final Parameters defaults = new Parameters();
//create all the default properties for files/directories
- defaults.setProperty( "ant.path.bin", "bin" );
- defaults.setProperty( "ant.path.lib", "lib" );
- defaults.setProperty( "ant.path.task-lib", "lib" );
+ defaults.setParameter( "ant.path.bin", "bin" );
+ defaults.setParameter( "ant.path.lib", "lib" );
+ defaults.setParameter( "ant.path.task-lib", "lib" );
//create all the default properties for components
- defaults.setProperty( "ant.comp.converter",
+ defaults.setParameter( "ant.comp.converter",
"org.apache.ant.convert.engine.DefaultConverterEngine" );
- defaults.setProperty( "ant.comp.datatype",
+ defaults.setParameter( "ant.comp.datatype",
"org.apache.ant.tasklet.engine.DefaultDataTypeEngine" );
- defaults.setProperty( "ant.comp.tasklet",
+ defaults.setParameter( "ant.comp.task",
"org.apache.ant.tasklet.engine.DefaultTaskletEngine" );
- defaults.setProperty( "ant.comp.project",
+ defaults.setParameter( "ant.comp.project",
"org.apache.ant.project.DefaultProjectEngine" );
- defaults.setProperty( "ant.comp.builder",
+ defaults.setParameter( "ant.comp.builder",
"org.apache.ant.project.DefaultProjectBuilder" );
- defaults.setProperty( "ant.comp.deployer",
+ defaults.setParameter( "ant.comp.deployer",
"org.apache.ant.tasklet.engine.DefaultTskDeployer" );
- defaults.setProperty( "ant.comp.configurer",
+ defaults.setParameter( "ant.comp.configurer",
"org.apache.myrmidon.components.configurer.DefaultConfigurer" );
return defaults;
@@ -180,13 +181,13 @@ public class DefaultAntEngine
*
* @return the ComponentManager
*/
- protected DefaultComponentManager createComponentManager()
+ private DefaultComponentManager createComponentManager()
{
final DefaultComponentManager componentManager = new DefaultComponentManager();
- componentManager.put( "org.apache.ant.tasklet.engine.TaskletEngine", m_taskletEngine );
+ componentManager.put( "org.apache.ant.tasklet.engine.TaskletEngine", m_taskEngine );
componentManager.put( "org.apache.ant.project.ProjectEngine", m_projectEngine );
- componentManager.put( "org.apache.ant.convert.engine.ConverterEngine",
+ componentManager.put( "org.apache.ant.convert.engine.ConverterEngine",
m_converterEngine );
componentManager.put( "org.apache.ant.convert.Converter", m_converterEngine );
componentManager.put( "org.apache.ant.tasklet.engine.DataTypeEngine", m_dataTypeEngine );
@@ -203,30 +204,30 @@ public class DefaultAntEngine
*
* @exception Exception if an error occurs
*/
- protected void createComponents()
+ private void createComponents()
throws Exception
{
String component = null;
- component = getProperty( "ant.comp.converter" );
+ component = getParameter( "ant.comp.converter" );
m_converterEngine = (ConverterEngine)createComponent( component, ConverterEngine.class );
- component = getProperty( "ant.comp.datatype" );
+ component = getParameter( "ant.comp.datatype" );
m_dataTypeEngine = (DataTypeEngine)createComponent( component, DataTypeEngine.class );
-
- component = getProperty( "ant.comp.tasklet" );
- m_taskletEngine = (TaskletEngine)createComponent( component, TaskletEngine.class );
-
- component = getProperty( "ant.comp.project" );
+
+ component = getParameter( "ant.comp.task" );
+ m_taskEngine = (TaskletEngine)createComponent( component, TaskletEngine.class );
+
+ component = getParameter( "ant.comp.project" );
m_projectEngine = (ProjectEngine)createComponent( component, ProjectEngine.class );
- component = getProperty( "ant.comp.builder" );
+ component = getParameter( "ant.comp.builder" );
m_builder =(ProjectBuilder)createComponent( component, ProjectBuilder.class );
- component = getProperty( "ant.comp.deployer" );
+ component = getParameter( "ant.comp.deployer" );
m_deployer = (TskDeployer)createComponent( component, TskDeployer.class );
- component = getProperty( "ant.comp.configurer" );
+ component = getParameter( "ant.comp.configurer" );
m_configurer = (Configurer)createComponent( component, Configurer.class );
}
@@ -235,13 +236,13 @@ public class DefaultAntEngine
*
* @exception Exception if an error occurs
*/
- protected void setupComponents()
+ private void setupComponents()
throws Exception
{
setupComponent( m_factory );
setupComponent( m_converterEngine );
setupComponent( m_dataTypeEngine );
- setupComponent( m_taskletEngine );
+ setupComponent( m_taskEngine );
setupComponent( m_projectEngine );
setupComponent( m_builder );
setupComponent( m_deployer );
@@ -254,7 +255,7 @@ public class DefaultAntEngine
* @param component the component
* @exception Exception if an error occurs
*/
- protected void setupComponent( final Component component )
+ private void setupComponent( final Component component )
throws Exception
{
setupLogger( component );
@@ -273,38 +274,38 @@ public class DefaultAntEngine
/**
* Setup all the files attributes.
*/
- protected void setupFiles()
+ private void setupFiles()
{
String filepath = null;
- filepath = getProperty( "ant.home" );
+ filepath = getParameter( "ant.home" );
m_homeDir = (new File( filepath )).getAbsoluteFile();
checkDirectory( m_homeDir, "ant-home" );
- filepath = getProperty( "ant.path.bin" );
+ filepath = getParameter( "ant.path.bin" );
m_binDir = resolveDirectory( filepath, "bin-dir" );
-
- filepath = getProperty( "ant.path.lib" );
+
+ filepath = getParameter( "ant.path.lib" );
m_libDir = resolveDirectory( filepath, "lib-dir" );
- filepath = getProperty( "ant.path.task-lib" );
+ filepath = getParameter( "ant.path.task-lib" );
m_taskLibDir = resolveDirectory( filepath, "task-lib-dir" );
}
/**
- * Retrieve value of named property.
+ * Retrieve value of named property.
* First access passed in properties and then the default properties.
*
* @param name the name of property
* @return the value of property or null
*/
- protected String getProperty( final String name )
+ private String getParameter( final String name )
{
- String value = m_properties.getProperty( name );
+ String value = m_parameters.getParameter( name, null );
if( null == value )
{
- value = m_defaults.getProperty( name );
+ value = m_defaults.getParameter( name, null );
}
return value;
@@ -318,7 +319,7 @@ public class DefaultAntEngine
* @return the created File
* @exception AntException if an error occurs
*/
- protected File resolveDirectory( final String dir, final String name )
+ private File resolveDirectory( final String dir, final String name )
throws AntException
{
final File file = FileUtil.resolveFile( m_homeDir, dir );
@@ -332,9 +333,9 @@ public class DefaultAntEngine
* @param file the File
* @param name the name of file type (used in error messages)
*/
- protected void checkDirectory( final File file, final String name )
+ private void checkDirectory( final File file, final String name )
throws AntException
- {
+ {
if( !file.exists() )
{
throw new AntException( name + " (" + file + ") does not exist" );
@@ -351,10 +352,10 @@ public class DefaultAntEngine
*
* @return the current JVM version
*/
- protected JavaVersion getJavaVersion()
+ private JavaVersion getJavaVersion()
{
JavaVersion version = JavaVersion.JAVA1_0;
-
+
try
{
Class.forName( "java.lang.Void" );
@@ -363,9 +364,9 @@ public class DefaultAntEngine
version = JavaVersion.JAVA1_2;
Class.forName( "java.lang.StrictMath" );
version = JavaVersion.JAVA1_3;
- }
+ }
catch( final ClassNotFoundException cnfe ) {}
-
+
return version;
}
@@ -377,7 +378,7 @@ public class DefaultAntEngine
* @return the created object
* @exception AntException if an error occurs
*/
- protected Object createComponent( final String component, final Class clazz )
+ private Object createComponent( final String component, final Class clazz )
throws AntException
{
try
@@ -386,25 +387,25 @@ public class DefaultAntEngine
if( !clazz.isInstance( object ) )
{
- throw new AntException( "Object " + component + " is not an instance of " +
+ throw new AntException( "Object " + component + " is not an instance of " +
clazz );
}
return object;
}
catch( final IllegalAccessException iae )
- {
- throw new AntException( "Non-public constructor for " + clazz + " " + component,
+ {
+ throw new AntException( "Non-public constructor for " + clazz + " " + component,
iae );
}
catch( final InstantiationException ie )
{
- throw new AntException( "Error instantiating class for " + clazz + " " + component,
+ throw new AntException( "Error instantiating class for " + clazz + " " + component,
ie );
}
catch( final ClassNotFoundException cnfe )
{
- throw new AntException( "Could not find the class for " + clazz +
+ throw new AntException( "Could not find the class for " + clazz +
" (" + component + ")", cnfe );
}
}