mirceatoma 01/11/02 15:27:52 Modified: src/java/org/apache/avalon/phoenix/components/deployer DefaultDeploymentRecorder.java Log: Reversed to 1.1 revision. In memory DeploymentRecorder as default implementation. Revision Changes Path 1.3 +12 -142 jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/deployer/DefaultDeploymentRecorder.java Index: DefaultDeploymentRecorder.java =================================================================== RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/deployer/DefaultDeploymentRecorder.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DefaultDeploymentRecorder.java 2001/11/01 22:48:57 1.2 +++ DefaultDeploymentRecorder.java 2001/11/02 23:27:52 1.3 @@ -7,169 +7,39 @@ */ package org.apache.avalon.phoenix.components.deployer; -import java.io.File; +import java.util.HashMap; import org.apache.avalon.framework.logger.AbstractLoggable; -import org.apache.avalon.framework.configuration.Configuration; -import org.apache.avalon.framework.configuration.DefaultConfiguration; -import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; -import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer; -import org.apache.avalon.framework.configuration.ConfigurationException; -import org.apache.avalon.framework.parameters.Parameters; -import org.apache.avalon.framework.parameters.Parameterizable; -import org.apache.avalon.framework.parameters.ParameterException; -import org.apache.avalon.excalibur.i18n.ResourceManager; -import org.apache.avalon.excalibur.i18n.Resources; import org.apache.avalon.phoenix.interfaces.DeploymentRecorder; import org.apache.avalon.phoenix.interfaces.DeploymentException; import org.apache.avalon.phoenix.tools.installer.Installation; -import org.apache.avalon.phoenix.tools.installer.FileDigest; /** - * Recorder for application deployment specific information (To avoid - * installation of applications every time Phoenix starts this class should - * persist the information in order to be reconstructed). + * Recorder for application deployment specific information. * * @author <a href="mailto:[EMAIL PROTECTED]">Mircea Toma</a> */ public class DefaultDeploymentRecorder extends AbstractLoggable - implements DeploymentRecorder, Parameterizable { + implements DeploymentRecorder { + + private final HashMap m_installations = new HashMap(); - private static final Resources REZ = - ResourceManager.getPackageResources( DefaultDeploymentRecorder.class ); - - private final static String PHOENIX_HOME = System.getProperty( "phoenix.home", ".." ); - private final static String DEFAULT_APPS_PATH = PHOENIX_HOME + File.separator + "apps"; - private final static String DIGEST_FILE = "install.log"; - - private final static String SOURCE = "source"; - private final static String DIRECTORY = "directory"; - private final static String CONFIG = "config"; - private final static String ASSEMBLY = "assembly"; - private final static String SERVER = "server"; - private final static String CLASSPATH = "classpath"; - private final static String PATH = "path"; - private final static String URL = "url"; - private final static String DIGESTS = "digests"; - private final static String DIGEST = "digest"; - private final static String TIMESTAMP = "timestamp"; - private final static String FILE = "file"; - private final static String CHECKSUM = "checksum"; - - private File m_appsDirectory; - private final DefaultConfigurationBuilder m_builder = new DefaultConfigurationBuilder(); - private final DefaultConfigurationSerializer m_serializer = new DefaultConfigurationSerializer(); - - public void parameterize(Parameters parameters) - throws ParameterException - { - final String appsLocation = - parameters.getParameter( "applications-directory", DEFAULT_APPS_PATH ); - m_appsDirectory = new File( appsLocation ); - } - public synchronized void recordInstallation( final String name, final Installation installation ) throws DeploymentException { - final File file = getDigestFile( name ); - - try - { - if ( null == installation ) - { - //remove installation digest file - if( file.exists() ) file.delete(); - return; - } - - final DefaultConfiguration configuration = new DefaultConfiguration( "installation", null ); - configuration.setAttribute( SOURCE, installation.getSource().getCanonicalPath() ); - configuration.setAttribute( DIRECTORY, installation.getDirectory().getCanonicalPath() ); - configuration.setAttribute( CONFIG, installation.getConfig() ); - configuration.setAttribute( ASSEMBLY, installation.getAssembly() ); - configuration.setAttribute( SERVER, installation.getServer() ); - configuration.setAttribute( TIMESTAMP, Long.toString( installation.getTimestamp() ) ); - - final DefaultConfiguration classpath = new DefaultConfiguration( CLASSPATH, null ); - final String[] urls = installation.getClassPath(); - for ( int i = 0; i < urls.length; i++ ) - { - final DefaultConfiguration path = new DefaultConfiguration( PATH, null ); - path.setAttribute( URL, urls[i] ); - classpath.addChild( path ); - } - configuration.addChild( classpath ); - - final DefaultConfiguration digests = new DefaultConfiguration( DIGESTS, null ); - final FileDigest[] fileDigests = installation.getFileDigests(); - for ( int i = 0; i < fileDigests.length; i++ ) - { - final DefaultConfiguration digest = new DefaultConfiguration( DIGEST, null ); - digest.setAttribute( FILE, fileDigests[i].getFile().getCanonicalPath() ); - digest.setAttribute( CHECKSUM, String.valueOf( fileDigests[i].getChecksum() ) ); - digests.addChild( digest ); - } - configuration.addChild( digests ); - - m_serializer.serializeToFile( file, configuration ); - } - catch ( Exception e ) + if( null == installation ) { - final String message = REZ.getString( "recorder.warn.persist.failed", name ); - getLogger().warn( message, e ); - - //delete traces - file.delete(); + m_installations.remove( name ); + } + else + { + m_installations.put( name, installation ); } } public synchronized Installation fetchInstallation( final String name ) throws DeploymentException { - final File file = getDigestFile( name ); - if( !file.exists() ) return null; - - try - { - final Configuration configuration = m_builder.buildFromFile( file ); - - final File source = new File( configuration.getAttribute( SOURCE ) ); - final File directory = new File( configuration.getAttribute( DIRECTORY ) ); - final String config = configuration.getAttribute( CONFIG ); - final String assembly = configuration.getAttribute( ASSEMBLY ); - final String server = configuration.getAttribute( SERVER ); - final long timestamp = configuration.getAttributeAsLong( TIMESTAMP ); - - final Configuration[] paths = configuration.getChild( CLASSPATH, true).getChildren( PATH ); - final String[] classPath = new String[ paths.length ]; - for ( int i = 0; i < paths.length; i++ ) - { - classPath[i] = paths[i].getAttribute( URL ); - } - - final Configuration[] digests = configuration.getChild( DIGESTS, true).getChildren( DIGEST ); - final FileDigest[] fileDigests = new FileDigest[digests.length]; - for ( int i = 0; i < digests.length; i++ ) - { - final File installedFile = new File( digests[i].getAttribute( FILE ) ); - final long checksum = digests[i].getAttributeAsLong( CHECKSUM ); - final FileDigest digest = new FileDigest( installedFile, checksum ); - } - - return new Installation( source, directory, config, assembly, server, classPath, fileDigests, timestamp ); - } - catch ( Exception e ) - { - final String message = REZ.getString( "recorder.warn.rebuild.failed", name ); - getLogger().warn( message, e ); - - //force re-installation - return null; - } + return (Installation)m_installations.get( name ); } - - private File getDigestFile( final String name ) - { - return new File( m_appsDirectory, name + File.separator + DIGEST_FILE ); - } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>