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 ) ); 
+        
+        
+    }
+
+
 }