Author: dantran Date: Fri Nov 17 01:06:22 2006 New Revision: 476085 URL: http://svn.apache.org/viewvc?view=rev&rev=476085 Log: fix invalid stcmd's argument when ci/add files in ScmFileSet with basedir is not working directory
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/StarteamCommandLineUtils.java maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/add/StarteamAddCommand.java maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/checkin/StarteamCheckInCommand.java maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/add/StarteamAddCommandTest.java maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/checkin/StarteamCheckInCommandTest.java Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/StarteamCommandLineUtils.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/StarteamCommandLineUtils.java?view=diff&rev=476085&r1=476084&r2=476085 ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/StarteamCommandLineUtils.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/StarteamCommandLineUtils.java Fri Nov 17 01:06:22 2006 @@ -17,6 +17,7 @@ */ import org.apache.maven.scm.ScmException; +import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.log.ScmLogger; import org.apache.maven.scm.provider.starteam.repository.StarteamScmProviderRepository; import org.apache.maven.scm.provider.starteam.util.StarteamUtil; @@ -118,8 +119,56 @@ return cl; } + + public static Commandline createStarteamBaseCommandLine( String action, ScmFileSet scmFileSet, + StarteamScmProviderRepository repo ) + { + Commandline cl = StarteamCommandLineUtils.createStarteamBaseCommandLine( action, repo ); + + if ( scmFileSet.getFileList().size() == 0 ) + { + //perform an action on directory + cl.createArgument().setValue( "-p" ); + cl.createArgument().setValue( repo.getFullUrl() ); + cl.createArgument().setValue( "-fp" ); + cl.createArgument().setValue( scmFileSet.getBasedir().getAbsolutePath().replace( '\\', '/' ) ); + + addCompressionOption( cl ); + + return cl; + } + + File file = (File) scmFileSet.getFileList().get( 0 ); + + String newUrl = repo.getFullUrl(); + + if ( file.getParent() != null ) + { + newUrl += "/" + file.getParent().replace( '\\', '/' ); + } + + cl.createArgument().setValue( "-p" ); + + cl.createArgument().setValue( newUrl ); + + File newWorkingDirectory = scmFileSet.getBasedir(); + if ( file.getParent() != null ) + { + newWorkingDirectory = new File( newWorkingDirectory, file.getParent() ); + } + + cl.setWorkingDirectory( newWorkingDirectory.getAbsolutePath() ); + + cl.createArgument().setValue( "-fp" ); + + cl.createArgument().setValue( newWorkingDirectory.getAbsolutePath().replace( '\\', '/' ) ); + + StarteamCommandLineUtils.addCompressionOption( cl ); + + return cl; + } - private static void addCompressionOption( Commandline cl ) + public static void addCompressionOption( Commandline cl ) { if ( settings.isCompressionEnable() ) { Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/add/StarteamAddCommand.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/add/StarteamAddCommand.java?view=diff&rev=476085&r1=476084&r2=476085 ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/add/StarteamAddCommand.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/add/StarteamAddCommand.java Fri Nov 17 01:06:22 2006 @@ -29,6 +29,7 @@ import org.codehaus.plexus.util.cli.Commandline; import java.io.File; +import java.util.List; /** * @author <a href="mailto:[EMAIL PROTECTED]">Dan T. Tran</a> @@ -54,11 +55,16 @@ CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); - File[] files = fileSet.getFiles(); + //File basedir = fileSet.getBasedir(); + + List files = fileSet.getFileList(); - for ( int i = 0; i < files.length; ++i ) + for ( int i = 0; i < files.size(); ++i ) { - Commandline cl = createCommandLine( repository, files[i], issue ); + File fileToBeAdded = (File) fileSet.getFileList().get( i ); + ScmFileSet scmFile = new ScmFileSet( fileSet.getBasedir(), fileToBeAdded ); + + Commandline cl = createCommandLine( repository, scmFile, issue ); int exitCode = StarteamCommandLineUtils.executeCommandline( cl, consumer, stderr, getLogger() ); @@ -71,10 +77,10 @@ return new AddScmResult( null, consumer.getAddedFiles() ); } - static Commandline createCommandLine( StarteamScmProviderRepository repo, File toBeAddedFile, String issue ) + static Commandline createCommandLine( StarteamScmProviderRepository repo, ScmFileSet scmFileSet, String issue ) { - Commandline cl = StarteamCommandLineUtils.createStarteamBaseCommandLine( "add", toBeAddedFile, repo ); - + Commandline cl = StarteamCommandLineUtils.createStarteamBaseCommandLine( "add", scmFileSet, repo ); + if ( issue != null && issue.length() > 0 ) { cl.createArgument().setValue( "-cr" ); @@ -82,7 +88,8 @@ cl.createArgument().setValue( issue ); } - cl.createArgument().setValue( toBeAddedFile.getName() ); + File fileToBeAdded = (File) scmFileSet.getFileList().get(0); + cl.createArgument().setValue( fileToBeAdded.getName() ); return cl; } Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/checkin/StarteamCheckInCommand.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/checkin/StarteamCheckInCommand.java?view=diff&rev=476085&r1=476084&r2=476085 ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/checkin/StarteamCheckInCommand.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/checkin/StarteamCheckInCommand.java Fri Nov 17 01:06:22 2006 @@ -17,6 +17,7 @@ */ import java.io.File; +import java.util.List; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; @@ -65,11 +66,11 @@ CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); - File[] checkInFiles = fileSet.getFiles(); + List checkInFiles = fileSet.getFileList(); - if ( checkInFiles.length == 0 ) + if ( checkInFiles.size() == 0 ) { - Commandline cl = createCommandLine( repository, fileSet.getBasedir(), message, tag, issueType, issueValue ); + Commandline cl = createCommandLine( repository, fileSet, message, tag, issueType, issueValue ); int exitCode = StarteamCommandLineUtils.executeCommandline( cl, consumer, stderr, getLogger() ); @@ -81,9 +82,11 @@ else { //update only interested files already on the local disk - for ( int i = 0; i < checkInFiles.length; ++i ) + for ( int i = 0; i < checkInFiles.size(); ++i ) { - Commandline cl = createCommandLine( repository, checkInFiles[i], message, tag, issueType, issueValue ); + ScmFileSet checkInFile = new ScmFileSet( fileSet.getBasedir(), (File) checkInFiles.get( i ) ); + + Commandline cl = createCommandLine( repository, checkInFile, message, tag, issueType, issueValue ); int exitCode = StarteamCommandLineUtils.executeCommandline( cl, consumer, stderr, getLogger() ); @@ -99,10 +102,11 @@ } - public static Commandline createCommandLine( StarteamScmProviderRepository repo, File dirOrFile, String message, + + public static Commandline createCommandLine( StarteamScmProviderRepository repo, ScmFileSet fileSet, String message, String tag, String issueType, String issueValue ) { - Commandline cl = StarteamCommandLineUtils.createStarteamBaseCommandLine( "ci", dirOrFile, repo ); + Commandline cl = StarteamCommandLineUtils.createStarteamBaseCommandLine( "ci", fileSet, repo ); if ( message != null && message.length() > 0 ) { @@ -127,7 +131,7 @@ } } - if ( dirOrFile.isDirectory() ) + if ( fileSet.getFileList().size() == 0 ) { cl.createArgument().setValue( "-f" ); @@ -137,7 +141,8 @@ } else { - cl.createArgument().setValue( dirOrFile.getName() ); + File checkinFile = (File) fileSet.getFileList().get( 0 ) ; + cl.createArgument().setValue( checkinFile.getName() ); } return cl; Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/add/StarteamAddCommandTest.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/add/StarteamAddCommandTest.java?view=diff&rev=476085&r1=476084&r2=476085 ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/add/StarteamAddCommandTest.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/add/StarteamAddCommandTest.java Fri Nov 17 01:06:22 2006 @@ -16,6 +16,7 @@ * limitations under the License. */ +import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmTestCase; import org.apache.maven.scm.provider.starteam.command.StarteamCommandLineUtils; import org.apache.maven.scm.provider.starteam.repository.StarteamScmProviderRepository; @@ -44,7 +45,8 @@ String expectedCmd = "stcmd add -x -nologo -stop -p myusername:[EMAIL PROTECTED]:1234/projecturl" + " -fp " + testFileDirAbsolutePath + " testfile"; - testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", testFile, "", expectedCmd ); + ScmFileSet fileSet = new ScmFileSet( testFileDir, testFile ); + testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", fileSet, "", expectedCmd ); } public void testGetCommandLineWithCR() @@ -59,7 +61,8 @@ String expectedCmd = "stcmd add -x -nologo -stop -p myusername:[EMAIL PROTECTED]:1234/projecturl" + " -fp " + testFileDirAbsolutePath + " -cr view_root/dummycr" + " testfile"; - testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", testFile, "view_root/dummycr", + ScmFileSet fileSet = new ScmFileSet( testFileDir, testFile ); + testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", fileSet, "view_root/dummycr", expectedCmd ); } @@ -72,12 +75,13 @@ File testFileDir = testFile.getAbsoluteFile().getParentFile(); - String testFileDirAbsolutePath = StarteamCommandLineUtils.toJavaPath( testFileDir.getAbsolutePath() ); + String testFileDirAbsolutePath = StarteamCommandLineUtils.toJavaPath( testFileDir.getAbsolutePath() ) + "/target"; String expectedCmd = "stcmd add -x -nologo -stop -p myusername:[EMAIL PROTECTED]:1234/projecturl/target" + " -fp " + testFileDirAbsolutePath + " testfile"; - - testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", testFile, null, expectedCmd ); + + ScmFileSet fileSet = new ScmFileSet( testFileDir, testFile ); + testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", fileSet, null, expectedCmd ); } @@ -85,14 +89,14 @@ // // ---------------------------------------------------------------------- - private void testCommandLine( String scmUrl, File fileName, String crPath, String commandLine ) + private void testCommandLine( String scmUrl, ScmFileSet fileSet, String crPath, String commandLine ) throws Exception { ScmRepository repo = getScmManager().makeScmRepository( scmUrl ); StarteamScmProviderRepository repository = (StarteamScmProviderRepository) repo.getProviderRepository(); - Commandline cl = StarteamAddCommand.createCommandLine( repository, fileName, crPath ); + Commandline cl = StarteamAddCommand.createCommandLine( repository, fileSet, crPath ); assertEquals( commandLine, cl.toString() ); } Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/checkin/StarteamCheckInCommandTest.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/checkin/StarteamCheckInCommandTest.java?view=diff&rev=476085&r1=476084&r2=476085 ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/checkin/StarteamCheckInCommandTest.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/checkin/StarteamCheckInCommandTest.java Fri Nov 17 01:06:22 2006 @@ -16,6 +16,7 @@ * limitations under the License. */ +import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmTestCase; import org.apache.maven.scm.provider.starteam.command.StarteamCommandLineUtils; import org.apache.maven.scm.provider.starteam.repository.StarteamScmProviderRepository; @@ -38,7 +39,9 @@ String workDirAbsolutePath = StarteamCommandLineUtils.toJavaPath( workDir.getAbsolutePath() ); - testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", workDir, "", "", "", "", + ScmFileSet fileSet = new ScmFileSet( workDir ); + + testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", fileSet, "", "", "", "", "stcmd ci -x -nologo -stop -p myusername:[EMAIL PROTECTED]:1234/projecturl " + "-fp " + workDirAbsolutePath + " -f NCI -is" ); } @@ -50,7 +53,9 @@ String testFileAbsolutePath = StarteamCommandLineUtils.toJavaPath( testFile.getAbsoluteFile().getParent() ); - testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", testFile, "myMessage", "myTag", + ScmFileSet fileSet = new ScmFileSet( testFile.getAbsoluteFile().getParentFile(), testFile ); + + testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", fileSet, "myMessage", "myTag", "", "", "stcmd ci -x -nologo -stop -p myusername:[EMAIL PROTECTED]:1234/projecturl " + "-fp " + testFileAbsolutePath + " -r myMessage -vl myTag " + "testfile" ); @@ -59,13 +64,16 @@ public void testGetCommandLineWithFileInSubDir() throws Exception { - File testFile = new File( "src/testfile" ); + File testFile = new File( "src/testfile.txt" ); - String testFileAbsolutePath = StarteamCommandLineUtils.toJavaPath( testFile.getAbsoluteFile().getParent() ); + File workingDir = testFile.getAbsoluteFile().getParentFile().getParentFile(); + ScmFileSet fileSet = new ScmFileSet( workingDir, testFile ); + + String testFileDirectory = StarteamCommandLineUtils.toJavaPath( testFile.getAbsoluteFile().getParent() ); - testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", testFile, null, "", "cr" ,"myCr", + testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", fileSet, null, "", "cr" ,"myCr", "stcmd ci -x -nologo -stop -p myusername:[EMAIL PROTECTED]:1234/projecturl/src " + "-fp " + - testFileAbsolutePath + " -cr myCr " + "testfile" ); + testFileDirectory + " -cr myCr " + "testfile.txt" ); } public void testGetCommandLineWithEmptyIssueValue() @@ -73,9 +81,12 @@ { File testFile = new File( "src/testfile" ); + File workingDir = testFile.getAbsoluteFile().getParentFile().getParentFile(); + ScmFileSet fileSet = new ScmFileSet( workingDir, testFile ); + String testFileAbsolutePath = StarteamCommandLineUtils.toJavaPath( testFile.getAbsoluteFile().getParent() ); - testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", testFile, null, "", "active", " ", + testCommandLine( "scm:starteam:myusername:[EMAIL PROTECTED]:1234/projecturl", fileSet, null, "", "active", " ", "stcmd ci -x -nologo -stop -p myusername:[EMAIL PROTECTED]:1234/projecturl/src " + "-fp " + testFileAbsolutePath + " -active " + "testfile" ); } @@ -83,7 +94,7 @@ // // ---------------------------------------------------------------------- - private void testCommandLine( String scmUrl, File testFileOrDir, String message, String tag, String issueType, + private void testCommandLine( String scmUrl, ScmFileSet fileSet, String message, String tag, String issueType, String issueValue, String commandLine ) throws Exception { @@ -91,7 +102,7 @@ StarteamScmProviderRepository repository = (StarteamScmProviderRepository) repo.getProviderRepository(); - Commandline cl = StarteamCheckInCommand.createCommandLine( repository, testFileOrDir, message, tag, issueType, issueValue ); + Commandline cl = StarteamCheckInCommand.createCommandLine( repository, fileSet, message, tag, issueType, issueValue ); assertEquals( commandLine, cl.toString() ); }