You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2013/01/03 18:39:59 UTC

git commit: [SCM-709] Use JDK Pattern/Matcher instead of RE

Updated Branches:
  refs/heads/master fa5b0dd8f -> 1bb2d4faf


[SCM-709] Use JDK Pattern/Matcher instead of RE


Project: http://git-wip-us.apache.org/repos/asf/maven-scm/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-scm/commit/1bb2d4fa
Tree: http://git-wip-us.apache.org/repos/asf/maven-scm/tree/1bb2d4fa
Diff: http://git-wip-us.apache.org/repos/asf/maven-scm/diff/1bb2d4fa

Branch: refs/heads/master
Commit: 1bb2d4faf0ade9795455ba235ffc8f41dd2a2f4c
Parents: fa5b0dd
Author: rfscholte <rf...@apache.org>
Authored: Thu Jan 3 18:39:25 2013 +0100
Committer: rfscholte <rf...@apache.org>
Committed: Thu Jan 3 18:39:25 2013 +0100

----------------------------------------------------------------------
 .../gitexe/command/status/GitStatusConsumer.java   |   80 +++++----------
 1 files changed, 24 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-scm/blob/1bb2d4fa/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/status/GitStatusConsumer.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/status/GitStatusConsumer.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/status/GitStatusConsumer.java
index 11c541a..c696571 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/status/GitStatusConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/status/GitStatusConsumer.java
@@ -19,63 +19,44 @@ package org.apache.maven.scm.provider.git.gitexe.command.status;
  * under the License.
  */
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.log.ScmLogger;
-import org.apache.regexp.RE;
-import org.apache.regexp.RESyntaxException;
 import org.codehaus.plexus.util.cli.StreamConsumer;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
  */
 public class GitStatusConsumer
     implements StreamConsumer
 {
+
     /**
      * The pattern used to match added file lines
      */
-    private static final String ADDED_PATTERN = "^A[ M]* (.*)$";
+    private static final Pattern addedRegexp = Pattern.compile( "^A[ M]* (.*)$" );
 
     /**
      * The pattern used to match modified file lines
      */
-    private static final String MODIFIED_PATTERN = "^ *M[ M]* (.*)$";
+    private static final Pattern modifiedRegexp = Pattern.compile( "^ *M[ M]* (.*)$" );
 
     /**
      * The pattern used to match deleted file lines
      */
-    private static final String DELETED_PATTERN = "^ *D * (.*)$";
+    private Pattern deletedRegexp = Pattern.compile( "^ *D * (.*)$" );
 
     /**
      * The pattern used to match renamed file lines
      */
-    private static final String RENAMED_PATTERN = "R (.*) -> (.*)$";
-
-    /**
-     * @see #ADDED_PATTERN
-     */
-    private RE addedRegexp;
-
-    /**
-     * @see #MODIFIED_PATTERN
-     */
-    private RE modifiedRegexp;
-
-    /**
-     * @see #DELETED_PATTERN
-     */
-    private RE deletedRegexp;
-
-    /**
-     * @see #RENAMED_PATTERN
-     */
-    private RE renamedRegexp;
+    private Pattern renamedRegexp = Pattern.compile( "R (.*) -> (.*)$" );
 
     private ScmLogger logger;
 
@@ -91,20 +72,6 @@ public class GitStatusConsumer
     {
         this.logger = logger;
         this.workingDirectory = workingDirectory;
-
-        try
-        {
-            addedRegexp = new RE( ADDED_PATTERN );
-            modifiedRegexp = new RE( MODIFIED_PATTERN );
-            deletedRegexp = new RE( DELETED_PATTERN );
-            renamedRegexp = new RE( RENAMED_PATTERN );
-        }
-        catch ( RESyntaxException ex )
-        {
-            throw new RuntimeException(
-                "INTERNAL ERROR: Could not create regexp to parse git log file. This shouldn't happen. Something is probably wrong with the oro installation.",
-                ex );
-        }
     }
 
     // ----------------------------------------------------------------------
@@ -128,29 +95,30 @@ public class GitStatusConsumer
         ScmFileStatus status = null;
 
         List<String> files = new ArrayList<String>();
-
-        if ( addedRegexp.match( line ) )
+        
+        Matcher matcher;
+        if ( ( matcher = addedRegexp.matcher( line ) ).find() )
         {
             status = ScmFileStatus.ADDED;
-            files.add( addedRegexp.getParen( 1 ) );
+            files.add( matcher.group( 1 ) );
         }
-        else if ( modifiedRegexp.match( line ) )
+        else if ( ( matcher = modifiedRegexp.matcher( line ) ).find() )
         {
             status = ScmFileStatus.MODIFIED;
-            files.add( modifiedRegexp.getParen( 1 ) );
+            files.add( matcher.group( 1 ) );
         }
-        else if ( deletedRegexp.match( line ) )
+        else if ( ( matcher = deletedRegexp.matcher( line ) ) .find() )
         {
             status = ScmFileStatus.DELETED;
-            files.add( deletedRegexp.getParen( 1 ) );
+            files.add( matcher.group( 1 ) );
         }
-        else if ( renamedRegexp.match( line ) )
+        else if ( ( matcher = renamedRegexp.matcher( line ) ).find() )
         {
             status = ScmFileStatus.RENAMED;
-            files.add( StringUtils.trim( renamedRegexp.getParen( 1 ) ) );
-            files.add( StringUtils.trim( renamedRegexp.getParen( 2 ) ) );
-            logger.debug( "RENAMED status for line '" + line + "' files added '" + renamedRegexp.getParen( 1 ) + "' '"
-                              + renamedRegexp.getParen( 2 ) );
+            files.add( StringUtils.trim( matcher.group( 1 ) ) );
+            files.add( StringUtils.trim( matcher.group( 2 ) ) );
+            logger.debug( "RENAMED status for line '" + line + "' files added '" + matcher.group( 1 ) + "' '"
+                              + matcher.group( 2 ) );
         }
         else
         {