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 2014/03/17 22:48:08 UTC

svn commit: r1578613 - in /maven/release/trunk: maven-release-manager/ maven-release-manager/src/main/ maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ maven-release-manager/src/main/java/org/apache/maven/shared/release/polici...

Author: rfscholte
Date: Mon Mar 17 21:48:07 2014
New Revision: 1578613

URL: http://svn.apache.org/r1578613
Log:
MRELEASE-431: Add DefaultVersionPolicy to the release manager

Added:
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java
    maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/versions/
    maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java
Removed:
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java
Modified:
    maven/release/trunk/maven-release-manager/pom.xml
    maven/release/trunk/maven-release-manager/src/main/components-fragment.xml
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
    maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.xml
    maven/release/trunk/maven-release-policy/pom.xml
    maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java

Modified: maven/release/trunk/maven-release-manager/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/pom.xml?rev=1578613&r1=1578612&r2=1578613&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/pom.xml (original)
+++ maven/release/trunk/maven-release-manager/pom.xml Mon Mar 17 21:48:07 2014
@@ -31,18 +31,13 @@
 
   <name>Maven Release Manager</name>
 
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>org.apache.maven</groupId>
-        <artifactId>maven-repository-metadata</artifactId>
-        <version>${mavenVersion}</version>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-
   <dependencies>
     <dependency>
+      <groupId>org.apache.maven.release</groupId>
+      <artifactId>maven-release-policy</artifactId>
+      <version>3.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-container-default</artifactId>
       <version>1.0-alpha-9</version>

Modified: maven/release/trunk/maven-release-manager/src/main/components-fragment.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/components-fragment.xml?rev=1578613&r1=1578612&r2=1578613&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/components-fragment.xml (original)
+++ maven/release/trunk/maven-release-manager/src/main/components-fragment.xml Mon Mar 17 21:48:07 2014
@@ -101,6 +101,10 @@
           <role>org.codehaus.plexus.components.interactivity.Prompter</role>
           <role-hint>default</role-hint>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+          <field-name>versionPolicies</field-name>
+        </requirement>
       </requirements>
     </component>
     <component>
@@ -115,6 +119,10 @@
           <role>org.codehaus.plexus.components.interactivity.Prompter</role>
           <role-hint>default</role-hint>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+          <field-name>versionPolicies</field-name>
+        </requirement>
       </requirements>
     </component>
     <component>
@@ -130,6 +138,10 @@
           <role>org.codehaus.plexus.components.interactivity.Prompter</role>
           <role-hint>default</role-hint>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+          <field-name>versionPolicies</field-name>
+        </requirement>
       </requirements>
     </component>
     <component>

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java?rev=1578613&r1=1578612&r2=1578613&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java Mon Mar 17 21:48:07 2014
@@ -21,6 +21,7 @@ package org.apache.maven.shared.release.
 
 import java.text.MessageFormat;
 import java.util.List;
+import java.util.Map;
 import java.util.ResourceBundle;
 
 import org.apache.maven.artifact.ArtifactUtils;
@@ -29,8 +30,10 @@ import org.apache.maven.shared.release.R
 import org.apache.maven.shared.release.ReleaseResult;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
 import org.apache.maven.shared.release.env.ReleaseEnvironment;
+import org.apache.maven.shared.release.policy.PolicyException;
+import org.apache.maven.shared.release.policy.version.VersionPolicy;
+import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
 import org.apache.maven.shared.release.util.ReleaseUtil;
-import org.apache.maven.shared.release.versions.DefaultVersionInfo;
 import org.apache.maven.shared.release.versions.VersionParseException;
 import org.codehaus.plexus.components.interactivity.Prompter;
 import org.codehaus.plexus.components.interactivity.PrompterException;
@@ -81,6 +84,12 @@ public class MapVersionsPhase
      * Component used to prompt for input.
      */
     private Prompter prompter;
+    
+    
+    /**
+     * Component used for custom or default version policy
+     */
+    private Map<String, VersionPolicy> versionPolicies;
 
     void setPrompter( Prompter prompter )
     {
@@ -239,46 +248,46 @@ public class MapVersionsPhase
             {
                 if ( suggestedVersion == null )
                 {
-                    DefaultVersionInfo versionInfo;
+                    String baseVersion = null;
+                    if ( convertToSnapshot )
+                    {
+                        baseVersion = getReleaseVersion( projectId, releaseDescriptor );
+                    }
+                    // unspecified and unmapped version, so use project version 
+                    if ( baseVersion == null )
+                    {
+                        baseVersion = project.getVersion();
+                    }
+                    
                     try
                     {
-                        String baseVersion = null;
-                        if ( convertToSnapshot )
-                        {
-                            baseVersion = getReleaseVersion( projectId, releaseDescriptor );
-                        }
-                        // unspecified and unmapped version, so use project version 
-                        if ( baseVersion == null )
+                        try
                         {
-                            baseVersion = project.getVersion();
+                            suggestedVersion = resolveSuggestedVersion( baseVersion );
                         }
-                        versionInfo = new DefaultVersionInfo( baseVersion );
-                    }
-                    catch ( VersionParseException e )
-                    {
-                        if ( releaseDescriptor.isInteractive() )
+                        catch ( VersionParseException e )
                         {
-                            try
+                            if ( releaseDescriptor.isInteractive() )
                             {
-                                versionInfo = new DefaultVersionInfo( "1.0" );
+                                suggestedVersion = resolveSuggestedVersion( "1.0" );
                             }
-                            catch ( VersionParseException e1 )
+                            else
                             {
-                                // if that happens we are in serious trouble!
-                                throw new ReleaseExecutionException( "Version 1.0 could not be parsed!", e1 );
+                                throw new ReleaseExecutionException(
+                                                                     "Error parsing version, cannot determine next version: "
+                                                                         + e.getMessage(), e );
                             }
                         }
-                        else
-                        {
-                            throw new ReleaseExecutionException(
-                                                                 "Error parsing version, cannot determine next version: "
-                                                                     + e.getMessage(), e );
-                        }
                     }
-                    suggestedVersion =
-                        convertToSnapshot ? versionInfo.getNextVersion().getSnapshotVersionString()
-                                        : versionInfo.getReleaseVersionString(); 
-                }
+                    catch ( PolicyException e )
+                    {
+                        throw new ReleaseExecutionException( e.getMessage(), e );
+                    }
+                    catch ( VersionParseException e )
+                    {
+                        throw new ReleaseExecutionException( e.getMessage(), e );
+                    }
+               }
                 
                 if ( releaseDescriptor.isInteractive() )
                 {
@@ -305,10 +314,20 @@ public class MapVersionsPhase
         return nextVersion;
     }
 
+    private String resolveSuggestedVersion( String baseVersion )
+        throws PolicyException, VersionParseException
+    {
+        // right now only default available
+        VersionPolicy policy = versionPolicies.get( "default" );
+        VersionPolicyRequest request = new VersionPolicyRequest().setVersion( baseVersion );
+
+        return convertToSnapshot ? policy.getDevelopmentVersion( request ).getVersion()
+                        : policy.getReleaseVersion( request ).getVersion();
+    }
+
     private String getDevelopmentVersion( String projectId, ReleaseDescriptor releaseDescriptor )
     {
-        String defaultVersion;
-        defaultVersion = releaseDescriptor.getDefaultDevelopmentVersion();
+        String defaultVersion = releaseDescriptor.getDefaultDevelopmentVersion();
         if ( StringUtils.isEmpty( defaultVersion ) )
         {
             defaultVersion = ( String ) releaseDescriptor.getDevelopmentVersions().get( projectId );

Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java?rev=1578613&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java Mon Mar 17 21:48:07 2014
@@ -0,0 +1,33 @@
+package org.apache.maven.shared.release.policies;
+
+import org.apache.maven.shared.release.policy.PolicyException;
+import org.apache.maven.shared.release.policy.version.VersionPolicy;
+import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
+import org.apache.maven.shared.release.policy.version.VersionPolicyResult;
+import org.apache.maven.shared.release.versions.DefaultVersionInfo;
+import org.apache.maven.shared.release.versions.VersionParseException;
+
+/**
+ * 
+ * @author Robert Scholte
+ * 
+ * @plexus.component role="org.apache.maven.shared.release.policy.version.VersionPolicy" hint="default"
+ */
+public class DefaultVersionPolicy implements VersionPolicy
+{
+
+    public VersionPolicyResult getReleaseVersion( VersionPolicyRequest request )
+        throws PolicyException, VersionParseException
+    {
+        String releaseVersion = new DefaultVersionInfo( request.getVersion() ).getReleaseVersionString();
+        return new VersionPolicyResult().setVersion( releaseVersion );
+    }
+
+    public VersionPolicyResult getDevelopmentVersion( VersionPolicyRequest request )
+        throws PolicyException, VersionParseException
+    {
+        String developmentVersion = new DefaultVersionInfo( request.getVersion() ).getNextVersion().getSnapshotVersionString();
+        return new VersionPolicyResult().setVersion( developmentVersion );
+    }
+
+}

Modified: maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.xml?rev=1578613&r1=1578612&r2=1578613&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.xml (original)
+++ maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.xml Mon Mar 17 21:48:07 2014
@@ -26,6 +26,12 @@
       <configuration>
         <convertToSnapshot>true</convertToSnapshot>
       </configuration>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+          <field-name>versionPolicies</field-name>
+        </requirement>
+      </requirements>
     </component>
     <component>
       <role>org.apache.maven.shared.release.phase.ReleasePhase</role>
@@ -34,6 +40,12 @@
       <configuration>
         <convertToSnapshot>false</convertToSnapshot>
       </configuration>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+          <field-name>versionPolicies</field-name>
+        </requirement>
+      </requirements>
     </component>
     <component>
       <role>org.apache.maven.shared.release.phase.ReleasePhase</role>
@@ -43,6 +55,12 @@
         <convertToSnapshot>true</convertToSnapshot>
         <convertToBranch>true</convertToBranch>
       </configuration>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+          <field-name>versionPolicies</field-name>
+        </requirement>
+      </requirements>
     </component>
     <!-- Turn off info messages -->
     <component>
@@ -53,5 +71,12 @@
         <threshold>ERROR</threshold>
       </configuration>
     </component>
+    <!-- For now always use default version policy -->
+    <component>
+      <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+      <role-hint>default</role-hint>
+      <implementation>org.apache.maven.shared.release.policies.DefaultVersionPolicy</implementation>
+      <isolated-realm>false</isolated-realm>
+    </component>
   </components>
 </component-set>

Modified: maven/release/trunk/maven-release-policy/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-policy/pom.xml?rev=1578613&r1=1578612&r2=1578613&view=diff
==============================================================================
--- maven/release/trunk/maven-release-policy/pom.xml (original)
+++ maven/release/trunk/maven-release-policy/pom.xml Mon Mar 17 21:48:07 2014
@@ -33,4 +33,5 @@
       <artifactId>maven-repository-metadata</artifactId>
     </dependency>
   </dependencies>
+  <name>Maven Release Policy</name>
 </project>
\ No newline at end of file

Modified: maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java?rev=1578613&r1=1578612&r2=1578613&view=diff
==============================================================================
--- maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java (original)
+++ maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java Mon Mar 17 21:48:07 2014
@@ -20,11 +20,12 @@ package org.apache.maven.shared.release.
  */
 
 import org.apache.maven.shared.release.policy.PolicyException;
+import org.apache.maven.shared.release.versions.VersionParseException;
 
 public interface VersionPolicy
 {
 
-    public VersionPolicyResult getReleaseVersion( VersionPolicyRequest request ) throws PolicyException;
+    public VersionPolicyResult getReleaseVersion( VersionPolicyRequest request ) throws PolicyException, VersionParseException;
     
-    public VersionPolicyResult getDevelopmentVersion( VersionPolicyRequest request ) throws PolicyException;
+    public VersionPolicyResult getDevelopmentVersion( VersionPolicyRequest request ) throws PolicyException, VersionParseException;
 }

Added: maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java?rev=1578613&view=auto
==============================================================================
--- maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java (added)
+++ maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java Mon Mar 17 21:48:07 2014
@@ -0,0 +1,29 @@
+package org.apache.maven.shared.release.versions;
+
+/*
+ * 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.
+ */
+
+public class VersionParseException
+    extends Exception
+{
+    public VersionParseException( String message )
+    {
+        super( message );
+    }
+}