Browse Source

Changed embeddor so that a new ProjectBuilder is instantiated on every call

to createProject. There is no longer a globally Cached and configured ProjectManager.

Also retrieved the ProjectBuilder from TypeManager. This allows arbitrary
ProjectBuilder classes to be registered by dropping in new jars to lib directory.

Made the type of ProjectBuilder be specified by type parameter or if that is
null the extention of input build file.


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269189 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 24 years ago
parent
commit
9243e2436d
1 changed files with 32 additions and 16 deletions
  1. +32
    -16
      proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java

+ 32
- 16
proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java View File

@@ -30,6 +30,7 @@ import org.apache.myrmidon.components.deployer.DeploymentException;
import org.apache.myrmidon.components.deployer.RoleManager;
import org.apache.myrmidon.components.executor.Executor;
import org.apache.myrmidon.components.manager.ProjectManager;
import org.apache.myrmidon.components.type.TypeFactory;
import org.apache.myrmidon.components.type.TypeManager;
import org.apache.myrmidon.components.model.Project;

@@ -43,7 +44,6 @@ public class DefaultEmbeddor
extends AbstractLoggable
implements Embeddor
{
private ProjectBuilder m_builder;
private Deployer m_deployer;
private RoleManager m_roleManager;

@@ -85,21 +85,41 @@ public class DefaultEmbeddor
type = guessTypeFor( location );
}

final ProjectBuilder builder = getProjectBuilder( type );
return builder.build( location, parameters );
final ProjectBuilder builder = getProjectBuilder( type, parameters );
return builder.build( location );
}

private String guessTypeFor( final String location )
{
//TODO: use hueristics to map filename extention to type
return "ant";
return FileUtil.getExtension( location );
}

private ProjectBuilder getProjectBuilder( final String type )
private ProjectBuilder getProjectBuilder( final String type,
final Parameters parameters )
throws Exception
{
//FIXME: Should not be ignoring type
return m_builder;

final TypeFactory factory = m_typeManager.getFactory( ProjectBuilder.ROLE );
final ProjectBuilder builder = (ProjectBuilder)factory.create( type );

setupLogger( builder );

if( builder instanceof Composable )
{
((Composable)builder).compose( m_componentManager );
}

if( builder instanceof Parameterizable )
{
((Parameterizable)builder).parameterize( parameters );
}

if( builder instanceof Initializable )
{
((Initializable)builder).initialize();
}

return builder;
}

public ProjectManager createProjectManager( final Project project,
@@ -179,7 +199,6 @@ public class DefaultEmbeddor
m_converterRegistry = null;
m_converter = null;
m_executor = null;
m_builder = null;
m_deployer = null;
m_configurer = null;
m_componentManager = null;
@@ -221,8 +240,9 @@ public class DefaultEmbeddor
"org.apache.myrmidon.components.executor.AspectAwareExecutor" );
defaults.setParameter( ProjectManager.ROLE,
"org.apache.myrmidon.components.manager.DefaultProjectManager" );
defaults.setParameter( ProjectBuilder.ROLE,
"org.apache.myrmidon.components.builder.DefaultProjectBuilder" );
//defaults.setParameter( ProjectBuilder.ROLE,
//"org.apache.myrmidon.components.builder.DefaultProjectBuilder" );
//"org.apache.myrmidon.components.builder.XSLProjectBuilder" );
defaults.setParameter( Deployer.ROLE,
"org.apache.myrmidon.components.deployer.DefaultDeployer" );
defaults.setParameter( Configurer.ROLE,
@@ -243,7 +263,7 @@ public class DefaultEmbeddor
componentManager.put( MasterConverter.ROLE, m_converter );

//Following components required when Myrmidon is used as build tool
componentManager.put( ProjectBuilder.ROLE, m_builder );
componentManager.put( Embeddor.ROLE, this );

//Following components required when Myrmidon allows user deployment of tasks etal.
componentManager.put( RoleManager.ROLE, m_roleManager );
@@ -295,9 +315,6 @@ public class DefaultEmbeddor

component = getParameter( Executor.ROLE );
m_executor = (Executor)createComponent( component, Executor.class );

component = getParameter( ProjectBuilder.ROLE );
m_builder = (ProjectBuilder)createComponent( component, ProjectBuilder.class );
}

/**
@@ -313,7 +330,6 @@ public class DefaultEmbeddor
setupComponent( m_converterRegistry );
setupComponent( m_converter );
setupComponent( m_executor );
setupComponent( m_builder );
setupComponent( m_deployer );
setupComponent( m_configurer );
}


Loading…
Cancel
Save