You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by ad...@apache.org on 2002/05/27 14:59:36 UTC
cvs commit: jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/deployer CompoundTypeDeployer.java DefaultDeployer.java RoleDeployer.java
adammurdoch 02/05/27 05:59:36
Modified: container/src/java/org/apache/myrmidon/components/deployer
CompoundTypeDeployer.java DefaultDeployer.java
Removed: container/src/java/org/apache/myrmidon/components/deployer
RoleDeployer.java
Log:
Create custom deployers as types are registered, rather than as roles
are registered. This means that custom deployers are now created
for every execution frame that needs them.
Revision Changes Path
1.7 +54 -5 jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/deployer/CompoundTypeDeployer.java
Index: CompoundTypeDeployer.java
===================================================================
RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/deployer/CompoundTypeDeployer.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- CompoundTypeDeployer.java 23 May 2002 09:36:36 -0000 1.6
+++ CompoundTypeDeployer.java 27 May 2002 12:59:36 -0000 1.7
@@ -11,14 +11,20 @@
import java.util.Map;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
+import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.myrmidon.interfaces.ComponentException;
import org.apache.myrmidon.interfaces.deployer.TypeDefinition;
import org.apache.myrmidon.interfaces.deployer.TypeDeployer;
+import org.apache.myrmidon.interfaces.role.RoleInfo;
+import org.apache.myrmidon.interfaces.role.RoleManager;
/**
* A type deployer that delegates to a type deployer per role.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision: 1.6 $ $Date: 2002/05/23 09:36:36 $
+ * @version $Revision: 1.7 $ $Date: 2002/05/27 12:59:36 $
*/
class CompoundTypeDeployer
implements TypeDeployer
@@ -28,17 +34,26 @@
private final Map m_deployers = new HashMap();
private final TypeDeployer m_defaultDeployer;
+ private final ServiceManager m_serviceManager;
+ private final RoleManager m_roleManager;
- public CompoundTypeDeployer( final TypeDeployer defaultDeployer )
+ public CompoundTypeDeployer( final TypeDeployer defaultDeployer,
+ final ServiceManager serviceManager )
+ throws ServiceException
{
m_defaultDeployer = defaultDeployer;
+ ContainerUtil.service( m_defaultDeployer, serviceManager );
+ m_serviceManager = serviceManager;
+ m_roleManager = (RoleManager)serviceManager.lookup( RoleManager.ROLE );
}
/**
* Adds a deployer for a role.
*/
public void addDeployer( final String role, final TypeDeployer deployer )
+ throws ServiceException
{
+ ContainerUtil.service( deployer, m_serviceManager );
m_deployers.put( role, deployer );
}
@@ -65,11 +80,45 @@
// Use the deployer for the type's role, if any. Otherwise use the
// default deployer
- TypeDeployer deployer = (TypeDeployer)m_deployers.get( typeDefinition.getRole() );
+ TypeDeployer deployer = findDeployer( roleName );
+ deployer.deployType( namespace, typeDefinition );
+ }
+
+ /**
+ * Locates the deployer for a role.
+ */
+ private TypeDeployer findDeployer( final String roleName )
+ throws Exception
+ {
+ TypeDeployer deployer = (TypeDeployer)m_deployers.get( roleName );
if( deployer == null )
{
- deployer = m_defaultDeployer;
+ // Lookup the role
+ final RoleInfo role = m_roleManager.getRole( roleName );
+
+ // Instantiate the custom type deployer for this role
+ final String typeDeployerClassName = (String)role.getAttributes().get( RoleInfo.ATTRIBUTE_CUSTOM_TYPE_DEPLOYER );
+ if( typeDeployerClassName != null )
+ {
+ try
+ {
+ final Class typeDeployerClass = role.getImplementationClass().getClassLoader().loadClass( typeDeployerClassName );
+ deployer = (TypeDeployer)typeDeployerClass.newInstance();
+ ContainerUtil.service( deployer, m_serviceManager );
+ }
+ catch( final Exception e )
+ {
+ final String message = REZ.getString( "create-type-deployer.error", roleName );
+ throw new ComponentException( message, e );
+ }
+ }
+ else
+ {
+ deployer = m_defaultDeployer;
+ }
+ m_deployers.put( roleName, deployer );
}
- deployer.deployType( namespace, typeDefinition );
+
+ return deployer;
}
}
1.46 +6 -10 jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/deployer/DefaultDeployer.java
Index: DefaultDeployer.java
===================================================================
RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/deployer/DefaultDeployer.java,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- DefaultDeployer.java 23 May 2002 09:36:36 -0000 1.45
+++ DefaultDeployer.java 27 May 2002 12:59:36 -0000 1.46
@@ -29,7 +29,7 @@
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision: 1.45 $ $Date: 2002/05/23 09:36:36 $
+ * @version $Revision: 1.46 $ $Date: 2002/05/27 12:59:36 $
*/
public class DefaultDeployer
extends AbstractLogEnabled
@@ -39,7 +39,7 @@
ResourceManager.getPackageResources( DefaultDeployer.class );
// The components used to deploy
- private RoleRegistry m_roleDeployer;
+ private RoleRegistry m_roleRegistry;
private CompoundTypeDeployer m_typeDeployer;
/**
@@ -51,18 +51,14 @@
public void service( final ServiceManager serviceManager )
throws ServiceException
{
+ m_roleRegistry = (RoleRegistry)serviceManager.lookup( RoleRegistry.ROLE );
+
// Assemble the type deployer
final DefaultTypeDeployer defaultDeployer = new DefaultTypeDeployer();
- ContainerUtil.service( defaultDeployer, serviceManager );
-
+ m_typeDeployer = new CompoundTypeDeployer( defaultDeployer, serviceManager );
final ConverterTypeDeployer converterDeployer = new ConverterTypeDeployer();
- ContainerUtil.service( converterDeployer, serviceManager );
- m_typeDeployer = new CompoundTypeDeployer( defaultDeployer );
m_typeDeployer.addDeployer( Converter.ROLE, converterDeployer );
- // Assemble the role deployer
- final RoleRegistry roleRegistry = (RoleRegistry)serviceManager.lookup( RoleRegistry.ROLE );
- m_roleDeployer = new RoleDeployer( roleRegistry, m_typeDeployer, serviceManager );
}
/**
@@ -84,7 +80,7 @@
try
{
DefaultTypeLibraryDeployer deployment =
- new DefaultTypeLibraryDeployer( m_roleDeployer,
+ new DefaultTypeLibraryDeployer( m_roleRegistry,
m_typeDeployer,
namespace,
library.getClassLoader() );
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>