Return-Path: Delivered-To: apmail-maven-continuum-commits-archive@www.apache.org Received: (qmail 82300 invoked from network); 13 Sep 2005 14:53:18 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 13 Sep 2005 14:53:18 -0000 Received: (qmail 21133 invoked by uid 500); 13 Sep 2005 14:53:18 -0000 Delivered-To: apmail-maven-continuum-commits-archive@maven.apache.org Received: (qmail 21113 invoked by uid 500); 13 Sep 2005 14:53:18 -0000 Mailing-List: contact continuum-commits-help@maven.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: continuum-dev@maven.apache.org Delivered-To: mailing list continuum-commits@maven.apache.org Received: (qmail 21100 invoked by uid 99); 13 Sep 2005 14:53:18 -0000 X-ASF-Spam-Status: No, hits=-9.8 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Tue, 13 Sep 2005 07:53:17 -0700 Received: (qmail 82291 invoked by uid 65534); 13 Sep 2005 14:53:17 -0000 Message-ID: <20050913145317.82290.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r280572 - in /maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater: DefaultUpdaterManager.java Updater.java UpdaterForContinuumOneAlphaThree.java Date: Tue, 13 Sep 2005 14:53:16 -0000 To: continuum-commits@maven.apache.org From: evenisse@apache.org X-Mailer: svnmailer-1.0.5 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: evenisse Date: Tue Sep 13 07:53:11 2005 New Revision: 280572 URL: http://svn.apache.org/viewcvs?rev=280572&view=rev Log: my last changes in updater. Not usable for the moment. I'll finish it in beta-1 Modified: maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/DefaultUpdaterManager.java maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/Updater.java maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/UpdaterForContinuumOneAlphaThree.java Modified: maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/DefaultUpdaterManager.java URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/DefaultUpdaterManager.java?rev=280572&r1=280571&r2=280572&view=diff ============================================================================== --- maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/DefaultUpdaterManager.java (original) +++ maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/DefaultUpdaterManager.java Tue Sep 13 07:53:11 2005 @@ -24,16 +24,21 @@ import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.archiver.UnArchiver; +import org.codehaus.plexus.component.repository.io.PlexusTools; +import org.codehaus.plexus.configuration.PlexusConfiguration; import org.codehaus.plexus.context.Context; import org.codehaus.plexus.context.ContextException; +import org.codehaus.plexus.jdo.JdoFactory; import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable; import org.codehaus.plexus.util.FileUtils; +import org.codehaus.plexus.util.StringUtils; import java.io.InputStream; import java.io.InputStreamReader; import java.io.IOException; import java.io.File; +import java.io.FileReader; import java.net.URL; import java.util.Iterator; import java.util.Map; @@ -181,15 +186,62 @@ try { - backup( continuumHome, userVersion ); + backup( continuumHome, version.getName() ); updateContinuumFiles( continuumHome, model ); getLogger().info( "==> Update database" ); - updater.updateDatabase(); + File oldApplicationXml = updater.getOldApplicationXml( getBackupDirectory( continuumHome, + version.getName() ) ); + + FileUtils.copyFile( oldApplicationXml, getApplicationXmlBackup( oldApplicationXml ) ); + + String applicationXmlContent = FileUtils.fileRead( oldApplicationXml ); + + StringUtils.replace( applicationXmlContent, "org.codehaus.plexus.jdo.JdoFactory", + "org.codehaus.plexus.jdo.JdoFactory\n"+ version.getName() + ""); + + FileUtils.fileWrite( oldApplicationXml.getAbsolutePath(), applicationXmlContent ); + + //Load old application.xml + addConfiguration( oldApplicationXml ); + + File newApplicationXml = updater.getNewApplicationXml( continuumHome ); + + FileUtils.copyFile( newApplicationXml, getApplicationXmlBackup( newApplicationXml ) ); + + applicationXmlContent = FileUtils.fileRead( newApplicationXml ); + + StringUtils.replace( applicationXmlContent, "org.codehaus.plexus.jdo.JdoFactory", + "org.codehaus.plexus.jdo.JdoFactory\n"+ version.getName() + "-new"); + + FileUtils.fileWrite( newApplicationXml.getAbsolutePath(), applicationXmlContent ); + + //Load new application.xml + addConfiguration( newApplicationXml ); + + try + { + //load jdo factories + JdoFactory oldFactory = (JdoFactory) container.lookup( JdoFactory.ROLE, version.getName() ); + + JdoFactory newFactory = (JdoFactory) container.lookup( JdoFactory.ROLE, version.getName() + "-new" ); + + updater.updateDatabase( oldFactory, newFactory ); + } + finally + { + FileUtils.copyFile( getApplicationXmlBackup( oldApplicationXml ), oldApplicationXml ); + + getApplicationXmlBackup( oldApplicationXml ).delete(); + + FileUtils.copyFile( getApplicationXmlBackup( newApplicationXml ), newApplicationXml ); + + getApplicationXmlBackup( newApplicationXml ).delete(); + } } - catch( UpdaterException e ) + catch( Exception e ) { e.printStackTrace(); @@ -199,12 +251,12 @@ } } - private void backup( File continuumHome, String userVersion ) + private void backup( File continuumHome, String version ) throws UpdaterException { - File backupDir = new File( continuumHome.getParentFile(), "continuum-" + userVersion ); + File backupDir = getBackupDirectory( continuumHome, version ); - getLogger().info( "==> Backup Continuum " + userVersion + " to " + backupDir.getAbsolutePath() ); + getLogger().info( "==> Backup Continuum " + version + " to " + backupDir.getAbsolutePath() ); try { @@ -227,7 +279,7 @@ { FileUtils.cleanDirectory( continuumHome ); - FileUtils.copyDirectoryStructure( new File( continuumHome.getParentFile(), "continuum-" + userVersion ), + FileUtils.copyDirectoryStructure( getBackupDirectory( continuumHome, userVersion ), continuumHome ); } catch( IOException e ) @@ -236,6 +288,16 @@ } } + private File getBackupDirectory( File continuumHome, String version ) + { + return new File( continuumHome.getParentFile(), "continuum-" + version ); + } + + private File getApplicationXmlBackup( File applicationXml ) + { + return new File( applicationXml.getParentFile(), "application.xml.backup" ); + } + private void updateContinuumFiles( File continuumHome, UpdaterModel model ) throws UpdaterException { @@ -308,5 +370,13 @@ throws ContextException { container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); + } + + private void addConfiguration( File config ) + throws Exception + { + PlexusConfiguration appConfig = PlexusTools.buildConfiguration( config.getPath(), new FileReader( config ) ); + + //TODO: Add configuration to the container } } Modified: maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/Updater.java URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/Updater.java?rev=280572&r1=280571&r2=280572&view=diff ============================================================================== --- maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/Updater.java (original) +++ maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/Updater.java Tue Sep 13 07:53:11 2005 @@ -17,6 +17,9 @@ */ import org.apache.maven.continuum.updater.exception.UpdaterException; +import org.codehaus.plexus.jdo.JdoFactory; + +import java.io.File; /** * @author Emmanuel Venisse @@ -28,6 +31,10 @@ String getReleaseUrl(); - void updateDatabase() + File getOldApplicationXml( File continuumHome ); + + File getNewApplicationXml( File continuumHome ); + + void updateDatabase( JdoFactory oldFactory, JdoFactory newFactory ) throws UpdaterException; } Modified: maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/UpdaterForContinuumOneAlphaThree.java URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/UpdaterForContinuumOneAlphaThree.java?rev=280572&r1=280571&r2=280572&view=diff ============================================================================== --- maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/UpdaterForContinuumOneAlphaThree.java (original) +++ maven/continuum/trunk/continuum-updater/src/main/java/org/apache/maven/continuum/updater/UpdaterForContinuumOneAlphaThree.java Tue Sep 13 07:53:11 2005 @@ -16,7 +16,32 @@ * limitations under the License. */ +import org.apache.maven.continuum.model.project.BuildResult; +import org.apache.maven.continuum.model.project.BuildDefinition; +import org.apache.maven.continuum.model.project.Project; +import org.apache.maven.continuum.model.project.ProjectDeveloper; +import org.apache.maven.continuum.model.project.ProjectNotifier; +import org.apache.maven.continuum.model.scm.ScmResult; +import org.apache.maven.continuum.project.v1_0_alpha_3.AntProject; +import org.apache.maven.continuum.project.v1_0_alpha_3.ContinuumBuild; +import org.apache.maven.continuum.project.v1_0_alpha_3.ContinuumDeveloper; +import org.apache.maven.continuum.project.v1_0_alpha_3.ContinuumNotifier; +import org.apache.maven.continuum.project.v1_0_alpha_3.ContinuumProject; +import org.apache.maven.continuum.project.v1_0_alpha_3.ContinuumJPoxStore; +import org.apache.maven.continuum.project.v1_0_alpha_3.MavenOneProject; +import org.apache.maven.continuum.project.v1_0_alpha_3.MavenTwoProject; +import org.apache.maven.continuum.project.v1_0_alpha_3.ShellProject; +import org.apache.maven.continuum.scm.v1_0_alpha_3.CheckOutScmResult; +import org.apache.maven.continuum.scm.v1_0_alpha_3.UpdateScmResult; +import org.apache.maven.continuum.store.ContinuumStore; +import org.apache.maven.continuum.store.ContinuumStoreException; import org.apache.maven.continuum.updater.exception.UpdaterException; +import org.codehaus.plexus.jdo.JdoFactory; + +import java.io.File; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; /** * @plexus.component @@ -29,14 +54,235 @@ public class UpdaterForContinuumOneAlphaThree implements Updater { + private ContinuumStore oldStore; + + private ContinuumStore store; + public String getReleaseUrl() { return "http://www.apache.org/dist/maven/binaries/continuum-1.0-alpha-4-bin.zip"; } - public void updateDatabase() + public File getOldApplicationXml( File continuumHome ) + { + return new File( continuumHome, "apps/continuum/conf/application.xml" ); + } + + public File getNewApplicationXml( File continuumHome ) + { + return new File( continuumHome, "apps/continuum/conf/application.xml" ); + } + + public void updateDatabase( JdoFactory oldFactory, JdoFactory newFactory ) throws UpdaterException { - //throw new UpdaterException( "Not implemented." ); + //throw new UpdaterException( "Update database not implemented." ); + } + + private Project convertProject( ContinuumProject oldProject ) + throws ContinuumStoreException + { + Project project = new Project(); + + project.setId( new Integer( oldProject.getId() ).intValue() ); + + project.setName( oldProject.getName() ); + + project.setScmUrl( oldProject.getScmUrl() ); + + project.setVersion( oldProject.getVersion() ); + + project.setWorkingDirectory( oldProject.getWorkingDirectory() ); + + project.setState( oldProject.getState() ); + + project.setExecutorId( oldProject.getExecutorId() ); + + project.setLatestBuildId( new Integer( oldProject.getLastBuildId() ).intValue() ); + + //oldProject.getPreviousBuildId() => don't exist in new model + + project.setBuildNumber( oldProject.getBuildNumber() ); + + for ( Iterator i = oldProject.getBuilds().iterator(); i.hasNext(); ) + { + ContinuumBuild oldBuildResult = (ContinuumBuild) i.next(); + + project.addBuildResult( convertBuildResult( oldBuildResult, project ) ); + } + + project.setCheckoutResult( convertScmResult( oldProject.getCheckOutScmResult() ) ); + + //oldProject.getCheckOutErrorMessage() => don't exist in new model + //oldProject.getCheckOutErrorException() => don't exist in new model + //mailType => don't exist in new model + + project.addBuildDefinition( convertBuildDefinition( oldProject ) ); + + project.setUrl( oldProject.getUrl() ); + + project.setGroupId( oldProject.getGroupId() ); + + //oldProject.getTestOutputDirectory() => don't exist in new model + + for ( Iterator i = oldProject.getDevelopers().iterator(); i.hasNext(); ) + { + ContinuumDeveloper oldDeveloper = (ContinuumDeveloper) i.next(); + + project.addDeveloper( convertDeveloper( oldDeveloper ) ); + } + + for ( Iterator i = oldProject.getNotifiers().iterator(); i.hasNext(); ) + { + ContinuumNotifier oldNotifier = (ContinuumNotifier) i.next(); + + project.addNotifier( convertNotifier( oldNotifier ) ); + } + + project.setProjectGroup( store.getDefaultProjectGroup() ); + return project; + } + + private BuildDefinition convertBuildDefinition( ContinuumProject oldProject ) + { + String executorId = oldProject.getExecutorId(); + + BuildDefinition bd = new BuildDefinition(); + + bd.setArguments( oldProject.getCommandLineArguments() ); + + if ( "maven-1".equals( executorId ) ) + { + bd.setBuildFile( "project.xml" ); + } + else if ( "maven2".equals( executorId ) ) + { + bd.setBuildFile( "pom.xml" ); + } + + if ( oldProject instanceof MavenOneProject ) + { + MavenOneProject project = (MavenOneProject) oldProject; + + bd.setGoals( project.getGoals() ); + } + if ( oldProject instanceof MavenTwoProject ) + { + MavenTwoProject project = (MavenTwoProject) oldProject; + + bd.setGoals( project.getGoals() ); + } + if ( oldProject instanceof AntProject ) + { + AntProject project = (AntProject) oldProject; + + bd.setBuildFile( project.getExecutable() ); + + bd.setGoals( project.getTargets() ); + } + if ( oldProject instanceof ShellProject ) + { + ShellProject project = (ShellProject) oldProject; + + bd.setBuildFile( project.getExecutable() ); + } + + //bd.setSchedule(); ==> TODO + + return bd; + } + + private ProjectDeveloper convertDeveloper( ContinuumDeveloper oldDeveloper ) + { + ProjectDeveloper developer = new ProjectDeveloper(); + + developer.setScmId( oldDeveloper.getId() ); + + developer.setName( oldDeveloper.getName() ); + + developer.setEmail( oldDeveloper.getEmail() ); + + return developer; + } + + private ProjectNotifier convertNotifier( ContinuumNotifier oldNotifier ) + { + ProjectNotifier notifier = new ProjectNotifier(); + + notifier.setType( oldNotifier.getType()); + + Map oldConf = oldNotifier.getConfiguration(); + + Map conf = new HashMap(); + + for ( Iterator i = oldConf.keySet().iterator(); i.hasNext(); ) + { + String key = (String) i.next(); + + conf.put( key, oldConf.get( key ) ); + } + + notifier.setConfiguration( conf ); + + return notifier; + } + + private BuildResult convertBuildResult( ContinuumBuild oldBuildResult, Project newProject ) + { + BuildResult buildResult = new BuildResult(); + + buildResult.setProject( newProject ); + + buildResult.setId( new Integer( oldBuildResult.getId() ).intValue() ); + + buildResult.setState( oldBuildResult.getState() ); + + if ( oldBuildResult.isForced() ) + { + buildResult.setTrigger( 1 ); + } + + buildResult.setStartTime( oldBuildResult.getStartTime() ); + + buildResult.setEndTime( oldBuildResult.getEndTime() ); + + buildResult.setError( oldBuildResult.getError() ); + + buildResult.setSuccess( oldBuildResult.isSuccess() ); + + //standardOutput => don't exist in new model + //standardError => don't exist in new model + + buildResult.setExitCode( oldBuildResult.getExitCode() ); + + buildResult.setScmResult( convertScmResult( oldBuildResult.getUpdateScmResult() ) ); + + return buildResult; + } + + private ScmResult convertScmResult( CheckOutScmResult oldScmResult ) + { + ScmResult scmResult = new ScmResult(); + + scmResult.setSuccess( oldScmResult.isSuccess() ); + + scmResult.setProviderMessage( oldScmResult.getProviderMessage() ); + + scmResult.setCommandOutput( oldScmResult.getCommandOutput() ); + + return scmResult; + } + + private ScmResult convertScmResult( UpdateScmResult oldScmResult ) + { + ScmResult scmResult = new ScmResult(); + + scmResult.setSuccess( oldScmResult.isSuccess() ); + + scmResult.setProviderMessage( oldScmResult.getProviderMessage() ); + + scmResult.setCommandOutput( oldScmResult.getCommandOutput() ); + + return scmResult; } }