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 ev...@apache.org on 2006/03/23 10:18:35 UTC

svn commit: r388116 - in /maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar: ./ command/ command/changelog/

Author: evenisse
Date: Thu Mar 23 01:18:28 2006
New Revision: 388116

URL: http://svn.apache.org/viewcvs?rev=388116&view=rev
Log:
[SCM-174] Bugfix changelog cmd (take 1) and some general refinements
Submitted by: Torbjørn EIkli Smørgrav

BazaarUtils:
    * refactored execute cmd, added more debugging onfo (bazaar version)

ChangLogCmd:
    * Avoid null and empty filesets in the ChangeSets

General:
    * More precise javadoc

TODO: The changelog report is now generating empty reports (but is not failing as before). I plan to fix that in next my next patch (take 2).

Modified:
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarScmProvider.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarUtils.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConsumer.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogConsumer.java

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarScmProvider.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarScmProvider.java?rev=388116&r1=388115&r2=388116&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarScmProvider.java Thu Mar 23 01:18:28 2006
@@ -48,10 +48,7 @@
 import java.util.List;
 
 /**
- * Bazaar NG http://bazaar.canonical.com/ is a decentralized revision control system. <br>
- * <p/>
- * The main difference from a centralized revision system is <br>
- * that it makes no distinction between the working tree and the repository.<br>
+ * Bazaar NG http://bazaar-vcs.org/ is a decentralized revision control system. <br>
  *
  * @author <a href="mailto:torbjorn@smorgrav.org">Torbjørn Eikli Smørgrav</a>
  */

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarUtils.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarUtils.java?rev=388116&r1=388115&r2=388116&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarUtils.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/BazaarUtils.java Thu Mar 23 01:18:28 2006
@@ -16,6 +16,12 @@
  * limitations under the License.
  */
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.ScmFileStatus;
@@ -28,12 +34,6 @@
 import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 /**
  * Common code for executing bazaar commands.
  *
@@ -67,7 +67,29 @@
     public static ScmResult execute( BazaarConsumer consumer, ScmLogger logger, File workingDir, String[] cmdAndArgs )
         throws ScmException
     {
-        Commandline cmd = new Commandline();
+    	//Build commandline
+        Commandline cmd = buildCmd(workingDir, cmdAndArgs);
+
+        //Write out info and debug info
+        logger.info( "EXECUTING: " + cmd );
+        //TODO log this as debug information when I understand howto do that
+        logger.info( "Bazaar version: " + getBazaarVersion(workingDir));
+        logger.info( "Working directory: " + workingDir.getAbsolutePath() );
+
+        //Execute command
+        final int exitCode = executeCmd(consumer, cmd);
+
+        //Return result
+        List exitCodes =
+            exitCodeMap.containsKey( cmdAndArgs[0] ) ? (List) exitCodeMap.get( cmdAndArgs[0] ) : defaultExitCodes;
+        boolean success = exitCodes.contains( new Integer( exitCode ) );
+
+        String providerMsg = "Execution of bazaar command: " + ( success ? "succeded" : "failed" );
+        return new ScmResult( cmd.toString(), providerMsg, consumer.getStdErr(), success );
+    }
+
+	private static Commandline buildCmd(File workingDir, String[] cmdAndArgs) throws ScmException {
+		Commandline cmd = new Commandline();
         cmd.setExecutable( BazaarCommand.EXEC );
         cmd.setWorkingDirectory( workingDir.getAbsolutePath() );
         cmd.addArguments( cmdAndArgs );
@@ -81,11 +103,11 @@
                 throw new ScmException( msg );
             }
         }
+		return cmd;
+	}
 
-        logger.info( "Executing: " + cmd );
-        logger.info( "Working directory: " + workingDir.getAbsolutePath() );
-
-        final int exitCode;
+	private static int executeCmd(BazaarConsumer consumer, Commandline cmd) throws ScmException {
+		final int exitCode;
         try
         {
             exitCode = CommandLineUtils.executeCommandLine( cmd, consumer, consumer );
@@ -94,14 +116,8 @@
         {
             throw new ScmException( "Command could not be executed: " + cmd, ex );
         }
-
-        List exitCodes =
-            exitCodeMap.containsKey( cmdAndArgs[0] ) ? (List) exitCodeMap.get( cmdAndArgs[0] ) : defaultExitCodes;
-        boolean success = exitCodes.contains( new Integer( exitCode ) );
-
-        String providerMsg = "Execution of bazaar command: " + ( success ? "succeded" : "failed" );
-        return new ScmResult( cmd.toString(), providerMsg, consumer.getStdErr(), success );
-    }
+		return exitCode;
+	}
 
     public static ScmResult execute( File workingDir, String[] cmdAndArgs )
         throws ScmException
@@ -170,6 +186,49 @@
         int getCurrentRevisionNumber()
         {
             return revNo;
+        }
+    }
+
+    public static String getBazaarVersion(File workingDir)
+			throws ScmException {
+
+		String[] versionCmd = new String[] { "version" };
+		BazaarVersionConsumer consumer = new BazaarVersionConsumer();
+		Commandline cmd = buildCmd(workingDir, versionCmd);
+
+		// Execute command
+		executeCmd(consumer, cmd);
+
+		// Return result
+		return consumer.getVersion();
+	}
+
+    /**
+	 * Get version of the bazaar executable <p/> Resolve revision to the last
+	 * integer found in the command output.
+	 */
+    private static class BazaarVersionConsumer
+        extends BazaarConsumer
+    {
+
+    	private static final String VERSION_TAG = "bzr (bazaar-ng) ";
+        private String version = "Unknown";
+
+        BazaarVersionConsumer()
+        {
+            super( new DefaultLog() );
+        }
+
+        public void doConsume( ScmFileStatus status, String line )
+        {
+            if (line.startsWith(VERSION_TAG)) {
+            	version = line.substring(VERSION_TAG.length());
+            }
+        }
+
+        String getVersion()
+        {
+            return version;
         }
     }
 }

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConsumer.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConsumer.java?rev=388116&r1=388115&r2=388116&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConsumer.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/BazaarConsumer.java Thu Mar 23 01:18:28 2006
@@ -29,7 +29,7 @@
 /**
  * Base consumer to do common parsing for all bazaar commands.
  * <p/>
- * More specific: log line on debug, get file status
+ * More specific: log line each line if debug is enabled, get file status
  * and detect warnings from bazaar
  *
  * @author <a href="mailto:torbjorn@smorgrav.org">Torbjørn Eikli Smørgrav</a>
@@ -62,11 +62,11 @@
 
     static
     {
-        identifiers.put( "added".intern(), ScmFileStatus.ADDED );
-        identifiers.put( "unknown".intern(), ScmFileStatus.UNKNOWN );
-        identifiers.put( "modified".intern(), ScmFileStatus.MODIFIED );
-        identifiers.put( "removed".intern(), ScmFileStatus.DELETED );
-        identifiers.put( "renamed".intern(), ScmFileStatus.MODIFIED );
+        identifiers.put( "added", ScmFileStatus.ADDED );
+        identifiers.put( "unknown", ScmFileStatus.UNKNOWN );
+        identifiers.put( "modified", ScmFileStatus.MODIFIED );
+        identifiers.put( "removed", ScmFileStatus.DELETED );
+        identifiers.put( "renamed", ScmFileStatus.MODIFIED );
         messages.put( "bzr: WARNING:", "WARNING" );
         messages.put( "bzr: ERROR:", "ERROR" );
         messages.put( "'bzr' ", "ERROR" ); // bzr isn't found in windows path

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java?rev=388116&r1=388115&r2=388116&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogCommand.java Thu Mar 23 01:18:28 2006
@@ -50,22 +50,26 @@
         ScmResult result = BazaarUtils.execute( consumer, getLogger(), fileSet.getBasedir(), cmd );
 
         List logEntries = consumer.getModifications();
-        List inRange = new ArrayList();
+        List inRangeAndValid = new ArrayList();
         startDate = startDate == null ? new Date( 0 ) : startDate; //From 1. Jan 1970
         endDate = endDate == null ? new Date() : endDate; //Upto now
 
+        getLogger().info(startDate.toString());
+        getLogger().info(endDate.toString());
         for ( Iterator it = logEntries.iterator(); it.hasNext(); )
         {
             ChangeSet change = (ChangeSet) it.next();
-            if ( startDate != null )
+            if ( change.getFiles().size() > 0)
             {
                 if ( !change.getDate().before( startDate ) && !change.getDate().after( endDate ) )
                 {
-                    inRange.add( change );
+                    inRangeAndValid.add( change );
                 }
             }
         }
 
-        return new ChangeLogScmResult( new ChangeLogSet( inRange, startDate, endDate ), result );
+        getLogger().info("Got " + inRangeAndValid.size() + " of " + logEntries.size()  + " log entries");
+        ChangeLogSet changeLogSet = new ChangeLogSet( inRangeAndValid, startDate, endDate );
+        return new ChangeLogScmResult(changeLogSet, result );
     }
 }

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogConsumer.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogConsumer.java?rev=388116&r1=388115&r2=388116&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogConsumer.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-bazaar/src/main/java/org/apache/maven/scm/provider/bazaar/command/changelog/BazaarChangeLogConsumer.java Thu Mar 23 01:18:28 2006
@@ -87,6 +87,7 @@
         if ( line.startsWith( START_LOG_TAG ) )
         {
             currentChange = new ChangeSet();
+            currentChange.setFiles(new ArrayList());
             logEntries.add( currentChange );
             currentComment = new StringBuffer();
             currentStatus = null;