You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2006/04/24 02:45:03 UTC

svn commit: r396360 - in /maven/plugins/trunk/maven-release-plugin/src: main/java/org/apache/maven/plugins/release/ main/java/org/apache/maven/plugins/release/config/ test/java/org/apache/maven/plugins/release/config/ test/resources/

Author: brett
Date: Sun Apr 23 17:45:02 2006
New Revision: 396360

URL: http://svn.apache.org/viewcvs?rev=396360&view=rev
Log:
[MRELEASE-98] implement release property writing, complete reading tests

Added:
    maven/plugins/trunk/maven-release-plugin/src/test/resources/rewrite-release.properties   (with props)
Modified:
    maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/DefaultReleaseManager.java
    maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStore.java
    maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfiguration.java
    maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfigurationStore.java
    maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStoreTest.java
    maven/plugins/trunk/maven-release-plugin/src/test/resources/release.properties

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/DefaultReleaseManager.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/DefaultReleaseManager.java?rev=396360&r1=396359&r2=396360&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/DefaultReleaseManager.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/DefaultReleaseManager.java Sun Apr 23 17:45:02 2006
@@ -106,7 +106,15 @@
             }
 
             config.setCompletedPhase( name );
-            configStore.write( config );
+            try
+            {
+                configStore.write( config );
+            }
+            catch ( ReleaseConfigurationStoreException e )
+            {
+                // TODO: rollback?
+                throw new ReleaseExecutionException( "Error writing release properties after completing phase", e );
+            }
         }
     }
 

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStore.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStore.java?rev=396360&r1=396359&r2=396360&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStore.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStore.java Sun Apr 23 17:45:02 2006
@@ -22,8 +22,10 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.util.Properties;
 
 /**
@@ -74,8 +76,12 @@
 
         ReleaseConfiguration releaseConfiguration = new ReleaseConfiguration();
         releaseConfiguration.setCompletedPhase( properties.getProperty( "completedPhase" ) );
-
-        // TODO: populate from properties
+        releaseConfiguration.setUrl( properties.getProperty( "scm.url" ) );
+        releaseConfiguration.setUsername( properties.getProperty( "scm.username" ) );
+        releaseConfiguration.setPassword( properties.getProperty( "scm.password" ) );
+        releaseConfiguration.setPrivateKey( properties.getProperty( "scm.privateKey" ) );
+        releaseConfiguration.setPassphrase( properties.getProperty( "scm.passphrase" ) );
+        releaseConfiguration.setTagBase( properties.getProperty( "scm.tagBase" ) );
 
         if ( mergeConfiguration != null )
         {
@@ -86,8 +92,35 @@
     }
 
     public void write( ReleaseConfiguration config )
+        throws ReleaseConfigurationStoreException
     {
-        // TODO: implement
+        Properties properties = new Properties();
+        properties.setProperty( "completedPhase", config.getCompletedPhase() );
+        properties.setProperty( "scm.url", config.getUrl() );
+        properties.setProperty( "scm.username", config.getUsername() );
+        properties.setProperty( "scm.password", config.getPassword() );
+        properties.setProperty( "scm.privateKey", config.getPrivateKey() );
+        properties.setProperty( "scm.passphrase", config.getPassphrase() );
+        properties.setProperty( "scm.tagBase", config.getTagBase() );
+
+        OutputStream outStream = null;
+        //noinspection OverlyBroadCatchBlock
+        try
+        {
+            outStream = new FileOutputStream( propertiesFile );
+
+            properties.store( outStream, "release configuration" );
+        }
+        catch ( IOException e )
+        {
+            throw new ReleaseConfigurationStoreException(
+                "Error writing properties file '" + propertiesFile.getName() + "': " + e.getMessage(), e );
+        }
+        finally
+        {
+            IOUtil.close( outStream );
+        }
+
     }
 
     public ReleaseConfiguration read()

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfiguration.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfiguration.java?rev=396360&r1=396359&r2=396360&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfiguration.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfiguration.java Sun Apr 23 17:45:02 2006
@@ -215,10 +215,10 @@
         result = 29 * result + ( tagBase != null ? tagBase.hashCode() : 0 );
         result = 29 * result + ( username != null ? username.hashCode() : 0 );
         result = 29 * result + ( password != null ? password.hashCode() : 0 );
-        result = 29 * result + url.hashCode();
+        result = 29 * result + ( url != null ? url.hashCode() : 0 );
         result = 29 * result + ( privateKey != null ? privateKey.hashCode() : 0 );
         result = 29 * result + ( passphrase != null ? passphrase.hashCode() : 0 );
-        result = 29 * result + workingDirectory.hashCode();
+        result = 29 * result + ( workingDirectory != null ? workingDirectory.hashCode() : 0 );
         return result;
     }
 
@@ -259,7 +259,7 @@
         {
             return false;
         }
-        if ( !url.equals( that.url ) )
+        if ( url != null ? !url.equals( that.url ) : that.url != null )
         {
             return false;
         }
@@ -268,7 +268,8 @@
             return false;
         }
         //noinspection RedundantIfStatement
-        if ( !workingDirectory.equals( that.workingDirectory ) )
+        if ( workingDirectory != null ? !workingDirectory.equals( that.workingDirectory )
+            : that.workingDirectory != null )
         {
             return false;
         }

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfigurationStore.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfigurationStore.java?rev=396360&r1=396359&r2=396360&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfigurationStore.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfigurationStore.java Sun Apr 23 17:45:02 2006
@@ -51,5 +51,6 @@
      *
      * @param config the configuration
      */
-    void write( ReleaseConfiguration config );
+    void write( ReleaseConfiguration config )
+        throws ReleaseConfigurationStoreException;
 }

Modified: maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStoreTest.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStoreTest.java?rev=396360&r1=396359&r2=396360&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStoreTest.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStoreTest.java Sun Apr 23 17:45:02 2006
@@ -30,6 +30,13 @@
 {
     private PropertiesReleaseConfigurationStore store;
 
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+        store = (PropertiesReleaseConfigurationStore) lookup( ReleaseConfigurationStore.ROLE, "properties" );
+    }
+
     public void testReadFromFile()
         throws ReleaseConfigurationStoreException
     {
@@ -38,8 +45,14 @@
 
         ReleaseConfiguration config = store.read();
         assertEquals( "Expected completedPhase of 'step1'", "step1", config.getCompletedPhase() );
-
-        // TODO: assert other contents
+        assertEquals( "Expected url of 'scm-url'", "scm-url", config.getUrl() );
+        assertEquals( "Expected username of 'username'", "username", config.getUsername() );
+        assertEquals( "Expected password of 'password'", "password", config.getPassword() );
+        assertEquals( "Expected private key of 'private-key'", "private-key", config.getPrivateKey() );
+        assertEquals( "Expected passphrase of 'passphrase'", "passphrase", config.getPassphrase() );
+        assertEquals( "Expected tag base of 'tagBase'", "tagBase", config.getTagBase() );
+        assertNull( "Expected no workingDirectory", config.getWorkingDirectory() );
+        assertNull( "Expected no settings", config.getSettings() );
     }
 
     public void testReadFromEmptyFile()
@@ -88,18 +101,65 @@
         assertEquals( "Check configurations merged", mergeConfiguration, config );
     }
 
-    private static void assertDefaultReleaseConfiguration( ReleaseConfiguration config )
+    public void testWriteToNewFile()
+        throws ReleaseConfigurationStoreException
     {
-        assertNull( "Expected no completedPhase", config.getCompletedPhase() );
+        File file = getTestFile( "target/test-classes/new-release.properties" );
+        file.delete();
+        assertFalse( "Check file doesn't exist", file.exists() );
+        store.setPropertiesFile( file );
 
-        // TODO: assert other default contents
+        ReleaseConfiguration config = new ReleaseConfiguration();
+        config.setCompletedPhase( "completed-phase-write" );
+        config.setUrl( "url-write" );
+        config.setUsername( "username-write" );
+        config.setPassword( "password-write" );
+        config.setPrivateKey( "private-key-write" );
+        config.setPassphrase( "passphrase-write" );
+        config.setTagBase( "tag-base" );
+
+        store.write( config );
+
+        ReleaseConfiguration rereadConfiguration = store.read();
+
+        assertEquals( "compare configuration", config, rereadConfiguration );
     }
 
-    protected void setUp()
-        throws Exception
+    public void testOverwriteFile()
+        throws ReleaseConfigurationStoreException
     {
-        super.setUp();
-        store = (PropertiesReleaseConfigurationStore) lookup( ReleaseConfigurationStore.ROLE, "properties" );
+        File file = getTestFile( "target/test-classes/rewrite-release.properties" );
+        assertTrue( "Check file already exists", file.exists() );
+        store.setPropertiesFile( file );
+
+        ReleaseConfiguration config = new ReleaseConfiguration();
+        config.setCompletedPhase( "completed-phase-write" );
+        config.setUrl( "url-write" );
+        config.setUsername( "username-write" );
+        config.setPassword( "password-write" );
+        config.setPrivateKey( "private-key-write" );
+        config.setPassphrase( "passphrase-write" );
+        config.setTagBase( "tag-base" );
+
+        store.write( config );
+
+        ReleaseConfiguration rereadConfiguration = store.read();
+
+        assertEquals( "compare configuration", config, rereadConfiguration );
+    }
+
+    private static void assertDefaultReleaseConfiguration( ReleaseConfiguration config )
+    {
+        assertNull( "Expected no completedPhase", config.getCompletedPhase() );
+        assertNull( "Expected no url", config.getUrl() );
+        assertNull( "Expected no username", config.getUsername() );
+        assertNull( "Expected no password", config.getPassword() );
+        assertNull( "Expected no privateKey", config.getPrivateKey() );
+        assertNull( "Expected no passphrase", config.getPassphrase() );
+        assertNull( "Expected no tagBase", config.getTagBase() );
+
+        assertNull( "Expected no workingDirectory", config.getWorkingDirectory() );
+        assertNull( "Expected no settings", config.getSettings() );
     }
 
     public ReleaseConfiguration createMergeConfiguration()

Modified: maven/plugins/trunk/maven-release-plugin/src/test/resources/release.properties
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/resources/release.properties?rev=396360&r1=396359&r2=396360&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/test/resources/release.properties (original)
+++ maven/plugins/trunk/maven-release-plugin/src/test/resources/release.properties Sun Apr 23 17:45:02 2006
@@ -15,3 +15,9 @@
 #
 
 completedPhase=step1
+scm.url=scm-url
+scm.username=username
+scm.password=password
+scm.privateKey=private-key
+scm.passphrase=passphrase
+scm.tagBase=tagBase

Added: maven/plugins/trunk/maven-release-plugin/src/test/resources/rewrite-release.properties
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/resources/rewrite-release.properties?rev=396360&view=auto
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/test/resources/rewrite-release.properties (added)
+++ maven/plugins/trunk/maven-release-plugin/src/test/resources/rewrite-release.properties Sun Apr 23 17:45:02 2006
@@ -0,0 +1,23 @@
+#
+# Copyright 2005-2006 The Apache Software Foundation.
+#
+# Licensed 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.
+#
+
+completedPhase=step1
+scm.url=scm-url
+scm.username=username
+scm.password=password
+scm.privateKey=private-key
+scm.passphrase=passphrase
+scm.tagBase=tagBase

Propchange: maven/plugins/trunk/maven-release-plugin/src/test/resources/rewrite-release.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-release-plugin/src/test/resources/rewrite-release.properties
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision