donaldp 01/04/16 01:23:23 Modified: src/java/org/apache/phoenix/engine DefaultSarDeployer.java src/java/org/apache/phoenix/engine/blocks DefaultBlockDeployer.java Log: Altered Deployers to directly extend AbstractDeployer rather than subclasses. The sub-classes did not offer significant extra functionality. Revision Changes Path 1.9 +54 -26 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/DefaultSarDeployer.java Index: DefaultSarDeployer.java =================================================================== RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/DefaultSarDeployer.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- DefaultSarDeployer.java 2001/04/15 13:29:17 1.8 +++ DefaultSarDeployer.java 2001/04/16 08:23:23 1.9 @@ -22,12 +22,15 @@ import org.apache.avalon.ComponentManager; import org.apache.avalon.ComponentManagerException; import org.apache.avalon.Composer; +import org.apache.avalon.Composer; import org.apache.avalon.DefaultComponentManager; import org.apache.avalon.DefaultContext; import org.apache.avalon.atlantis.Application; import org.apache.avalon.atlantis.Kernel; -import org.apache.avalon.camelot.AbstractCamelotDeployer; +import org.apache.avalon.camelot.AbstractDeployer; import org.apache.avalon.camelot.CamelotUtil; +import org.apache.avalon.camelot.Container; +import org.apache.avalon.camelot.Info; import org.apache.avalon.camelot.ContainerException; import org.apache.avalon.camelot.DefaultRegistry; import org.apache.avalon.camelot.Deployer; @@ -53,20 +56,34 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public class DefaultSarDeployer - extends AbstractCamelotDeployer + extends AbstractDeployer + implements Composer { protected File m_deployDirectory; + protected Container m_container; /** * Default constructor. */ public DefaultSarDeployer() { - m_deployToContainer = true; m_autoUndeploy = true; m_type = "Sar"; } + /** + * Retrieve relevent services needed to deploy. + * + * @param componentManager the ComponentManager + * @exception ComponentManagerException if an error occurs + */ + public void compose( final ComponentManager componentManager ) + throws ComponentManagerException + { + m_container = (Container)componentManager. + lookup( "org.apache.avalon.camelot.Container" ); + } + protected void deployFromFile( final String name, final File file ) throws DeploymentException { @@ -181,14 +198,6 @@ context.put( SarContextResources.APP_NAME, name ); entry.setContext( context ); - //setup the ServerApplications component manager - final DefaultComponentManager componentManager = new DefaultComponentManager(); - componentManager.put( "org.apache.avalon.camelot.Registry", - new DefaultRegistry( BlockInfo.class ) ); - componentManager.put( "org.apache.avalon.camelot.Registry/Locator", - new DefaultRegistry( Locator.class ) ); - entry.setComponentManager( componentManager ); - //setup the ServerApplications configuration manager final File file = new File( directory, "conf" + File.separator + "server.xml" ); final Configuration configuration = getConfigurationFor( file ); @@ -219,7 +228,12 @@ } //rework next bit so it grabs deployments from archive - final Deployer deployer = getBlockDeployer( entry ); + + //Registry that stores locators and infos for blocks + final Registry registry = new DefaultRegistry( Info.class ); + + final Deployer deployer = getBlockDeployer( entry, registry ); + final File blocksDirectory = new File( directory, "blocks" ); CamelotUtil.deployFromDirectory( deployer, blocksDirectory, ".bar" ); @@ -230,7 +244,7 @@ { final Configuration configuration = getConfigurationFor( file ); final Configuration[] blocks = configuration.getChildren( "block" ); - handleBlocks( application, entry, blocks ); + handleBlocks( application, entry, blocks, registry ); } catch( final ComponentManagerException cme ) { @@ -242,6 +256,21 @@ } } + protected void addEntry( final String name, final ServerApplicationEntry entry ) + throws DeploymentException + { + try + { + m_container.add( name, entry ); + } + catch( final ContainerException ce ) + { + throw new DeploymentException( "Error adding component to container", ce ); + } + + getLogger().debug( "Adding " + m_type + "Entry " + name + " as " + entry ); + } + protected Configuration getConfigurationFor( final File file ) throws DeploymentException { @@ -256,7 +285,7 @@ } } - protected Deployer getBlockDeployer( final ServerApplicationEntry entry ) + protected Deployer getBlockDeployer( final ServerApplicationEntry entry, final Registry registry ) throws DeploymentException { final Deployer deployer = new DefaultBlockDeployer(); @@ -264,7 +293,13 @@ if( deployer instanceof Composer ) { - try { ((Composer)deployer).compose( entry.getComponentManager() ); } + final DefaultComponentManager componentManager = new DefaultComponentManager(); + componentManager.put( "org.apache.avalon.camelot.Registry", registry ); + + try + { + ((Composer)deployer).compose( componentManager ); + } catch( final Exception e ) { throw new DeploymentException( "Error composing block deployer", e ); @@ -276,17 +311,10 @@ protected void handleBlocks( final Application application, final ServerApplicationEntry saEntry, - final Configuration[] blocks ) + final Configuration[] blocks, + final Registry registry ) throws ComponentManagerException, ConfigurationException, DeploymentException { - final ComponentManager componentManager = saEntry.getComponentManager(); - - final Registry infoRegistry = - (Registry)componentManager.lookup( "org.apache.avalon.camelot.Registry" ); - - final Registry locatorRegistry = (Registry)componentManager. - lookup( "org.apache.avalon.camelot.Registry/Locator" ); - for( int i = 0; i < blocks.length; i++ ) { final Configuration block = blocks[ i ]; @@ -295,7 +323,7 @@ BlockInfo info = null; - try { info = (BlockInfo)infoRegistry.getInfo( className, BlockInfo.class ); } + try { info = (BlockInfo)registry.getInfo( className, BlockInfo.class ); } catch( final RegistryException re ) { throw new DeploymentException( "Failed to aquire BlockInfo for " + className, @@ -303,7 +331,7 @@ } Locator locator = null; - try { locator = (Locator)locatorRegistry.getInfo( className, Locator.class ); } + try { locator = (Locator)registry.getInfo( className + "/Locator", Locator.class ); } catch( final RegistryException re ) { throw new DeploymentException( "Failed to aquire Locator for " + className, 1.3 +81 -17 jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/blocks/DefaultBlockDeployer.java Index: DefaultBlockDeployer.java =================================================================== RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/phoenix/engine/blocks/DefaultBlockDeployer.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DefaultBlockDeployer.java 2001/04/02 09:10:57 1.2 +++ DefaultBlockDeployer.java 2001/04/16 08:23:23 1.3 @@ -8,31 +8,40 @@ package org.apache.phoenix.engine.blocks; import java.io.IOException; +import java.io.File; import java.io.InputStream; import java.net.URL; +import java.net.MalformedURLException; import java.util.Iterator; import java.util.Map; import java.util.jar.Attributes; import java.util.jar.Manifest; import java.util.zip.ZipFile; -import org.apache.avalon.camelot.AbstractZipDeployer; +import org.apache.avalon.camelot.AbstractDeployer; import org.apache.avalon.camelot.DeployerUtil; import org.apache.avalon.camelot.DeploymentException; +import org.apache.avalon.camelot.DefaultLocator; import org.apache.avalon.camelot.Registry; import org.apache.avalon.camelot.RegistryException; import org.apache.avalon.util.io.IOUtil; import org.apache.phoenix.metainfo.BlockInfo; import org.apache.phoenix.metainfo.BlockInfoBuilder; +import org.apache.avalon.ComponentManager; +import org.apache.avalon.ComponentManagerException; +import org.apache.avalon.Composer; /** * This class deploys a .bar file into a registry. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ -public class DefaultBlockDeployer - extends AbstractZipDeployer +public final class DefaultBlockDeployer + extends AbstractDeployer + implements Composer { - protected BlockInfoBuilder m_builder; + private Registry m_registry; + private BlockInfoBuilder m_builder; + /** * Default constructor. @@ -40,29 +49,55 @@ public DefaultBlockDeployer() { m_builder = new BlockInfoBuilder(); - - //Indicate that this deployer should deploy to respective types - m_deployToLocatorRegistry = true; - m_deployToInfoRegistry = true; - m_autoUndeploy = true; m_type = "Block"; } + /** + * Retrieve relevent services needed to deploy. + * + * @param componentManager the ComponentManager + * @exception ComponentManagerException if an error occurs + */ + public void compose( final ComponentManager componentManager ) + throws ComponentManagerException + { + m_registry = (Registry)componentManager. + lookup( "org.apache.avalon.camelot.Registry" ); + } + /** - * Load resources from jar required to deploy file. + * Deploy a file. + * Eventually this should be cached for performance reasons. * - * @param zipFile the zipFile - * @param location the location deploying to - * @param url the URL + * @param location the location + * @param file the file * @exception DeploymentException if an error occurs */ - protected void loadResources( final ZipFile zipFile, final String location, final URL url ) + protected void deployFromFile( final String location, final File file ) throws DeploymentException { - handleBlocks( zipFile, DeployerUtil.loadManifest( zipFile ), url ); - } - + final ZipFile zipFile = DeployerUtil.getZipFileFor( file ); + + URL url = null; + + try + { + try { url = file.toURL(); } + catch( final MalformedURLException mue ) + { + throw new DeploymentException( "Unable to form url", mue ); + } + + handleBlocks( zipFile, DeployerUtil.loadManifest( zipFile ), url ); + } + finally + { + try { zipFile.close(); } + catch( final IOException ioe ) {} + } + } + /** * Create and register Infos for all blocks stored in deployment. * @@ -137,5 +172,34 @@ { IOUtil.shutdownStream( inputStream ); } + } + + + protected void addLocator( final String name, final String classname, final URL url ) + throws DeploymentException + { + final DefaultLocator locator = new DefaultLocator( classname, url ); + + try { m_registry.register( name + "/Locator", locator ); } + catch( final RegistryException re ) + { + throw new DeploymentException( "Error registering " + name + " due to " + re, + re ); + } + + getLogger().debug( "Registered Locator for " + m_type + " " + name + " as " + classname ); + } + + protected void addInfo( final String name, final BlockInfo info ) + throws DeploymentException + { + try { m_registry.register( name, info ); } + catch( final RegistryException re ) + { + throw new DeploymentException( "Error registering " + name + " due to " + re, + re ); + } + + getLogger().debug( "Registered Info " + m_type + " " + name ); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]