Author: evenisse
Date: Sun Sep 24 05:41:33 2006
New Revision: 449398

URL: http://svn.apache.org/viewvc?view=rev&rev=449398
Log:
[SCM-223] Add VSS Add and Edit commands
Sumbmitted by: Thorsten Riek

Added:
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommand.java
   (with props)
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddConsumer.java
   (with props)
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommand.java
   (with props)
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditConsumer.java
   (with props)
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/add/
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommandTest.java
   (with props)
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/edit/
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommandTest.java
   (with props)
Modified:
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/VssScmProvider.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/VssCommandLineUtils.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/VssParameterContext.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/changelog/VssHistoryCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/checkout/VssCheckOutCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/status/VssStatusCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/status/VssStatusConsumer.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/update/VssUpdateCommand.java
    
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/repository/VssScmProviderRepository.java

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/VssScmProvider.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/VssScmProvider.java?view=diff&rev=449398&r1=449397&r2=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/VssScmProvider.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/VssScmProvider.java
 Sun Sep 24 05:41:33 2006
@@ -19,14 +19,18 @@
 import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.add.AddScmResult;
 import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
 import org.apache.maven.scm.command.checkout.CheckOutScmResult;
+import org.apache.maven.scm.command.edit.EditScmResult;
 import org.apache.maven.scm.command.status.StatusScmResult;
 import org.apache.maven.scm.command.update.UpdateScmResult;
 import org.apache.maven.scm.provider.AbstractScmProvider;
 import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.vss.commands.add.VssAddCommand;
 import org.apache.maven.scm.provider.vss.commands.changelog.VssHistoryCommand;
 import org.apache.maven.scm.provider.vss.commands.checkout.VssCheckOutCommand;
+import org.apache.maven.scm.provider.vss.commands.edit.VssEditCommand;
 import org.apache.maven.scm.provider.vss.commands.status.VssStatusCommand;
 import org.apache.maven.scm.provider.vss.commands.update.VssUpdateCommand;
 import org.apache.maven.scm.provider.vss.repository.VssScmProviderRepository;
@@ -37,8 +41,7 @@
 /**
  * @author <a href="mailto:[EMAIL PROTECTED]">George Gastaldi</a>
  * @version $Id$
- *          <p/>
- *          
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/guides/html/vstskuse_command_line_commands_and_options.asp
+ * @link 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/guides/html/vstskuse_command_line_commands_and_options.asp
  */
 public class VssScmProvider
     extends AbstractScmProvider
@@ -112,7 +115,6 @@
      *      org.apache.maven.scm.ScmFileSet,
      *      org.apache.maven.scm.CommandParameters)
      */
-    /*
      public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, 
CommandParameters parameters )
      throws ScmException
      {
@@ -120,10 +122,8 @@
      VssAddCommand command = new VssAddCommand();
      command.setLogger( getLogger() );
 
-     return (AddScmResult) command.execute( repository
-     .getProviderRepository(), fileSet, parameters );
+     return (AddScmResult) command.execute( 
repository.getProviderRepository(), fileSet, parameters );
      }
-     */
 
     /**
      * @see 
org.apache.maven.scm.provider.AbstractScmProvider#checkin(org.apache.maven.scm.repository.ScmRepository,
@@ -226,7 +226,6 @@
      *      org.apache.maven.scm.ScmFileSet, 
      *      org.apache.maven.scm.CommandParameters)
      */
-    /*
     public EditScmResult edit( ScmRepository repository, ScmFileSet fileSet, 
CommandParameters parameters )
         throws ScmException
     {
@@ -236,7 +235,6 @@
 
         return (EditScmResult) command.execute( 
repository.getProviderRepository(), fileSet, parameters );
     }
-    */
     
     /**
      * @see 
org.apache.maven.scm.provider.AbstractScmProvider#unedit(org.apache.maven.scm.repository.ScmRepository,
 

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/VssCommandLineUtils.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/VssCommandLineUtils.java?view=diff&rev=449398&r1=449397&r2=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/VssCommandLineUtils.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/VssCommandLineUtils.java
 Sun Sep 24 05:41:33 2006
@@ -16,7 +16,14 @@
  * limitations under the License.
  */
 
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Iterator;
+
 import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.log.ScmLogger;
 import org.apache.maven.scm.provider.vss.repository.VssScmProviderRepository;
 import org.apache.maven.scm.providers.vss.settings.Settings;
@@ -28,21 +35,24 @@
 import org.codehaus.plexus.util.cli.StreamConsumer;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-
-// FIXME extend CommandLineUtils
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Thorsten Riek</a>
+ * @version $Id$
+ */
 public class VssCommandLineUtils
-    implements VssConstants
+    implements VssConstants  // FIXME extend CommandLineUtils
 {
-    public static void addFiles( Commandline cl, File[] files )
+    public static void addFiles( Commandline cl, ScmFileSet fileSet )
     {
-        for ( int i = 0; i < files.length; i++ )
+        Iterator it = fileSet.getFileList().iterator();
+
+        while ( it.hasNext() )
         {
-            cl.createArgument().setValue( files[i].getPath().replace( '\\', 
'/' ) );
+            File file = (File) it.next();
+
+            cl.createArgument().setValue( file.getPath().replace( '\\', '/' ) 
);
         }
+
     }
 
     public static Commandline getBaseVssCommandLine( File workingDirectory, 
String cmd,

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/VssParameterContext.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/VssParameterContext.java?view=diff&rev=449398&r1=449397&r2=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/VssParameterContext.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/VssParameterContext.java
 Sun Sep 24 05:41:33 2006
@@ -27,6 +27,10 @@
 import java.util.GregorianCalendar;
 
 
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Thorsten Riek</a>
+ * @version $Id$
+ */
 public class VssParameterContext
     implements VssConstants
 {

Added: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommand.java?view=auto&rev=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommand.java
 (added)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommand.java
 Sun Sep 24 05:41:33 2006
@@ -0,0 +1,145 @@
+package org.apache.maven.scm.provider.vss.commands.add;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.add.AbstractAddCommand;
+import org.apache.maven.scm.command.add.AddScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.vss.commands.VssCommandLineUtils;
+import org.apache.maven.scm.provider.vss.commands.VssConstants;
+import org.apache.maven.scm.provider.vss.repository.VssScmProviderRepository;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
+ * @version $Id$
+ */
+public class VssAddCommand
+    extends AbstractAddCommand
+{
+    protected ScmResult executeAddCommand( ScmProviderRepository repository, 
ScmFileSet fileSet, String message,
+                                           boolean binary )
+        throws ScmException
+    {
+        VssScmProviderRepository repo = (VssScmProviderRepository) repository;
+
+        if ( fileSet.getFiles().length == 0 )
+        {
+            throw new ScmException( "You must provide at least one 
file/directory to add" );
+        }
+
+        Commandline cl = buildCmdLine( repo, fileSet );
+
+        VssAddConsumer consumer = new VssAddConsumer( getLogger() );
+
+        CommandLineUtils.StringStreamConsumer stderr = new 
CommandLineUtils.StringStreamConsumer();
+
+        getLogger().info( "Executing: " + cl );
+        getLogger().info( "Working directory: " + 
cl.getWorkingDirectory().getAbsolutePath() );
+
+        int exitCode = VssCommandLineUtils.executeCommandline( cl, consumer, 
stderr, getLogger() );
+
+        if ( exitCode != 0 )
+        {
+            return new ChangeLogScmResult( cl.toString(), "The vss command 
failed.", stderr.getOutput(), false );
+        }
+
+        return new AddScmResult( cl.toString(), consumer.getAddedFiles() );
+    }
+
+    public Commandline buildCmdLine( VssScmProviderRepository repo, ScmFileSet 
fileSet )
+        throws ScmException
+    {
+        Commandline command = new Commandline();
+
+        command.setWorkingDirectory( fileSet.getBasedir().getAbsolutePath() );
+
+        try
+        {
+            command.addSystemEnvironment();
+        }
+        catch ( Exception e )
+        {
+            throw new ScmException( "Can't add system environment.", e );
+        }
+
+        command.addEnvironment( "SSDIR", repo.getVssdir() );
+
+        String ssDir = VssCommandLineUtils.getSsDir();
+
+        command.setExecutable( ssDir + VssConstants.SS_EXE );
+
+        command.createArgument().setValue( VssConstants.COMMAND_ADD );
+
+        VssCommandLineUtils.addFiles( command, fileSet );
+
+        //        command.createArgument().setValue( 
VssConstants.PROJECT_PREFIX + repo.getProject() );
+
+        //User identification to get access to vss repository
+        if ( repo.getUserPassword() != null )
+        {
+            command.createArgument().setValue( VssConstants.FLAG_LOGIN + 
repo.getUserPassword() );
+        }
+
+        //Ignore: Do not ask for input under any circumstances.
+        command.createArgument().setValue( VssConstants.FLAG_AUTORESPONSE_DEF 
);
+
+        return command;
+    }
+
+    public Commandline buildSetCurrentProjectCmdLine( VssScmProviderRepository 
repo )
+        throws ScmException
+    {
+        Commandline command = new Commandline();
+
+        try
+        {
+            command.addSystemEnvironment();
+        }
+        catch ( Exception e )
+        {
+            throw new ScmException( "Can't add system environment.", e );
+        }
+
+        command.addEnvironment( "SSDIR", repo.getVssdir() );
+
+        String ssDir = VssCommandLineUtils.getSsDir();
+
+        command.setExecutable( ssDir + VssConstants.SS_EXE );
+
+        command.createArgument().setValue( VssConstants.COMMAND_CP );
+
+        command.createArgument().setValue( VssConstants.PROJECT_PREFIX + 
repo.getProject() );
+
+        //User identification to get access to vss repository
+        if ( repo.getUserPassword() != null )
+        {
+            command.createArgument().setValue( VssConstants.FLAG_LOGIN + 
repo.getUserPassword() );
+        }
+
+        //Ignore: Do not ask for input under any circumstances.
+        command.createArgument().setValue( VssConstants.FLAG_AUTORESPONSE_DEF 
);
+
+        return command;
+    }
+
+}

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommand.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddConsumer.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddConsumer.java?view=auto&rev=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddConsumer.java
 (added)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddConsumer.java
 Sun Sep 24 05:41:33 2006
@@ -0,0 +1,85 @@
+package org.apache.maven.scm.provider.vss.commands.add;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.scm.ScmFile;
+import org.apache.maven.scm.ScmFileStatus;
+import org.apache.maven.scm.log.ScmLogger;
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
+ * @version $Id$
+ */
+public class VssAddConsumer
+    implements StreamConsumer
+{
+    private ScmLogger logger;
+
+    private List addedFiles = new ArrayList();
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    public VssAddConsumer( ScmLogger logger )
+    {
+        this.logger = logger;
+    }
+
+    // ----------------------------------------------------------------------
+    // StreamConsumer Implementation
+    // ----------------------------------------------------------------------
+
+    public void consumeLine( String line )
+    {
+        if ( line.length() <= 3 )
+        {
+            logger.warn( "Unexpected input, the line must be at least three 
characters long. Line: '" + line + "'." );
+
+            return;
+        }
+
+        String statusString = line.substring( 0, 1 );
+
+        String file = line.substring( 3 );
+
+        ScmFileStatus status;
+
+        if ( statusString.equals( "A" ) )
+        {
+            status = ScmFileStatus.ADDED;
+        }
+        else
+        {
+            logger.info( "Unknown file status: '" + statusString + "'." );
+
+            return;
+        }
+
+        addedFiles.add( new ScmFile( file, status ) );
+    }
+
+    public List getAddedFiles()
+    {
+        return addedFiles;
+    }
+
+}

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddConsumer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/add/VssAddConsumer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/changelog/VssHistoryCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/changelog/VssHistoryCommand.java?view=diff&rev=449398&r1=449397&r2=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/changelog/VssHistoryCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/changelog/VssHistoryCommand.java
 Sun Sep 24 05:41:33 2006
@@ -32,6 +32,10 @@
 import java.util.Date;
 import java.util.Locale;
 
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Thorsten Riek</a>
+ * @version $Id: VssHistoryCommand.java 02.06.2006 00:05:29
+ */
 public class VssHistoryCommand
     extends AbstractChangeLogCommand
 {

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/checkout/VssCheckOutCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/checkout/VssCheckOutCommand.java?view=diff&rev=449398&r1=449397&r2=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/checkout/VssCheckOutCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/checkout/VssCheckOutCommand.java
 Sun Sep 24 05:41:33 2006
@@ -29,6 +29,10 @@
 import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Thorsten Riek</a>
+ * @version $Id: VssCheckOutCommand.java 02.06.2006 00:05:51
+ */
 public class VssCheckOutCommand
     extends AbstractCheckOutCommand
 {

Added: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommand.java?view=auto&rev=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommand.java
 (added)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommand.java
 Sun Sep 24 05:41:33 2006
@@ -0,0 +1,130 @@
+package org.apache.maven.scm.provider.vss.commands.edit;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogCommand;
+import org.apache.maven.scm.command.edit.AbstractEditCommand;
+import org.apache.maven.scm.command.edit.EditScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.vss.commands.VssCommandLineUtils;
+import org.apache.maven.scm.provider.vss.commands.VssConstants;
+import org.apache.maven.scm.provider.vss.commands.changelog.VssHistoryCommand;
+import org.apache.maven.scm.provider.vss.repository.VssScmProviderRepository;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Thorsten Riek</a>
+ * @version $Id: VssCheckOutCommand.java 02.06.2006 00:05:51
+ */
+public class VssEditCommand
+    extends AbstractEditCommand
+{
+
+    protected ScmResult executeEditCommand( ScmProviderRepository repository, 
ScmFileSet fileSet )
+        throws ScmException
+    {
+        getLogger().debug( "executing checkout command..." );
+
+        VssScmProviderRepository repo = (VssScmProviderRepository) repository;
+
+        Commandline cl = buildCmdLine( repo, fileSet);
+
+        VssEditConsumer consumer = new VssEditConsumer( repo, getLogger() );
+
+        //      TODO handle deleted files from VSS
+        CommandLineUtils.StringStreamConsumer stderr = new 
CommandLineUtils.StringStreamConsumer();
+
+        int exitCode;
+
+        getLogger().debug( "Executing: " + 
cl.getWorkingDirectory().getAbsolutePath() + ">>" + cl.toString() );
+
+        exitCode = VssCommandLineUtils.executeCommandline( cl, consumer, 
stderr, getLogger() );
+
+        if ( exitCode != 0 )
+        {
+            String error = stderr.getOutput();
+            getLogger().debug( "VSS returns error: [" + error + "] return 
code: [" + exitCode + "]" );
+            if ( error.indexOf( "A writable copy of" ) < 0 )
+            {
+                return new EditScmResult( cl.toString(), "The vss command 
failed.", error, false );
+            }
+            // print out the writable copy for manual handling
+            getLogger().warn( error );
+        }
+
+        return new EditScmResult( cl.toString(), consumer.getUpdatedFiles() );
+    }
+
+    public Commandline buildCmdLine( VssScmProviderRepository repo, ScmFileSet 
fileSet )
+        throws ScmException
+    {
+
+        Commandline command = new Commandline();
+
+        command.setWorkingDirectory( fileSet.getBasedir().getAbsolutePath() );
+
+        try
+        {
+            command.addSystemEnvironment();
+        }
+        catch ( Exception e )
+        {
+            throw new ScmException( "Can't add system environment.", e );
+        }
+
+        command.addEnvironment( "SSDIR", repo.getVssdir() );
+
+        String ssDir = VssCommandLineUtils.getSsDir();
+
+        command.setExecutable( ssDir + VssConstants.SS_EXE );
+
+        command.createArgument().setValue( VssConstants.COMMAND_CHECKOUT );
+
+        command.createArgument().setValue( VssConstants.PROJECT_PREFIX + 
repo.getProject() );
+
+        //User identification to get access to vss repository
+        if ( repo.getUserPassword() != null )
+        {
+            command.createArgument().setValue( VssConstants.FLAG_LOGIN + 
repo.getUserPassword() );
+        }
+
+        //Display the history of an entire project list
+        command.createArgument().setValue( VssConstants.FLAG_RECURSION );
+
+        //Ignore: Do not ask for input under any circumstances.
+        command.createArgument().setValue( VssConstants.FLAG_AUTORESPONSE_DEF 
);
+
+        return command;
+    }
+
+    /**
+     * @see 
org.apache.maven.scm.command.checkout.AbstractCheckOutCommand#getChangeLogCommand()
+     */
+    protected ChangeLogCommand getChangeLogCommand()
+    {
+        VssHistoryCommand command = new VssHistoryCommand();
+
+        command.setLogger( getLogger() );
+
+        return command;
+    }
+
+}

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommand.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditConsumer.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditConsumer.java?view=auto&rev=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditConsumer.java
 (added)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditConsumer.java
 Sun Sep 24 05:41:33 2006
@@ -0,0 +1,200 @@
+package org.apache.maven.scm.provider.vss.commands.edit;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.ArrayList;
+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.apache.maven.scm.provider.vss.commands.VssConstants;
+import org.apache.maven.scm.provider.vss.repository.VssScmProviderRepository;
+import org.apache.maven.scm.util.AbstractConsumer;
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Thorsten Riek</a>
+ * @version $Id$
+ */
+public class VssEditConsumer
+    extends AbstractConsumer
+    implements StreamConsumer
+{
+
+    /**
+     * expecting file information
+     */
+    private static final int GET_UNKNOWN = 0;
+
+    /**
+     * expecting file information
+     */
+    private static final int GET_FILE = 1;
+
+    /**
+     * expecting file information
+     */
+    private static final int CURRENTLY_CHECKED_OUT_FILE = 2;
+
+    /**
+     * expecting file path information
+     */
+    private static final int GET_FILE_PATH = 3;
+
+    /**
+     * expecting writable copy
+     */
+    private static final int IS_WRITABLE_COPY = 4;
+
+    /**
+     * expecting working folder
+     */
+    private static final int SET_WORKING_FOLDER = 5;
+
+    /**
+     * Marks start of file data
+     */
+    private static String START_FILE_PATH = "$/";
+
+    /**
+     * Marks getting a new File
+     */
+    private static final String START_GETTING = "Getting";
+
+    /**
+     * Marks replacing a old File
+     */
+    private static final String START_CURRENTLY_CHECKED_OUT = "You currently 
have file";
+
+    /**
+     * Marks a writable copy of a File / maybe a conflict
+     */
+    private static final String START_WRITABLE_COPY = "A writable ";
+
+    /**
+     * Marks "Set the default folder for project" question
+     */
+    private static final String CONTAINS_SET_DEFAULT_WORKING_FOLDER = "as the 
default folder for project";
+
+    private String currentPath = "";
+
+    private List updatedFiles = new ArrayList();
+
+    private VssScmProviderRepository repo;
+
+    public VssEditConsumer( VssScmProviderRepository repo, ScmLogger logger )
+    {
+        super( logger );
+        this.repo = repo;
+    }
+
+    public void consumeLine( String line )
+    {
+        getLogger().debug( line );
+
+        switch ( getLineStatus( line ) )
+        {
+            case GET_FILE_PATH:
+                processGetFilePath( line );
+                break;
+            case GET_FILE:
+                processGetFile( line );
+                break;
+            case CURRENTLY_CHECKED_OUT_FILE:
+                processReplaceFile( line );
+                break;
+            case IS_WRITABLE_COPY:
+                // will be overwritten and uses REPLACE_FILE
+                break;
+            case SET_WORKING_FOLDER:
+                // to trash
+                break;
+            default:
+                break;
+        }
+    }
+
+    /**
+     * Process the current input line in the Get File state.
+     *
+     * @param line a line of text from the VSS log output
+     */
+    private void processGetFile( String line )
+    {
+        String[] fileLine = line.split( " " );
+        updatedFiles.add( new ScmFile( currentPath + "/" + fileLine[1], 
ScmFileStatus.UPDATED ) );
+        getLogger().info( fileLine[0] + ": " + currentPath + "/" + fileLine[1] 
);
+    }
+
+    /**
+     * Process the current input line in the Replace File state.
+     *
+     * @param line a line of text from the VSS log output
+     */
+    private void processReplaceFile( String line )
+    {
+//        updatedFiles.add( new ScmFile( currentPath + "/" + 
line.substring(START_CURRENTLY_CHECKED_OUT.length()), ScmFileStatus.UPDATED ) );
+        getLogger().info( START_CURRENTLY_CHECKED_OUT + currentPath + "/" + 
line.substring(START_CURRENTLY_CHECKED_OUT.length()) );
+    }
+
+    /**
+     * Process the current input line in the Get File Path state.
+     *
+     * @param line a line of text from the VSS log output
+     */
+    private void processGetFilePath( String line )
+    {
+        currentPath = line.substring( (VssConstants.PROJECT_PREFIX + 
repo.getProject()).length() ,
+                                      line.length() - 1 );
+    }
+
+    /**
+     * Identify the status of a vss get line
+     *
+     * @param line The line to process
+     * @return status
+     */
+    private int getLineStatus( String line )
+    {
+        int argument = GET_UNKNOWN;
+        if ( line.startsWith( START_FILE_PATH ) )
+        {
+            argument = GET_FILE_PATH;
+        }
+        else if ( line.startsWith( START_CURRENTLY_CHECKED_OUT ) )
+        {
+            argument = CURRENTLY_CHECKED_OUT_FILE;
+        }
+        else if ( line.startsWith( START_WRITABLE_COPY ) )
+        {
+            argument = IS_WRITABLE_COPY;
+        }
+        else if ( line.indexOf( CONTAINS_SET_DEFAULT_WORKING_FOLDER ) != -1 )
+        {
+            argument = SET_WORKING_FOLDER;
+        }
+
+        return argument;
+    }
+
+    public List getUpdatedFiles()
+    {
+        return updatedFiles;
+    }
+
+}

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditConsumer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditConsumer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/status/VssStatusCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/status/VssStatusCommand.java?view=diff&rev=449398&r1=449397&r2=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/status/VssStatusCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/status/VssStatusCommand.java
 Sun Sep 24 05:41:33 2006
@@ -29,6 +29,10 @@
 import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Thorsten Riek</a>
+ * @version $Id$
+ */
 public class VssStatusCommand
     extends AbstractStatusCommand
 {

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/status/VssStatusConsumer.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/status/VssStatusConsumer.java?view=diff&rev=449398&r1=449397&r2=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/status/VssStatusConsumer.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/status/VssStatusConsumer.java
 Sun Sep 24 05:41:33 2006
@@ -68,11 +68,6 @@
     private static final int DIFF_START_DIFFING_LOCAL = 5;
 
     /**
-     * Marks start of file data
-     */
-    private static String START_FILE_PATH = "$/";
-
-    /**
      * Marks Diffing remote project folder
      */
     private static final String START_DIFFING_REMOTE = "Diffing:";
@@ -82,32 +77,20 @@
      */
     private static final String START_DIFFING_LOCAL = "Against:";
 
-    //    Diffing: $/com.fum/fum-utilities
-    //    Against: D:\work\fum-utilities
-
     /**
      * Marks Local files not in the current project
      */
     private static final String LOCAL_FILES_NOT_IN_PROJECT = "Local files not 
in the current project:";
 
-    //      .classpath  .project  Diff.txt  getVSS.xml  out.txt
-
     /**
      * Marks SourceSafe files different from local files
      */
     private static final String VSS_FILES_DIFFERENT_FROM_LOCAL_FILES = 
"SourceSafe files different from local files:";
 
-    //      .classpath  .project  Diff.txt  getVSS.xml  out.txt
-
     /**
      * Marks SourceSafe files not in the current folder
      */
     private static final String VSS_FILES_NOT_IN_CURRENT_FOLDER = "SourceSafe 
files not in the current folder:";
-
-    /**
-     * Marks "Set the default folder for project" question
-     */
-    private static final String CONTAINS_SET_DEFAULT_WORKING_FOLDER = "as the 
default folder for project";
 
     private String remoteProjectFolder = "";
 

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/update/VssUpdateCommand.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/update/VssUpdateCommand.java?view=diff&rev=449398&r1=449397&r2=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/update/VssUpdateCommand.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/commands/update/VssUpdateCommand.java
 Sun Sep 24 05:41:33 2006
@@ -29,6 +29,10 @@
 import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Thorsten Riek</a>
+ * @version $Id$
+ */
 public class VssUpdateCommand
     extends AbstractUpdateCommand
 {

Modified: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/repository/VssScmProviderRepository.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/repository/VssScmProviderRepository.java?view=diff&rev=449398&r1=449397&r2=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/repository/VssScmProviderRepository.java
 (original)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/main/java/org/apache/maven/scm/provider/vss/repository/VssScmProviderRepository.java
 Sun Sep 24 05:41:33 2006
@@ -19,6 +19,10 @@
 import org.apache.maven.scm.provider.ScmProviderRepository;
 import org.codehaus.plexus.util.StringUtils;
 
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Thorsten Riek</a>
+ * @version $Id$
+ */
 public class VssScmProviderRepository
     extends ScmProviderRepository
 {

Added: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommandTest.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommandTest.java?view=auto&rev=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommandTest.java
 (added)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommandTest.java
 Sun Sep 24 05:41:33 2006
@@ -0,0 +1,73 @@
+package org.apache.maven.scm.provider.vss.commands.add;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.File;
+
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.provider.vss.commands.VssCommandLineUtils;
+import org.apache.maven.scm.provider.vss.repository.VssScmProviderRepository;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public class VssAddCommandTest
+    extends ScmTestCase
+{
+    private ScmManager scmManager;
+
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        scmManager = getScmManager();
+    }
+
+    public void testBuildCmdLine()
+        throws Exception
+    {
+        ScmRepository repository =
+            scmManager.makeScmRepository( "scm:vss|username|[EMAIL 
PROTECTED]:/Program File/Visual Source Safe|D:/myProject" );
+        ScmFileSet fileSet = new ScmFileSet( getTestFile( "target" ) );
+        VssAddCommand command = new VssAddCommand();
+        Commandline cl = command.buildCmdLine( (VssScmProviderRepository) 
repository.getProviderRepository(), fileSet);
+        String ssPath = VssCommandLineUtils.getSsDir().replace( '/', 
File.separatorChar );
+        assertEquals( ssPath + "ss Add -Yusername,password -I-",
+                      cl.toString() );
+    }
+    
+    public void testBuildSetCurrentProjectCmdLine()
+    throws Exception
+{
+    ScmRepository repository =
+        scmManager.makeScmRepository( "scm:vss|username|[EMAIL 
PROTECTED]:/Program File/Visual Source Safe|D:/myProject" );
+    VssAddCommand command = new VssAddCommand();
+    Commandline cl = command.buildSetCurrentProjectCmdLine( 
(VssScmProviderRepository) repository.getProviderRepository());
+    String ssPath = VssCommandLineUtils.getSsDir().replace( '/', 
File.separatorChar );
+    assertEquals( ssPath + "ss CP $D:/myProject -Yusername,password -I-",
+                  cl.toString() );
+}
+
+    
+    
+}

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommandTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/add/VssAddCommandTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommandTest.java
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommandTest.java?view=auto&rev=449398
==============================================================================
--- 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommandTest.java
 (added)
+++ 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommandTest.java
 Sun Sep 24 05:41:33 2006
@@ -0,0 +1,58 @@
+package org.apache.maven.scm.provider.vss.commands.edit;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.File;
+
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.provider.vss.commands.VssCommandLineUtils;
+import org.apache.maven.scm.provider.vss.repository.VssScmProviderRepository;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public class VssEditCommandTest
+    extends ScmTestCase
+{
+    private ScmManager scmManager;
+
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        scmManager = getScmManager();
+    }
+
+    public void testCommandLine()
+        throws Exception
+    {
+        ScmRepository repository =
+            scmManager.makeScmRepository( "scm:vss|username|[EMAIL 
PROTECTED]:/Program File/Visual Source Safe|D:/myProject" );
+        ScmFileSet fileSet = new ScmFileSet( getTestFile( "target" ) );
+        VssEditCommand command = new VssEditCommand();
+        Commandline cl = command.buildCmdLine( (VssScmProviderRepository) 
repository.getProviderRepository(), fileSet );
+        String ssPath = VssCommandLineUtils.getSsDir().replace( '/', 
File.separatorChar );
+        assertEquals( ssPath + "ss Checkout $D:/myProject -Yusername,password 
-R -I-",
+                      cl.toString() );
+    }
+}

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommandTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/scm/trunk/maven-scm-providers/maven-scm-provider-vss/src/test/java/org/apache/maven/scm/provider/vss/commands/edit/VssEditCommandTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"


Reply via email to