You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2012/03/11 22:02:40 UTC

svn commit: r1299447 - in /maven/release/trunk/maven-release-manager: ./ src/main/java/org/apache/maven/shared/release/config/ src/main/java/org/apache/maven/shared/release/phase/ src/main/java/org/apache/maven/shared/release/scm/ src/main/mdo/ src/tes...

Author: rfscholte
Date: Sun Mar 11 21:02:40 2012
New Revision: 1299447

URL: http://svn.apache.org/viewvc?rev=1299447&view=rev
Log:
Prepare release-manager for MRELEASE-420: Prepare and Perform should use profile server settings

Added:
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/IdentifiedScm.java
Modified:
    maven/release/trunk/maven-release-manager/pom.xml
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckPomPhase.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java
    maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java
    maven/release/trunk/maven-release-manager/src/test/resources/release.properties
    maven/release/trunk/maven-release-manager/src/test/resources/rewrite-release.properties

Modified: maven/release/trunk/maven-release-manager/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/pom.xml?rev=1299447&r1=1299446&r2=1299447&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/pom.xml (original)
+++ maven/release/trunk/maven-release-manager/pom.xml Sun Mar 11 21:02:40 2012
@@ -234,7 +234,7 @@
           </execution>
         </executions>
         <configuration>
-          <version>2.2.0</version>
+          <version>2.3.0</version>
           <packageWithVersion>false</packageWithVersion>
           <useJava5>true</useJava5>
           <models>

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java?rev=1299447&r1=1299446&r2=1299447&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java Sun Mar 11 21:02:40 2012
@@ -20,6 +20,7 @@ package org.apache.maven.shared.release.
  */
 
 import org.apache.maven.model.Scm;
+import org.apache.maven.shared.release.scm.IdentifiedScm;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.IOUtil;
 
@@ -115,6 +116,10 @@ public class PropertiesReleaseDescriptor
         Properties properties = new Properties();
         properties.setProperty( "completedPhase", config.getCompletedPhase() );
         properties.setProperty( "scm.url", config.getScmSourceUrl() );
+        if ( config.getScmId() != null )
+        {
+            properties.setProperty( "scm.id", config.getScmId() );
+        }
         if ( config.getScmUsername() != null )
         {
             properties.setProperty( "scm.username", config.getScmUsername() );
@@ -213,6 +218,14 @@ public class PropertiesReleaseDescriptor
                 {
                     properties.setProperty( prefix + ".tag", scm.getTag() );
                 }
+                if ( scm instanceof IdentifiedScm )
+                {
+                    IdentifiedScm identifiedScm = (IdentifiedScm) scm;
+                    if( identifiedScm.getId() != null )
+                    {
+                        properties.setProperty( prefix + ".id", identifiedScm.getId() );
+                    }
+                }
             }
             else
             {

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java?rev=1299447&r1=1299446&r2=1299447&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java Sun Mar 11 21:02:40 2012
@@ -26,7 +26,7 @@ import java.util.Map.Entry;
 import java.util.Properties;
 import java.util.Set;
 
-import org.apache.maven.model.Scm;
+import org.apache.maven.shared.release.scm.IdentifiedScm;
 
 /**
  * Class providing utility methods used during the release process
@@ -52,6 +52,7 @@ public class ReleaseUtils
     public static ReleaseDescriptor merge( ReleaseDescriptor mergeInto, ReleaseDescriptor toBeMerged )
     {
         // Overridden if configured from the caller
+        mergeInto.setScmId( mergeOverride( mergeInto.getScmId(), toBeMerged.getScmId() ) );
         mergeInto.setScmSourceUrl( mergeOverride( mergeInto.getScmSourceUrl(), toBeMerged.getScmSourceUrl() ) );
         mergeInto.setScmCommentPrefix(
             mergeOverride( mergeInto.getScmCommentPrefix(), toBeMerged.getScmCommentPrefix() ) );
@@ -135,6 +136,7 @@ public class ReleaseUtils
     {
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setCompletedPhase( properties.getProperty( "completedPhase" ) );
+        releaseDescriptor.setScmId( properties.getProperty( "scm.id" ) );
         releaseDescriptor.setScmSourceUrl( properties.getProperty( "scm.url" ) );
         releaseDescriptor.setScmUsername( properties.getProperty( "scm.username" ) );
         releaseDescriptor.setScmPassword( properties.getProperty( "scm.password" ) );
@@ -192,12 +194,13 @@ public class ReleaseUtils
                         }
                         else
                         {
-                            Scm scm = new Scm();
+                            IdentifiedScm scm = new IdentifiedScm();
                             scm.setConnection( properties.getProperty( "project.scm." + key + ".connection" ) );
                             scm.setDeveloperConnection(
                                 properties.getProperty( "project.scm." + key + ".developerConnection" ) );
                             scm.setUrl( properties.getProperty( "project.scm." + key + ".url" ) );
                             scm.setTag( properties.getProperty( "project.scm." + key + ".tag" ) );
+                            scm.setId( properties.getProperty( "project.scm." + key + ".id" ) );
 
                             releaseDescriptor.mapOriginalScmInfo( key, scm );
                         }

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckPomPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckPomPhase.java?rev=1299447&r1=1299446&r2=1299447&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckPomPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckPomPhase.java Sun Mar 11 21:02:40 2012
@@ -79,6 +79,9 @@ public class CheckPomPhase
                     "Missing required setting: scm connection or developerConnection must be specified." );
             }
 
+            // As long as Scm.getId() does not exist, read it as a property
+            releaseDescriptor.setScmId( rootProject.getProperties().getProperty( "project.scm.id" ) );
+
             try
             {
                 scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, releaseEnvironment.getSettings() );

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java?rev=1299447&r1=1299446&r2=1299447&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java Sun Mar 11 21:02:40 2012
@@ -82,45 +82,52 @@ public class DefaultScmRepositoryConfigu
         //MRELEASE-76
         scmRepo.setPersistCheckout( false );
 
-        if ( repository.getProviderRepository() instanceof ScmProviderRepositoryWithHost )
+        if ( settings != null )
         {
-            ScmProviderRepositoryWithHost repositoryWithHost =
-                (ScmProviderRepositoryWithHost) repository.getProviderRepository();
-            String host = repositoryWithHost.getHost();
-
-            int port = repositoryWithHost.getPort();
-
-            if ( port > 0 )
+            Server server = null;
+            
+            if( releaseDescriptor.getScmId() != null )
             {
-                host += ":" + port;
+                server = settings.getServer( releaseDescriptor.getScmId() );
             }
 
-            if ( settings != null )
+            if ( server == null && repository.getProviderRepository() instanceof ScmProviderRepositoryWithHost )
             {
+                ScmProviderRepositoryWithHost repositoryWithHost =
+                    (ScmProviderRepositoryWithHost) repository.getProviderRepository();
+                String host = repositoryWithHost.getHost();
+    
+                int port = repositoryWithHost.getPort();
+    
+                if ( port > 0 )
+                {
+                    host += ":" + port;
+                }
+                
                 // TODO: this is a bit dodgy - id is not host, but since we don't have a <host> field we make an assumption
-                Server server = settings.getServer( host );
+                server = settings.getServer( host );
+            }
+
+            if ( server != null )
+            {
+                if ( username == null )
+                {
+                    username = server.getUsername();
+                }
+
+                if ( password == null )
+                {
+                    password = decrypt( server.getPassword(), server.getId() );
+                }
+
+                if ( privateKey == null )
+                {
+                    privateKey = server.getPrivateKey();
+                }
 
-                if ( server != null )
+                if ( passphrase == null )
                 {
-                    if ( username == null )
-                    {
-                        username = server.getUsername();
-                    }
-
-                    if ( password == null )
-                    {
-                        password = decrypt( server.getPassword(), host );
-                    }
-
-                    if ( privateKey == null )
-                    {
-                        privateKey = server.getPrivateKey();
-                    }
-
-                    if ( passphrase == null )
-                    {
-                        passphrase = decrypt( server.getPassphrase(), host );
-                    }
+                    passphrase = decrypt( server.getPassphrase(), server.getId() );
                 }
             }
         }

Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/IdentifiedScm.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/IdentifiedScm.java?rev=1299447&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/IdentifiedScm.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/IdentifiedScm.java Sun Mar 11 21:02:40 2012
@@ -0,0 +1,52 @@
+package org.apache.maven.shared.release.scm;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.model.Scm;
+
+/**
+ * Unlike repositories the scm of the Project Model doesn't have an id.
+ * This makes it quite hard to bind it to the credentials of a server as specified in the settings.xml 
+ * 
+ * @author Robert Scholte
+ * 
+ * @since 2.3
+ */
+public class IdentifiedScm extends Scm
+{
+    
+    private String id;
+
+    /**
+     * @return the id
+     */
+    public String getId()
+    {
+        return id;
+    }
+
+    /**
+     * @param id the id to set
+     */
+    public void setId( String id )
+    {
+        this.id = id;
+    }
+}
\ No newline at end of file

Modified: maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo?rev=1299447&r1=1299446&r2=1299447&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo (original)
+++ maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo Sun Mar 11 21:02:40 2012
@@ -105,6 +105,14 @@
           </description>
         </field>
         <field>
+          <name>scmId</name>
+          <version>2.3.0+</version>
+          <type>String</type>
+          <description>
+            The id can be used to get the credentials by the server-id from the settings.xml
+          </description>
+        </field>
+        <field>
           <name>scmUsername</name>
           <version>1.0.0+</version>
           <type>String</type>
@@ -792,6 +800,10 @@
         {
             return false;
         }
+        if ( !safeEquals( scmId, that.scmId ) )
+        {
+            return false;
+        }
         if ( !safeEquals( scmSourceUrl, that.scmSourceUrl ) )
         {
             return false;
@@ -849,7 +861,7 @@
             {
                 return true;
             }
-
+            
             if ( thisScm.getConnection() != null ? !thisScm.getConnection().equals( thatScm.getConnection() )
                 : thatScm.getConnection() != null )
             {
@@ -868,6 +880,16 @@
             {
                 return false;
             }
+            
+            if( thisScm instanceof org.apache.maven.shared.release.scm.IdentifiedScm && thatScm instanceof org.apache.maven.shared.release.scm.IdentifiedScm )
+            {
+            	org.apache.maven.shared.release.scm.IdentifiedScm thisIdentifiedScm = (org.apache.maven.shared.release.scm.IdentifiedScm) thisScm;
+            	org.apache.maven.shared.release.scm.IdentifiedScm thatIdentifiedScm = (org.apache.maven.shared.release.scm.IdentifiedScm) thatScm;
+            	if ( thisIdentifiedScm.getId() != null ? !thisIdentifiedScm.getId().equals( thatIdentifiedScm.getId() ) : thatIdentifiedScm.getId() != null )
+            	{
+                	return false;
+            	}
+            }
         }
 
         return true;
@@ -886,6 +908,7 @@
         result = 29 * result + ( scmBranchBase != null ? scmBranchBase.hashCode() : 0 );
         result = 29 * result + ( scmUsername != null ? scmUsername.hashCode() : 0 );
         result = 29 * result + ( scmPassword != null ? scmPassword.hashCode() : 0 );
+        result = 29 * result + ( scmId != null ? scmId.hashCode() : 0 );
         result = 29 * result + ( scmSourceUrl != null ? scmSourceUrl.hashCode() : 0 );
         result = 29 * result + ( scmPrivateKey != null ? scmPrivateKey.hashCode() : 0 );
         result = 29 * result + ( scmPrivateKeyPassPhrase != null ? scmPrivateKeyPassPhrase.hashCode() : 0 );

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java?rev=1299447&r1=1299446&r2=1299447&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java Sun Mar 11 21:02:40 2012
@@ -19,8 +19,8 @@ package org.apache.maven.shared.release.
  * under the License.
  */
 
-import org.apache.maven.model.Scm;
 import org.apache.maven.shared.release.phase.AbstractReleaseTestCase;
+import org.apache.maven.shared.release.scm.IdentifiedScm;
 import org.codehaus.plexus.PlexusTestCase;
 
 import java.io.File;
@@ -177,7 +177,8 @@ public class PropertiesReleaseDescriptor
         config.mapReleaseVersion( "group.id:artifact.id", "1.1" );
         config.mapDevelopmentVersion( "group.id:artifact.id", "1.2-SNAPSHOT" );
 
-        Scm scm = new Scm();
+        IdentifiedScm scm = new IdentifiedScm();
+        scm.setId( "id" );
         scm.setConnection( "connection" );
         scm.setDeveloperConnection( "devConnection" );
         scm.setTag( "tag" );
@@ -269,6 +270,7 @@ public class PropertiesReleaseDescriptor
         ReleaseDescriptor config = new ReleaseDescriptor();
         config.setCompletedPhase( "completed-phase-write" );
         config.setScmSourceUrl( "url-write" );
+        config.setScmId( "id-write" );
         config.setScmUsername( "username-write" );
         config.setScmPassword( "password-write" );
         config.setScmPrivateKey( "private-key-write" );
@@ -284,14 +286,15 @@ public class PropertiesReleaseDescriptor
         config.mapReleaseVersion( "groupId:artifactId", "1.0" );
         config.mapDevelopmentVersion( "groupId:artifactId", "1.1-SNAPSHOT" );
 
-        Scm scm = new Scm();
+        IdentifiedScm scm = new IdentifiedScm();
+        scm.setId( "id-write" );
         scm.setConnection( "connection-write" );
         scm.setDeveloperConnection( "developerConnection-write" );
         scm.setUrl( "url-write" );
         scm.setTag( "tag-write" );
         config.mapOriginalScmInfo( "groupId:artifactId", scm );
 
-        scm = new Scm();
+        scm = new IdentifiedScm();
         scm.setConnection( "connection-write" );
         // omit optional elements
         config.mapOriginalScmInfo( "groupId:subproject1", scm );
@@ -302,6 +305,7 @@ public class PropertiesReleaseDescriptor
     private static void assertDefaultReleaseConfiguration( ReleaseDescriptor config )
     {
         assertNull( "Expected no completedPhase", config.getCompletedPhase() );
+        assertNull( "Expected no id", config.getScmId() );
         assertNull( "Expected no url", config.getScmSourceUrl() );
         assertNull( "Expected no username", config.getScmUsername() );
         assertNull( "Expected no password", config.getScmPassword() );
@@ -344,6 +348,7 @@ public class PropertiesReleaseDescriptor
     {
         ReleaseDescriptor expected = new ReleaseDescriptor();
         expected.setCompletedPhase( "step1" );
+        expected.setScmId( "scm-id" );
         expected.setScmSourceUrl( "scm-url" );
         expected.setScmUsername( "username" );
         expected.setScmPassword( "password" );
@@ -366,13 +371,15 @@ public class PropertiesReleaseDescriptor
         expected.mapReleaseVersion( "groupId:artifactId2", "3.0" );
         expected.mapDevelopmentVersion( "groupId:artifactId1", "2.1-SNAPSHOT" );
         expected.mapDevelopmentVersion( "groupId:artifactId2", "3.0.1-SNAPSHOT" );
-        Scm scm = new Scm();
+        IdentifiedScm scm = new IdentifiedScm();
+        scm.setId( "id" );
         scm.setConnection( "connection" );
         scm.setDeveloperConnection( "developerConnection" );
         scm.setUrl( "url" );
         scm.setTag( "tag" );
         expected.mapOriginalScmInfo( "groupId:artifactId1", scm );
-        scm = new Scm();
+        scm = new IdentifiedScm();
+        scm.setId( null );
         scm.setConnection( "connection2" );
         scm.setUrl( "url2" );
         scm.setTag( null );

Modified: maven/release/trunk/maven-release-manager/src/test/resources/release.properties
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/release.properties?rev=1299447&r1=1299446&r2=1299447&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/release.properties (original)
+++ maven/release/trunk/maven-release-manager/src/test/resources/release.properties Sun Mar 11 21:02:40 2012
@@ -18,6 +18,7 @@
 #
 
 completedPhase=step1
+scm.id=scm-id
 scm.url=scm-url
 scm.username=username
 scm.password=password
@@ -39,6 +40,7 @@ project.rel.groupId\:artifactId2=3.0
 project.dev.groupId\:artifactId1=2.1-SNAPSHOT
 project.dev.groupId\:artifactId2=3.0.1-SNAPSHOT
 
+project.scm.groupId\:artifactId1.id=id
 project.scm.groupId\:artifactId1.connection=connection
 project.scm.groupId\:artifactId1.developerConnection=developerConnection
 project.scm.groupId\:artifactId1.url=url

Modified: maven/release/trunk/maven-release-manager/src/test/resources/rewrite-release.properties
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/rewrite-release.properties?rev=1299447&r1=1299446&r2=1299447&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/rewrite-release.properties (original)
+++ maven/release/trunk/maven-release-manager/src/test/resources/rewrite-release.properties Sun Mar 11 21:02:40 2012
@@ -18,6 +18,7 @@
 #
 
 completedPhase=step1
+scm.id=scm-id
 scm.url=scm-url
 scm.username=username
 scm.password=password