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 2005/11/29 10:33:39 UTC
svn commit: r349683 - in
/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src:
main/java/org/apache/maven/scm/provider/perforce/command/
main/java/org/apache/maven/scm/provider/perforce/command/checkout/
test/java/org/apache/maven/scm/p...
Author: evenisse
Date: Tue Nov 29 01:33:28 2005
New Revision: 349683
URL: http://svn.apache.org/viewcvs?rev=349683&view=rev
Log:
PR: SCM-79
Sumitted by: Mike Perham
Add checked out files List to CheckOutConsumer
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceVerbMapper.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutConsumer.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutConsumerTest.java
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceVerbMapper.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceVerbMapper.java?rev=349683&r1=349682&r2=349683&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceVerbMapper.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/PerforceVerbMapper.java Tue Nov 29 01:33:28 2005
@@ -15,9 +15,14 @@
static
{
+ // Perforce uses different tenses sometimes so we need to map
+ // the different tenses to the same status.
map.put( "add", ScmFileStatus.ADDED );
+ map.put( "added", ScmFileStatus.ADDED );
map.put( "delete", ScmFileStatus.DELETED );
+ map.put( "deleted", ScmFileStatus.DELETED );
map.put( "edit", ScmFileStatus.MODIFIED );
+ map.put( "edited", ScmFileStatus.MODIFIED );
}
public static ScmFileStatus toStatus( String verb )
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java?rev=349683&r1=349682&r2=349683&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutCommand.java Tue Nov 29 01:33:28 2005
@@ -45,8 +45,9 @@
protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository repo, ScmFileSet files, String tag )
throws ScmException
{
- Commandline cl = createCommandLine( (PerforceScmProviderRepository) repo, files.getBasedir(), tag );
- PerforceCheckOutConsumer consumer = new PerforceCheckOutConsumer();
+ PerforceScmProviderRepository prepo = (PerforceScmProviderRepository) repo;
+ Commandline cl = createCommandLine( prepo, files.getBasedir(), tag );
+ PerforceCheckOutConsumer consumer = new PerforceCheckOutConsumer( prepo.getPath() );
try
{
Process proc = cl.execute();
@@ -59,15 +60,21 @@
}
catch ( CommandLineException e )
{
- e.printStackTrace();
+ getLogger().error( e );
}
catch ( IOException e )
{
- e.printStackTrace();
+ getLogger().error( e );
}
- return new CheckOutScmResult( cl.toString(), consumer.isSuccess() ? "Checkout successful" : "Unable to sync",
- consumer.getOutput(), consumer.isSuccess() );
+ if ( consumer.isSuccess() )
+ {
+ return new CheckOutScmResult( cl.toString(), consumer.getCheckedout() );
+ }
+ else
+ {
+ return new CheckOutScmResult( cl.toString(), "Unable to sync", consumer.getOutput(), consumer.isSuccess() );
+ }
}
public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory, String tag )
@@ -83,4 +90,4 @@
return command;
}
-}
\ No newline at end of file
+}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutConsumer.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutConsumer.java?rev=349683&r1=349682&r2=349683&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutConsumer.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutConsumer.java Tue Nov 29 01:33:28 2005
@@ -16,7 +16,13 @@
* limitations under the License.
*/
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.scm.ScmFile;
import org.apache.maven.scm.provider.perforce.command.AbstractPerforceConsumer;
+import org.apache.maven.scm.provider.perforce.command.PerforceVerbMapper;
+import org.apache.regexp.RE;
import org.codehaus.plexus.util.cli.StreamConsumer;
/**
@@ -35,6 +41,17 @@
private int currentState = STATE_NORMAL;
+ private RE fileRegexp = new RE( "([^#]+)#\\d+ - ([a-z]+)" );
+
+ private List checkedout = new ArrayList();
+
+ private String repo = null;
+
+ public PerforceCheckOutConsumer( String repoPath )
+ {
+ repo = repoPath;
+ }
+
/*
* //depot/modules/cordoba/runtime-ear/.j2ee#1 - deleted as
* d:\perforce\depot\modules\cordoba\runtime-ear\.j2ee
@@ -56,8 +73,14 @@
*/
public void consumeLine( String line )
{
- if ( currentState != STATE_ERROR && line.startsWith( "//" ) )
+ if ( currentState != STATE_ERROR && fileRegexp.match( line ) )
{
+ String location = fileRegexp.getParen( 1 );
+ if ( location.startsWith( repo ) )
+ {
+ location = location.substring( repo.length() + 1 );
+ }
+ checkedout.add( new ScmFile( location, PerforceVerbMapper.toStatus( fileRegexp.getParen( 2 ) ) ) );
return;
}
@@ -74,4 +97,9 @@
{
return currentState == STATE_NORMAL;
}
-}
\ No newline at end of file
+
+ public List getCheckedout()
+ {
+ return checkedout;
+ }
+}
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutConsumerTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutConsumerTest.java?rev=349683&r1=349682&r2=349683&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutConsumerTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/checkout/PerforceCheckOutConsumerTest.java Tue Nov 29 01:33:28 2005
@@ -21,6 +21,8 @@
import java.io.FileInputStream;
import java.io.InputStreamReader;
+import org.apache.maven.scm.ScmFile;
+import org.apache.maven.scm.ScmFileStatus;
import org.apache.maven.scm.ScmTestCase;
/**
@@ -34,7 +36,7 @@
{
File testFile = getTestFile( "src/test/resources/perforce/checkout_good.txt" );
- PerforceCheckOutConsumer consumer = new PerforceCheckOutConsumer();
+ PerforceCheckOutConsumer consumer = new PerforceCheckOutConsumer("//depot/modules");
FileInputStream fis = new FileInputStream( testFile );
BufferedReader in = new BufferedReader( new InputStreamReader( fis ) );
@@ -47,12 +49,16 @@
assertTrue( consumer.getOutput(), consumer.isSuccess() );
assertEquals( "", consumer.getOutput() );
+ assertEquals( 4, consumer.getCheckedout().size() );
+ ScmFile file = (ScmFile) consumer.getCheckedout().get(0);
+ assertEquals( "cordoba/runtime-ear/.j2ee", file.getPath() );
+ assertEquals( ScmFileStatus.DELETED, file.getStatus() );
}
public void testBadParse() throws Exception {
File testFile = getTestFile("src/test/resources/perforce/checkout_bad.txt");
- PerforceCheckOutConsumer consumer = new PerforceCheckOutConsumer();
+ PerforceCheckOutConsumer consumer = new PerforceCheckOutConsumer("");
FileInputStream fis = new FileInputStream( testFile );
BufferedReader in = new BufferedReader( new InputStreamReader(fis) );