You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ct...@apache.org on 2010/01/29 00:34:30 UTC

svn commit: r904304 - in /continuum/trunk: continuum-core/src/main/java/org/apache/continuum/release/distributed/manager/ continuum-release/ continuum-release/src/main/mdo/ continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/

Author: ctan
Date: Thu Jan 28 23:34:29 2010
New Revision: 904304

URL: http://svn.apache.org/viewvc?rev=904304&view=rev
Log:
[CONTINUUM-2450] [CONTINUUM-2450] removed if-else which is the cause why the prepared-releases.xml is not populated during the first release of any project on a fresh installation of continuum. also made sure that the prepared-releases.xml is updated every release

Modified:
    continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/manager/DefaultDistributedReleaseManager.java
    continuum/trunk/continuum-release/pom.xml
    continuum/trunk/continuum-release/src/main/mdo/prepared-releases.mdo
    continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseInProgressAction.java

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/manager/DefaultDistributedReleaseManager.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/manager/DefaultDistributedReleaseManager.java?rev=904304&r1=904303&r2=904304&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/manager/DefaultDistributedReleaseManager.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/manager/DefaultDistributedReleaseManager.java Thu Jan 28 23:34:29 2010
@@ -155,6 +155,7 @@
         try
         {
             SlaveBuildAgentTransportClient client = new SlaveBuildAgentTransportClient( new URL( buildAgentUrl ) );
+
             String releaseId =
                 client.releasePrepare( createProjectMap( project ), createPropertiesMap( releaseProperties ),
                                        releaseVersion, developmentVersion, environments, username );
@@ -298,6 +299,18 @@
                                 boolean useReleaseProfile, LocalRepository repository, String username )
         throws ContinuumReleaseException, BuildAgentConfigurationException
     {
+        List<PreparedRelease> releases = getPreparedReleases();
+
+        for ( PreparedRelease release: releases )
+        {
+            if ( release.getReleaseId().equals( releaseId ) )
+            {
+                release.setReleaseType( "perform" );
+                savePreparedReleases( releases );
+                break;
+            }
+        }
+
         String buildAgentUrl = getBuildAgentUrl( releaseId );
 
         if ( !checkBuildAgent( buildAgentUrl ) )
@@ -442,6 +455,8 @@
             String result = client.releaseCleanup( releaseId );
 
             removeFromReleaseInProgress( releaseId );
+            removeFromPreparedReleases( releaseId );
+
             return result;
         }
         catch ( MalformedURLException e )
@@ -636,17 +651,11 @@
     private void addReleasePrepare( String releaseId, String buildAgentUrl, String releaseName )
         throws ContinuumReleaseException
     {
-        File file = getPreparedReleasesFile();
-
-        if ( !file.exists() )
-        {
-            file.getParentFile().mkdirs();
-        }
-
         PreparedRelease release = new PreparedRelease();
         release.setReleaseId( releaseId );
         release.setBuildAgentUrl( buildAgentUrl );
         release.setReleaseName( releaseName );
+        release.setReleaseType( "prepare" );
 
         List<PreparedRelease> preparedReleases = getPreparedReleases();
 
@@ -654,41 +663,25 @@
         {
             preparedReleases = new ArrayList<PreparedRelease>();
         }
-        else
-        {
-            boolean found = false;
 
-            for ( PreparedRelease preparedRelease : preparedReleases )
-            {
-                if ( preparedRelease.getReleaseId().equals( release.getReleaseId() ) &&
-                    preparedRelease.getReleaseName().equals( release.getReleaseName() ) )
-                {
-                    preparedRelease.setBuildAgentUrl( release.getBuildAgentUrl() );
-                    found = true;
-                }
-            }
+        boolean found = false;
 
-            if ( !found )
+        for ( PreparedRelease preparedRelease : preparedReleases )
+        {
+            if ( preparedRelease.getReleaseId().equals( release.getReleaseId() ) &&
+                 preparedRelease.getReleaseName().equals( release.getReleaseName() ) )
             {
-                preparedReleases.add( release );
+                preparedRelease.setBuildAgentUrl( release.getBuildAgentUrl() );
+                found = true;
             }
         }
 
-        PreparedReleaseModel model = new PreparedReleaseModel();
-        model.setPreparedReleases( preparedReleases );
-
-        try
-        {
-            ContinuumPrepareReleasesModelXpp3Writer writer = new ContinuumPrepareReleasesModelXpp3Writer();
-            FileWriter fileWriter = new FileWriter( file );
-            writer.write( fileWriter, model );
-            fileWriter.flush();
-            fileWriter.close();
-        }
-        catch ( IOException e )
+        if ( !found )
         {
-            throw new ContinuumReleaseException( "Failed to write prepared releases in file", e );
+            preparedReleases.add( release );
         }
+
+        savePreparedReleases( preparedReleases );
     }
 
     private void addReleaseInProgress( String releaseId, String releaseType, int projectId, String username )
@@ -751,4 +744,61 @@
         log.info( "Build agent: " + buildAgentUrl + " is either disabled or removed" );
         return false;
     }
+
+    private void removeFromPreparedReleases( String releaseId )
+        throws ContinuumReleaseException
+    {
+        List<PreparedRelease> releases = getPreparedReleases();
+
+        for ( PreparedRelease release : releases )
+        {
+            if ( release.getReleaseId().equals( releaseId ) )
+            {
+                if ( release.getReleaseType().equals( "perform" ) )
+                {
+                    releases.remove( release );
+                    savePreparedReleases( releases );
+                    break;
+                }
+            }
+        }
+    }
+
+    private void savePreparedReleases( List<PreparedRelease> preparedReleases)
+        throws ContinuumReleaseException
+    {
+        File file = getPreparedReleasesFile();
+
+        if ( !file.exists() )
+        {
+            file.getParentFile().mkdirs();
+        }
+
+        PreparedReleaseModel model = new PreparedReleaseModel();
+        model.setPreparedReleases( preparedReleases );
+
+        try
+        {
+            ContinuumPrepareReleasesModelXpp3Writer writer = new ContinuumPrepareReleasesModelXpp3Writer();
+            FileWriter fileWriter = new FileWriter( file );
+            writer.write( fileWriter, model );
+            fileWriter.flush();
+            fileWriter.close();
+        }
+        catch ( IOException e )
+        {
+            throw new ContinuumReleaseException( "Failed to write prepared releases in file", e );
+        }
+    }
+
+    // for testing
+    public void setBuildResultDao( BuildResultDao buildResultDao )
+    {
+        this.buildResultDao = buildResultDao;
+    }
+
+    public void setConfigurationService( ConfigurationService configurationService )
+    {
+        this.configurationService = configurationService;
+    }
 }
\ No newline at end of file

Modified: continuum/trunk/continuum-release/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-release/pom.xml?rev=904304&r1=904303&r2=904304&view=diff
==============================================================================
--- continuum/trunk/continuum-release/pom.xml (original)
+++ continuum/trunk/continuum-release/pom.xml Thu Jan 28 23:34:29 2010
@@ -121,7 +121,7 @@
           <models>
             <model>src/main/mdo/prepared-releases.mdo</model>
           </models>
-          <version>1.0.0</version>
+          <version>1.4.0</version>
           <useJava5>true</useJava5>
         </configuration>
         <executions>

Modified: continuum/trunk/continuum-release/src/main/mdo/prepared-releases.mdo
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-release/src/main/mdo/prepared-releases.mdo?rev=904304&r1=904303&r2=904304&view=diff
==============================================================================
--- continuum/trunk/continuum-release/src/main/mdo/prepared-releases.mdo (original)
+++ continuum/trunk/continuum-release/src/main/mdo/prepared-releases.mdo Thu Jan 28 23:34:29 2010
@@ -29,11 +29,11 @@
   <classes>
     <class rootElement="true" xml.tagName="prepared-releases">
       <name>PreparedReleaseModel</name>
-      <version>1.0.0</version>
+      <version>1.0.0+</version>
       <fields>
         <field>
           <name>preparedReleases</name>
-          <version>1.0.0</version>
+          <version>1.0.0+</version>
           <description></description>
           <required>true</required>
           <association>
@@ -45,29 +45,36 @@
     </class>
     <class>
       <name>PreparedRelease</name>
-      <version>1.0.0</version>
+      <version>1.0.0+</version>
       <fields>
         <field>
           <name>releaseId</name>
-          <version>1.0.0</version>
+          <version>1.0.0+</version>
           <required>true</required>
           <description>release id</description>
           <type>String</type>
         </field>
         <field>
           <name>releaseName</name>
-          <version>1.0.0</version>
+          <version>1.0.0+</version>
           <required>true</required>
           <description>prepared release name</description>
           <type>String</type>
         </field>
         <field>
           <name>buildAgentUrl</name>
-          <version>1.0.0</version>
+          <version>1.0.0+</version>
           <required>true</required>
           <description>build agent url</description>
           <type>String</type>
         </field>
+        <field>
+          <name>releaseType</name>
+          <version>1.4.0+</version>
+          <required>true</required>
+          <description>type of release. possible values are "prepare" or "perform"</description>
+          <type>String</type>
+        </field>
       </fields>
     </class>
   </classes>

Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseInProgressAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseInProgressAction.java?rev=904304&r1=904303&r2=904304&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseInProgressAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleaseInProgressAction.java Thu Jan 28 23:34:29 2010
@@ -96,7 +96,7 @@
                 List<String> args = new ArrayList<String>();
                 args.add( e.getMessage() );
 
-                addActionError( getText( "releaseInProgress.error", args ) );
+                addActionError( getText( "distributedBuild.releaseInProgress.error", args ) );
                 return ERROR;
             }