Author: evenisse
Date: Mon Feb 19 16:04:04 2007
New Revision: 509391
URL: http://svn.apache.org/viewvc?view=rev&rev=509391
Log:
Allow to set the version of dependencies in the release process then set
dependencies versions to snapshots if they was snapshots before the release.
Submitted by: Pete Marvin King
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java
maven/release/trunk/maven-release-manager/src/test/resources/release.properties
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
---
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
(original)
+++
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
Mon Feb 19 16:04:04 2007
@@ -30,9 +30,12 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Properties;
+import java.util.Set;
/**
* Read and write release configuration and state from a properties file.
@@ -95,6 +98,8 @@
releaseDescriptor.setPomFileName( properties.getProperty(
"exec.pomFileName" ) );
releaseDescriptor.setPreparationGoals( properties.getProperty(
"preparationGoals" ) );
+ loadResolvedDependencies( properties, releaseDescriptor );
+
// boolean properties are not written to the properties file because
the value from the caller is always used
for ( Iterator i = properties.keySet().iterator(); i.hasNext(); )
@@ -253,6 +258,12 @@
}
}
+ if ( ( config.getResolvedSnapshotDependencies() != null ) &&
+ ( config.getResolvedSnapshotDependencies().size() > 0 ) )
+ {
+ processResolvedDependencies( properties,
config.getResolvedSnapshotDependencies() );
+ }
+
OutputStream outStream = null;
//noinspection OverlyBroadCatchBlock
try
@@ -273,8 +284,82 @@
}
+ private void processResolvedDependencies( Properties prop, Map
resolvedDependencies )
+ {
+ Set entries = resolvedDependencies.entrySet();
+ Iterator iterator = entries.iterator();
+ Entry currentEntry;
+
+ while ( iterator.hasNext() )
+ {
+ currentEntry = (Entry) iterator.next();
+
+ Map versionMap = (Map) currentEntry.getValue();
+
+ prop.setProperty( "dependency." + currentEntry.getKey() +
".release",
+ (String) versionMap.get(
ReleaseDescriptor.RELEASE_KEY ) );
+ prop.setProperty( "dependency." + currentEntry.getKey() +
".development",
+ (String) versionMap.get(
ReleaseDescriptor.DEVELOPMENT_KEY ) );
+ }
+ }
+
private static File getDefaultReleasePropertiesFile( ReleaseDescriptor
mergeDescriptor )
{
return new File( mergeDescriptor.getWorkingDirectory(),
"release.properties" );
+ }
+
+ private void loadResolvedDependencies( Properties prop, ReleaseDescriptor
descriptor )
+ {
+ Map resolvedDependencies = new HashMap();
+
+ Set entries = prop.entrySet();
+ Iterator iterator = entries.iterator();
+ String propertyName;
+ Entry currentEntry;
+
+ while ( iterator.hasNext() )
+ {
+ currentEntry = (Entry) iterator.next();
+ propertyName = (String) currentEntry.getKey();
+
+ if ( propertyName.startsWith( "dependency." ) )
+ {
+ Map versionMap;
+ String artifactVersionlessKey;
+ int startIndex;
+ int endIndex;
+ String versionType;
+
+ versionMap = new HashMap();
+ startIndex = propertyName.lastIndexOf( "dependency." );
+
+ if ( propertyName.indexOf( ".development" ) != -1 )
+ {
+ endIndex = propertyName.indexOf( ".development" );
+ versionType = ReleaseDescriptor.DEVELOPMENT_KEY;
+ }
+ else
+ {
+ endIndex = propertyName.indexOf( ".release" );
+ versionType = ReleaseDescriptor.RELEASE_KEY;
+ }
+
+ artifactVersionlessKey = propertyName.substring( startIndex,
endIndex );
+
+ if ( resolvedDependencies.containsKey( artifactVersionlessKey
) )
+ {
+ versionMap = (Map) resolvedDependencies.get(
artifactVersionlessKey );
+ }
+ else
+ {
+ versionMap = new HashMap();
+ resolvedDependencies.put( artifactVersionlessKey,
versionMap );
+ }
+
+ versionMap.put( versionType, currentEntry.getValue() );
+ }
+ }
+
+ descriptor.setResolvedSnapshotDependencies( resolvedDependencies );
}
}
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
---
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
(original)
+++
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
Mon Feb 19 16:04:04 2007
@@ -207,6 +207,7 @@
Namespace namespace = rootElement.getNamespace();
Map mappedVersions = getNextVersionMap( releaseDescriptor );
Map originalVersions = getOriginalVersionMap( releaseDescriptor,
reactorProjects );
+ Map resolvedSnapshotDependencies =
releaseDescriptor.getResolvedSnapshotDependencies();
Element properties = rootElement.getChild( "properties", namespace );
String parentVersion = rewriteParent( project, rootElement, namespace,
mappedVersions, originalVersions );
@@ -215,8 +216,8 @@
rewriteVersion( rootElement, namespace, mappedVersions, projectId,
project, parentVersion );
- rewriteDependencies( project.getDependencies(), rootElement,
mappedVersions, originalVersions, projectId,
- properties, result );
+ rewriteDependencies( project.getDependencies(), rootElement,
mappedVersions, resolvedSnapshotDependencies,
+ originalVersions, projectId, properties,
releaseDescriptor, result );
if ( project.getDependencyManagement() != null )
{
@@ -224,7 +225,8 @@
if ( dependencyRoot != null )
{
rewriteDependencies(
project.getDependencyManagement().getDependencies(), dependencyRoot,
- mappedVersions, originalVersions,
projectId, properties, result );
+ mappedVersions,
resolvedSnapshotDependencies, originalVersions, projectId,
+ properties, releaseDescriptor, result );
}
}
@@ -233,19 +235,19 @@
Element buildRoot = rootElement.getChild( "build", namespace );
if ( buildRoot != null )
{
- rewritePlugins( project.getBuildPlugins(), buildRoot,
mappedVersions, originalVersions, projectId,
- properties, result );
+ rewritePlugins( project.getBuildPlugins(), buildRoot,
mappedVersions, resolvedSnapshotDependencies,
+ originalVersions, projectId, properties,
result );
if ( project.getPluginManagement() != null )
{
Element pluginsRoot = buildRoot.getChild(
"pluginManagement", namespace );
if ( pluginsRoot != null )
{
rewritePlugins(
project.getPluginManagement().getPlugins(), pluginsRoot, mappedVersions,
- originalVersions, projectId,
properties, result );
+ resolvedSnapshotDependencies,
originalVersions, projectId, properties, result );
}
}
- rewriteExtensions( project.getBuildExtensions(), buildRoot,
mappedVersions, originalVersions, projectId,
- properties, result );
+ rewriteExtensions( project.getBuildExtensions(), buildRoot,
mappedVersions,
+ resolvedSnapshotDependencies,
originalVersions, projectId, properties, result );
}
}
@@ -254,8 +256,8 @@
Element pluginsRoot = rootElement.getChild( "reporting", namespace
);
if ( pluginsRoot != null )
{
- rewriteReportPlugins( project.getReportPlugins(), pluginsRoot,
mappedVersions, originalVersions,
- projectId, properties, result );
+ rewriteReportPlugins( project.getReportPlugins(), pluginsRoot,
mappedVersions,
+ resolvedSnapshotDependencies,
originalVersions, projectId, properties, result );
}
}
@@ -321,7 +323,8 @@
}
private void rewriteDependencies( List dependencies, Element
dependencyRoot, Map mappedVersions,
- Map originalVersions, String projectId,
Element properties, ReleaseResult result )
+ Map resolvedSnapshotDependencies, Map
originalVersions, String projectId,
+ Element properties, ReleaseDescriptor
releaseDescriptor, ReleaseResult result )
throws ReleaseExecutionException, ReleaseFailureException
{
if ( dependencies != null )
@@ -330,15 +333,15 @@
{
Dependency dep = (Dependency) i.next();
- updateDomVersion( dep.getGroupId(), dep.getArtifactId(),
mappedVersions, dep.getVersion(),
- originalVersions, "dependencies",
"dependency", dependencyRoot, projectId,
- properties, result );
+ updateDomVersion( dep.getGroupId(), dep.getArtifactId(),
mappedVersions, resolvedSnapshotDependencies,
+ dep.getVersion(), originalVersions,
"dependencies", "dependency", dependencyRoot,
+ projectId, properties, result );
}
}
}
- private void rewritePlugins( List plugins, Element pluginRoot, Map
mappedVersions, Map originalVersions,
- String projectId, Element properties,
ReleaseResult result )
+ private void rewritePlugins( List plugins, Element pluginRoot, Map
mappedVersions, Map resolvedSnapshotDependencies,
+ Map originalVersions, String projectId,
Element properties, ReleaseResult result )
throws ReleaseExecutionException, ReleaseFailureException
{
if ( plugins != null )
@@ -350,16 +353,17 @@
// 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, projectId,
- properties, result );
+ updateDomVersion( plugin.getGroupId(),
plugin.getArtifactId(), mappedVersions,
+ resolvedSnapshotDependencies,
plugin.getVersion(), originalVersions, "plugins",
+ "plugin", pluginRoot, projectId,
properties, result );
}
}
}
}
- private void rewriteExtensions( List extensions, Element extensionRoot,
Map mappedVersions, Map originalVersions,
- String projectId, Element properties,
ReleaseResult result )
+ private void rewriteExtensions( List extensions, Element extensionRoot,
Map mappedVersions,
+ Map resolvedSnapshotDependencies, Map
originalVersions, String projectId,
+ Element properties, ReleaseResult result )
throws ReleaseExecutionException, ReleaseFailureException
{
if ( extensions != null )
@@ -369,14 +373,15 @@
Extension extension = (Extension) i.next();
updateDomVersion( extension.getGroupId(),
extension.getArtifactId(), mappedVersions,
- extension.getVersion(), originalVersions,
"extensions", "extension", extensionRoot,
- projectId, properties, result );
+ resolvedSnapshotDependencies,
extension.getVersion(), originalVersions, "extensions",
+ "extension", extensionRoot, projectId,
properties, result );
}
}
}
- private void rewriteReportPlugins( List plugins, Element pluginRoot, Map
mappedVersions, Map originalVersions,
- String projectId, Element properties,
ReleaseResult result )
+ private void rewriteReportPlugins( List plugins, Element pluginRoot, Map
mappedVersions,
+ Map resolvedSnapshotDependencies, Map
originalVersions, String projectId,
+ Element properties, ReleaseResult
result )
throws ReleaseExecutionException, ReleaseFailureException
{
if ( plugins != null )
@@ -388,28 +393,38 @@
// 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, projectId,
- properties, result );
+ updateDomVersion( plugin.getGroupId(),
plugin.getArtifactId(), mappedVersions,
+ resolvedSnapshotDependencies,
plugin.getVersion(), originalVersions, "plugins",
+ "plugin", pluginRoot, projectId,
properties, result );
}
}
}
}
- private void updateDomVersion( String groupId, String artifactId, Map
mappedVersions, String version,
- Map originalVersions, String groupTagName,
String tagName, Element dependencyRoot,
- String projectId, Element properties,
ReleaseResult result )
+ private void updateDomVersion( String groupId, String artifactId, Map
mappedVersions,
+ Map resolvedSnapshotDepedencies, String
version, Map originalVersions,
+ String groupTagName, String tagName,
Element dependencyRoot, String projectId,
+ Element properties, ReleaseResult result )
throws ReleaseExecutionException, ReleaseFailureException
{
String key = ArtifactUtils.versionlessKey( groupId, artifactId );
String mappedVersion = (String) mappedVersions.get( key );
+ String resolvedSnapshotVersion = getResolvedSnapshotVersion( key,
resolvedSnapshotDepedencies );
Object originalVersion = originalVersions.get( key );
+
+ // workaround
+ if ( originalVersion == null )
+ {
+ originalVersion = getOriginalResolvedSnapshotVersion( key,
resolvedSnapshotDepedencies );
+ }
+
if ( version.equals( originalVersion ) )
{
- if ( mappedVersion != null )
+ if ( ( mappedVersion != null ) || ( resolvedSnapshotVersion !=
null ) )
{
- logInfo( result, "Updating " + artifactId + " to " +
mappedVersion );
+ logInfo( result, "Updating " + artifactId + " to " +
+ ( ( mappedVersion != null ) ? mappedVersion :
resolvedSnapshotVersion ) );
try
{
@@ -435,6 +450,12 @@
// avoid if in management
if ( versionElement != null )
{
+ if ( mappedVersion == null )
+ {
+ versionElement.setText(
resolvedSnapshotVersion );
+ return;
+ }
+
String versionText = versionElement.getTextTrim();
// avoid if it was not originally set to the
original value (it may be an expression), unless mapped version differs
@@ -443,8 +464,8 @@
{
versionElement.setText( mappedVersion );
}
- else if ( versionText.matches(
"\\$\\{project.+\\}" )
- || versionText.matches( "\\$\\{pom.+\\}" ) )
+ else if ( versionText.matches(
"\\$\\{project.+\\}" ) ||
+ versionText.matches( "\\$\\{pom.+\\}" ) )
{
logInfo( result, "Ignoring artifact version
update for expression: " + versionText );
//ignore... we cannot update this expression
@@ -475,8 +496,8 @@
else
{
// the expression used to define the
version of this artifact may be inherited
- throw new ReleaseFailureException( "The
version could not be updated: " +
- versionText );
+ throw new ReleaseFailureException(
+ "The version could not be updated: " +
versionText );
}
}
else
@@ -623,6 +644,8 @@
return result;
}
+ protected abstract String getResolvedSnapshotVersion( String
artifactVersionlessKey, Map resolvedSnapshots );
+
protected abstract Map getOriginalVersionMap( ReleaseDescriptor
releaseDescriptor, List reactorProjects );
protected abstract Map getNextVersionMap( ReleaseDescriptor
releaseDescriptor );
@@ -631,6 +654,20 @@
ReleaseDescriptor releaseDescriptor,
String projectId,
ScmRepository scmRepository,
ReleaseResult result )
throws ReleaseExecutionException;
+
+ protected String getOriginalResolvedSnapshotVersion( String
artifactVersionlessKey, Map resolvedSnapshots )
+ {
+ Map versionsMap = (Map) resolvedSnapshots.get( artifactVersionlessKey
);
+
+ if ( versionsMap != null )
+ {
+ return (String) ( versionsMap.get(
ReleaseDescriptor.ORIGINAL_VERSION ) );
+ }
+ else
+ {
+ return null;
+ }
+ }
protected Element rewriteElement( String name, String value, Element root,
Namespace namespace )
{
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
---
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
(original)
+++
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
Mon Feb 19 16:04:04 2007
@@ -29,12 +29,16 @@
import org.apache.maven.shared.release.ReleaseFailureException;
import org.apache.maven.shared.release.ReleaseResult;
import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.versions.DefaultVersionInfo;
+import org.apache.maven.shared.release.versions.VersionInfo;
+import org.apache.maven.shared.release.versions.VersionParseException;
import org.codehaus.plexus.components.interactivity.Prompter;
import org.codehaus.plexus.components.interactivity.PrompterException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -51,6 +55,26 @@
public class CheckDependencySnapshotsPhase
extends AbstractReleasePhase
{
+ public static final String RESOLVE_SNAPSHOT_MESSAGE = "There are still
some remaining snapshot dependencies.";
+
+ public static final String RESOLVE_SNAPSHOT_PROMPT = "Do you want to
resolve them now?";
+
+ public static final String RESOLVE_SNAPSHOT_TYPE_MESSAGE = "Dependency
type to resolve,";
+
+ public static final String RESOLVE_SNAPSHOT_TYPE_PROMPT =
+ "specify the selection number ( 0:All 1:Project Dependencies 2:Plugins
3:Reports 4:Extensions ):";
+
+ public static final String RESOLVE_ALL_SNAPSHOT_MESSAGE = "Resolve All
Snapshots.";
+
+ public static final String
RESOLVE_ALL_PROJECT_DEPENDENCIES_SNAPSHOT_MESSAGE =
+ "Resolve Project Dependency Snapshots.";
+
+ public static final String RESOLVE_ALL_REPORTS_SNAPSHOT_MESSAGE = "Resolve
Report Dependency Snapshots.";
+
+ public static final String RESOLVE_ALL_EXTENSIONS_SNAPSHOT_MESSAGE =
"Resolve Extension Dependency Snapshots.";
+
+ public static final String RESOLVE_ALL_PLUGIN_SNAPSHOT_MESSAGE = "Resolve
Plugin Dependency Snapshots.";
+
/**
* Component used to prompt for input.
*/
@@ -86,6 +110,9 @@
throws ReleaseFailureException, ReleaseExecutionException
{
Set snapshotDependencies = new HashSet();
+ Set snapshotReportDependencies = new HashSet();
+ Set snapshotExtensionsDependencies = new HashSet();
+ Set snapshotPluginDependencies = new HashSet();
if ( project.getParentArtifact() != null )
{
@@ -149,7 +176,7 @@
if ( addToFailures )
{
- snapshotDependencies.add( artifact );
+ snapshotPluginDependencies.add( artifact );
}
}
}
@@ -160,7 +187,8 @@
if ( checkArtifact( artifact, originalVersions ) )
{
- snapshotDependencies.add( artifact );
+ //snapshotDependencies.add( artifact );
+ snapshotReportDependencies.add( artifact );
}
}
@@ -170,32 +198,33 @@
if ( checkArtifact( artifact, originalVersions ) )
{
- snapshotDependencies.add( artifact );
+ snapshotExtensionsDependencies.add( artifact );
}
}
- if ( !snapshotDependencies.isEmpty() )
+ if ( !snapshotDependencies.isEmpty() ||
!snapshotReportDependencies.isEmpty() ||
+ !snapshotExtensionsDependencies.isEmpty() ||
!snapshotPluginDependencies.isEmpty() )
{
- List snapshotsList = new ArrayList( snapshotDependencies );
-
- Collections.sort( snapshotsList );
-
- StringBuffer message = new StringBuffer();
-
- for ( Iterator i = snapshotsList.iterator(); i.hasNext(); )
+ if ( releaseDescriptor.isInteractive() )
{
- Artifact artifact = (Artifact) i.next();
+ resolveSnapshots( snapshotDependencies,
snapshotReportDependencies, snapshotExtensionsDependencies,
+ snapshotPluginDependencies,
releaseDescriptor );
+ }
- message.append( " " );
+ if ( !snapshotDependencies.isEmpty() ||
!snapshotReportDependencies.isEmpty() ||
+ !snapshotExtensionsDependencies.isEmpty() ||
!snapshotPluginDependencies.isEmpty() )
+ {
+ StringBuffer message = new StringBuffer();
- message.append( artifact );
+ printSnapshotDependencies( snapshotDependencies, message );
+ printSnapshotDependencies( snapshotReportDependencies, message
);
+ printSnapshotDependencies( snapshotExtensionsDependencies,
message );
+ printSnapshotDependencies( snapshotPluginDependencies, message
);
+ message.append( "in project '" + project.getName() + "' (" +
project.getId() + ")" );
- message.append( "\n" );
+ throw new ReleaseFailureException(
+ "Can't release project due to non released dependencies
:\n" + message );
}
-
- message.append( "in project '" + project.getName() + "' (" +
project.getId() + ")" );
-
- throw new ReleaseFailureException( "Can't release project due to
non released dependencies :\n" + message );
}
}
@@ -219,5 +248,132 @@
public void setPrompter( Prompter prompter )
{
this.prompter = prompter;
+ }
+
+ private StringBuffer printSnapshotDependencies( Set snapshotsSet,
StringBuffer message )
+ {
+ List snapshotsList = new ArrayList( snapshotsSet );
+
+ Collections.sort( snapshotsList );
+
+ for ( Iterator i = snapshotsList.iterator(); i.hasNext(); )
+ {
+ Artifact artifact = (Artifact) i.next();
+
+ message.append( " " );
+
+ message.append( artifact );
+
+ message.append( "\n" );
+ }
+
+ return message;
+ }
+
+ private void resolveSnapshots( Set projectDependencies, Set
reportDependencies, Set extensionDependencies,
+ Set pluginDependencies, ReleaseDescriptor
releaseDescriptor )
+ throws ReleaseExecutionException
+ {
+ try
+ {
+ prompter.showMessage( RESOLVE_SNAPSHOT_MESSAGE );
+ String result =
+ prompter.prompt( RESOLVE_SNAPSHOT_PROMPT, Arrays.asList( new
String[]{"yes", "no"} ), "no" );
+
+ if ( result.toLowerCase().startsWith( "y" ) )
+ {
+ Set snapshotSet = new HashSet();
+ Map resolvedSnapshots = null;
+ prompter.showMessage( RESOLVE_SNAPSHOT_TYPE_MESSAGE );
+ result = prompter.prompt( RESOLVE_SNAPSHOT_TYPE_PROMPT,
+ Arrays.asList( new String[]{"0",
"1", "2", "3"} ), "1" );
+
+ switch ( Integer.parseInt( result.toLowerCase() ) )
+ {
+ // all
+ case 0:
+ prompter.showMessage( RESOLVE_ALL_SNAPSHOT_MESSAGE );
+ snapshotSet.addAll( projectDependencies );
+ snapshotSet.addAll( reportDependencies );
+ snapshotSet.addAll( extensionDependencies );
+ snapshotSet.addAll( pluginDependencies );
+ resolvedSnapshots = processSnapshot( snapshotSet );
+ break;
+
+ // project dependencies
+ case 1:
+ prompter.showMessage(
RESOLVE_ALL_PROJECT_DEPENDENCIES_SNAPSHOT_MESSAGE );
+ resolvedSnapshots = processSnapshot(
projectDependencies );
+ break;
+
+ // plugins
+ case 2:
+ prompter.showMessage(
RESOLVE_ALL_PLUGIN_SNAPSHOT_MESSAGE );
+ resolvedSnapshots = processSnapshot(
pluginDependencies );
+ break;
+
+ // reports
+ case 3:
+ prompter.showMessage(
RESOLVE_ALL_REPORTS_SNAPSHOT_MESSAGE );
+ resolvedSnapshots = processSnapshot(
reportDependencies );
+ break;
+
+ // extensions
+ case 4:
+ prompter.showMessage(
RESOLVE_ALL_EXTENSIONS_SNAPSHOT_MESSAGE );
+ resolvedSnapshots = processSnapshot(
extensionDependencies );
+ break;
+ }
+
+ releaseDescriptor.setResolvedSnapshotDependencies(
resolvedSnapshots );
+ }
+ }
+ catch ( PrompterException e )
+ {
+ throw new ReleaseExecutionException( e.getMessage(), e );
+ }
+ catch ( VersionParseException e )
+ {
+ throw new ReleaseExecutionException( e.getMessage(), e );
+ }
+ }
+
+ private Map processSnapshot( Set snapshotSet )
+ throws PrompterException, VersionParseException
+ {
+ Map resolvedSnapshots = new HashMap();
+ Iterator iterator = snapshotSet.iterator();
+ Artifact currentArtifact;
+ String result;
+ VersionInfo version;
+
+ while ( iterator.hasNext() )
+ {
+ currentArtifact = (Artifact) iterator.next();
+ version = new DefaultVersionInfo( currentArtifact.getVersion() );
+
+ result = prompter.prompt( "'" + ArtifactUtils.versionlessKey(
currentArtifact ) + "' set to release?",
+ Arrays.asList( new String[]{"yes", "no"}
), "yes" );
+
+ if ( result.toLowerCase().startsWith( "y" ) )
+ {
+ VersionInfo nextDevelopmentVersion;
+ Map versionMap = new HashMap();
+
+ iterator.remove();
+ result = prompter.prompt( "What is the next development
version?", Collections.singletonList(
+ version.getNextVersion().getSnapshotVersionString() ),
+
version.getNextVersion().getSnapshotVersionString() );
+
+ nextDevelopmentVersion = new DefaultVersionInfo( result );
+ versionMap.put( ReleaseDescriptor.ORIGINAL_VERSION,
version.toString() );
+ versionMap.put( ReleaseDescriptor.DEVELOPMENT_KEY,
nextDevelopmentVersion.getSnapshotVersionString() );
+ versionMap.put( ReleaseDescriptor.RELEASE_KEY,
version.getReleaseVersionString() );
+
+ resolvedSnapshots.put( ArtifactUtils.versionlessKey(
currentArtifact ), versionMap );
+ }
+ }
+
+ return resolvedSnapshots;
}
}
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
---
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java
(original)
+++
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java
Mon Feb 19 16:04:04 2007
@@ -101,4 +101,18 @@
{
return releaseDescriptor.getDevelopmentVersions();
}
+
+ protected String getResolvedSnapshotVersion( String
artifactVersionlessKey, Map resolvedSnapshotsMap )
+ {
+ Map versionsMap = (Map) resolvedSnapshotsMap.get(
artifactVersionlessKey );
+
+ if ( versionsMap != null )
+ {
+ return (String) ( versionsMap.get(
ReleaseDescriptor.DEVELOPMENT_KEY ) );
+ }
+ else
+ {
+ return null;
+ }
+ }
}
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
---
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
(original)
+++
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
Mon Feb 19 16:04:04 2007
@@ -162,4 +162,18 @@
{
return releaseDescriptor.getReleaseVersions();
}
-}
\ No newline at end of file
+
+ protected String getResolvedSnapshotVersion( String
artifactVersionlessKey, Map resolvedSnapshotsMap )
+ {
+ Map versionsMap = (Map) resolvedSnapshotsMap.get(
artifactVersionlessKey );
+
+ if ( versionsMap != null )
+ {
+ return (String) ( versionsMap.get( ReleaseDescriptor.RELEASE_KEY )
);
+ }
+ else
+ {
+ return null;
+ }
+ }
+}
Modified:
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
---
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
(original)
+++
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
Mon Feb 19 16:04:04 2007
@@ -161,6 +161,18 @@
</description>
</field>
<field>
+ <name>resolvedSnapshotDependencies</name>
+ <version>1.0.0</version>
+ <type>Map</type>
+ <association stash.keyType="String">
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ <description>
+ A map of resolved snapshot dependencies versions.
+ </description>
+ </field>
+ <field>
<name>originalScmInfo</name>
<version>1.0.0</version>
<type>Map</type>
@@ -257,6 +269,31 @@
<codeSegment>
<version>1.0.0</version>
<code><![CDATA[
+ public static final String DEVELOPMENT_KEY = "dev";
+
+ public static final String RELEASE_KEY = "rel";
+
+ public static final String ORIGINAL_VERSION = "original";
+
+ /**
+ * Map a given snapshot dependency to a specified version from when it is
released.
+ *
+ */
+ public void mapResolvedSnapshotDependencies( String artifactName, String
releaseVersion, String developmentVersion )
+ {
+ if (resolvedSnapshotDependencies == null) {
+ resolvedSnapshotDependencies = new java.util.HashMap();
+ } else {
+ assert !resolvedSnapshotDependencies.containsKey( artifactName );
+ }
+
+ java.util.Map versionsMap = new java.util.HashMap();
+
+ versionsMap.put( DEVELOPMENT_KEY, developmentVersion );
+ versionsMap.put( RELEASE_KEY, releaseVersion );
+ resolvedSnapshotDependencies.put( artifactName, versionsMap );
+ }
+
/**
* Map a given project to a specified version from when it is released.
*
@@ -333,6 +370,34 @@
}
}
return originalVersions;
+ }
+
+ /**
+ * Retrieve the release version for the resolved snapshot dependency.
+ *
+ */
+ public String getDependencyDevelopmentVersion( String artifactConflictId )
+ {
+ if ( ( resolvedSnapshotDependencies == null ) && (
resolvedSnapshotDependencies.containsKey( artifactConflictId ) ) )
+ {
+ java.util.Map versionMap = ( java.util.Map )
resolvedSnapshotDependencies.get( artifactConflictId );
+ return ( String ) versionMap.get( DEVELOPMENT_KEY );
+ }
+ return null;
+ }
+
+ /**
+ * Retrieve the release version for the resolved snapshot dependency.
+ *
+ */
+ public String getDependencyReleaseVersion( String artifactConflictId )
+ {
+ if ( ( resolvedSnapshotDependencies == null ) && (
resolvedSnapshotDependencies.containsKey( artifactConflictId ) ) )
+ {
+ java.util.Map versionMap = ( java.util.Map )
resolvedSnapshotDependencies.get( artifactConflictId );
+ return ( String ) versionMap.get( RELEASE_KEY );
+ }
+ return null;
}
public boolean equals( Object obj )
Modified:
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
---
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java
(original)
+++
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java
Mon Feb 19 16:04:04 2007
@@ -319,6 +319,7 @@
assertTrue( "Expected no release version mappings",
config.getReleaseVersions().isEmpty() );
assertTrue( "Expected no dev version mappings",
config.getDevelopmentVersions().isEmpty() );
assertTrue( "Expected no scm mappings",
config.getOriginalScmInfo().isEmpty() );
+ assertNotNull( "Expected resolved snapshot dependencies map",
config.getResolvedSnapshotDependencies() );
}
public ReleaseDescriptor createMergeConfiguration()
@@ -369,6 +370,8 @@
scm.setTag( null );
scm.setDeveloperConnection( null );
expected.mapOriginalScmInfo( "groupId:artifactId2", scm );
+ expected.mapResolvedSnapshotDependencies( "external:artifactId",
"1.0", "1.1-SNAPSHOT" );
+
return expected;
}
Modified:
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
---
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java
(original)
+++
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java
Mon Feb 19 16:04:04 2007
@@ -30,6 +30,8 @@
import org.jmock.core.stub.ThrowStub;
import java.util.List;
+import java.util.Map;
+import java.util.Stack;
/**
* Test the dependency snapshot check phase.
@@ -117,6 +119,8 @@
Mock mockPrompter = new Mock( Prompter.class );
mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt"
).will( new ReturnStub( "no" ) );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt"
).will( new ReturnStub( "no" ) );
phase.setPrompter( (Prompter) mockPrompter.proxy() );
try
@@ -133,6 +137,8 @@
mockPrompter.reset();
mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt"
).will( new ReturnStub( "no" ) );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt"
).will( new ReturnStub( "no" ) );
try
{
@@ -183,6 +189,8 @@
Mock mockPrompter = new Mock( Prompter.class );
mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt"
).will( new ReturnStub( "donkey" ) );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt"
).will( new ReturnStub( "no" ) );
phase.setPrompter( (Prompter) mockPrompter.proxy() );
try
@@ -199,6 +207,8 @@
mockPrompter.reset();
mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt"
).will( new ReturnStub( "donkey" ) );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt"
).will( new ReturnStub( "no" ) );
try
{
@@ -258,8 +268,14 @@
public void testSnapshotDependenciesInProjectOnlyMismatchedVersion()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE,
"check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects(
"internal-differing-snapshot-dependencies" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -272,6 +288,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -332,6 +350,8 @@
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects(
"external-managed-snapshot-dependency" );
+ releaseDescriptor.setInteractive( false );
+
try
{
phase.execute( releaseDescriptor, null, reactorProjects );
@@ -355,12 +375,14 @@
}
}
- public void testSnapshotDependenciesOutsideProjectOnly()
+ public void testSnapshotDependenciesOutsideProjectOnlyNonInteractive()
throws Exception
{
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects(
"external-snapshot-dependencies" );
+ releaseDescriptor.setInteractive( false );
+
try
{
phase.execute( releaseDescriptor, null, reactorProjects );
@@ -384,11 +406,82 @@
}
}
+ public void
testSnapshotDependenciesOutsideProjectOnlyInteractiveWithSnapshotsResolved()
+ throws Exception
+ {
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE,
"check-dependency-snapshots" );
+
+ ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
+ List reactorProjects = createDescriptorFromProjects(
"external-snapshot-dependencies" );
+ Mock mockPrompter;
+ Stack responseStack = new Stack();
+
+ responseStack.push( "yes" );
+ responseStack.push( "1" );
+ responseStack.push( "yes" );
+ responseStack.push( "1.1-SNAPSHOT" );
+ mockPrompter = createMockPrompter( "prompt", responseStack );
+
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+
+ phase.setPrompter( (Prompter) mockPrompter.proxy() );
+
+ try
+ {
+ phase.execute( releaseDescriptor, null, reactorProjects );
+ }
+ catch ( ReleaseFailureException e )
+ {
+ fail( e.getMessage() );
+ }
+
+ // validate
+ Map versionsMap = (Map)
releaseDescriptor.getResolvedSnapshotDependencies().get( "external:artifactId"
);
+
+ assertNotNull( versionsMap );
+ assertEquals( "1.1-SNAPSHOT", versionsMap.get(
ReleaseDescriptor.DEVELOPMENT_KEY ) );
+ assertEquals( "1.0", versionsMap.get( ReleaseDescriptor.RELEASE_KEY )
);
+
+ releaseDescriptor = new ReleaseDescriptor();
+
+ responseStack.push( "yes" );
+ responseStack.push( "1" );
+ responseStack.push( "yes" );
+ responseStack.push( "1.1-SNAPSHOT" );
+ mockPrompter = createMockPrompter( "prompt", responseStack );
+
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+
+ phase.setPrompter( (Prompter) mockPrompter.proxy() );
+
+ try
+ {
+ phase.simulate( releaseDescriptor, null, reactorProjects );
+ }
+ catch ( ReleaseFailureException e )
+ {
+ fail( e.getMessage() );
+ }
+ }
+
public void testSnapshotDependenciesInsideAndOutsideProject()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE,
"check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects(
"internal-and-external-snapshot-dependencies" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -401,6 +494,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -444,8 +539,14 @@
public void testSnapshotReportPluginsOutsideProjectOnly()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE,
"check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects(
"external-snapshot-report-plugins" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -458,6 +559,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -473,8 +576,14 @@
public void testSnapshotReportPluginsInsideAndOutsideProject()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE,
"check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects(
"internal-and-external-snapshot-report-plugins" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -487,6 +596,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -572,8 +683,14 @@
public void testSnapshotExternalManagedPlugin()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE,
"check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects(
"external-managed-snapshot-plugin" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -586,6 +703,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -601,8 +720,14 @@
public void testSnapshotPluginsOutsideProjectOnly()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE,
"check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects(
"external-snapshot-plugins" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -615,6 +740,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -630,8 +757,14 @@
public void testSnapshotPluginsInsideAndOutsideProject()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE,
"check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects(
"internal-and-external-snapshot-plugins" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -644,6 +777,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -659,8 +794,14 @@
public void testSnapshotExternalParent()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE,
"check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects(
"external-snapshot-parent/child" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -673,6 +814,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -702,8 +845,14 @@
public void testSnapshotExternalExtension()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE,
"check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects(
"external-snapshot-extension" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -716,6 +865,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -762,4 +913,57 @@
return createReactorProjects( "check-dependencies/", path, true );
}
+ private Mock createNoMockPrompter()
+ {
+ return createYesNoMockPrompter( false );
+ }
+
+ private Mock createYesMockPrompter()
+ {
+ return createYesNoMockPrompter( true );
+ }
+
+ private Mock createYesNoMockPrompter( boolean yes )
+ {
+ Mock mockPrompter = new Mock( Prompter.class );
+
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt"
).will(
+ new ReturnStub( ( yes ) ? "yes" : "no" ) );
+
+ return mockPrompter;
+ }
+
+ private Mock resetNoMockPrompter( Mock mockPrompter )
+ {
+ return resetYesNoMockPrompter( mockPrompter, false );
+ }
+
+ private Mock resetYesMockPrompter( Mock mockPrompter )
+ {
+ return resetYesNoMockPrompter( mockPrompter, true );
+ }
+
+ private Mock resetYesNoMockPrompter( Mock mockPrompter, boolean yes )
+ {
+ mockPrompter.reset();
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage"
);
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt"
).will(
+ new ReturnStub( ( yes ) ? "yes" : "no" ) );
+
+ return mockPrompter;
+ }
+
+ private Mock createMockPrompter( String methodName, Stack responseStack )
+ {
+ Mock mockPrompter = new Mock( Prompter.class );
+
+ while ( !responseStack.empty() )
+ {
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( methodName
).will(
+ new ReturnStub( responseStack.pop() ) );
+ }
+
+ return mockPrompter;
+ }
}
Modified:
maven/release/trunk/maven-release-manager/src/test/resources/release.properties
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/release.properties?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
---
maven/release/trunk/maven-release-manager/src/test/resources/release.properties
(original)
+++
maven/release/trunk/maven-release-manager/src/test/resources/release.properties
Mon Feb 19 16:04:04 2007
@@ -42,4 +42,7 @@
project.scm.groupId\:artifactId1.tag=tag
project.scm.groupId\:artifactId2.connection=connection2
-project.scm.groupId\:artifactId2.url=url2
\ No newline at end of file
+project.scm.groupId\:artifactId2.url=url2
+
+dependency.external\:artifactId.development=1.1-SNAPSHOT
+dependency.external\:artifactId.release=1.0