You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ch...@apache.org on 2015/05/07 04:09:10 UTC
[1/4] maven-scm git commit: Change: Added consumer
Repository: maven-scm
Updated Branches:
refs/heads/master c76eb1f11 -> dd3a18d05
Change: Added consumer
Project: http://git-wip-us.apache.org/repos/asf/maven-scm/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-scm/commit/8dd21b9c
Tree: http://git-wip-us.apache.org/repos/asf/maven-scm/tree/8dd21b9c
Diff: http://git-wip-us.apache.org/repos/asf/maven-scm/diff/8dd21b9c
Branch: refs/heads/master
Commit: 8dd21b9c2477539cc768c548e4cd877c29aac1ff
Parents: c76eb1f
Author: Chris Graham <ch...@apache.org>
Authored: Sat Apr 4 21:33:44 2015 +1100
Committer: Chris Graham <ch...@apache.org>
Committed: Wed May 6 13:29:55 2015 +1000
----------------------------------------------------------------------
.../scm/provider/ScmProviderRepository.java | 44 ++++++++
.../prepare.groovy | 4 +
.../maven/scm/plugin/AbstractScmMojo.java | 14 +++
.../provider/jazz/command/JazzConstants.java | 12 ++
.../command/checkin/JazzCheckInCommand.java | 31 ++++++
.../jazz/command/status/JazzStatusConsumer.java | 111 +++++++++++++++++--
.../repository/JazzScmProviderRepository.java | 23 +++-
.../command/checkin/JazzCheckInCommandTest.java | 12 ++
.../command/status/JazzStatusCommandTest.java | 1 +
9 files changed, 242 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/8dd21b9c/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java
----------------------------------------------------------------------
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java
index 58e2a50..c55b525 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java
@@ -22,6 +22,7 @@ package org.apache.maven.scm.provider;
/**
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
* @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @author <a href="mailto:ChrisGWarp@gmail.com">Chris Graham</a>
*
*/
public abstract class ScmProviderRepository
@@ -38,6 +39,31 @@ public abstract class ScmProviderRepository
private boolean pushChanges = true;
/**
+ * Some SCMs have the concept of a work item (or task) which may need to be
+ * specified to allow changes to be pushed or delivered to a target.
+ * This allows you to answer the question: For this workItem, what changed?
+ * Auditors have been known to love this... :)
+ * SCMs known to implement this are:
+ * <ul>
+ * <li>IBM Rational Team Concert (workItem)
+ * <li>Microsoft Team Foundation Server (workItem)
+ * <li>IBM Rational ClearQuest Enabled UCM ClearCase (task)
+ * </ul>
+ * There may be others that support this feature.
+ * <P>
+ * These SCMs can be configured to reject a push/deliver unless additional
+ * information (by way of a workItem/task) is supplied.
+ * <P>
+ * This field is only relevant when pushChanges = true.
+ * <P>
+ * It should be noted however, when pushChanges = true, a workItem does not
+ * need to be set, as the need for a workItem may be optional.
+ *
+ * @since 1.9.5
+ */
+ private String workItem;
+
+ /**
* @return The user.
*/
public String getUser()
@@ -95,6 +121,24 @@ public abstract class ScmProviderRepository
}
/**
+ * @return The workItem.
+ */
+ public String getWorkItem()
+ {
+ return workItem;
+ }
+
+ /**
+ * Set the workItem.
+ *
+ * @param user The workItem.
+ */
+ public void setWorkItem( String workItem )
+ {
+ this.workItem = workItem;
+ }
+
+ /**
* Will checkouts using this repository be persisted so they can
* be refreshed in the future? This property is of concern to SCMs
* like Perforce and Clearcase where the server must track where a
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/8dd21b9c/maven-scm-plugin/src/it/scm-741-validate-scm-url-matches-working-copy/prepare.groovy
----------------------------------------------------------------------
diff --git a/maven-scm-plugin/src/it/scm-741-validate-scm-url-matches-working-copy/prepare.groovy b/maven-scm-plugin/src/it/scm-741-validate-scm-url-matches-working-copy/prepare.groovy
index 40cf6ff..a4915ee 100644
--- a/maven-scm-plugin/src/it/scm-741-validate-scm-url-matches-working-copy/prepare.groovy
+++ b/maven-scm-plugin/src/it/scm-741-validate-scm-url-matches-working-copy/prepare.groovy
@@ -21,6 +21,8 @@
// BUT we actually don't store that special versioning directory as-is to prevent potentially confusing
// (to say the least) a svn checkout of the maven-scm project.
//
+
+println "prepare.groovy:"
File dotSvnDir = new File( basedir, 'dotSvnDir' )
assert dotSvnDir.exists()
assert dotSvnDir.isDirectory()
@@ -28,6 +30,7 @@ assert dotSvnDir.renameTo( new File( basedir, '.svn' ) )
println "svn --version"
def proc = "svn --version".execute()
+proc.consumeProcessOutput()
proc.waitFor()
println "return code: ${ proc.exitValue()}"
println "stderr: ${proc.err.text}"
@@ -35,6 +38,7 @@ println "stdout: ${proc.in.text}"
println "svn upgrade $basedir"
proc = ["svn", "upgrade", "$basedir"].execute()
+proc.consumeProcessOutput()
proc.waitFor()
println "return code: ${ proc.exitValue()}"
println "stderr: ${proc.err.text}"
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/8dd21b9c/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java
----------------------------------------------------------------------
diff --git a/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java b/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java
index c7533b8..a18e319 100644
--- a/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java
+++ b/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java
@@ -170,6 +170,15 @@ public abstract class AbstractScmMojo
@Parameter( property = "pushChanges", defaultValue = "true" )
private boolean pushChanges;
+ /**
+ * A workItem for SCMs like RTC, TFS etc, that may require additional
+ * information to perform a pushChange operation.
+ *
+ * @since 1.9.5
+ */
+ @Parameter( property = "workItem" )
+ private String workItem;
+
/** {@inheritDoc} */
public void execute()
throws MojoExecutionException
@@ -285,6 +294,11 @@ public abstract class AbstractScmMojo
providerRepo.setPushChanges( pushChanges );
+ if ( !StringUtils.isEmpty( workItem ) )
+ {
+ providerRepo.setWorkItem( workItem );
+ }
+
if ( !StringUtils.isEmpty( username ) )
{
providerRepo.setUser( username );
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/8dd21b9c/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java
index 2a85f38..9e0b2ec 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java
@@ -107,6 +107,11 @@ public class JazzConstants
*/
public static final String CMD_STATUS = "status";
+ /**
+ * Changeset command - Modifies change sets.
+ */
+ public static final String CMD_CHANGESET = "changeset";
+
// -------------------------------------------------------------------------------------------------
// SUB-COMMANDS
// -------------------------------------------------------------------------------------------------
@@ -159,6 +164,13 @@ public class JazzConstants
*/
public static final String CMD_SUB_PROMOTE = "promote";
+ // CHANGESET sub commands
+
+ /**
+ * Associate a Work Item with a change set.
+ */
+ public static final String CMD_SUB_ASSOCIATE = "associate";
+
// -------------------------------------------------------------------------------------------------
// ARGUMENTS
// -------------------------------------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/8dd21b9c/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java
index 7f6ab3c..8d35734 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java
@@ -115,6 +115,24 @@ public class JazzCheckInCommand
errConsumer.getOutput(), false );
}
+ // Check to see if we've had a workItem defined (via -DworkItem=XXXX)
+ JazzScmProviderRepository jazzRepo = (JazzScmProviderRepository) repository;
+ if ( jazzRepo.isPushChangesAndHaveFlowTargets() && StringUtils.isNotEmpty( jazzRepo.getWorkItem() ) )
+ {
+ // Associate a work item if we need too.
+ JazzScmCommand changesetAssociateCmd = createChangesetAssociateCommand( repository );
+ outputConsumer = new DebugLoggerConsumer( getLogger() );
+ errConsumer = new ErrorConsumer( getLogger() );
+
+ status = changesetAssociateCmd.execute( outputConsumer, errConsumer );
+ if ( status != 0 || errConsumer.hasBeenFed() )
+ {
+ return new CheckInScmResult( changesetAssociateCmd.getCommandString(),
+ "Error code for Jazz SCM changeset associate command - " + status,
+ errConsumer.getOutput(), false );
+ }
+ }
+
// Now check in the files themselves.
return executeCheckInCommand( repository, fileSet, scmVersion );
}
@@ -161,6 +179,19 @@ public class JazzCheckInCommand
return command;
}
+ public JazzScmCommand createChangesetAssociateCommand( ScmProviderRepository repo )
+ {
+ JazzScmCommand command =
+ new JazzScmCommand( JazzConstants.CMD_CHANGESET, JazzConstants.CMD_SUB_ASSOCIATE, repo, false, null,
+ getLogger() );
+ // Add the change set alias
+ JazzScmProviderRepository jazzRepo = (JazzScmProviderRepository) repo;
+ command.addArgument( "" + jazzRepo.getChangeSetAlias() );
+ // Add the work item number
+ command.addArgument( jazzRepo.getWorkItem() );
+ return command;
+ }
+
public JazzScmCommand createCheckInCommand( ScmProviderRepository repo, ScmFileSet fileSet )
{
JazzScmCommand command =
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/8dd21b9c/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java
index 498a32e..0ac426f 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java
@@ -65,6 +65,37 @@ public class JazzStatusConsumer
// remote calls to the server. They are not to be shared across machines (ie don't make them global, public
// or persistent).
//
+// We can also have a changeset with a work item associated with it:
+//
+// Workspace: (1156) "GPDBWorkspace" <-> (1157) "GPDBStream"
+// Component: (1158) "GPDB"
+// Baseline: (2362) 48 "GPDB-1.0.50"
+// Outgoing:
+// Change sets:
+// (2366) *--@ 62 "Release the next release of GPDB." - "Man Created Changeset: X.Y.Z" 28-Apr-2015 07:55 PM
+//
+// Or not:
+//
+// Workspace: (1156) "GPDBWorkspace" <-> (1157) "GPDBStream"
+// Component: (1158) "GPDB"
+// Baseline: (2362) 48 "GPDB-1.0.50"
+// Outgoing:
+// Change sets:
+// (2365) ---@ "This is my changeset comment." 26-Apr-2015 09:36 PM
+//
+// We can also have a multiple changesets, although, if the correct build procedure has been followed, namely we
+// start with a clean starting point, with nothing outstanding, then we should never see this (famous last words!)
+//
+// Workspace: (1156) "GPDBWorkspace" <-> (1157) "GPDBStream"
+// Component: (1158) "GPDB"
+// Baseline: (2362) 48 "GPDB-1.0.50"
+// Outgoing:
+// Change sets:
+// (2366) *--@ 62 "Release the next release of GPDB." - "Man Created Changeset: X.Y.Z" 28-Apr-2015 07:55 PM
+// (2365) ---@ "This is my changeset comment." 26-Apr-2015 09:36 PM
+//
+// Because the "Change sets:" line exists by itself, and it is followed by the changeset
+// lines, we need to implement a state machine... (seenChangeSets)
// Workspace: (1000) "BogusRepositoryWorkspace" <-> (1000) "BogusRepositoryWorkspace"
// Workspace: (1156) "GPDBWorkspace" <-> (1157) "GPDBStream"
@@ -81,8 +112,13 @@ public class JazzStatusConsumer
// Baseline: (1128) 27 "BogusTestJazz-3.0.0.40"
private static final Pattern BASELINE_PATTERN = Pattern.compile( "\\((\\d+)\\) (\\d+) \"(.*)\"" );
- // Additional data we collect. (eye catchers)
+ // (2365) ---@ "This is my changeset comment." 26-Apr-2015 09:36 PM
+ private static final Pattern CHANGESET_PATTERN = Pattern.compile( "\\((\\d+)\\) (.*)" );
+ //
+ // Additional data we collect. (eye catchers)
+ //
+
/**
* The "Status" command output line that contains the "Workspace" name.
*/
@@ -94,10 +130,16 @@ public class JazzStatusConsumer
public static final String STATUS_CMD_COMPONENT = "Component:";
/**
- * The "Status" command output line that contains the "Workspace" name.
+ * The "Status" command output line that contains the "Baseline" name.
*/
public static final String STATUS_CMD_BASELINE = "Baseline:";
+ /**
+ * The "Status" command output line that contains the line "Change sets:".
+ * This will be followed by the
+ */
+ public static final String STATUS_CMD_CHANGE_SETS = "Change sets:";
+
// File Status Commands (eye catchers)
/**
@@ -127,6 +169,11 @@ public class JazzStatusConsumer
private List<ScmFile> fChangedFiles = new ArrayList<ScmFile>();
/**
+ * Implement a simple state machine: Have we seen the "Change sets:" line or not?
+ */
+ private boolean seenChangeSets = false;
+
+ /**
* Constructor for our "scm status" consumer.
*
* @param repo The JazzScmProviderRepository being used.
@@ -162,6 +209,14 @@ public class JazzStatusConsumer
{
extractChangedFile( line );
}
+ if ( containsChangeSets( line ) )
+ {
+ seenChangeSets = true;
+ }
+ if ( seenChangeSets )
+ {
+ extractChangeSetAlias( line );
+ }
}
private boolean containsWorkspace( String line )
@@ -267,9 +322,9 @@ public class JazzStatusConsumer
if ( getLogger().isDebugEnabled() )
{
getLogger().debug( "Successfully parsed \"Baseline:\" line:" );
- getLogger().debug( " baselineAlias = " + baselineAlias );
- getLogger().debug( " baselineId = " + baselineId );
- getLogger().debug( " baseline = " + baseline );
+ getLogger().debug( " baselineAlias = " + baselineAlias );
+ getLogger().debug( " baselineId = " + baselineId );
+ getLogger().debug( " baseline = " + baseline );
}
jazzRepository.setBaseline( baseline );
}
@@ -314,10 +369,9 @@ public class JazzStatusConsumer
if ( getLogger().isDebugEnabled() )
{
- getLogger().debug( " Line : '" + line + "'" );
- getLogger().debug( " Extracted filePath : '" + filePath + "'" );
- getLogger().debug( " Extracted flag : '" + flag + "'" );
- getLogger().debug( " Extracted status : '" + status + "'" );
+ getLogger().debug( " Extracted filePath : '" + filePath + "'" );
+ getLogger().debug( " Extracted flag : '" + flag + "'" );
+ getLogger().debug( " Extracted status : '" + status + "'" );
}
fChangedFiles.add( new ScmFile( filePath, status ) );
@@ -327,4 +381,43 @@ public class JazzStatusConsumer
{
return fChangedFiles;
}
+
+ private boolean containsChangeSets( String line )
+ {
+ return line.trim().startsWith( STATUS_CMD_CHANGE_SETS );
+ }
+
+ private void extractChangeSetAlias( String line )
+ {
+ // (2365) ---@ "This is my changeset comment." 26-Apr-2015 09:36 PM
+
+ Matcher matcher = CHANGESET_PATTERN.matcher( line );
+ if ( matcher.find() )
+ {
+ JazzScmProviderRepository jazzRepository = (JazzScmProviderRepository) getRepository();
+
+ int changeSetAlias = Integer.parseInt( matcher.group( 1 ) );
+ if ( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "Successfully parsed post \"Change sets:\" line:" );
+ getLogger().debug( " changeSetAlias = " + changeSetAlias );
+ }
+ jazzRepository.setChangeSetAlias( changeSetAlias );
+ // This is a difficult one. Do I now turn it off or not?
+ seenChangeSets = false;
+ // For the moment I am going too.
+ // If we ever need to support multiple outgoing changesets,
+ // and I can not see how that makes sense in a maven sense,
+ // then we can revisit using a list.
+ // Also, turning if off means that we only look at the first
+ // (and hopefully only!) one.
+ // It also means that if we run across some Incoming: changes,
+ // then we will not pick them up accidently either.
+ //
+ // Another way around this would to be to have a specific
+ // consumer for the create changeset command itself.
+ // That way we would be totally assured that we've picked
+ // up the right Changet Set Alias.
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/8dd21b9c/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java
index 913c704..20d8208 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java
@@ -83,6 +83,11 @@ public class JazzScmProviderRepository
*/
private String fBaseline;
+ /**
+ * The alias of the change set, as returned from the "scm status" command.
+ */
+ private int fChangeSetAlias;
+
// TODO In the future we might expand the details of this repository.
// For example we might extend the scm url to include a stream (as well as the repository workspace)
// This stream could represent the desired flow target of the repository workspace.
@@ -188,7 +193,7 @@ public class JazzScmProviderRepository
}
/**
- * @param streamAlias the streamAlias to set
+ * @param flowTargetAlias the flowTargetAlias to set
*/
public void setFlowTargetAlias( int flowTargetAlias )
{
@@ -244,6 +249,22 @@ public class JazzScmProviderRepository
}
/**
+ * @return The alias of the changeset, as returned from the "scm status" command.
+ */
+ public int getChangeSetAlias()
+ {
+ return fChangeSetAlias;
+ }
+
+ /**
+ * @param fChangeSetAlias the fChangeSetAlias to set
+ */
+ public void setChangeSetAlias( int fChangeSetAlias )
+ {
+ this.fChangeSetAlias = fChangeSetAlias;
+ }
+
+ /**
* {@inheritDoc}
*/
public String toString()
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/8dd21b9c/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java
index b3d53df..55349fd 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java
@@ -55,6 +55,18 @@ public class JazzCheckInCommandTest
assertCommandLine( expected, getWorkingDirectory(), cmd );
}
+ public void testCreateChangesetAssociateCommand()
+ throws Exception
+ {
+ JazzScmProviderRepository repo = getScmProviderRepository();
+ // Populate the values that are normally parsed and set by the StatusConsumer.
+ repo.setWorkItem( "215762" );
+ repo.setChangeSetAlias( 1234 );
+ Commandline cmd = new JazzCheckInCommand().createChangesetAssociateCommand( repo ).getCommandline();
+ String expected = "scm changeset associate --username myUserName --password myPassword 1234 215762";
+ assertCommandLine( expected, getWorkingDirectory(), cmd );
+ }
+
public void testCreateCheckInCommandCheckingInSpecificFiles()
throws Exception
{
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/8dd21b9c/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java
index 37a8e56..acb862e 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java
@@ -83,6 +83,7 @@ public class JazzStatusCommandTest
assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() );
assertEquals( "Component is incorrect!", "SCM Plugins", repo.getComponent() );
assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() );
+ assertEquals( "Change Set Alias is incorrect!", 1008, repo.getChangeSetAlias());
// Test the stream parsing and isPushChanges bits.
assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
[2/4] maven-scm git commit: Updated Javadoc.
Posted by ch...@apache.org.
Updated Javadoc.
Project: http://git-wip-us.apache.org/repos/asf/maven-scm/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-scm/commit/416ada2c
Tree: http://git-wip-us.apache.org/repos/asf/maven-scm/tree/416ada2c
Diff: http://git-wip-us.apache.org/repos/asf/maven-scm/diff/416ada2c
Branch: refs/heads/master
Commit: 416ada2c85539fb00347a93dc59ce480bb20a82d
Parents: 8dd21b9
Author: ChrisGWarp <Ch...@gmail.com>
Authored: Wed Apr 29 21:29:58 2015 +1000
Committer: Chris Graham <ch...@apache.org>
Committed: Thu May 7 12:04:22 2015 +1000
----------------------------------------------------------------------
.../java/org/apache/maven/scm/provider/ScmProviderRepository.java | 2 ++
1 file changed, 2 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/416ada2c/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java
----------------------------------------------------------------------
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java
index c55b525..f75f64d 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProviderRepository.java
@@ -122,6 +122,7 @@ public abstract class ScmProviderRepository
/**
* @return The workItem.
+ * @since 1.9.5
*/
public String getWorkItem()
{
@@ -132,6 +133,7 @@ public abstract class ScmProviderRepository
* Set the workItem.
*
* @param user The workItem.
+ * @since 1.9.5
*/
public void setWorkItem( String workItem )
{
[4/4] maven-scm git commit: Changed: Added support for multiple
changesets. Changed: Added status calls where necessary to pick up change set
aliases as well as workspace/stream names and aliases. Changed: Added
additional StatusConsumer test cases.
Posted by ch...@apache.org.
Changed: Added support for multiple changesets.
Changed: Added status calls where necessary to pick up change set
aliases as well as workspace/stream names and aliases.
Changed: Added additional StatusConsumer test cases.
Project: http://git-wip-us.apache.org/repos/asf/maven-scm/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-scm/commit/dd3a18d0
Tree: http://git-wip-us.apache.org/repos/asf/maven-scm/tree/dd3a18d0
Diff: http://git-wip-us.apache.org/repos/asf/maven-scm/diff/dd3a18d0
Branch: refs/heads/master
Commit: dd3a18d055dec414191f5529ac9f5c89f12e83ec
Parents: 9098682
Author: Chris Graham <Ch...@gmail.com>
Authored: Sat May 2 22:49:07 2015 +1000
Committer: Chris Graham <ch...@apache.org>
Committed: Thu May 7 12:04:23 2015 +1000
----------------------------------------------------------------------
.../scm/provider/jazz/JazzScmProvider.java | 18 ++-
.../provider/jazz/command/JazzConstants.java | 9 ++
.../provider/jazz/command/JazzScmCommand.java | 11 +-
.../command/checkin/JazzCheckInCommand.java | 45 +++++---
.../jazz/command/list/JazzListCommand.java | 7 +-
.../jazz/command/status/JazzStatusConsumer.java | 23 ++--
.../repository/JazzScmProviderRepository.java | 20 ++--
.../jazz/command/JazzScmCommandTest.java | 28 ++++-
.../command/checkin/JazzCheckInCommandTest.java | 5 +-
.../jazz/command/list/JazzListCommandTest.java | 2 +-
.../command/status/JazzStatusCommandTest.java | 111 ++++++++++++++++++-
11 files changed, 232 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java
index f454845..9f62779 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java
@@ -112,7 +112,7 @@ public class JazzScmProvider
// Called from:
// AbstractScmProvider.makeScmRepository()
// AbstractScmProvider.validateScmUrl()
- getLogger().debug( "JazzScmProvider:makeProviderScmRepository" );
+ getLogger().debug( "JazzScmProvider:makeProviderScmRepository()" );
getLogger().debug( "Provided scm url - " + scmUrl );
getLogger().debug( "Provided delimiter - '" + delimiter + "'" );
@@ -250,6 +250,7 @@ public class JazzScmProvider
public AddScmResult add( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:add()" );
JazzAddCommand command = new JazzAddCommand();
command.setLogger( getLogger() );
return (AddScmResult) command.execute( repository, fileSet, parameters );
@@ -262,6 +263,7 @@ public class JazzScmProvider
CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:branch()" );
JazzBranchCommand command = new JazzBranchCommand();
command.setLogger( getLogger() );
return (BranchScmResult) command.execute( repository, fileSet, parameters );
@@ -273,6 +275,7 @@ public class JazzScmProvider
protected BlameScmResult blame( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:blame()" );
JazzBlameCommand command = new JazzBlameCommand();
command.setLogger( getLogger() );
return (BlameScmResult) command.execute( repository, fileSet, parameters );
@@ -285,6 +288,7 @@ public class JazzScmProvider
CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:changelog()" );
// We need to call the status command first, so that we can get the details of the workspace.
// This is needed for the list changesets command.
// We could also 'trust' the value in the pom.
@@ -304,6 +308,7 @@ public class JazzScmProvider
CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:checkin()" );
JazzCheckInCommand command = new JazzCheckInCommand();
command.setLogger( getLogger() );
return (CheckInScmResult) command.execute( repository, fileSet, parameters );
@@ -316,6 +321,7 @@ public class JazzScmProvider
CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:checkout()" );
JazzCheckOutCommand command = new JazzCheckOutCommand();
command.setLogger( getLogger() );
return (CheckOutScmResult) command.execute( repository, fileSet, parameters );
@@ -327,6 +333,7 @@ public class JazzScmProvider
protected DiffScmResult diff( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:diff()" );
JazzDiffCommand command = new JazzDiffCommand();
command.setLogger( getLogger() );
return (DiffScmResult) command.execute( repository, fileSet, parameters );
@@ -338,6 +345,7 @@ public class JazzScmProvider
protected EditScmResult edit( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:edit()" );
JazzEditCommand command = new JazzEditCommand();
command.setLogger( getLogger() );
return (EditScmResult) command.execute( repository, fileSet, parameters );
@@ -350,6 +358,7 @@ public class JazzScmProvider
CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:export()" );
// Use checkout instead
return super.export( repository, fileSet, parameters );
}
@@ -360,8 +369,9 @@ public class JazzScmProvider
protected ListScmResult list( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:list()" );
// We need to call the status command first, so that we can get the details of the stream etc.
- // This is needed for workspace deliveries and snapshot promotions.
+ // This is needed for workspace and component names.
JazzStatusCommand statusCommand = new JazzStatusCommand();
statusCommand.setLogger( getLogger() );
statusCommand.execute( repository, fileSet, parameters );
@@ -378,6 +388,7 @@ public class JazzScmProvider
CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:status()" );
JazzStatusCommand command = new JazzStatusCommand();
command.setLogger( getLogger() );
return (StatusScmResult) command.execute( repository, fileSet, parameters );
@@ -389,6 +400,7 @@ public class JazzScmProvider
protected TagScmResult tag( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:tag()" );
// We need to call the status command first, so that we can get the details of the stream etc.
// This is needed for workspace deliveries and snapshot promotions.
JazzStatusCommand statusCommand = new JazzStatusCommand();
@@ -407,6 +419,7 @@ public class JazzScmProvider
CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:update()" );
JazzUpdateCommand command = new JazzUpdateCommand();
command.setLogger( getLogger() );
return (UpdateScmResult) command.execute( repository, fileSet, parameters );
@@ -419,6 +432,7 @@ public class JazzScmProvider
CommandParameters parameters )
throws ScmException
{
+ getLogger().debug( "JazzScmProvider:unedit()" );
JazzUnEditCommand command = new JazzUnEditCommand();
command.setLogger( getLogger() );
return (UnEditScmResult) command.execute( repository, fileSet, parameters );
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java
index 9e0b2ec..f0ba1b4 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java
@@ -272,4 +272,13 @@ public class JazzConstants
*/
public static final String ARG_WORKSPACE = "--workspace";
+ /**
+ * Depth of files returned (used with "list remotefiles" command).
+ */
+ public static final String ARG_DEPTH = "--depth";
+
+ /**
+ * Depth is either numeric or '-' for all'.
+ */
+ public static final String ARG_DEPTH_INFINTE = "-";
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java
index 4adf121..57bb3ba 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java
@@ -248,7 +248,14 @@ public class JazzScmCommand
}
else
{
- afterPassword = "\"";
+ if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
+ {
+ afterPassword = "\"";
+ }
+ else
+ {
+ afterPassword = "";
+ }
}
if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
{
@@ -256,7 +263,7 @@ public class JazzScmCommand
}
else
{
- clString = beforePassword + "'*****'";
+ clString = beforePassword + "'*****'" + afterPassword;
}
}
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java
index 8d35734..07eb26f 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java
@@ -34,6 +34,7 @@ import org.apache.maven.scm.provider.jazz.command.JazzScmCommand;
import org.apache.maven.scm.provider.jazz.command.add.JazzAddCommand;
import org.apache.maven.scm.provider.jazz.command.consumer.DebugLoggerConsumer;
import org.apache.maven.scm.provider.jazz.command.consumer.ErrorConsumer;
+import org.apache.maven.scm.provider.jazz.command.status.JazzStatusCommand;
import org.apache.maven.scm.provider.jazz.repository.JazzScmProviderRepository;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.cli.StreamConsumer;
@@ -115,21 +116,39 @@ public class JazzCheckInCommand
errConsumer.getOutput(), false );
}
- // Check to see if we've had a workItem defined (via -DworkItem=XXXX)
+ // As we just created a change set, we now need to call the status command so we can parse the
+ // newly created change set.
+
+ JazzStatusCommand statusCommand = new JazzStatusCommand();
+ statusCommand.setLogger( getLogger() );
+ statusCommand.executeStatusCommand( repository, fileSet );
+
+ // NOTE: For isPushChangesAndHaveFlowTargets() to work, a scm status call must have been called first!!!
+ // As the Workspace name and alias, and the Flow Target name and alias are needed.
+
+ // Check to see if we've got a flow target and had a workItem defined (via -DworkItem=XXXX)
JazzScmProviderRepository jazzRepo = (JazzScmProviderRepository) repository;
if ( jazzRepo.isPushChangesAndHaveFlowTargets() && StringUtils.isNotEmpty( jazzRepo.getWorkItem() ) )
{
- // Associate a work item if we need too.
- JazzScmCommand changesetAssociateCmd = createChangesetAssociateCommand( repository );
- outputConsumer = new DebugLoggerConsumer( getLogger() );
- errConsumer = new ErrorConsumer( getLogger() );
-
- status = changesetAssociateCmd.execute( outputConsumer, errConsumer );
- if ( status != 0 || errConsumer.hasBeenFed() )
+ List<Integer> changeSetAliases = jazzRepo.getChangeSetAliases();
+ if ( changeSetAliases != null && !changeSetAliases.isEmpty() )
{
- return new CheckInScmResult( changesetAssociateCmd.getCommandString(),
- "Error code for Jazz SCM changeset associate command - " + status,
- errConsumer.getOutput(), false );
+ for ( Integer changeSetAlias : changeSetAliases )
+ {
+ // Associate a work item if we need too.
+ JazzScmCommand changesetAssociateCmd = createChangesetAssociateCommand( repository,
+ changeSetAlias );
+ outputConsumer = new DebugLoggerConsumer( getLogger() );
+ errConsumer = new ErrorConsumer( getLogger() );
+
+ status = changesetAssociateCmd.execute( outputConsumer, errConsumer );
+ if ( status != 0 || errConsumer.hasBeenFed() )
+ {
+ return new CheckInScmResult( changesetAssociateCmd.getCommandString(),
+ "Error code for Jazz SCM changeset associate command - " + status,
+ errConsumer.getOutput(), false );
+ }
+ }
}
}
@@ -179,14 +198,14 @@ public class JazzCheckInCommand
return command;
}
- public JazzScmCommand createChangesetAssociateCommand( ScmProviderRepository repo )
+ public JazzScmCommand createChangesetAssociateCommand( ScmProviderRepository repo, Integer changeSetAlias )
{
JazzScmCommand command =
new JazzScmCommand( JazzConstants.CMD_CHANGESET, JazzConstants.CMD_SUB_ASSOCIATE, repo, false, null,
getLogger() );
// Add the change set alias
JazzScmProviderRepository jazzRepo = (JazzScmProviderRepository) repo;
- command.addArgument( "" + jazzRepo.getChangeSetAlias() );
+ command.addArgument( changeSetAlias.toString() );
// Add the work item number
command.addArgument( jazzRepo.getWorkItem() );
return command;
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommand.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommand.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommand.java
index 0a91fdc..09042f5 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommand.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommand.java
@@ -77,10 +77,15 @@ public class JazzListCommand
public JazzScmCommand createListCommand( JazzScmProviderRepository repo, ScmFileSet fileSet, boolean recursive,
ScmVersion version )
{
- // recursive is implicit in the command, so it is ignored.
+ // recursive is implicit in the command, so it is ignored. NOTE: V4 appears to have changed this.
// version is meaningless, so it is ignored.
JazzScmCommand command =
new JazzScmCommand( JazzConstants.CMD_LIST, JazzConstants.CMD_SUB_REMOTEFILES, repo, fileSet, getLogger() );
+ if ( recursive )
+ {
+ command.addArgument( JazzConstants.ARG_DEPTH );
+ command.addArgument( JazzConstants.ARG_DEPTH_INFINTE );
+ }
command.addArgument( repo.getRepositoryWorkspace() );
command.addArgument( repo.getComponent() );
return command;
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java
index 0ac426f..19eba7a 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java
@@ -402,22 +402,13 @@ public class JazzStatusConsumer
getLogger().debug( "Successfully parsed post \"Change sets:\" line:" );
getLogger().debug( " changeSetAlias = " + changeSetAlias );
}
- jazzRepository.setChangeSetAlias( changeSetAlias );
- // This is a difficult one. Do I now turn it off or not?
- seenChangeSets = false;
- // For the moment I am going too.
- // If we ever need to support multiple outgoing changesets,
- // and I can not see how that makes sense in a maven sense,
- // then we can revisit using a list.
- // Also, turning if off means that we only look at the first
- // (and hopefully only!) one.
- // It also means that if we run across some Incoming: changes,
- // then we will not pick them up accidently either.
- //
- // Another way around this would to be to have a specific
- // consumer for the create changeset command itself.
- // That way we would be totally assured that we've picked
- // up the right Changet Set Alias.
+ // We are now supporting multiple change sets, as this allows
+ // us to cater for multiple changeset caused by previous failed
+ // release attempts.
+ // Our starting point should always be a clean slate of a workspace
+ // or sandbox, however, if something fails, then we will have some
+ // changesets already created, so we need to be able to deal with them effectively.
+ jazzRepository.getChangeSetAliases().add( new Integer( changeSetAlias ) );
}
}
}
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java
index 20d8208..f1ee5c5 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java
@@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.jazz.repository;
* under the License.
*/
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.maven.scm.provider.ScmProviderRepositoryWithHost;
import org.codehaus.plexus.util.StringUtils;
@@ -86,7 +89,7 @@ public class JazzScmProviderRepository
/**
* The alias of the change set, as returned from the "scm status" command.
*/
- private int fChangeSetAlias;
+ private List<Integer> fChangeSetAliases = new ArrayList<Integer>();
// TODO In the future we might expand the details of this repository.
// For example we might extend the scm url to include a stream (as well as the repository workspace)
@@ -249,21 +252,21 @@ public class JazzScmProviderRepository
}
/**
- * @return The alias of the changeset, as returned from the "scm status" command.
+ * @return The List<Integer> of aliases of the changesets, as returned from the "scm status" command.
*/
- public int getChangeSetAlias()
+ public List<Integer> getChangeSetAliases()
{
- return fChangeSetAlias;
+ return fChangeSetAliases;
}
/**
- * @param fChangeSetAlias the fChangeSetAlias to set
+ * @param ChangeSetAliases the List of Integers of change set aliases to set
*/
- public void setChangeSetAlias( int fChangeSetAlias )
+ public void setChangeSetAliases( List<Integer> changeSetAliases )
{
- this.fChangeSetAlias = fChangeSetAlias;
+ this.fChangeSetAliases = changeSetAliases;
}
-
+
/**
* {@inheritDoc}
*/
@@ -271,4 +274,5 @@ public class JazzScmProviderRepository
{
return getRepositoryURI() + ":" + getRepositoryWorkspace();
}
+
}
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java
index 8cfcb60..421a065 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java
@@ -36,12 +36,25 @@ public class JazzScmCommandTest
}
public void testJazzScmCommand()
+ throws Exception
+ {
+ ScmFileSet scmFileSet = new ScmFileSet( getWorkingCopy() );
+ JazzScmCommand listCommand = new JazzScmCommand( "list", getScmProviderRepository(), scmFileSet, null );
+ String expected =
+ "scm list --repository-uri https://localhost:9443/jazz --username myUserName --password myPassword";
+
+ assertCommandLine( expected, getWorkingDirectory(), listCommand.getCommandline() );
+
+ }
+
+ public void testJazzScmCommandWithExtraArg()
throws Exception
{
ScmFileSet scmFileSet = new ScmFileSet( getWorkingCopy() );
JazzScmCommand listCommand = new JazzScmCommand( "list", getScmProviderRepository(), scmFileSet, null );
+ listCommand.addArgument( "ExtraArg" );
String expected =
- "scm list --repository-uri https://localhost:9443/jazz --username myUserName --password myPassword";
+ "scm list --repository-uri https://localhost:9443/jazz --username myUserName --password myPassword ExtraArg";
assertCommandLine( expected, getWorkingDirectory(), listCommand.getCommandline() );
@@ -58,4 +71,17 @@ public class JazzScmCommandTest
assertEquals( "cryptPassword failed!", expected, actual );
}
+
+ public void testCryptPasswordWithExtraArg()
+ throws Exception
+ {
+ JazzScmCommand listCommand = new JazzScmCommand( "list", getScmProviderRepository(), null, null );
+ listCommand.addArgument( "ExtraArg" );
+ String actual = JazzScmCommand.cryptPassword( listCommand.getCommandline() );
+ String expected = Os.isFamily( Os.FAMILY_WINDOWS )
+ ? "cmd.exe /X /C \"scm list --repository-uri https://localhost:9443/jazz --username myUserName --password ***** ExtraArg\""
+ : "/bin/sh -c scm list --repository-uri https://localhost:9443/jazz --username myUserName --password '*****' ExtraArg";
+
+ assertEquals( "cryptPassword failed!", expected, actual );
+ }
}
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java
index b30bfcf..6611ddf 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java
@@ -1,5 +1,7 @@
package org.apache.maven.scm.provider.jazz.command.checkin;
+import java.awt.List;
+
import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.log.DefaultLog;
import org.apache.maven.scm.provider.jazz.JazzScmTestCase;
@@ -61,8 +63,7 @@ public class JazzCheckInCommandTest
JazzScmProviderRepository repo = getScmProviderRepository();
// Populate the values that are normally parsed and set by the StatusConsumer.
repo.setWorkItem( "215762" );
- repo.setChangeSetAlias( 1234 );
- Commandline cmd = new JazzCheckInCommand().createChangesetAssociateCommand( repo ).getCommandline();
+ Commandline cmd = new JazzCheckInCommand().createChangesetAssociateCommand( repo, new Integer(1234) ).getCommandline();
// Because we do not use a ScmFileSet, the working dir is not set, so the test fails.
cmd.setWorkingDirectory( getWorkingDirectory() );
String expected = "scm changeset associate --username myUserName --password myPassword 1234 215762";
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommandTest.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommandTest.java b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommandTest.java
index 8a54ab2..a42ce3e 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommandTest.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommandTest.java
@@ -58,7 +58,7 @@ public class JazzListCommandTest
{
Commandline cmd = new JazzListCommand().createListCommand( repo, getScmFileSet(), true, null ).getCommandline();
String expected =
- "scm list remotefiles --repository-uri https://localhost:9443/jazz --username myUserName --password myPassword \"Dave's Repository Workspace\" \"Dave's Component\"";
+ "scm list remotefiles --repository-uri https://localhost:9443/jazz --username myUserName --password myPassword --depth - \"Dave's Repository Workspace\" \"Dave's Component\"";
assertCommandLine( expected, getWorkingDirectory(), cmd );
}
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java
index acb862e..ede7e91 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java
@@ -83,7 +83,9 @@ public class JazzStatusCommandTest
assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() );
assertEquals( "Component is incorrect!", "SCM Plugins", repo.getComponent() );
assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() );
- assertEquals( "Change Set Alias is incorrect!", 1008, repo.getChangeSetAlias());
+ assertNotNull( repo.getChangeSetAliases() );
+ assertEquals( "Change Set Alias length is incorrect!", 1, repo.getChangeSetAliases().size() );
+ assertEquals( "Change Set Alias is incorrect!", new Integer(1008), repo.getChangeSetAliases().get(0));
// Test the stream parsing and isPushChanges bits.
assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
@@ -171,4 +173,111 @@ public class JazzStatusCommandTest
assertEquals( "Component is incorrect!", "FireDragon", repo.getComponent() );
assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() );
}
+
+ public void testConsumerWithMultipleChangeSets()
+ {
+ statusConsumer.consumeLine( "Workspace: (1000) \"GPDBWorkspace\" <-> (1001) \"GPDBStream\"" );
+ statusConsumer.consumeLine( " Component: (1002) \"GPDB\"" );
+ statusConsumer.consumeLine( " Baseline: (1003) 49 \"GPDB-MAN-1.0.50\"" );
+ statusConsumer.consumeLine( " Unresolved:" );
+ statusConsumer.consumeLine( " a-- /GPDB/GPDBEAR/pom.xml.releaseBackup" );
+ statusConsumer.consumeLine( " a-- /GPDB/GPDBResources/pom.xml.releaseBackup" );
+ statusConsumer.consumeLine( " a-- /GPDB/GPDBWeb/pom.xml.releaseBackup" );
+ statusConsumer.consumeLine( " a-- /GPDB/pom.xml.releaseBackup" );
+ statusConsumer.consumeLine( " Outgoing:" );
+ statusConsumer.consumeLine( " Change sets:" );
+ statusConsumer.consumeLine( " (1012) *--@ \"Release the next release of GPDB.\" - "
+ + "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 09:38 PM" );
+ statusConsumer.consumeLine( " (1011) ---@ \"Release the next release of GPDB.\" - "
+ + "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 09:33 PM" );
+ statusConsumer.consumeLine( " (1010) ---@ \"Release the next release of GPDB.\" - "
+ + "\"[maven-release-plugin] prepare release GPDB-1.0.51\" 02-May-2015 09:28 PM" );
+ statusConsumer.consumeLine( " (1009) ---@ \"Release the next release of GPDB.\" - "
+ + "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 08:05 PM" );
+ statusConsumer.consumeLine( " (1008) ---@ \"Release the next release of GPDB.\" - "
+ + "\"[maven-release-plugin] prepare release GPDB-1.0.51\" 02-May-2015 08:00 PM" );
+ statusConsumer.consumeLine( " (1007) ---@ \"[maven-release-plugin] rollback the "
+ + "release of GPDB-1.0.51\" 02-May-2015 07:54 PM" );
+ statusConsumer.consumeLine( " (1006) ---@ \"[maven-release-plugin] prepare "
+ + "release GPDB-1.0.51\" 02-May-2015 09:33 PM" );
+
+ // Test the additional collected data, Workspace, Component, Baseline.
+ assertEquals( "Workspace is incorrect!", "GPDBWorkspace", repo.getWorkspace() );
+ assertEquals( "Workspace Alias is incorrect!", 1000, repo.getWorkspaceAlias() );
+ assertEquals( "Flow Target is incorrect!", "GPDBStream", repo.getFlowTarget() );
+ assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() );
+ assertEquals( "Component is incorrect!", "GPDB", repo.getComponent() );
+ assertEquals( "Baseline is incorrect!", "GPDB-MAN-1.0.50", repo.getBaseline() );
+
+ // Test the stream parsing and isPushChanges bits.
+ assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
+ repo.setPushChanges( false );
+ assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
+ repo.setPushChanges( true );
+ assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
+
+
+ assertNotNull( repo.getChangeSetAliases() );
+ assertEquals( "Change Set Alias length is incorrect!", 7, repo.getChangeSetAliases().size() );
+ assertEquals( "Change Set Alias [0] is incorrect!", new Integer(1012), repo.getChangeSetAliases().get(0));
+ assertEquals( "Change Set Alias [1] is incorrect!", new Integer(1011), repo.getChangeSetAliases().get(1));
+ assertEquals( "Change Set Alias [2] is incorrect!", new Integer(1010), repo.getChangeSetAliases().get(2));
+ assertEquals( "Change Set Alias [3] is incorrect!", new Integer(1009), repo.getChangeSetAliases().get(3));
+ assertEquals( "Change Set Alias [4] is incorrect!", new Integer(1008), repo.getChangeSetAliases().get(4));
+ assertEquals( "Change Set Alias [5] is incorrect!", new Integer(1007), repo.getChangeSetAliases().get(5));
+ assertEquals( "Change Set Alias [6] is incorrect!", new Integer(1006), repo.getChangeSetAliases().get(6));
+ }
+
+ public void testConsumerWithMultipleChangeSetsAndWorkItems()
+ {
+ statusConsumer.consumeLine( "Workspace: (1000) \"GPDBWorkspace\" <-> (1001) \"GPDBStream\"" );
+ statusConsumer.consumeLine( " Component: (1002) \"GPDB\"" );
+ statusConsumer.consumeLine( " Baseline: (1003) 49 \"GPDB-MAN-1.0.50\"" );
+ statusConsumer.consumeLine( " Unresolved:" );
+ statusConsumer.consumeLine( " a-- /GPDB/GPDBEAR/pom.xml.releaseBackup" );
+ statusConsumer.consumeLine( " a-- /GPDB/GPDBResources/pom.xml.releaseBackup" );
+ statusConsumer.consumeLine( " a-- /GPDB/GPDBWeb/pom.xml.releaseBackup" );
+ statusConsumer.consumeLine( " a-- /GPDB/pom.xml.releaseBackup" );
+ statusConsumer.consumeLine( " Outgoing:" );
+ statusConsumer.consumeLine( " Change sets:" );
+ statusConsumer.consumeLine( " (1012) *--@ 62 \"Release the next release of GPDB.\" - "
+ + "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 09:38 PM" );
+ statusConsumer.consumeLine( " (1011) ---@ 62 \"Release the next release of GPDB.\" - "
+ + "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 09:33 PM" );
+ statusConsumer.consumeLine( " (1010) ---@ 62 \"Release the next release of GPDB.\" - "
+ + "\"[maven-release-plugin] prepare release GPDB-1.0.51\" 02-May-2015 09:28 PM" );
+ statusConsumer.consumeLine( " (1009) ---@ 62 \"Release the next release of GPDB.\" - "
+ + "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 08:05 PM" );
+ statusConsumer.consumeLine( " (1008) ---@ 62 \"Release the next release of GPDB.\" - "
+ + "\"[maven-release-plugin] prepare release GPDB-1.0.51\" 02-May-2015 08:00 PM" );
+ statusConsumer.consumeLine( " (1007) ---@ \"[maven-release-plugin] rollback the "
+ + "release of GPDB-1.0.51\" 02-May-2015 07:54 PM" );
+ statusConsumer.consumeLine( " (1006) ---@ \"[maven-release-plugin] prepare "
+ + "release GPDB-1.0.51\" 02-May-2015 09:33 PM" );
+
+ // Test the additional collected data, Workspace, Component, Baseline.
+ assertEquals( "Workspace is incorrect!", "GPDBWorkspace", repo.getWorkspace() );
+ assertEquals( "Workspace Alias is incorrect!", 1000, repo.getWorkspaceAlias() );
+ assertEquals( "Flow Target is incorrect!", "GPDBStream", repo.getFlowTarget() );
+ assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() );
+ assertEquals( "Component is incorrect!", "GPDB", repo.getComponent() );
+ assertEquals( "Baseline is incorrect!", "GPDB-MAN-1.0.50", repo.getBaseline() );
+
+ // Test the stream parsing and isPushChanges bits.
+ assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
+ repo.setPushChanges( false );
+ assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
+ repo.setPushChanges( true );
+ assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
+
+ assertNotNull( repo.getChangeSetAliases() );
+ assertEquals( "Change Set Alias length is incorrect!", 7, repo.getChangeSetAliases().size() );
+ assertEquals( "Change Set Alias [0] is incorrect!", new Integer(1012), repo.getChangeSetAliases().get(0));
+ assertEquals( "Change Set Alias [1] is incorrect!", new Integer(1011), repo.getChangeSetAliases().get(1));
+ assertEquals( "Change Set Alias [2] is incorrect!", new Integer(1010), repo.getChangeSetAliases().get(2));
+ assertEquals( "Change Set Alias [3] is incorrect!", new Integer(1009), repo.getChangeSetAliases().get(3));
+ assertEquals( "Change Set Alias [4] is incorrect!", new Integer(1008), repo.getChangeSetAliases().get(4));
+ assertEquals( "Change Set Alias [5] is incorrect!", new Integer(1007), repo.getChangeSetAliases().get(5));
+ assertEquals( "Change Set Alias [6] is incorrect!", new Integer(1006), repo.getChangeSetAliases().get(6));
+ }
}
[3/4] maven-scm git commit: Changed: Fixed the failing changeset
associate test (on unix).
Posted by ch...@apache.org.
Changed: Fixed the failing changeset associate test (on unix).
Project: http://git-wip-us.apache.org/repos/asf/maven-scm/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-scm/commit/90986823
Tree: http://git-wip-us.apache.org/repos/asf/maven-scm/tree/90986823
Diff: http://git-wip-us.apache.org/repos/asf/maven-scm/diff/90986823
Branch: refs/heads/master
Commit: 909868237bdd00af70989137879316943098e4f5
Parents: 416ada2
Author: Chris Graham <Ch...@gmail.com>
Authored: Fri May 1 12:10:17 2015 +1000
Committer: Chris Graham <ch...@apache.org>
Committed: Thu May 7 12:04:23 2015 +1000
----------------------------------------------------------------------
.../apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java | 1 -
.../scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java | 2 ++
2 files changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/90986823/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java
index e5e822a..8cfcb60 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java
@@ -56,7 +56,6 @@ public class JazzScmCommandTest
? "cmd.exe /X /C \"scm list --repository-uri https://localhost:9443/jazz --username myUserName --password *****\""
: "/bin/sh -c scm list --repository-uri https://localhost:9443/jazz --username myUserName --password '*****'";
- System.out.println( "actual:" + actual );
assertEquals( "cryptPassword failed!", expected, actual );
}
}
http://git-wip-us.apache.org/repos/asf/maven-scm/blob/90986823/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java
index 55349fd..b30bfcf 100644
--- a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java
+++ b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java
@@ -63,6 +63,8 @@ public class JazzCheckInCommandTest
repo.setWorkItem( "215762" );
repo.setChangeSetAlias( 1234 );
Commandline cmd = new JazzCheckInCommand().createChangesetAssociateCommand( repo ).getCommandline();
+ // Because we do not use a ScmFileSet, the working dir is not set, so the test fails.
+ cmd.setWorkingDirectory( getWorkingDirectory() );
String expected = "scm changeset associate --username myUserName --password myPassword 1234 215762";
assertCommandLine( expected, getWorkingDirectory(), cmd );
}