Author: olamy
Date: Wed Jan 26 21:58:39 2011
New Revision: 1063886

URL: http://svn.apache.org/viewvc?rev=1063886&view=rev
Log:
[SCM-601] Implements a mercurial (hg) info command

Added:
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoCommand.java
   (with props)
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoConsumer.java
   (with props)
Modified:
    
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/info/InfoScmResult.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/HgScmProvider.java

Modified: 
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/info/InfoScmResult.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/info/InfoScmResult.java?rev=1063886&r1=1063885&r2=1063886&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/info/InfoScmResult.java
 (original)
+++ 
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/info/InfoScmResult.java
 Wed Jan 26 21:58:39 2011
@@ -50,11 +50,11 @@ public class InfoScmResult
         this.infoItems = files;
     }
 
-    public InfoScmResult( List<InfoItem> files, ScmResult result )
+    public InfoScmResult( List<InfoItem> infoItems, ScmResult result )
     {
         super( result );
 
-        this.infoItems = files;
+        this.infoItems = infoItems;
     }
 
     public InfoScmResult( ScmResult result )

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/HgScmProvider.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/HgScmProvider.java?rev=1063886&r1=1063885&r2=1063886&view=diff
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/HgScmProvider.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/HgScmProvider.java
 Wed Jan 26 21:58:39 2011
@@ -33,6 +33,7 @@ import org.apache.maven.scm.command.chan
 import org.apache.maven.scm.command.checkin.CheckInScmResult;
 import org.apache.maven.scm.command.checkout.CheckOutScmResult;
 import org.apache.maven.scm.command.diff.DiffScmResult;
+import org.apache.maven.scm.command.info.InfoScmResult;
 import org.apache.maven.scm.command.list.ListScmResult;
 import org.apache.maven.scm.command.remove.RemoveScmResult;
 import org.apache.maven.scm.command.status.StatusScmResult;
@@ -47,6 +48,7 @@ import org.apache.maven.scm.provider.hg.
 import org.apache.maven.scm.provider.hg.command.checkin.HgCheckInCommand;
 import org.apache.maven.scm.provider.hg.command.checkout.HgCheckOutCommand;
 import org.apache.maven.scm.provider.hg.command.diff.HgDiffCommand;
+import org.apache.maven.scm.provider.hg.command.info.HgInfoCommand;
 import org.apache.maven.scm.provider.hg.command.inventory.HgListCommand;
 import org.apache.maven.scm.provider.hg.command.remove.HgRemoveCommand;
 import org.apache.maven.scm.provider.hg.command.status.HgStatusCommand;
@@ -327,4 +329,17 @@ public class HgScmProvider
         return (ListScmResult) hgListCommand.executeCommand( repository, 
fileSet, parameters );
 
     }
+
+    /**
+     * @since 1.5
+     * @see 
org.apache.maven.scm.provider.AbstractScmProvider#info(org.apache.maven.scm.provider.ScmProviderRepository,
 org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.CommandParameters)
+     */
+    @Override
+    public InfoScmResult info( ScmProviderRepository repository, ScmFileSet 
fileSet, CommandParameters parameters )
+        throws ScmException
+    {
+        HgInfoCommand infoCommand = new HgInfoCommand();
+        infoCommand.setLogger( getLogger() );
+        return (InfoScmResult) infoCommand.execute( repository, fileSet, 
parameters );
+    }
 }

Added: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoCommand.java?rev=1063886&view=auto
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoCommand.java
 (added)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoCommand.java
 Wed Jan 26 21:58:39 2011
@@ -0,0 +1,34 @@
+package org.apache.maven.scm.provider.hg.command.info;
+
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.AbstractCommand;
+import org.apache.maven.scm.command.Command;
+import org.apache.maven.scm.command.info.InfoScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.hg.HgUtils;
+import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
+
+/**
+ * @author Olivier Lamy
+ * @since 1.5
+ */
+public class HgInfoCommand
+    extends AbstractCommand
+    implements Command
+{
+
+    @Override
+    protected ScmResult executeCommand( ScmProviderRepository repository, 
ScmFileSet fileSet,
+                                        CommandParameters parameters )
+        throws ScmException
+    {
+        String[] revCmd = new String[]{ HgCommandConstants.REVNO_CMD, "-i" };
+        HgInfoConsumer consumer = new HgInfoConsumer( getLogger() );
+        ScmResult scmResult = HgUtils.execute( consumer, getLogger(), 
fileSet.getBasedir(), revCmd );
+        return new InfoScmResult( consumer.getInfoItems(), scmResult );
+    }
+
+}

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoCommand.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoConsumer.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoConsumer.java?rev=1063886&view=auto
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoConsumer.java
 (added)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoConsumer.java
 Wed Jan 26 21:58:39 2011
@@ -0,0 +1,44 @@
+package org.apache.maven.scm.provider.hg.command.info;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.scm.command.info.InfoItem;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.provider.hg.command.HgConsumer;
+
+/**
+ * @author Olivier Lamy
+ * @since 1.5
+ *
+ */
+public class HgInfoConsumer
+    extends HgConsumer
+{
+    
+    private List<InfoItem> infoItems = new ArrayList<InfoItem>( 1 );
+    
+    public HgInfoConsumer(ScmLogger scmLogger)
+    {
+        super(scmLogger);
+    }
+    
+
+    /**
+     * @see 
org.codehaus.plexus.util.cli.StreamConsumer#consumeLine(java.lang.String)
+     */
+    public void consumeLine( String line )
+    {
+        // hg id -i returns only one line so we are safe
+        InfoItem infoItem = new InfoItem();
+        infoItem.setRevision( line );
+        this.infoItems.add( infoItem );
+    }
+
+
+    public List<InfoItem> getInfoItems()
+    {
+        return infoItems;
+    }
+
+}

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoConsumer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/info/HgInfoConsumer.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision


Reply via email to