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/12/01 21:56:38 UTC

svn commit: r351467 - in /maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update: PerforceUpdateCommand.java PerforceUpdateConsumer.java

Author: evenisse
Date: Thu Dec  1 12:56:32 2005
New Revision: 351467

URL: http://svn.apache.org/viewcvs?rev=351467&view=rev
Log:
PR: SCM-92
Submitted by: Mike Perham

Add working directory support to Perforce update command

Removed:
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update/PerforceUpdateConsumer.java
Modified:
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update/PerforceUpdateCommand.java

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update/PerforceUpdateCommand.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/update/PerforceUpdateCommand.java?rev=351467&r1=351466&r2=351467&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update/PerforceUpdateCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/command/update/PerforceUpdateCommand.java Thu Dec  1 12:56:32 2005
@@ -16,23 +16,18 @@
  * limitations under the License.
  */
 
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-
+import org.apache.maven.scm.CommandParameter;
+import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.command.changelog.ChangeLogCommand;
+import org.apache.maven.scm.command.checkout.CheckOutScmResult;
 import org.apache.maven.scm.command.update.AbstractUpdateCommand;
 import org.apache.maven.scm.command.update.UpdateScmResult;
 import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.provider.perforce.PerforceScmProvider;
 import org.apache.maven.scm.provider.perforce.command.PerforceCommand;
 import org.apache.maven.scm.provider.perforce.command.changelog.PerforceChangeLogCommand;
-import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
-import org.codehaus.plexus.util.cli.CommandLineException;
-import org.codehaus.plexus.util.cli.Commandline;
+import org.apache.maven.scm.provider.perforce.command.checkout.PerforceCheckOutCommand;
 
 /**
  * @author Mike Perham
@@ -47,52 +42,24 @@
     protected UpdateScmResult executeUpdateCommand( ScmProviderRepository repo, ScmFileSet files, String tag )
         throws ScmException
     {
-        Commandline cl = createCommandLine( (PerforceScmProviderRepository) repo, files.getBasedir(), tag );
-        PerforceUpdateConsumer consumer = new PerforceUpdateConsumer();
-        try
-        {
-            Process proc = cl.execute();
-            BufferedReader br = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
-            String line = null;
-            while ( ( line = br.readLine() ) != null )
-            {
-                consumer.consumeLine( line );
-            }
-        }
-        catch ( CommandLineException e )
-        {
-            e.printStackTrace();
-        }
-        catch ( IOException e )
-        {
-            e.printStackTrace();
-        }
-
-        if ( consumer.isSuccess() )
-        {
-            return new UpdateScmResult( cl.toString(), consumer.getUpdates() );
-        }
-        else
-        {
-            return new UpdateScmResult( cl.toString(), "Unable to sync", consumer.getOutput(), consumer.isSuccess() );
-        }
-    }
-
-    public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory, String tag )
-    {
-        Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
-
-        command.createArgument().setValue( "sync" );
-        // I'm unclear whether we should be
-        // sync'ing each file individually to the label or just sync the
-        // entire contents of the workingDir. I'm going to assume the
-        // latter until the exact semantics are clearer.
-        command.createArgument().setValue( "..." + ( tag != null ? "@" + tag : "" ) );
-        return command;
+        // In Perforce, there is no difference between update and checkout.
+        // Here we just run the checkout command and map the result onto an
+        // UpdateScmResult.
+        PerforceCheckOutCommand command = new PerforceCheckOutCommand();
+        command.setLogger( getLogger() );
+        CommandParameters params = new CommandParameters();
+        params.setString( CommandParameter.TAG, tag );
+
+        CheckOutScmResult cosr = (CheckOutScmResult) command.execute( repo, files, params );
+
+        UpdateScmResult usr = new UpdateScmResult( cosr.getCommandLine(), cosr.getProviderMessage(), cosr
+            .getCommandOutput(), cosr.isSuccess() );
+        usr.setChanges( cosr.getCheckedOutFiles() );
+        return usr;
     }
 
     protected ChangeLogCommand getChangeLogCommand()
     {
         return new PerforceChangeLogCommand();
     }
-}
\ No newline at end of file
+}