You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by da...@apache.org on 2006/03/10 10:05:07 UTC
svn commit: r384735 - in
/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src:
main/java/org/apache/maven/scm/provider/starteam/command/changelog/
test/java/org/apache/maven/scm/provider/starteam/command/changelog/
Author: dantran
Date: Fri Mar 10 01:05:05 2006
New Revision: 384735
URL: http://svn.apache.org/viewcvs?rev=384735&view=rev
Log:
Ensure file name in change log use relative path. SCM-172
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogConsumer.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogConsumerTest.java
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogCommand.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogCommand.java?rev=384735&r1=384734&r2=384735&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogCommand.java Fri Mar 10 01:05:05 2006
@@ -61,7 +61,7 @@
Commandline cl = createCommandLine( repository, fileSet.getBasedir(), startDate );
StarteamChangeLogConsumer consumer =
- new StarteamChangeLogConsumer( getLogger(), startDate, endDate, datePattern );
+ new StarteamChangeLogConsumer( fileSet.getBasedir(), getLogger(), startDate, endDate, datePattern );
CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogConsumer.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogConsumer.java?rev=384735&r1=384734&r2=384735&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogConsumer.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogConsumer.java Fri Mar 10 01:05:05 2006
@@ -19,8 +19,10 @@
import org.apache.maven.scm.ChangeFile;
import org.apache.maven.scm.ChangeSet;
import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.provider.starteam.command.StarteamCommandLineUtils;
import org.apache.maven.scm.util.AbstractConsumer;
+import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
@@ -37,6 +39,11 @@
private List entries = new ArrayList();
+ private String workingDirectory;
+
+ private String currentDir = "";
+
+
// state machine constants for reading Starteam output
/**
@@ -59,11 +66,18 @@
*/
private static final int GET_REVISION = 4;
+
+ /**
+ * Marks current directory data
+ */
+ private static final String DIR_MARKER = "(working dir: ";
+
/**
* Marks start of file data
*/
private static final String START_FILE = "History for: ";
+
/**
* Marks end of file
*/
@@ -121,10 +135,12 @@
//
// ----------------------------------------------------------------------
- public StarteamChangeLogConsumer( ScmLogger logger, Date startDate, Date endDate, String userDateFormat )
+ public StarteamChangeLogConsumer( File workingDirectory, ScmLogger logger, Date startDate, Date endDate, String userDateFormat )
{
super( logger );
+ this.workingDirectory = workingDirectory.getPath().replace( '\\', '/' );
+
this.startDate = startDate;
this.endDate = endDate;
@@ -157,6 +173,15 @@
public void consumeLine( String line )
{
getLogger().debug( line );
+
+ int pos = 0;
+
+ if ( ( pos = line.indexOf( DIR_MARKER ) ) != -1 )
+ {
+ processDirectory( line, pos );
+ return;
+ }
+
// current state transitions in the state machine - starts with Get File
// Get File -> Get Revision
@@ -219,6 +244,27 @@
entries.add( entry );
}
+ private void processDirectory( String line, int pos )
+ {
+ String dirPath = line.substring( pos + DIR_MARKER.length(), line.length() - 1 ).replace( '\\', '/' );
+ try
+ {
+ this.currentDir = StarteamCommandLineUtils.getRelativeChildDirectory( this.workingDirectory, dirPath );
+ }
+ catch ( IllegalStateException e )
+ {
+ String error = "Working and checkout directories are not on the same tree";
+
+ this.getLogger().error( error );
+
+ this.getLogger().error( "Working directory: " + workingDirectory );
+
+ this.getLogger().error( "Checked out directory: " + dirPath );
+
+ throw new IllegalStateException( error );
+ }
+ }
+
/**
* Process the current input line in the Get File state.
*
@@ -230,7 +276,7 @@
{
setCurrentChange( new ChangeSet() );
- setCurrentFile( new ChangeFile( line.substring( START_FILE.length(), line.length() ) ) );
+ setCurrentFile( new ChangeFile( this.currentDir + "/" + line.substring( START_FILE.length(), line.length() ) ) );
setStatus( GET_REVISION );
}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogConsumerTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogConsumerTest.java?rev=384735&r1=384734&r2=384735&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogConsumerTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/changelog/StarteamChangeLogConsumerTest.java Fri Mar 10 01:05:05 2006
@@ -26,6 +26,7 @@
import java.io.InputStreamReader;
import java.util.Collection;
import java.util.Iterator;
+import java.util.List;
import java.util.Locale;
/**
@@ -52,16 +53,20 @@
}
}
- public void testParse()
+ private List parseTestFile()
throws Exception
{
+ /* must match the working directory in the text test file */
+
+ File basedir = new File( "C:/Test" );
+
FileInputStream fis = new FileInputStream( testFile );
BufferedReader in = new BufferedReader( new InputStreamReader( fis ) );
String s = in.readLine();
- StarteamChangeLogConsumer consumer = new StarteamChangeLogConsumer( new DefaultLog(), null, null, null );
+ StarteamChangeLogConsumer consumer = new StarteamChangeLogConsumer( basedir, new DefaultLog(), null, null, null );
while ( s != null )
{
@@ -70,7 +75,13 @@
s = in.readLine();
}
- Collection entries = consumer.getModifications();
+ return consumer.getModifications();
+ }
+
+ public void testNumberOfModifications()
+ throws Exception
+ {
+ List entries = parseTestFile();
assertEquals( "Wrong number of entries returned", 6, entries.size() );
@@ -79,9 +90,26 @@
for ( Iterator i = entries.iterator(); i.hasNext(); )
{
entry = (ChangeSet) i.next();
-
+
assertTrue( "ChangeLogEntry erroneously picked up",
entry.toString().indexOf( "ChangeLogEntry.java" ) == -1 );
- }
+ }
}
+
+ public void testRelativeFilePath()
+ throws Exception
+ {
+ List entries = parseTestFile();
+
+ //ensure the filename in the first ChangeSet has correct relative path
+ ChangeSet entry = (ChangeSet) entries.get( 1 );
+
+ assertTrue( ! entry.containsFilename( "File2.java", null ) );
+
+ assertTrue( entry.containsFilename( "./maven/src/File2.java", null ) );
+
+
+ }
+
+
}