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/29 21:29:17 UTC

svn commit: r398224 [1/5] - in /maven/plugins/trunk/maven-release-plugin/src: main/java/org/apache/maven/plugins/release/phase/ main/resources/META-INF/plexus/ test/java/org/apache/maven/plugins/release/phase/ test/resources/org/apache/maven/plugins/re...

Author: brett
Date: Sat Apr 29 12:29:10 2006
New Revision: 398224

URL: http://svn.apache.org/viewcvs?rev=398224&view=rev
Log:
[MRELEASE-98] abstracted rewriting code and implemented development pom rewriting

Added:
    maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractRewritingReleasePhaseTestCase.java   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhaseTest.java   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhaseTest.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/basic-pom/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/basic-pom/expected-pom-with-schema.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/basic-pom/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/basic-pom/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/subproject1/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/subproject1/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/subproject2/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/subproject2/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-dependencies/subproject2/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/subproject1/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/subproject1/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/subproject2/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/subproject2/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-extension/subproject2/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/subproject1/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/subproject1/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/subproject2/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/subproject2/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-plugins/subproject2/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/subproject1/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/subproject1/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/subproject2/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/subproject2/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-differing-snapshot-report-plugins/subproject2/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject1/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject1/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject2/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject2/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject2/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject3/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject3/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-dependency/subproject3/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject1/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject1/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject2/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject2/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject2/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject3/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject3/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-managed-snapshot-plugin/subproject3/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject1/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject1/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject2/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject2/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject2/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject3/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject3/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-dependencies/subproject3/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject1/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject1/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject2/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject2/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject2/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject3/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject3/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-extension/subproject3/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject1/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject1/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject2/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject2/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject2/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject3/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject3/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject3/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject4/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject4/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-plugins/subproject4/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject1/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject1/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject2/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject2/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject2/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject3/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject3/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject3/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject4/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject4/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/internal-snapshot-report-plugins/subproject4/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/subproject1/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/subproject1/expected-pom-version-changed.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-inherited-version/subproject1/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-parent/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-parent/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-parent/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-parent/subproject1/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-parent/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-parent/subproject1/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-released-parent/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-released-parent/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-released-parent/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-released-parent/subproject1/
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-released-parent/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-development/pom-with-released-parent/subproject1/pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-dependencies/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-dependencies/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-dependencies/subproject2/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-extension/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-extension/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-extension/subproject2/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-plugins/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-plugins/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-plugins/subproject2/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-report-plugins/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-report-plugins/subproject1/expected-pom.xml   (with props)
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/internal-differing-snapshot-report-plugins/subproject2/expected-pom.xml   (with props)
Modified:
    maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhase.java
    maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java
    maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml
    maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java
    maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/CheckDependencySnapshotsPhaseTest.java
    maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhaseTest.java
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-released-parent/expected-pom.xml
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-released-parent/pom.xml
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-released-parent/subproject1/expected-pom.xml
    maven/plugins/trunk/maven-release-plugin/src/test/resources/projects/rewrite-for-release/pom-with-released-parent/subproject1/pom.xml

Added: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java?rev=398224&view=auto
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java (added)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java Sat Apr 29 12:29:10 2006
@@ -0,0 +1,500 @@
+package org.apache.maven.plugins.release.phase;
+
+/*
+ * 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.
+ */
+
+import org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Extension;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.ReportPlugin;
+import org.apache.maven.plugins.release.ReleaseExecutionException;
+import org.apache.maven.plugins.release.config.ReleaseConfiguration;
+import org.apache.maven.plugins.release.scm.ReleaseScmCommandException;
+import org.apache.maven.plugins.release.scm.ReleaseScmRepositoryException;
+import org.apache.maven.plugins.release.scm.ScmRepositoryConfigurator;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.edit.EditScmResult;
+import org.apache.maven.scm.manager.NoSuchScmProviderException;
+import org.apache.maven.scm.provider.ScmProvider;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.maven.scm.repository.ScmRepositoryException;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.Namespace;
+import org.jdom.Text;
+import org.jdom.filter.ElementFilter;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.Format;
+import org.jdom.output.XMLOutputter;
+import org.jdom.xpath.XPath;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * XXX: this base class could instead be a single instance, and the variations described through composition instead
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public abstract class AbstractRewritePomsPhase
+    extends AbstractLogEnabled
+    implements ReleasePhase
+{
+    /**
+     * Tool that gets a configured SCM repository from release configuration.
+     */
+    private ScmRepositoryConfigurator scmRepositoryConfigurator;
+
+    /**
+     * The line separator to use.
+     */
+    private static final String LS = System.getProperty( "line.separator" );
+
+    public void execute( ReleaseConfiguration releaseConfiguration )
+        throws ReleaseExecutionException
+    {
+        transform( releaseConfiguration, false );
+    }
+
+    private void transform( ReleaseConfiguration releaseConfiguration, boolean simulate )
+        throws ReleaseExecutionException
+    {
+        for ( Iterator it = releaseConfiguration.getReactorProjects().iterator(); it.hasNext(); )
+        {
+            MavenProject project = (MavenProject) it.next();
+
+            String projectId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
+
+            getLogger().info( "Transforming " + projectId + " to release" );
+
+            transformProject( project, releaseConfiguration, simulate );
+        }
+    }
+
+    private void transformProject( MavenProject project, ReleaseConfiguration releaseConfiguration, boolean simulate )
+        throws ReleaseExecutionException
+    {
+        Document document;
+        String intro = null;
+        String outtro = null;
+        try
+        {
+            String content = FileUtils.fileRead( project.getFile() );
+
+            SAXBuilder builder = new SAXBuilder();
+            document = builder.build( new StringReader( content ) );
+
+            // rewrite DOM as a string to find differences, since text outside the root element is not tracked
+            StringWriter w = new StringWriter();
+            Format format = Format.getRawFormat();
+            format.setLineSeparator( LS );
+            XMLOutputter out = new XMLOutputter( format );
+            out.output( document.getRootElement(), w );
+
+            int index = content.indexOf( w.toString() );
+            if ( index >= 0 )
+            {
+                intro = content.substring( 0, index );
+                outtro = content.substring( index + w.toString().length() );
+            }
+        }
+        catch ( JDOMException e )
+        {
+            throw new ReleaseExecutionException( "Error reading POM: " + e.getMessage(), e );
+        }
+        catch ( IOException e )
+        {
+            throw new ReleaseExecutionException( "Error reading POM: " + e.getMessage(), e );
+        }
+
+        ScmRepository scmRepository;
+        ScmProvider provider;
+        try
+        {
+            scmRepository = scmRepositoryConfigurator.getConfiguredRepository( releaseConfiguration );
+
+            provider = scmRepositoryConfigurator.getRepositoryProvider( scmRepository );
+        }
+        catch ( ScmRepositoryException e )
+        {
+            throw new ReleaseScmRepositoryException( e.getMessage(), e.getValidationMessages() );
+        }
+        catch ( NoSuchScmProviderException e )
+        {
+            throw new ReleaseExecutionException( "Unable to configure SCM repository: " + e.getMessage(), e );
+        }
+
+        transformDocument( project, document.getRootElement(), releaseConfiguration, scmRepository );
+
+        if ( simulate )
+        {
+            File outputFile =
+                new File( project.getFile().getParentFile(), project.getFile().getName() + "." + getPomSuffix() );
+            writePom( outputFile, document, releaseConfiguration, project.getModelVersion(), intro, outtro );
+        }
+        else
+        {
+            writePom( project.getFile(), document, releaseConfiguration, project.getModelVersion(), intro, outtro,
+                      scmRepository, provider );
+        }
+    }
+
+    protected abstract String getPomSuffix();
+
+    private void transformDocument( MavenProject project, Element rootElement,
+                                    ReleaseConfiguration releaseConfiguration, ScmRepository scmRepository )
+        throws ReleaseExecutionException
+    {
+        Namespace namespace = rootElement.getNamespace();
+        Map mappedVersions = getNextVersionMap( releaseConfiguration );
+        Map originalVersions = getOriginalVersionMap( releaseConfiguration );
+
+        String parentVersion = rewriteParent( project, rootElement, namespace, mappedVersions, originalVersions );
+
+        String projectId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
+
+        rewriteVersion( rootElement, namespace, mappedVersions, originalVersions, projectId, project, parentVersion );
+
+        rewriteDependencies( project.getDependencies(), rootElement, mappedVersions, originalVersions );
+
+        if ( project.getDependencyManagement() != null )
+        {
+            Element dependencyRoot = rootElement.getChild( "dependencyManagement", namespace );
+            if ( dependencyRoot != null )
+            {
+                rewriteDependencies( project.getDependencyManagement().getDependencies(), dependencyRoot,
+                                     mappedVersions, originalVersions );
+            }
+        }
+
+        if ( project.getBuild() != null )
+        {
+            Element pluginsRoot = rootElement.getChild( "build", namespace );
+            if ( pluginsRoot != null )
+            {
+                rewritePlugins( project.getBuildPlugins(), pluginsRoot, mappedVersions, originalVersions );
+                if ( project.getPluginManagement() != null )
+                {
+                    pluginsRoot = pluginsRoot.getChild( "pluginManagement", namespace );
+                    if ( pluginsRoot != null )
+                    {
+                        rewritePlugins( project.getPluginManagement().getPlugins(), pluginsRoot, mappedVersions,
+                                        originalVersions );
+                    }
+                }
+            }
+            rewriteExtensions( project.getBuildExtensions(), pluginsRoot, mappedVersions, originalVersions );
+        }
+
+        if ( project.getReporting() != null )
+        {
+            Element pluginsRoot = rootElement.getChild( "reporting", namespace );
+            if ( pluginsRoot != null )
+            {
+                rewriteReportPlugins( project.getReportPlugins(), pluginsRoot, mappedVersions, originalVersions );
+            }
+        }
+
+        transformScm( project, rootElement, namespace, releaseConfiguration, projectId, scmRepository );
+    }
+
+    private void rewriteVersion( Element rootElement, Namespace namespace, Map mappedVersions, Map originalVersions,
+                                 String projectId, MavenProject project, String parentVersion )
+        throws ReleaseExecutionException
+    {
+        // TODO: what about if version is inherited? shouldn't prompt...
+        Element versionElement = rootElement.getChild( "version", namespace );
+        String version = (String) mappedVersions.get( projectId );
+        if ( version == null )
+        {
+            throw new ReleaseExecutionException( "Version for '" + project.getName() + "' was not mapped" );
+        }
+        else
+        {
+
+            if ( versionElement == null )
+            {
+                if ( !version.equals( parentVersion ) )
+                {
+                    // we will add this after artifactId, since it was missing but different from the inherited version
+                    Element artifactIdElement = rootElement.getChild( "artifactId", namespace );
+                    int index = rootElement.indexOf( artifactIdElement );
+
+                    versionElement = new Element( "version", namespace );
+                    versionElement.setText( version );
+                    rootElement.addContent( index + 1, new Text( "\n  " ) );
+                    rootElement.addContent( index + 2, versionElement );
+                }
+            }
+            else
+            {
+                versionElement.setText( version );
+            }
+        }
+    }
+
+    private String rewriteParent( MavenProject project, Element rootElement, Namespace namespace, Map mappedVersions,
+                                  Map originalVersions )
+        throws ReleaseExecutionException
+    {
+        String parentVersion = null;
+        if ( project.hasParent() )
+        {
+            Element parentElement = rootElement.getChild( "parent", namespace );
+            Element versionElement = parentElement.getChild( "version", namespace );
+            MavenProject parent = project.getParent();
+            String key = ArtifactUtils.versionlessKey( parent.getGroupId(), parent.getArtifactId() );
+            parentVersion = (String) mappedVersions.get( key );
+            if ( parentVersion == null )
+            {
+                if ( parent.getVersion().equals( originalVersions.get( key ) ) )
+                {
+                    throw new ReleaseExecutionException(
+                        "Version for parent '" + parent.getName() + "' was not mapped" );
+                }
+            }
+            else
+            {
+                versionElement.setText( parentVersion );
+            }
+        }
+        return parentVersion;
+    }
+
+    private void rewriteDependencies( List dependencies, Element dependencyRoot, Map mappedVersions,
+                                      Map originalVersions )
+        throws ReleaseExecutionException
+    {
+        if ( dependencies != null )
+        {
+            for ( Iterator i = dependencies.iterator(); i.hasNext(); )
+            {
+                Dependency dep = (Dependency) i.next();
+
+                updateDomVersion( dep.getGroupId(), dep.getArtifactId(), mappedVersions, dep.getVersion(),
+                                  originalVersions, "dependencies", "dependency", dependencyRoot );
+            }
+        }
+    }
+
+    private void rewritePlugins( List plugins, Element pluginRoot, Map mappedVersions, Map originalVersions )
+        throws ReleaseExecutionException
+    {
+        if ( plugins != null )
+        {
+            for ( Iterator i = plugins.iterator(); i.hasNext(); )
+            {
+                Plugin plugin = (Plugin) i.next();
+
+                // We can ignore plugins whose version is assumed, they are only written into the release pom
+                if ( plugin.getVersion() != null )
+                {
+                    updateDomVersion( plugin.getGroupId(), plugin.getArtifactId(), mappedVersions, plugin.getVersion(),
+                                      originalVersions, "plugins", "plugin", pluginRoot );
+                }
+            }
+        }
+    }
+
+    private void rewriteExtensions( List extensions, Element extensionRoot, Map mappedVersions, Map originalVersions )
+        throws ReleaseExecutionException
+    {
+        if ( extensions != null )
+        {
+            for ( Iterator i = extensions.iterator(); i.hasNext(); )
+            {
+                Extension extension = (Extension) i.next();
+
+                updateDomVersion( extension.getGroupId(), extension.getArtifactId(), mappedVersions,
+                                  extension.getVersion(), originalVersions, "extensions", "extension", extensionRoot );
+            }
+        }
+    }
+
+    private void rewriteReportPlugins( List plugins, Element pluginRoot, Map mappedVersions, Map originalVersions )
+        throws ReleaseExecutionException
+    {
+        if ( plugins != null )
+        {
+            for ( Iterator i = plugins.iterator(); i.hasNext(); )
+            {
+                ReportPlugin plugin = (ReportPlugin) i.next();
+
+                // We can ignore plugins whose version is assumed, they are only written into the release pom
+                if ( plugin.getVersion() != null )
+                {
+                    updateDomVersion( plugin.getGroupId(), plugin.getArtifactId(), mappedVersions, plugin.getVersion(),
+                                      originalVersions, "plugins", "plugin", pluginRoot );
+                }
+            }
+        }
+    }
+
+    private void updateDomVersion( String groupId, String artifactId, Map mappedVersions, String version,
+                                   Map originalVersions, String groupTagName, String tagName, Element dependencyRoot )
+        throws ReleaseExecutionException
+    {
+        String key = ArtifactUtils.versionlessKey( groupId, artifactId );
+        String mappedVersion = (String) mappedVersions.get( key );
+
+        if ( version.equals( originalVersions.get( key ) ) )
+        {
+            if ( mappedVersion != null )
+            {
+                getLogger().debug( "Updating " + artifactId + " to " + mappedVersion );
+
+                try
+                {
+                    XPath xpath = XPath.newInstance( "./" + groupTagName + "/" + tagName + "[groupId='" + groupId +
+                        "' and artifactId='" + artifactId + "']" );
+
+                    Element dependency = (Element) xpath.selectSingleNode( dependencyRoot );
+                    Element versionElement = dependency.getChild( "version" );
+
+                    // avoid if in management
+                    if ( versionElement != null )
+                    {
+                        versionElement.setText( mappedVersion );
+                    }
+                }
+                catch ( JDOMException e )
+                {
+                    throw new ReleaseExecutionException( "Unable to locate " + tagName + " to process in document", e );
+                }
+            }
+            else
+            {
+                throw new ReleaseExecutionException(
+                    "Version '" + version + "' for " + tagName + " '" + key + "' was not mapped" );
+            }
+        }
+    }
+
+    private void writePom( File pomFile, Document document, ReleaseConfiguration releaseConfiguration,
+                           String modelVersion, String intro, String outtro, ScmRepository repository,
+                           ScmProvider provider )
+        throws ReleaseExecutionException
+    {
+        try
+        {
+            if ( releaseConfiguration.isUseEditMode() || provider.requiresEditMode() )
+            {
+                EditScmResult result =
+                    provider.edit( repository, new ScmFileSet( releaseConfiguration.getWorkingDirectory(), pomFile ) );
+
+                if ( !result.isSuccess() )
+                {
+                    throw new ReleaseScmCommandException( "Unable to enable editing on the POM", result );
+                }
+            }
+        }
+        catch ( ScmException e )
+        {
+            throw new ReleaseExecutionException( "An error occurred enabling edit mode: " + e.getMessage(), e );
+        }
+
+        writePom( pomFile, document, releaseConfiguration, modelVersion, intro, outtro );
+    }
+
+    private void writePom( File pomFile, Document document, ReleaseConfiguration releaseConfiguration,
+                           String modelVersion, String intro, String outtro )
+        throws ReleaseExecutionException
+    {
+        Element rootElement = document.getRootElement();
+
+        if ( releaseConfiguration.isAddSchema() )
+        {
+            Namespace pomNamespace = Namespace.getNamespace( "", "http://maven.apache.org/POM/" + modelVersion );
+            rootElement.setNamespace( pomNamespace );
+            Namespace xsiNamespace = Namespace.getNamespace( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
+            rootElement.addNamespaceDeclaration( xsiNamespace );
+
+            if ( rootElement.getAttribute( "schemaLocation", xsiNamespace ) == null )
+            {
+                rootElement.setAttribute( "schemaLocation", "http://maven.apache.org/POM/" + modelVersion +
+                    " http://maven.apache.org/maven-v" + modelVersion.replace( '.', '_' ) + ".xsd", xsiNamespace );
+            }
+
+            // the empty namespace is considered equal to the POM namespace, so match them up to avoid extra xmlns=""
+            ElementFilter elementFilter = new ElementFilter( Namespace.getNamespace( "" ) );
+            for ( Iterator i = rootElement.getDescendants( elementFilter ); i.hasNext(); )
+            {
+                Element e = (Element) i.next();
+                e.setNamespace( pomNamespace );
+            }
+        }
+
+        Writer writer = null;
+        try
+        {
+            // TODO: better handling of encoding. Currently the definition is not written out and is embedded in the intro if it already existed
+            // TODO: the XMLOutputter and Writer need to have their encodings aligned.
+            writer = new FileWriter( pomFile );
+
+            if ( intro != null )
+            {
+                writer.write( intro );
+            }
+
+            Format format = Format.getRawFormat();
+            format.setLineSeparator( LS );
+            XMLOutputter out = new XMLOutputter( format );
+            out.output( document.getRootElement(), writer );
+
+            if ( outtro != null )
+            {
+                writer.write( outtro );
+            }
+        }
+        catch ( IOException e )
+        {
+            throw new ReleaseExecutionException( "Error writing POM: " + e.getMessage(), e );
+        }
+        finally
+        {
+            IOUtil.close( writer );
+        }
+    }
+
+    public void simulate( ReleaseConfiguration releaseConfiguration )
+        throws ReleaseExecutionException
+    {
+        transform( releaseConfiguration, true );
+    }
+
+    protected abstract Map getOriginalVersionMap( ReleaseConfiguration releaseConfiguration );
+
+    protected abstract Map getNextVersionMap( ReleaseConfiguration releaseConfiguration );
+
+    protected abstract void transformScm( MavenProject project, Element rootElement, Namespace namespace,
+                                          ReleaseConfiguration releaseConfiguration, String projectId,
+                                          ScmRepository scmRepository )
+        throws ReleaseExecutionException;
+}

Propchange: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhase.java?rev=398224&r1=398223&r2=398224&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForDevelopmentPhase.java Sat Apr 29 12:29:10 2006
@@ -16,23 +16,71 @@
  * limitations under the License.
  */
 
+import org.apache.maven.model.Scm;
+import org.apache.maven.plugins.release.ReleaseExecutionException;
 import org.apache.maven.plugins.release.config.ReleaseConfiguration;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.jdom.Element;
+import org.jdom.Namespace;
+
+import java.util.Map;
 
 /**
- * TODO [!]: Description.
+ * Rewrite POMs for future development
  *
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  */
 public class RewritePomsForDevelopmentPhase
-    implements ReleasePhase
+    extends AbstractRewritePomsPhase
 {
-    public void execute( ReleaseConfiguration releaseConfiguration )
+    protected String getPomSuffix()
+    {
+        return "next";
+    }
+
+    protected void transformScm( MavenProject project, Element rootElement, Namespace namespace,
+                                 ReleaseConfiguration releaseConfiguration, String projectId,
+                                 ScmRepository scmRepository )
+        throws ReleaseExecutionException
+    {
+        // If SCM is null in original model, it is inherited, no mods needed
+        if ( project.getScm() != null )
+        {
+            Element scmRoot = rootElement.getChild( "scm", namespace );
+            if ( scmRoot != null )
+            {
+                Scm scm = (Scm) releaseConfiguration.getOriginalScmInfo().get( projectId );
+                if ( scm == null )
+                {
+                    throw new ReleaseExecutionException(
+                        "Unable to find original SCM info for '" + project.getName() + "'" );
+                }
+
+                scmRoot.getChild( "connection", namespace ).setText( scm.getConnection() );
+
+                Element devConnection = scmRoot.getChild( "developerConnection", namespace );
+                if ( devConnection != null )
+                {
+                    devConnection.setText( scm.getDeveloperConnection() );
+                }
+
+                Element url = scmRoot.getChild( "url", namespace );
+                if ( url != null )
+                {
+                    url.setText( scm.getUrl() );
+                }
+            }
+        }
+    }
+
+    protected Map getOriginalVersionMap( ReleaseConfiguration releaseConfiguration )
     {
-        // TODO [!]: implement
+        return releaseConfiguration.getReleaseVersions();
     }
 
-    public void simulate( ReleaseConfiguration releaseConfiguration )
+    protected Map getNextVersionMap( ReleaseConfiguration releaseConfiguration )
     {
-        // TODO [!]: implement
+        return releaseConfiguration.getDevelopmentVersions();
     }
 }

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java?rev=398224&r1=398223&r2=398224&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhase.java Sat Apr 29 12:29:10 2006
@@ -16,48 +16,14 @@
  * limitations under the License.
  */
 
-import org.apache.maven.artifact.ArtifactUtils;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.Extension;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.ReportPlugin;
 import org.apache.maven.model.Scm;
-import org.apache.maven.plugins.release.ReleaseExecutionException;
 import org.apache.maven.plugins.release.config.ReleaseConfiguration;
-import org.apache.maven.plugins.release.scm.ReleaseScmCommandException;
-import org.apache.maven.plugins.release.scm.ReleaseScmRepositoryException;
-import org.apache.maven.plugins.release.scm.ScmRepositoryConfigurator;
 import org.apache.maven.plugins.release.scm.ScmTranslator;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.command.edit.EditScmResult;
-import org.apache.maven.scm.manager.NoSuchScmProviderException;
-import org.apache.maven.scm.provider.ScmProvider;
 import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.maven.scm.repository.ScmRepositoryException;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.IOUtil;
-import org.jdom.Document;
 import org.jdom.Element;
-import org.jdom.JDOMException;
 import org.jdom.Namespace;
-import org.jdom.Text;
-import org.jdom.filter.ElementFilter;
-import org.jdom.input.SAXBuilder;
-import org.jdom.output.Format;
-import org.jdom.output.XMLOutputter;
-import org.jdom.xpath.XPath;
 
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -66,200 +32,22 @@
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  */
 public class RewritePomsForReleasePhase
-    extends AbstractLogEnabled
-    implements ReleasePhase
+    extends AbstractRewritePomsPhase
 {
     /**
-     * Tool that gets a configured SCM repository from release configuration.
-     */
-    private ScmRepositoryConfigurator scmRepositoryConfigurator;
-
-    /**
      * SCM URL translators mapped by provider name.
      */
     private Map scmTranslators;
 
-    /**
-     * The line separator to use.
-     */
-    private static final String LS = System.getProperty( "line.separator" );
-
-    public void execute( ReleaseConfiguration releaseConfiguration )
-        throws ReleaseExecutionException
+    protected String getPomSuffix()
     {
-        transform( releaseConfiguration, false );
-    }
-
-    private void transform( ReleaseConfiguration releaseConfiguration, boolean simulate )
-        throws ReleaseExecutionException
-    {
-        for ( Iterator it = releaseConfiguration.getReactorProjects().iterator(); it.hasNext(); )
-        {
-            MavenProject project = (MavenProject) it.next();
-
-            String projectId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
-
-            getLogger().info( "Transforming " + projectId + " to release" );
-
-            Document document;
-            String intro = null;
-            String outtro = null;
-            try
-            {
-                String content = FileUtils.fileRead( project.getFile() );
-
-                SAXBuilder builder = new SAXBuilder();
-                document = builder.build( new StringReader( content ) );
-
-                // rewrite DOM as a string to find differences, since text outside the root element is not tracked
-                StringWriter w = new StringWriter();
-                Format format = Format.getRawFormat();
-                format.setLineSeparator( LS );
-                XMLOutputter out = new XMLOutputter( format );
-                out.output( document.getRootElement(), w );
-
-                int index = content.indexOf( w.toString() );
-                if ( index >= 0 )
-                {
-                    intro = content.substring( 0, index );
-                    outtro = content.substring( index + w.toString().length() );
-                }
-            }
-            catch ( JDOMException e )
-            {
-                throw new ReleaseExecutionException( "Error reading POM: " + e.getMessage(), e );
-            }
-            catch ( IOException e )
-            {
-                throw new ReleaseExecutionException( "Error reading POM: " + e.getMessage(), e );
-            }
-
-            ScmRepository scmRepository;
-            ScmProvider provider;
-            try
-            {
-                scmRepository = scmRepositoryConfigurator.getConfiguredRepository( releaseConfiguration );
-
-                provider = scmRepositoryConfigurator.getRepositoryProvider( scmRepository );
-            }
-            catch ( ScmRepositoryException e )
-            {
-                throw new ReleaseScmRepositoryException( e.getMessage(), e.getValidationMessages() );
-            }
-            catch ( NoSuchScmProviderException e )
-            {
-                throw new ReleaseExecutionException( "Unable to configure SCM repository: " + e.getMessage(), e );
-            }
-
-            transformPomToReleaseVersion( project, document, releaseConfiguration, scmRepository );
-
-            if ( simulate )
-            {
-                File outputFile = new File( project.getFile().getParentFile(), project.getFile().getName() + ".tag" );
-                writePom( outputFile, document, releaseConfiguration, project.getModelVersion(), intro, outtro );
-            }
-            else
-            {
-                writePom( project.getFile(), document, releaseConfiguration, project.getModelVersion(), intro, outtro,
-                          scmRepository, provider );
-            }
-        }
+        return "tag";
     }
 
-    private void transformPomToReleaseVersion( MavenProject project, Document document,
-                                               ReleaseConfiguration releaseConfiguration, ScmRepository scmRepository )
-        throws ReleaseExecutionException
+    protected void transformScm( MavenProject project, Element rootElement, Namespace namespace,
+                                 ReleaseConfiguration releaseConfiguration, String projectId,
+                                 ScmRepository scmRepository )
     {
-        Element rootElement = document.getRootElement();
-        Map mappedVersions = releaseConfiguration.getReleaseVersions();
-        Map originalVersions = releaseConfiguration.getOriginalVersions();
-        String parentVersion = null;
-        Namespace namespace = rootElement.getNamespace();
-        if ( project.hasParent() && project.getParentArtifact().isSnapshot() )
-        {
-            Element parentElement = rootElement.getChild( "parent", namespace );
-            Element versionElement = parentElement.getChild( "version", namespace );
-            MavenProject parent = project.getParent();
-            String key = ArtifactUtils.versionlessKey( parent.getGroupId(), parent.getArtifactId() );
-            parentVersion = (String) mappedVersions.get( key );
-            if ( parentVersion == null )
-            {
-                throw new ReleaseExecutionException( "Version for parent '" + parent.getName() + "' was not mapped" );
-            }
-            versionElement.setText( parentVersion );
-        }
-
-        String projectId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
-        if ( project.getArtifact().isSnapshot() )
-        {
-            // TODO: what about if version is inherited? shouldn't prompt...
-            Element versionElement = rootElement.getChild( "version", namespace );
-            String version = (String) mappedVersions.get( projectId );
-            if ( version == null )
-            {
-                throw new ReleaseExecutionException( "Version for '" + project.getName() + "' was not mapped" );
-            }
-
-            if ( versionElement == null )
-            {
-                if ( !version.equals( parentVersion ) )
-                {
-                    // we will add this after artifactId
-                    Element artifactIdElement = rootElement.getChild( "artifactId", namespace );
-                    int index = rootElement.indexOf( artifactIdElement );
-
-                    versionElement = new Element( "version", namespace );
-                    versionElement.setText( version );
-                    rootElement.addContent( index + 1, new Text( "\n  " ) );
-                    rootElement.addContent( index + 2, versionElement );
-                }
-            }
-            else
-            {
-                versionElement.setText( version );
-            }
-        }
-
-        rewriteDependencies( project.getDependencies(), rootElement, mappedVersions, originalVersions );
-
-        if ( project.getDependencyManagement() != null )
-        {
-            Element dependencyRoot = rootElement.getChild( "dependencyManagement", namespace );
-            if ( dependencyRoot != null )
-            {
-                rewriteDependencies( project.getDependencyManagement().getDependencies(), dependencyRoot,
-                                     mappedVersions, originalVersions );
-            }
-        }
-
-        if ( project.getBuild() != null )
-        {
-            Element pluginsRoot = rootElement.getChild( "build", namespace );
-            if ( pluginsRoot != null )
-            {
-                rewritePlugins( project.getBuildPlugins(), pluginsRoot, mappedVersions, originalVersions );
-                if ( project.getPluginManagement() != null )
-                {
-                    pluginsRoot = pluginsRoot.getChild( "pluginManagement", namespace );
-                    if ( pluginsRoot != null )
-                    {
-                        rewritePlugins( project.getPluginManagement().getPlugins(), pluginsRoot, mappedVersions,
-                                        originalVersions );
-                    }
-                }
-            }
-            rewriteExtensions( project.getBuildExtensions(), pluginsRoot, mappedVersions, originalVersions );
-        }
-
-        if ( project.getReporting() != null )
-        {
-            Element pluginsRoot = rootElement.getChild( "reporting", namespace );
-            if ( pluginsRoot != null )
-            {
-                rewriteReportPlugins( project.getReportPlugins(), pluginsRoot, mappedVersions, originalVersions );
-            }
-        }
-
         // If SCM is null in original model, it is inherited, no mods needed
         if ( project.getScm() != null )
         {
@@ -271,233 +59,38 @@
                 ScmTranslator translator = (ScmTranslator) scmTranslators.get( scmRepository.getProvider() );
                 if ( translator != null )
                 {
-                    rewriteScm( project.getScm(), releaseConfiguration.getReleaseLabel(), scmRoot, namespace,
-                                translator );
-                }
-                else
-                {
-                    getLogger().debug( "No SCM translator found - skipping rewrite" );
-                }
-            }
-        }
-    }
-
-    private void rewriteScm( Scm scm, String tag, Element scmRoot, Namespace namespace, ScmTranslator translator )
-    {
-        scmRoot.getChild( "connection", namespace ).setText( translator.translateTagUrl( scm.getConnection(), tag ) );
+                    Scm scm = project.getScm();
+                    String tag = releaseConfiguration.getReleaseLabel();
+                    scmRoot.getChild( "connection", namespace ).setText(
+                        translator.translateTagUrl( scm.getConnection(), tag ) );
 
-        Element devConnection = scmRoot.getChild( "developerConnection", namespace );
-        if ( devConnection != null )
-        {
-            devConnection.setText( translator.translateTagUrl( scm.getDeveloperConnection(), tag ) );
-        }
-
-        Element url = scmRoot.getChild( "url", namespace );
-        if ( url != null )
-        {
-            url.setText( translator.translateTagUrl( scm.getUrl(), tag ) );
-        }
-    }
-
-    private void rewriteDependencies( List dependencies, Element dependencyRoot, Map mappedVersions,
-                                      Map originalVersions )
-        throws ReleaseExecutionException
-    {
-        if ( dependencies != null )
-        {
-            for ( Iterator i = dependencies.iterator(); i.hasNext(); )
-            {
-                Dependency dep = (Dependency) i.next();
-
-                updateDomVersion( dep.getGroupId(), dep.getArtifactId(), mappedVersions, dep.getVersion(),
-                                  originalVersions, "dependencies", "dependency", dependencyRoot );
-            }
-        }
-    }
-
-    private void rewritePlugins( List plugins, Element pluginRoot, Map mappedVersions, Map originalVersions )
-        throws ReleaseExecutionException
-    {
-        if ( plugins != null )
-        {
-            for ( Iterator i = plugins.iterator(); i.hasNext(); )
-            {
-                Plugin plugin = (Plugin) i.next();
-
-                // We can ignore plugins whose version is assumed, they are only written into the release pom
-                if ( plugin.getVersion() != null )
-                {
-                    updateDomVersion( plugin.getGroupId(), plugin.getArtifactId(), mappedVersions, plugin.getVersion(),
-                                      originalVersions, "plugins", "plugin", pluginRoot );
-                }
-            }
-        }
-    }
-
-    private void rewriteExtensions( List extensions, Element extensionRoot, Map mappedVersions, Map originalVersions )
-        throws ReleaseExecutionException
-    {
-        if ( extensions != null )
-        {
-            for ( Iterator i = extensions.iterator(); i.hasNext(); )
-            {
-                Extension extension = (Extension) i.next();
-
-                updateDomVersion( extension.getGroupId(), extension.getArtifactId(), mappedVersions,
-                                  extension.getVersion(), originalVersions, "extensions", "extension", extensionRoot );
-            }
-        }
-    }
-
-    private void rewriteReportPlugins( List plugins, Element pluginRoot, Map mappedVersions, Map originalVersions )
-        throws ReleaseExecutionException
-    {
-        if ( plugins != null )
-        {
-            for ( Iterator i = plugins.iterator(); i.hasNext(); )
-            {
-                ReportPlugin plugin = (ReportPlugin) i.next();
-
-                // We can ignore plugins whose version is assumed, they are only written into the release pom
-                if ( plugin.getVersion() != null )
-                {
-                    updateDomVersion( plugin.getGroupId(), plugin.getArtifactId(), mappedVersions, plugin.getVersion(),
-                                      originalVersions, "plugins", "plugin", pluginRoot );
-                }
-            }
-        }
-    }
-
-    private void updateDomVersion( String groupId, String artifactId, Map mappedVersions, String version,
-                                   Map originalVersions, String groupTagName, String tagName, Element dependencyRoot )
-        throws ReleaseExecutionException
-    {
-        String key = ArtifactUtils.versionlessKey( groupId, artifactId );
-        String mappedVersion = (String) mappedVersions.get( key );
-
-        if ( mappedVersion != null && version.equals( originalVersions.get( key ) ) )
-        {
-            getLogger().debug( "Updating " + artifactId + " to " + mappedVersion );
-
-            try
-            {
-                XPath xpath = XPath.newInstance( "./" + groupTagName + "/" + tagName + "[groupId='" + groupId +
-                    "' and artifactId='" + artifactId + "']" );
-
-                Element dependency = (Element) xpath.selectSingleNode( dependencyRoot );
-                Element versionElement = dependency.getChild( "version" );
+                    Element devConnection = scmRoot.getChild( "developerConnection", namespace );
+                    if ( devConnection != null )
+                    {
+                        devConnection.setText( translator.translateTagUrl( scm.getDeveloperConnection(), tag ) );
+                    }
 
-                // avoid if in management
-                if ( versionElement != null )
-                {
-                    versionElement.setText( mappedVersion );
+                    Element url = scmRoot.getChild( "url", namespace );
+                    if ( url != null )
+                    {
+                        url.setText( translator.translateTagUrl( scm.getUrl(), tag ) );
+                    }
                 }
-            }
-            catch ( JDOMException e )
-            {
-                throw new ReleaseExecutionException( "Unable to locate " + tagName + " to process in document", e );
-            }
-        }
-        else
-        {
-            // We can ignore those we don't know of, unless they are snapshots
-            if ( ArtifactUtils.isSnapshot( version ) )
-            {
-                throw new ReleaseExecutionException(
-                    "Version '" + version + "' for " + tagName + " '" + key + "' was not mapped" );
-            }
-        }
-    }
-
-    private void writePom( File pomFile, Document document, ReleaseConfiguration releaseConfiguration,
-                           String modelVersion, String intro, String outtro, ScmRepository repository,
-                           ScmProvider provider )
-        throws ReleaseExecutionException
-    {
-        try
-        {
-            if ( releaseConfiguration.isUseEditMode() || provider.requiresEditMode() )
-            {
-                EditScmResult result =
-                    provider.edit( repository, new ScmFileSet( releaseConfiguration.getWorkingDirectory(), pomFile ) );
-
-                if ( !result.isSuccess() )
+                else
                 {
-                    throw new ReleaseScmCommandException( "Unable to enable editing on the POM", result );
+                    getLogger().debug( "No SCM translator found - skipping rewrite" );
                 }
             }
         }
-        catch ( ScmException e )
-        {
-            throw new ReleaseExecutionException( "An error occurred enabling edit mode: " + e.getMessage(), e );
-        }
-
-        writePom( pomFile, document, releaseConfiguration, modelVersion, intro, outtro );
     }
 
-    private void writePom( File pomFile, Document document, ReleaseConfiguration releaseConfiguration,
-                           String modelVersion, String intro, String outtro )
-        throws ReleaseExecutionException
+    protected Map getOriginalVersionMap( ReleaseConfiguration releaseConfiguration )
     {
-        Element rootElement = document.getRootElement();
-
-        if ( releaseConfiguration.isAddSchema() )
-        {
-            Namespace pomNamespace = Namespace.getNamespace( "", "http://maven.apache.org/POM/" + modelVersion );
-            rootElement.setNamespace( pomNamespace );
-            Namespace xsiNamespace = Namespace.getNamespace( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
-            rootElement.addNamespaceDeclaration( xsiNamespace );
-
-            if ( rootElement.getAttribute( "schemaLocation", xsiNamespace ) == null )
-            {
-                rootElement.setAttribute( "schemaLocation", "http://maven.apache.org/POM/" + modelVersion +
-                    " http://maven.apache.org/maven-v" + modelVersion.replace( '.', '_' ) + ".xsd", xsiNamespace );
-            }
-
-            // the empty namespace is considered equal to the POM namespace, so match them up to avoid extra xmlns=""
-            ElementFilter elementFilter = new ElementFilter( Namespace.getNamespace( "" ) );
-            for ( Iterator i = rootElement.getDescendants( elementFilter ); i.hasNext(); )
-            {
-                Element e = (Element) i.next();
-                e.setNamespace( pomNamespace );
-            }
-        }
-
-        Writer writer = null;
-        try
-        {
-            // TODO: better handling of encoding. Currently the definition is not written out and is embedded in the intro if it already existed
-            // TODO: the XMLOutputter and Writer need to have their encodings aligned.
-            writer = new FileWriter( pomFile );
-
-            if ( intro != null )
-            {
-                writer.write( intro );
-            }
-
-            Format format = Format.getRawFormat();
-            format.setLineSeparator( LS );
-            XMLOutputter out = new XMLOutputter( format );
-            out.output( document.getRootElement(), writer );
-
-            if ( outtro != null )
-            {
-                writer.write( outtro );
-            }
-        }
-        catch ( IOException e )
-        {
-            throw new ReleaseExecutionException( "Error writing POM: " + e.getMessage(), e );
-        }
-        finally
-        {
-            IOUtil.close( writer );
-        }
+        return releaseConfiguration.getOriginalVersions();
     }
 
-    public void simulate( ReleaseConfiguration releaseConfiguration )
-        throws ReleaseExecutionException
+    protected Map getNextVersionMap( ReleaseConfiguration releaseConfiguration )
     {
-        transform( releaseConfiguration, true );
+        return releaseConfiguration.getReleaseVersions();
     }
 }

Modified: maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml?rev=398224&r1=398223&r2=398224&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml Sat Apr 29 12:29:10 2006
@@ -155,6 +155,11 @@
       <role>org.apache.maven.plugins.release.phase.ReleasePhase</role>
       <role-hint>rewrite-poms-for-development</role-hint>
       <implementation>org.apache.maven.plugins.release.phase.RewritePomsForDevelopmentPhase</implementation>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.plugins.release.scm.ScmRepositoryConfigurator</role>
+        </requirement>
+      </requirements>
     </component>
     <component>
       <role>org.apache.maven.plugins.release.config.ReleaseConfigurationStore</role>

Modified: maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java?rev=398224&r1=398223&r2=398224&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/AbstractReleaseTestCase.java Sat Apr 29 12:29:10 2006
@@ -31,14 +31,19 @@
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.plugins.release.config.ReleaseConfiguration;
+import org.apache.maven.plugins.release.scm.DefaultScmRepositoryConfigurator;
+import org.apache.maven.plugins.release.scm.ScmRepositoryConfigurator;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.project.ProjectSorter;
+import org.apache.maven.scm.manager.ScmManager;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.FileUtils;
+import org.jmock.cglib.Mock;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -59,6 +64,8 @@
 
     protected ArtifactRepository localRepository;
 
+    protected ReleasePhase phase;
+
     protected void setUp()
         throws Exception
     {
@@ -176,5 +183,42 @@
         releaseConfiguration.setReactorProjects( projects );
 
         return releaseConfiguration;
+    }
+
+    protected void setMockScmManager( Mock scmManagerMock )
+        throws Exception
+    {
+        ScmManager scmManager = (ScmManager) scmManagerMock.proxy();
+        DefaultScmRepositoryConfigurator configurator =
+            (DefaultScmRepositoryConfigurator) lookup( ScmRepositoryConfigurator.ROLE );
+        configurator.setScmManager( scmManager );
+    }
+
+    protected static Map getProjectsAsMap( List reactorProjects )
+    {
+        Map map = new HashMap();
+        for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
+        {
+            MavenProject project = (MavenProject) i.next();
+
+            map.put( ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() ), project );
+        }
+        return map;
+    }
+
+    protected boolean compareFiles( List reactorProjects )
+        throws IOException
+    {
+        for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
+        {
+            MavenProject project = (MavenProject) i.next();
+
+            File actualFile = project.getFile();
+            String actual = FileUtils.fileRead( actualFile );
+            File expectedFile = new File( actualFile.getParentFile(), "expected-pom.xml" );
+            String expected = FileUtils.fileRead( expectedFile );
+            assertEquals( "Check the transformed POM", expected, actual );
+        }
+        return true;
     }
 }