diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java index d392b945e..53043fd8e 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java @@ -20,6 +20,7 @@ import org.apache.avalon.excalibur.io.FileUtil; import org.apache.avalon.framework.CascadingException; import org.apache.avalon.framework.activity.Disposable; import org.apache.avalon.framework.activity.Initializable; +import org.apache.avalon.framework.activity.Startable; import org.apache.avalon.framework.logger.AbstractLogEnabled; import org.apache.avalon.framework.parameters.Parameterizable; import org.apache.avalon.framework.parameters.Parameters; @@ -30,6 +31,7 @@ import org.apache.myrmidon.interfaces.aspect.AspectManager; import org.apache.myrmidon.interfaces.builder.ProjectBuilder; import org.apache.myrmidon.interfaces.classloader.ClassLoaderManager; import org.apache.myrmidon.interfaces.configurer.Configurer; +import org.apache.myrmidon.interfaces.converter.ConverterRegistry; import org.apache.myrmidon.interfaces.deployer.Deployer; import org.apache.myrmidon.interfaces.deployer.DeploymentException; import org.apache.myrmidon.interfaces.deployer.TypeDeployer; @@ -43,7 +45,6 @@ import org.apache.myrmidon.interfaces.service.MultiSourceServiceManager; import org.apache.myrmidon.interfaces.type.TypeFactory; import org.apache.myrmidon.interfaces.type.TypeManager; import org.apache.myrmidon.interfaces.workspace.Workspace; -import org.apache.myrmidon.interfaces.converter.ConverterRegistry; import org.apache.myrmidon.listeners.ProjectListener; /** @@ -55,7 +56,7 @@ import org.apache.myrmidon.listeners.ProjectListener; */ public class DefaultEmbeddor extends AbstractLogEnabled - implements Embeddor + implements Embeddor, Parameterizable, Initializable, Startable, Disposable { private final static Resources REZ = ResourceManager.getPackageResources( DefaultEmbeddor.class ); @@ -284,7 +285,7 @@ public class DefaultEmbeddor * Creates a component. */ private Object createComponent( final Class roleType, - final String defaultImpl ) + final String defaultImpl ) throws Exception { final Object component = createService( roleType, defaultImpl ); diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java b/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java index a90a0d5ec..ce58a2f93 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java @@ -8,12 +8,12 @@ package org.apache.myrmidon.frontends; import java.io.BufferedReader; -import java.io.InputStreamReader; import java.io.File; +import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.HashMap; import org.apache.avalon.excalibur.cli.CLArgsParser; import org.apache.avalon.excalibur.cli.CLOption; import org.apache.avalon.excalibur.cli.CLOptionDescriptor; @@ -311,7 +311,7 @@ public class CLIMain // Setup logging final BasicLogger logger = new BasicLogger( "[myrmidon] ", m_priority ); - m_embedded.setLogger( logger ); + m_embedded.enableLogging( logger ); if( m_dryRun ) { @@ -380,7 +380,7 @@ public class CLIMain private void executeBuild() throws Exception { //actually do the build ... - final String[] targets = (String[])m_targets.toArray( new String[m_targets.size() ] ); + final String[] targets = (String[])m_targets.toArray( new String[ m_targets.size() ] ); m_embedded.executeTargets( targets ); } diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/EmbeddedAnt.java b/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/EmbeddedAnt.java index d4ffefaad..0a9fc1049 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/EmbeddedAnt.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/EmbeddedAnt.java @@ -10,8 +10,12 @@ package org.apache.myrmidon.frontends; import java.io.File; import org.apache.avalon.excalibur.i18n.ResourceManager; import org.apache.avalon.excalibur.i18n.Resources; +import org.apache.avalon.framework.activity.Disposable; +import org.apache.avalon.framework.activity.Initializable; +import org.apache.avalon.framework.activity.Startable; import org.apache.avalon.framework.logger.AbstractLogEnabled; import org.apache.avalon.framework.logger.Logger; +import org.apache.avalon.framework.parameters.Parameterizable; import org.apache.avalon.framework.parameters.Parameters; import org.apache.myrmidon.api.TaskException; import org.apache.myrmidon.interfaces.embeddor.Embeddor; @@ -24,13 +28,14 @@ import org.apache.myrmidon.listeners.ProjectListener; * executing a project. * * @author Adam Murdoch + * @author Peter Donald * @version $Revision$ $Date$ */ public class EmbeddedAnt extends AbstractLogEnabled { - private final static Resources REZ - = ResourceManager.getPackageResources( EmbeddedAnt.class ); + private final static Resources REZ = + ResourceManager.getPackageResources( EmbeddedAnt.class ); private static final String DEFAULT_EMBEDDOR_CLASS = "org.apache.myrmidon.components.embeddor.DefaultEmbeddor"; @@ -41,18 +46,10 @@ public class EmbeddedAnt private ProjectListener m_listener; private Parameters m_workspaceProps = new Parameters(); private Parameters m_builderProps = new Parameters(); - private Parameters m_embeddorProps = new Parameters(); + private Parameters m_embeddorParameters = new Parameters(); private ClassLoader m_sharedClassLoader; private Embeddor m_embeddor; - /** - * Sets the logger to use. - */ - public void setLogger( final Logger logger ) - { - enableLogging( logger ); - } - /** * Sets the project file to execute. Default is 'build.ant'. */ @@ -117,7 +114,7 @@ public class EmbeddedAnt public void setEmbeddorProperty( final String name, final Object value ) { // TODO - Make properties Objects, not Strings - m_embeddorProps.setParameter( name, (String)value ); + m_embeddorParameters.setParameter( name, (String)value ); } /** @@ -164,8 +161,14 @@ public class EmbeddedAnt { if( m_embeddor != null ) { - m_embeddor.stop(); - m_embeddor.dispose(); + if( m_embeddor instanceof Startable ) + { + ( (Startable)m_embeddor ).stop(); + } + if( m_embeddor instanceof Disposable ) + { + ( (Disposable)m_embeddor ).dispose(); + } } } finally @@ -204,7 +207,7 @@ public class EmbeddedAnt */ private void checkHomeDir() throws Exception { - final String home = m_embeddorProps.getParameter( "myrmidon.home" ); + final String home = m_embeddorParameters.getParameter( "myrmidon.home" ); final File homeDir = ( new File( home ) ).getAbsoluteFile(); if( !homeDir.isDirectory() ) { @@ -229,9 +232,18 @@ public class EmbeddedAnt { m_embeddor = createEmbeddor(); setupLogger( m_embeddor ); - m_embeddor.parameterize( m_embeddorProps ); - m_embeddor.initialize(); - m_embeddor.start(); + if( m_embeddor instanceof Parameterizable ) + { + ( (Parameterizable)m_embeddor ).parameterize( m_embeddorParameters ); + } + if( m_embeddor instanceof Initializable ) + { + ( (Initializable)m_embeddor ).initialize(); + } + if( m_embeddor instanceof Startable ) + { + ( (Startable)m_embeddor ).start(); + } } return m_embeddor; } diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/interfaces/embeddor/Embeddor.java b/proposal/myrmidon/src/java/org/apache/myrmidon/interfaces/embeddor/Embeddor.java index 3225df531..12bd66e0a 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/interfaces/embeddor/Embeddor.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/interfaces/embeddor/Embeddor.java @@ -7,10 +7,6 @@ */ package org.apache.myrmidon.interfaces.embeddor; -import org.apache.avalon.framework.activity.Disposable; -import org.apache.avalon.framework.activity.Initializable; -import org.apache.avalon.framework.activity.Startable; -import org.apache.avalon.framework.parameters.Parameterizable; import org.apache.avalon.framework.parameters.Parameters; import org.apache.myrmidon.interfaces.model.Project; import org.apache.myrmidon.interfaces.workspace.Workspace; @@ -23,7 +19,6 @@ import org.apache.myrmidon.listeners.ProjectListener; * @version $Revision$ $Date$ */ public interface Embeddor - extends Parameterizable, Initializable, Startable, Disposable { String ROLE = Embeddor.class.getName();