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