Author: vsiveton Date: Tue Aug 19 04:38:12 2008 New Revision: 687023 URL: http://svn.apache.org/viewvc?rev=687023&view=rev Log: SCM-380: CvsStatusConsumer cannot be used for CvsJavaListCommand and CvsExeListCommand Submitted by: Sergey Zakusov Reviewed by: Vincent Siveton
o patch applied with 1.4 compatibility Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/CvsListConsumer.java (with props) Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/AbstractCvsListCommand.java maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/list/CvsJavaListCommand.java Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/AbstractCvsListCommand.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/AbstractCvsListCommand.java?rev=687023&r1=687022&r2=687023&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/AbstractCvsListCommand.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/AbstractCvsListCommand.java Tue Aug 19 04:38:12 2008 @@ -19,6 +19,9 @@ * under the License. */ +import java.io.File; +import java.util.Iterator; + import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmVersion; @@ -54,12 +57,24 @@ } cl.createArgument().setValue( "-d" ); + cl.createArgument().setValue( "-e" ); // szakusov: to fix "Unknown file status" problem if ( recursive ) { cl.createArgument().setValue( "-R" ); } + for ( Iterator it = fileSet.getFileList().iterator(); it.hasNext(); ) + { + File target = (File) it.next(); + String path = target.getPath(); + if ( path.startsWith( "\\" ) ) + { + path = path.substring( 1 ); + } + cl.createArgument().setValue( path ); + } + getLogger().info( "Executing: " + cl ); getLogger().info( "Working directory: " + cl.getWorkingDirectory().getAbsolutePath() ); Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/CvsListConsumer.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/CvsListConsumer.java?rev=687023&view=auto ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/CvsListConsumer.java (added) +++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/CvsListConsumer.java Tue Aug 19 04:38:12 2008 @@ -0,0 +1,63 @@ +package org.apache.maven.scm.provider.cvslib.command.list; + +import java.util.LinkedList; +import java.util.List; + +import org.apache.maven.scm.ScmFile; +import org.apache.maven.scm.ScmFileStatus; +import org.apache.maven.scm.log.ScmLogger; +import org.codehaus.plexus.util.StringUtils; +import org.codehaus.plexus.util.cli.StreamConsumer; + +/** + * Parses CVS/Entries format, for example, like + * + * <pre> + * /checkoutlist/1.9/Wed Jan 26 19:08:06 2005/-kkv/ + * /commitinfo/1.10/Tue Jan 11 01:25:34 2005/-kkv/ + * /config/1.15/Sun Jan 23 02:15:57 2005/-kkv/ + * D/directory1//// + * D/directory2//// + * </pre> + * + * @author <a href="mailto:[EMAIL PROTECTED]">Sergey Zakusov</a>: implemented to fix "Unknown file status" problem + */ +public class CvsListConsumer implements StreamConsumer { + + private ScmLogger m_logger; + private List m_entries; + + /** + * @param logger is a logger + */ + public CvsListConsumer(ScmLogger logger) { + + m_logger = logger; + m_entries = new LinkedList(); + } + + /** + * @see org.codehaus.plexus.util.cli.StreamConsumer#consumeLine(java.lang.String) + */ + public void consumeLine(String i_line) { + + m_logger.debug(i_line); + + String[] params = i_line.split("/"); + if (params.length < 2) { + if (StringUtils.isNotEmpty(i_line)) { + m_logger.warn("Unable to parse it as CVS/Entries format: " + i_line + "."); + } + } else { + m_entries.add(new ScmFile(params[1], ScmFileStatus.UNKNOWN)); + } + } + + /** + * @return Parse result + */ + public List getEntries() { + + return m_entries; + } +} Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/CvsListConsumer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/list/CvsListConsumer.java ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/list/CvsJavaListCommand.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/list/CvsJavaListCommand.java?rev=687023&r1=687022&r2=687023&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/list/CvsJavaListCommand.java (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/list/CvsJavaListCommand.java Tue Aug 19 04:38:12 2008 @@ -19,18 +19,18 @@ * under the License. */ +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.InputStreamReader; + import org.apache.maven.scm.ScmException; import org.apache.maven.scm.command.list.ListScmResult; import org.apache.maven.scm.provider.cvslib.command.list.AbstractCvsListCommand; -import org.apache.maven.scm.provider.cvslib.command.status.CvsStatusConsumer; +import org.apache.maven.scm.provider.cvslib.command.list.CvsListConsumer; import org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsConnection; import org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsLogListener; import org.codehaus.plexus.util.cli.Commandline; -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.InputStreamReader; - /** * @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Venisse</a> * @version $Id$ @@ -44,7 +44,7 @@ { CvsLogListener logListener = new CvsLogListener(); - CvsStatusConsumer consumer = new CvsStatusConsumer( getLogger(), cl.getWorkingDirectory() ); + CvsListConsumer consumer = new CvsListConsumer( getLogger() ); try { @@ -74,6 +74,6 @@ false ); } - return new ListScmResult( cl.toString(), consumer.getChangedFiles() ); + return new ListScmResult( cl.toString(), consumer.getEntries() ); } }