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 vs...@apache.org on 2008/09/03 01:41:55 UTC

svn commit: r691433 - in /maven/scm/trunk: maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/ maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/jav...

Author: vsiveton
Date: Tue Sep  2 16:41:54 2008
New Revision: 691433

URL: http://svn.apache.org/viewvc?rev=691433&view=rev
Log:
SCM-408: Support the CVSNT "sserver" protocol

o updated code to support sserver protocol
o added test case
o updated the documentation

Added:
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/test/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProviderTest.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/AbstractCvsScmProvider.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProvider.java
    maven/scm/trunk/src/site/apt/cvs.apt

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/AbstractCvsScmProvider.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/AbstractCvsScmProvider.java?rev=691433&r1=691432&r2=691433&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/AbstractCvsScmProvider.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/AbstractCvsScmProvider.java Tue Sep  2 16:41:54 2008
@@ -59,19 +59,19 @@
 public abstract class AbstractCvsScmProvider
     extends AbstractScmProvider
 {
-    /** */
-    public static final String TRANSPORT_LOCAL = "local";
+    /** ext transport method */
+    public static final String TRANSPORT_EXT = "ext";
 
-    /** */
-    public static final String TRANSPORT_PSERVER = "pserver";
+    /** local transport method */
+    public static final String TRANSPORT_LOCAL = "local";
 
-    /** */
+    /** lserver transport method */
     public static final String TRANSPORT_LSERVER = "lserver";
 
-    /** */
-    public static final String TRANSPORT_EXT = "ext";
+    /** pserver transport method */
+    public static final String TRANSPORT_PSERVER = "pserver";
 
-    /** */
+    /** sspi transport method */
     public static final String TRANSPORT_SSPI = "sspi";
 
     // ----------------------------------------------------------------------
@@ -79,13 +79,60 @@
     // ----------------------------------------------------------------------
 
     /**
-     * Internal class
+     * The current ScmUrlParserResult
+     *
+     * @since 1.1.1
      */
-    private static class ScmUrlParserResult
+    public static class ScmUrlParserResult
     {
-        private List messages = new ArrayList();
+        private List messages;
 
         private ScmProviderRepository repository;
+
+        public ScmUrlParserResult()
+        {
+            messages = new ArrayList();
+        }
+
+        /**
+         * @return the messages
+         */
+        public List getMessages()
+        {
+            return messages;
+        }
+
+        /**
+         * @param messages the messages to set
+         */
+        public void setMessages( List messages )
+        {
+            this.messages = messages;
+        }
+
+        /**
+         * @return the repository
+         */
+        public ScmProviderRepository getRepository()
+        {
+            return repository;
+        }
+
+        /**
+         * @param repository the repository to set
+         */
+        public void setRepository( ScmProviderRepository repository )
+        {
+            this.repository = repository;
+        }
+
+        /**
+         * Reset messages.
+         */
+        public void resetMessages()
+        {
+            this.messages = new ArrayList();
+        }
     }
 
     // ----------------------------------------------------------------------
@@ -138,12 +185,12 @@
     {
         ScmUrlParserResult result = parseScmUrl( scmSpecificUrl, delimiter );
 
-        if ( result.messages.size() > 0 )
+        if ( result.getMessages().size() > 0 )
         {
-            throw new ScmRepositoryException( "The scm url is invalid.", result.messages );
+            throw new ScmRepositoryException( "The scm url is invalid.", result.getMessages() );
         }
 
-        return result.repository;
+        return result.getRepository();
     }
 
     /** {@inheritDoc} */
@@ -195,7 +242,7 @@
     {
         ScmUrlParserResult result = parseScmUrl( scmSpecificUrl, delimiter );
 
-        return result.messages;
+        return result.getMessages();
     }
 
     /** {@inheritDoc} */
@@ -204,11 +251,126 @@
         return "cvs";
     }
 
+    /** {@inheritDoc} */
+    public AddScmResult add( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+        throws ScmException
+    {
+        return (AddScmResult) executeCommand( getAddCommand(), repository, fileSet, parameters );
+    }
+
+    /** {@inheritDoc} */
+    public BranchScmResult branch( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+        throws ScmException
+    {
+        return (BranchScmResult) executeCommand( getBranchCommand(), repository, fileSet, parameters );
+    }
+
+    /** {@inheritDoc} */
+    public ChangeLogScmResult changelog( ScmProviderRepository repository, ScmFileSet fileSet,
+                                         CommandParameters parameters )
+        throws ScmException
+    {
+        return (ChangeLogScmResult) executeCommand( getChangeLogCommand(), repository, fileSet, parameters );
+    }
+
+    /** {@inheritDoc} */
+    public CheckInScmResult checkin( ScmProviderRepository repository, ScmFileSet fileSet,
+                                     CommandParameters parameters )
+        throws ScmException
+    {
+        return (CheckInScmResult) executeCommand( getCheckInCommand(), repository, fileSet, parameters );
+    }
+
+    /** {@inheritDoc} */
+    public CheckOutScmResult checkout( ScmProviderRepository repository, ScmFileSet fileSet,
+                                       CommandParameters parameters )
+        throws ScmException
+    {
+        return (CheckOutScmResult) executeCommand( getCheckOutCommand(), repository, fileSet, parameters );
+    }
+
+    /** {@inheritDoc} */
+    public DiffScmResult diff( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+        throws ScmException
+    {
+        return (DiffScmResult) executeCommand( getDiffCommand(), repository, fileSet, parameters );
+    }
+
+    /** {@inheritDoc} */
+    protected ExportScmResult export( ScmProviderRepository repository, ScmFileSet fileSet,
+                                      CommandParameters parameters )
+        throws ScmException
+    {
+        return (ExportScmResult) executeCommand( getExportCommand(), repository, fileSet, parameters );
+    }
+
+    /** {@inheritDoc} */
+    public LoginScmResult login( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+        throws ScmException
+    {
+        return (LoginScmResult) executeCommand( getLoginCommand(), repository, fileSet, parameters );
+    }
+
+    /** {@inheritDoc} */
+    public RemoveScmResult remove( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+        throws ScmException
+    {
+        return (RemoveScmResult) executeCommand( getRemoveCommand(), repository, fileSet, parameters );
+    }
+
+    /** {@inheritDoc} */
+    public StatusScmResult status( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+        throws ScmException
+    {
+        return (StatusScmResult) executeCommand( getStatusCommand(), repository, fileSet, parameters );
+    }
+
+    /** {@inheritDoc} */
+    public TagScmResult tag( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+        throws ScmException
+    {
+        return (TagScmResult) executeCommand( getTagCommand(), repository, fileSet, parameters );
+    }
+
+    /** {@inheritDoc} */
+    public UpdateScmResult update( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+        throws ScmException
+    {
+        return (UpdateScmResult) executeCommand( getUpdateCommand(), repository, fileSet, parameters );
+    }
+
+    /** {@inheritDoc} */
+    protected ListScmResult list( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+        throws ScmException
+    {
+        return (ListScmResult) executeCommand( getListCommand(), repository, fileSet, parameters );
+    }
+
+    /**
+     * @param basedir not null
+     * @param f not null
+     * @return the relative path
+     * @throws ScmException if any
+     * @throws IOException if any
+     */
+    public static String getRelativePath( File basedir, File f )
+        throws ScmException, IOException
+    {
+        File fileOrDir = getAbsoluteFilePath( f );
+
+        if ( !fileOrDir.getPath().startsWith( basedir.getPath() ) )
+        {
+            throw new ScmException( fileOrDir.getPath() + " was not contained in " + basedir.getPath() );
+        }
+
+        return fileOrDir.getPath().substring( basedir.getPath().length() + 1, fileOrDir.getPath().length() );
+    }
+
     // ----------------------------------------------------------------------
-    //
+    // Protected methods
     // ----------------------------------------------------------------------
 
-    private ScmUrlParserResult parseScmUrl( String scmSpecificUrl, char delimiter )
+    protected ScmUrlParserResult parseScmUrl( String scmSpecificUrl, char delimiter )
     {
         ScmUrlParserResult result = new ScmUrlParserResult();
 
@@ -216,7 +378,7 @@
 
         if ( tokens.length < 3 )
         {
-            result.messages.add( "The connection string contains too few tokens." );
+            result.getMessages().add( "The connection string contains too few tokens." );
 
             return result;
         }
@@ -235,25 +397,25 @@
         {
             if ( tokens.length != 4 && transport.equalsIgnoreCase( TRANSPORT_EXT ) )
             {
-                result.messages.add( "The connection string contains too few tokens." );
+                result.getMessages().add( "The connection string contains too few tokens." );
 
                 return result;
             }
             else if ( ( tokens.length < 4 || tokens.length > 6 ) && transport.equalsIgnoreCase( TRANSPORT_PSERVER ) )
             {
-                result.messages.add( "The connection string contains too few tokens." );
+                result.getMessages().add( "The connection string contains too few tokens." );
 
                 return result;
             }
             else if ( tokens.length < 4 || tokens.length > 5 && !transport.equalsIgnoreCase( TRANSPORT_PSERVER ) )
             {
-                result.messages.add( "The connection string contains too few tokens." );
+                result.getMessages().add( "The connection string contains too few tokens." );
 
                 return result;
             }
             else if ( tokens.length < 4 || tokens.length > 5 && transport.equalsIgnoreCase( TRANSPORT_SSPI ) )
             {
-                result.messages.add( "The connection string contains too few tokens." );
+                result.getMessages().add( "The connection string contains too few tokens." );
 
                 return result;
             }
@@ -278,7 +440,7 @@
         }
         else
         {
-            result.messages.add( "Unknown transport: " + transport );
+            result.getMessages().add( "Unknown transport: " + transport );
 
             return result;
         }
@@ -333,7 +495,7 @@
 
                 if ( index == -1 )
                 {
-                    result.messages
+                    result.getMessages()
                         .add( "The user_password_host part must be on the form: <username>:<password>@<hostname>." );
 
                     return result;
@@ -389,7 +551,7 @@
                     catch ( Exception e )
                     {
                         //incorrect
-                        result.messages.add( "Your scm url is invalid." );
+                        result.getMessages().add( "Your scm url is invalid." );
 
                         return result;
                     }
@@ -457,7 +619,7 @@
                 catch ( Exception e )
                 {
                     //incorrect
-                    result.messages.add( "Your scm url is invalid, could not get port value." );
+                    result.getMessages().add( "Your scm url is invalid, could not get port value." );
 
                     return result;
                 }
@@ -526,28 +688,18 @@
 
         if ( port == -1 )
         {
-            result.repository = new CvsScmProviderRepository( cvsroot, transport, user, password, host, path, module );
+            result.setRepository( new CvsScmProviderRepository( cvsroot, transport, user, password, host, path,
+                                                                module ) );
         }
         else
         {
-            result.repository =
-                new CvsScmProviderRepository( cvsroot, transport, user, password, host, port, path, module );
+            result.setRepository( new CvsScmProviderRepository( cvsroot, transport, user, password, host, port,
+                                                                path, module ) );
         }
 
         return result;
     }
 
-    private ScmResult executeCommand( Command command, ScmProviderRepository repository, ScmFileSet fileSet,
-                                      CommandParameters parameters )
-        throws ScmException
-    {
-        fileSet = fixUpScmFileSetAbsoluteFilePath( fileSet );
-
-        command.setLogger( getLogger() );
-
-        return command.execute( repository, fileSet, parameters );
-    }
-
     protected abstract Command getAddCommand();
 
     protected abstract Command getBranchCommand();
@@ -574,100 +726,21 @@
 
     protected abstract Command getUpdateCommand();
 
-    /** {@inheritDoc} */
-    public AddScmResult add( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
-        throws ScmException
-    {
-        return (AddScmResult) executeCommand( getAddCommand(), repository, fileSet, parameters );
-    }
-
-    /** {@inheritDoc} */
-    public BranchScmResult branch( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
-        throws ScmException
-    {
-        return (BranchScmResult) executeCommand( getBranchCommand(), repository, fileSet, parameters );
-    }
-
-    /** {@inheritDoc} */
-    public ChangeLogScmResult changelog( ScmProviderRepository repository, ScmFileSet fileSet,
-                                         CommandParameters parameters )
-        throws ScmException
-    {
-        return (ChangeLogScmResult) executeCommand( getChangeLogCommand(), repository, fileSet, parameters );
-    }
-
-    /** {@inheritDoc} */
-    public CheckInScmResult checkin( ScmProviderRepository repository, ScmFileSet fileSet,
-                                     CommandParameters parameters )
-        throws ScmException
-    {
-        return (CheckInScmResult) executeCommand( getCheckInCommand(), repository, fileSet, parameters );
-    }
-
-    /** {@inheritDoc} */
-    public CheckOutScmResult checkout( ScmProviderRepository repository, ScmFileSet fileSet,
-                                       CommandParameters parameters )
-        throws ScmException
-    {
-        return (CheckOutScmResult) executeCommand( getCheckOutCommand(), repository, fileSet, parameters );
-    }
-
-    /** {@inheritDoc} */
-    public DiffScmResult diff( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
-        throws ScmException
-    {
-        return (DiffScmResult) executeCommand( getDiffCommand(), repository, fileSet, parameters );
-    }
+    // ----------------------------------------------------------------------
+    // Private methods
+    // ----------------------------------------------------------------------
 
-    /** {@inheritDoc} */
-    protected ExportScmResult export( ScmProviderRepository repository, ScmFileSet fileSet,
+    private ScmResult executeCommand( Command command, ScmProviderRepository repository, ScmFileSet fileSet,
                                       CommandParameters parameters )
         throws ScmException
     {
-        return (ExportScmResult) executeCommand( getExportCommand(), repository, fileSet, parameters );
-    }
-
-    /** {@inheritDoc} */
-    public LoginScmResult login( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
-        throws ScmException
-    {
-        return (LoginScmResult) executeCommand( getLoginCommand(), repository, fileSet, parameters );
-    }
-
-    /** {@inheritDoc} */
-    public RemoveScmResult remove( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
-        throws ScmException
-    {
-        return (RemoveScmResult) executeCommand( getRemoveCommand(), repository, fileSet, parameters );
-    }
-
-    /** {@inheritDoc} */
-    public StatusScmResult status( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
-        throws ScmException
-    {
-        return (StatusScmResult) executeCommand( getStatusCommand(), repository, fileSet, parameters );
-    }
+        fileSet = fixUpScmFileSetAbsoluteFilePath( fileSet );
 
-    /** {@inheritDoc} */
-    public TagScmResult tag( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
-        throws ScmException
-    {
-        return (TagScmResult) executeCommand( getTagCommand(), repository, fileSet, parameters );
-    }
+        command.setLogger( getLogger() );
 
-    /** {@inheritDoc} */
-    public UpdateScmResult update( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
-        throws ScmException
-    {
-        return (UpdateScmResult) executeCommand( getUpdateCommand(), repository, fileSet, parameters );
+        return command.execute( repository, fileSet, parameters );
     }
 
-    /** {@inheritDoc} */
-    protected ListScmResult list( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
-        throws ScmException
-    {
-        return (ListScmResult) executeCommand( getListCommand(), repository, fileSet, parameters );
-    }
 
     /**
      * CVS provider requires that all files in ScmFileSet must be relative to basedir
@@ -706,19 +779,6 @@
         return newFileSet;
     }
 
-    public static String getRelativePath( File basedir, File f )
-        throws ScmException, IOException
-    {
-        File fileOrDir = getAbsoluteFilePath( f );
-
-        if ( !fileOrDir.getPath().startsWith( basedir.getPath() ) )
-        {
-            throw new ScmException( fileOrDir.getPath() + " was not contained in " + basedir.getPath() );
-        }
-
-        return fileOrDir.getPath().substring( basedir.getPath().length() + 1, fileOrDir.getPath().length() );
-    }
-
     private static File getAbsoluteFilePath( File fileOrDir )
         throws IOException
     {

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProvider.java?rev=691433&r1=691432&r2=691433&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProvider.java Tue Sep  2 16:41:54 2008
@@ -34,6 +34,8 @@
 import org.apache.maven.scm.provider.cvslib.cvsexe.command.status.CvsExeStatusCommand;
 import org.apache.maven.scm.provider.cvslib.cvsexe.command.tag.CvsExeTagCommand;
 import org.apache.maven.scm.provider.cvslib.cvsexe.command.update.CvsExeUpdateCommand;
+import org.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepository;
+import org.codehaus.plexus.util.StringUtils;
 
 /**
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
@@ -43,6 +45,9 @@
 public class CvsExeScmProvider
     extends AbstractCvsScmProvider
 {
+    /** sserver transport method */
+    public static final String TRANSPORT_SSERVER = "sserver";
+
     /** {@inheritDoc} */
     protected Command getAddCommand()
     {
@@ -120,4 +125,129 @@
     {
         return new CvsExeUpdateCommand();
     }
+
+    /** {@inheritDoc} */
+    protected ScmUrlParserResult parseScmUrl( String scmSpecificUrl, char delimiter )
+    {
+        ScmUrlParserResult result = super.parseScmUrl( scmSpecificUrl, delimiter );
+        if ( result.getMessages().isEmpty() )
+        {
+            return result;
+        }
+
+        result.resetMessages();
+
+        String[] tokens = StringUtils.split( scmSpecificUrl, Character.toString( delimiter ) );
+
+        String cvsroot;
+
+        String transport = tokens[0];
+
+        // support sserver
+        if ( transport.equalsIgnoreCase( TRANSPORT_SSERVER ) )
+        {
+            if ( tokens.length < 4 || tokens.length > 5 && transport.equalsIgnoreCase( TRANSPORT_SSERVER ) )
+            {
+                result.getMessages().add( "The connection string contains too few tokens." );
+
+                return result;
+            }
+
+            //create the cvsroot as the remote cvsroot
+            if ( tokens.length == 4 )
+            {
+                cvsroot = ":" + transport + ":" + tokens[1] + ":" + tokens[2];
+            }
+            else
+            {
+                cvsroot = ":" + transport + ":" + tokens[1] + ":" + tokens[2] + ":" + tokens[3];
+            }
+        }
+        else
+        {
+            result.getMessages().add( "Unknown transport: " + transport );
+
+            return result;
+        }
+
+        String user = null;
+
+        String password = null;
+
+        String host = null;
+
+        String path = null;
+
+        String module = null;
+
+        int port = -1;
+
+        if ( transport.equalsIgnoreCase( TRANSPORT_SSERVER ) )
+        {
+            //sspi:[username@]host:[port]path:module
+            String userhost = tokens[1];
+
+            int index = userhost.indexOf( "@" );
+
+            if ( index == -1 )
+            {
+                user = "";
+
+                host = userhost;
+            }
+            else
+            {
+                user = userhost.substring( 0, index );
+
+                host = userhost.substring( index + 1 );
+            }
+
+            // no port specified
+            if ( tokens.length == 4 )
+            {
+                path = tokens[2];
+                module = tokens[3];
+            }
+            else
+            {
+                // getting port
+                try
+                {
+                    port = new Integer( tokens[2] ).intValue();
+                    path = tokens[3];
+                    module = tokens[4];
+                }
+                catch ( Exception e )
+                {
+                    //incorrect
+                    result.getMessages().add( "Your scm url is invalid, could not get port value." );
+
+                    return result;
+                }
+            }
+
+            // cvsroot format is :sspi:host:path
+            cvsroot = ":" + transport + ":" + host + ":";
+
+            if ( port != -1 )
+            {
+                cvsroot += port;
+            }
+
+            cvsroot += path;
+        }
+
+        if ( port == -1 )
+        {
+            result.setRepository( new CvsScmProviderRepository( cvsroot, transport, user, password, host, path,
+                                                                module ) );
+        }
+        else
+        {
+            result.setRepository( new CvsScmProviderRepository( cvsroot, transport, user, password, host, port,
+                                                                path, module ) );
+        }
+
+        return result;
+    }
 }

Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/test/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProviderTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/test/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProviderTest.java?rev=691433&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/test/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProviderTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/test/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProviderTest.java Tue Sep  2 16:41:54 2008
@@ -0,0 +1,46 @@
+package org.apache.maven.scm.provider.cvslib.cvsexe;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.List;
+
+import junit.framework.TestCase;
+
+/**
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ */
+public class CvsExeScmProviderTest
+    extends TestCase
+{
+    public void testValidateScmUrl()
+        throws Exception
+    {
+        CvsExeScmProvider provider = new CvsExeScmProvider();
+
+        List messages = provider.validateScmUrl( "pserver:cvsserver:/bigrepo:myproject", ':' );
+        assertTrue( messages.toString(), messages.isEmpty() );
+
+        messages = provider.validateScmUrl( "sserver:cvsserver:/bigrepo:myproject", ':' );
+        assertTrue( messages.toString(), messages.isEmpty() );
+
+        messages = provider.validateScmUrl( "sserver2:cvsserver:/bigrepo:myproject", ':' );
+        assertFalse( messages.toString(), messages.isEmpty() );
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/test/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProviderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/test/java/org/apache/maven/scm/provider/cvslib/cvsexe/CvsExeScmProviderTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/scm/trunk/src/site/apt/cvs.apt
URL: http://svn.apache.org/viewvc/maven/scm/trunk/src/site/apt/cvs.apt?rev=691433&r1=691432&r2=691433&view=diff
==============================================================================
--- maven/scm/trunk/src/site/apt/cvs.apt (original)
+++ maven/scm/trunk/src/site/apt/cvs.apt Tue Sep  2 16:41:54 2008
@@ -3,7 +3,7 @@
  ------
  Wim Deblauwe
  ------
- 2005-12-01
+ 2008-09-02
  ------
 
 ~~ Licensed to the Apache Software Foundation (ASF) under one
@@ -47,6 +47,8 @@
 
   The following methods are supported:
 
+  * ext, connecting to a server using an external rsh program
+
   * local, connecting to the local file system
 
   * lserver, connecting to a local server
@@ -55,7 +57,7 @@
 
   * sspi, secure authentication (less supported by clients and servers, may require using native implementation, for more details see "How to choose the CVS provider implementation")
 
-  * ext, connecting to a server using an external rsh program
+  * sserver, SSL connection method for CVS (only if cvs_native is used i.e. using -Dmaven.scm.provider.cvs.implementation=cvs_native with Maven)
 
   []