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/11/18 16:22:14 UTC

svn commit: r1036488 - in /continuum/trunk: continuum-core/src/main/java/org/apache/continuum/release/distributed/manager/ continuum-xmlrpc/continuum-xmlrpc-server/ continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrp...

Author: ctan
Date: Thu Nov 18 15:22:13 2010
New Revision: 1036488

URL: http://svn.apache.org/viewvc?rev=1036488&view=rev
Log:
[CONTINUUM-2581]
- fixed NPE in rewrite-pom-phase
- fixed ClassCastException when invoking getListener()
- throw an exception when agent is unreachable while doing a release perform

Added:
    continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/
    continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/
    continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/
    continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/
    continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/
    continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/
    continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/
    continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplStub.java   (with props)
    continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplTest.java   (with props)
Modified:
    continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/manager/DefaultDistributedReleaseManager.java
    continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/pom.xml
    continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.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=1036488&r1=1036487&r2=1036488&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 Nov 18 15:22:13 2010
@@ -409,12 +409,14 @@ public class DefaultDistributedReleaseMa
     
                 addReleaseInProgress( releaseId, "perform", projectId, username );
             }
+            else
+            {
+                // call reload in case we disable the build agent
+                distributedBuildManager.reload();
 
-            // call reload in case we disable the build agent
-            distributedBuildManager.reload();
-
-            throw new ContinuumReleaseException( "Failed to perform release of " + releaseId + 
-                                                 " because the build agent " + buildAgentUrl + " is not available" );
+                throw new ContinuumReleaseException( "Failed to perform release of " + releaseId + 
+                                                     " because the build agent " + buildAgentUrl + " is not available" );
+            }
         }
         catch ( MalformedURLException e )
         {

Modified: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/pom.xml?rev=1036488&r1=1036487&r2=1036488&view=diff
==============================================================================
--- continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/pom.xml (original)
+++ continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/pom.xml Thu Nov 18 15:22:13 2010
@@ -122,6 +122,31 @@ under the License.
       <version>2.4</version>
       <scope>provided</scope>
     </dependency>
+    <dependency>
+      <groupId>org.jmock</groupId>
+      <artifactId>jmock</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.jmock</groupId>
+      <artifactId>jmock-junit3</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>cglib</groupId>
+      <artifactId>cglib-nodep</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.objenesis</groupId>
+      <artifactId>objenesis</artifactId>  
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>

Modified: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java?rev=1036488&r1=1036487&r2=1036488&view=diff
==============================================================================
--- continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java (original)
+++ continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java Thu Nov 18 15:22:13 2010
@@ -73,7 +73,6 @@ import org.apache.maven.continuum.xmlrpc
 import org.apache.maven.continuum.xmlrpc.system.Profile;
 import org.apache.maven.continuum.xmlrpc.system.SystemConfiguration;
 import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
-import org.apache.maven.shared.release.ReleaseResult;
 import org.codehaus.plexus.redback.authorization.AuthorizationException;
 import org.codehaus.plexus.redback.role.RoleManager;
 import org.codehaus.plexus.redback.role.RoleManagerException;
@@ -3009,7 +3008,7 @@ public class ContinuumServiceImpl
 
             // set scm tag and scm tag base if no values yet
             // scm tag
-            if ( params.get( "scm-tag") == null )
+            if ( StringUtils.isBlank( (String) params.get( "scm-tag" ) ) )
             {
                 String scmTag;
                 if ( project.getScmTag() != null )
@@ -3037,7 +3036,7 @@ public class ContinuumServiceImpl
             }
 
             // scm tagbase
-            if ( params.get( "scm-tagbase") == null )
+            if ( StringUtils.isBlank( (String) params.get( "scm-tagbase") ) )
             {
                 if ( project.getScmUrl().startsWith( "scm:svn" ) )
                 {
@@ -3090,13 +3089,13 @@ public class ContinuumServiceImpl
         value = context.get( "release-phases" );
         if ( value != null )
         {
-            listenerSummary.setPhases( (List<String>) value );
+            listenerSummary.setPhases( getList( value ) );
         }
 
         value = context.get( "completed-release-phases" );
         if ( value != null )
         {
-            listenerSummary.setPhases( (List<String>) value );
+            listenerSummary.setCompletedPhases( getList( value ) );
         }
 
         return listenerSummary;
@@ -3107,4 +3106,28 @@ public class ContinuumServiceImpl
     {
         return (ReleaseListenerSummary) mapper.map( listener, ReleaseListenerSummary.class );
     }
+
+    private List getList( Object obj )
+    {
+        List<Object> list = new ArrayList<Object>();
+
+        if ( obj instanceof Object[] )
+        {
+            Object[] objA = (Object[]) obj;
+
+            list.addAll( Arrays.asList( objA ) );
+        }
+        else
+        {
+            list = (List<Object>) obj;
+        }
+
+        return list;
+    }
+
+    // testing
+    public void setContinuum( Continuum continuum )
+    {
+        this.continuum = continuum;
+    }
 }

Added: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplStub.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplStub.java?rev=1036488&view=auto
==============================================================================
--- continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplStub.java (added)
+++ continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplStub.java Thu Nov 18 15:22:13 2010
@@ -0,0 +1,14 @@
+package org.apache.continuum.xmlrpc.server;
+
+import org.apache.maven.continuum.ContinuumException;
+import org.apache.maven.continuum.xmlrpc.server.ContinuumServiceImpl;
+
+public class ContinuumServiceImplStub
+    extends ContinuumServiceImpl
+{
+    protected void checkBuildProjectInGroupAuthorization( String resource )
+        throws ContinuumException
+    {
+        // do nothing
+    }
+}

Propchange: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplStub.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplStub.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplTest.java?rev=1036488&view=auto
==============================================================================
--- continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplTest.java (added)
+++ continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplTest.java Thu Nov 18 15:22:13 2010
@@ -0,0 +1,149 @@
+package org.apache.continuum.xmlrpc.server;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.continuum.release.distributed.manager.DistributedReleaseManager;
+import org.apache.maven.continuum.Continuum;
+import org.apache.maven.continuum.configuration.ConfigurationService;
+import org.apache.maven.continuum.model.project.Project;
+import org.apache.maven.continuum.model.project.ProjectGroup;
+import org.apache.maven.continuum.release.ContinuumReleaseManager;
+import org.apache.maven.continuum.xmlrpc.project.ReleaseListenerSummary;
+import org.apache.maven.continuum.xmlrpc.server.ContinuumServiceImpl;
+import org.codehaus.plexus.spring.PlexusInSpringTestCase;
+import org.jmock.Expectations;
+import org.jmock.Mockery;
+import org.jmock.integration.junit3.JUnit3Mockery;
+import org.jmock.lib.legacy.ClassImposteriser;
+
+import com.sun.tools.javac.code.Attribute.Array;
+
+public class ContinuumServiceImplTest
+    extends PlexusInSpringTestCase
+{
+    private ContinuumServiceImpl continuumService;
+
+    private Mockery context;
+
+    private Continuum continuum;
+
+    private DistributedReleaseManager distributedReleaseManager;
+
+    private ContinuumReleaseManager releaseManager;
+
+    private ConfigurationService configurationService;
+
+    private Project project;
+
+    private Map<String, Object> params;
+
+    @Override
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        context = new JUnit3Mockery();
+        context.setImposteriser( ClassImposteriser.INSTANCE );
+
+        continuumService = new ContinuumServiceImplStub();
+        continuum = context.mock( Continuum.class );
+        continuumService.setContinuum( continuum );
+
+        distributedReleaseManager = context.mock( DistributedReleaseManager.class );
+        releaseManager = context.mock( ContinuumReleaseManager.class );
+        configurationService = context.mock( ConfigurationService.class );
+
+        ProjectGroup projectGroup = new ProjectGroup();
+        projectGroup.setName( "test-group" );
+
+        project = new Project();
+        project.setId( 1 );
+        project.setProjectGroup( projectGroup );
+        project.setVersion( "1.0-SNAPSHOT" );
+        project.setArtifactId( "continuum-test" );
+        project.setScmUrl( "scm:svn:http://svn.test.org/repository/project" );
+    }
+
+    public void testGetReleasePluginParameters()
+        throws Exception
+    {
+        params = new HashMap<String, Object>();
+        params.put( "scm-tag", "" );
+        params.put( "scm-tagbase", "" );    
+
+        context.checking( new Expectations()
+        {
+            {
+                one( continuum ).getProject( 1 );
+                will( returnValue( project ) );
+
+                one( continuum ).getConfiguration();
+                will( returnValue( configurationService ) );
+
+                one( configurationService ).isDistributedBuildEnabled();
+                will( returnValue( true ) );
+
+                one( continuum ).getDistributedReleaseManager();
+                will( returnValue( distributedReleaseManager ) );
+
+                one( distributedReleaseManager ).getReleasePluginParameters( 1, "pom.xml" );
+                will( returnValue( params ) );
+
+                one( continuum ).getReleaseManager();
+                will( returnValue( releaseManager ) );
+
+                one( releaseManager ).sanitizeTagName( "scm:svn:http://svn.test.org/repository/project",
+                                                       "continuum-test-1.0" );
+            }
+        } );
+
+        Map<String, Object> releaseParams = continuumService.getReleasePluginParameters( 1 );
+        assertEquals( "continuum-test-1.0", releaseParams.get( "scm-tag" ) );
+        assertEquals( "http://svn.test.org/repository/project/tags", releaseParams.get( "scm-tagbase" ) );
+
+        context.assertIsSatisfied();
+    }
+
+    public void testGetListenerWithDistributedBuilds()
+        throws Exception
+    {
+        final Map map = getListenerMap();
+
+        context.checking( new Expectations()
+        {
+            {
+                one( continuum ).getProject( 1 );
+                will( returnValue( project ) );
+
+                one( continuum ).getConfiguration();
+                will( returnValue( configurationService ) );
+
+                one( configurationService ).isDistributedBuildEnabled();
+                will( returnValue( true ) );
+
+                one( continuum ).getDistributedReleaseManager();
+                will( returnValue( distributedReleaseManager ) );
+
+                one( distributedReleaseManager ).getListener( "releaseId-1" );
+                will( returnValue( map ) );
+            }
+        } );
+
+        ReleaseListenerSummary summary = continuumService.getListener( 1, "releaseId-1" );
+        assertNotNull( summary );
+        assertEquals( "incomplete-phase", summary.getPhases().get( 0 ) );
+        assertEquals( "completed-phase", summary.getCompletedPhases().get( 0 ) );
+    }
+
+    private Map<String, Object> getListenerMap()
+    {
+        Map<String, Object> map = new HashMap<String, Object>();
+ 
+        map.put( "release-phases", Arrays.asList( "incomplete-phase" ) );
+        map.put( "completed-release-phases", Arrays.asList( "completed-phase" ) );
+        return map;
+    }
+}

Propchange: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/test/java/org/apache/continuum/xmlrpc/server/ContinuumServiceImplTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision