You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by do...@apache.org on 2001/06/12 15:55:12 UTC
cvs commit: jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor DefaultEmbeddor.java
donaldp 01/06/12 06:55:12
Modified: proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor
DefaultEmbeddor.java
Log:
Changed interface so that instead of returning other components it hides it behind an abstraction. ie Instead of returning a ProjectBuilder it provides interface to ProjectBuilder. Same with ProjectManager.
This allows interface/implementation to be changed without effecting the "frontend interface" and vastly simplifies writing frontends.
Also a new ProjectManager is create for each request. Also input parameters are provided for future extention (ie parameters to builder and the builder "type");
Revision Changes Path
1.3 +37 -26 jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java
Index: DefaultEmbeddor.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DefaultEmbeddor.java 2001/06/05 07:54:32 1.2
+++ DefaultEmbeddor.java 2001/06/12 13:55:12 1.3
@@ -9,6 +9,7 @@
import java.io.File;
import java.io.FilenameFilter;
+import java.util.Map;
import org.apache.avalon.excalibur.io.ExtensionFileFilter;
import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.avalon.framework.activity.Initializable;
@@ -30,6 +31,7 @@
import org.apache.myrmidon.components.executor.Executor;
import org.apache.myrmidon.components.manager.ProjectManager;
import org.apache.myrmidon.components.type.TypeManager;
+import org.apache.myrmidon.components.model.Project;
/**
* Default implementation of Embeddor.
@@ -41,7 +43,6 @@
extends AbstractLoggable
implements Embeddor
{
- private ProjectManager m_projectManager;
private ProjectBuilder m_builder;
private Deployer m_deployer;
private RoleManager m_roleManager;
@@ -54,7 +55,6 @@
private Executor m_executor;
private Configurer m_configurer;
-
private DefaultComponentManager m_componentManager;
private Parameters m_parameters;
private Parameters m_defaults;
@@ -75,26 +75,43 @@
m_parameters = parameters;
}
- /**
- * Retrieve builder for runtime.
- * Valid after init() call
- *
- * @return the ProjectBuilder
- */
- public ProjectBuilder getProjectBuilder()
+ public Project createProject( final String location,
+ final String type,
+ final Parameters parameters )
+ throws Exception
{
- return m_builder;
+ return m_builder.build( location );
}
- /**
- * Retrieve project engine for runtime.
- * Valid after init() call
- *
- * @return the ProjectBuilder
- */
- public ProjectManager getProjectManager()
+ public ProjectManager createProjectManager( final Project project,
+ final Parameters parameters )
+ throws Exception
{
- return m_projectManager;
+ final String component = getParameter( ProjectManager.ROLE );
+ final ProjectManager projectManager =
+ (ProjectManager)createComponent( component, ProjectManager.class );
+
+ setupLogger( projectManager );
+
+ if( projectManager instanceof Composable )
+ {
+ final DefaultComponentManager componentManager =
+ new DefaultComponentManager( m_componentManager );
+ componentManager.put( Project.ROLE, project );
+ ((Composable)projectManager).compose( componentManager );
+ }
+
+ if( projectManager instanceof Parameterizable )
+ {
+ ((Parameterizable)projectManager).parameterize( parameters );
+ }
+
+ if( projectManager instanceof Initializable )
+ {
+ ((Initializable)projectManager).initialize();
+ }
+
+ return projectManager;
}
/**
@@ -122,7 +139,7 @@
public void start()
throws Exception
{
- final ExtensionFileFilter filter = new ExtensionFileFilter( ".tsk" );
+ final ExtensionFileFilter filter = new ExtensionFileFilter( ".atl" );
deployFromDirectory( m_deployer, m_taskLibDir, filter );
}
@@ -143,7 +160,6 @@
m_converterRegistry = null;
m_converter = null;
m_executor = null;
- m_projectManager = null;
m_builder = null;
m_deployer = null;
m_configurer = null;
@@ -208,7 +224,6 @@
componentManager.put( MasterConverter.ROLE, m_converter );
//Following components required when Myrmidon is used as build tool
- componentManager.put( ProjectManager.ROLE, m_projectManager );
componentManager.put( ProjectBuilder.ROLE, m_builder );
//Following components required when Myrmidon allows user deployment of tasks etal.
@@ -262,11 +277,8 @@
component = getParameter( Executor.ROLE );
m_executor = (Executor)createComponent( component, Executor.class );
- component = getParameter( ProjectManager.ROLE );
- m_projectManager = (ProjectManager)createComponent( component, ProjectManager.class );
-
component = getParameter( ProjectBuilder.ROLE );
- m_builder =(ProjectBuilder)createComponent( component, ProjectBuilder.class );
+ m_builder = (ProjectBuilder)createComponent( component, ProjectBuilder.class );
}
/**
@@ -282,7 +294,6 @@
setupComponent( m_converterRegistry );
setupComponent( m_converter );
setupComponent( m_executor );
- setupComponent( m_projectManager );
setupComponent( m_builder );
setupComponent( m_deployer );
setupComponent( m_configurer );