You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by mi...@apache.org on 2001/11/03 00:27:53 UTC
cvs commit: jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/deployer DefaultDeploymentRecorder.java
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:mirceatoma@home.com">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: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>