Author: evenisse
Date: Fri May  9 02:23:19 2008
New Revision: 654735

URL: http://svn.apache.org/viewvc?rev=654735&view=rev
Log:
[SCM-355] Add port number support for SSPI transport
Submitted by: Siarhei Dudzin


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-site/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=654735&r1=654734&r2=654735&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
 Fri May  9 02:23:19 2008
@@ -251,9 +251,9 @@
 
                 return result;
             }
-            else if ( tokens.length != 4 && transport.equalsIgnoreCase( 
TRANSPORT_SSPI ) )
+            else if ( tokens.length < 4 || tokens.length > 5 && 
transport.equalsIgnoreCase( TRANSPORT_SSPI ) )
             {
-                result.messages.add( "The connection string contains an 
incorrect number of tokens (should be four)." );
+                result.messages.add( "The connection string contains too few 
tokens." );
 
                 return result;
             }
@@ -421,7 +421,7 @@
         }
         else if ( transport.equalsIgnoreCase( TRANSPORT_SSPI ) )
         {
-            //sspi:[EMAIL PROTECTED]:path:module
+            //sspi:[EMAIL PROTECTED]:[port]path:module
             String userhost = tokens[1];
 
             int index = userhost.indexOf( "@" );
@@ -439,12 +439,39 @@
                 host = userhost.substring( index + 1 );
             }
 
-            path = tokens[2];
+            // 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.messages.add( "Your scm url is invalid, could not 
get port value." );
 
-            module = tokens[3];
+                    return result;
+                }
+            }
 
             // cvsroot format is :sspi:host:path
-            cvsroot = ":" + transport + ":" + host + ":" + path;
+            cvsroot = ":" + transport + ":" + host + ":";
+            
+            if ( port != -1 )
+            {
+                cvsroot += port;
+            }
+
+            cvsroot += path;
         }
         else
         {

Modified: maven/scm/trunk/maven-scm-site/src/site/apt/cvs.apt
URL: 
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-site/src/site/apt/cvs.apt?rev=654735&r1=654734&r2=654735&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-site/src/site/apt/cvs.apt (original)
+++ maven/scm/trunk/maven-scm-site/src/site/apt/cvs.apt Fri May  9 02:23:19 2008
@@ -32,6 +32,8 @@
   * lserver, connecting to a local server
 
   * pserver, connecting to a password-authenticating server
+  
+  * 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
 
@@ -44,7 +46,7 @@
 scm:cvs<delimiter>local<delimiter>path_to_repository<delimiter>module_name
 scm:cvs<delimiter>lserver<delimiter>[EMAIL 
PROTECTED]<delimiter>port]<delimiter>path_to_repository<delimiter>module_name
 scm:cvs<delimiter>pserver<delimiter>[username[<delimiter>[EMAIL 
PROTECTED]<delimiter>port]<delimiter>path_to_repository<delimiter>module_name
-scm:cvs<delimiter>ext<delimiter>[EMAIL 
PROTECTED]<delimiter>path_to_repository<delimiter>module_name
+scm:cvs<delimiter>ext<delimiter>[EMAIL 
PROTECTED]<delimiter>port]<delimiter>path_to_repository<delimiter>module_name
 scm:cvs<delimiter>sspi<delimiter>[EMAIL 
PROTECTED]<delimiter>path<delimiter>module
 -------
 
@@ -55,6 +57,7 @@
 scm:cvs|pserver|[EMAIL PROTECTED]|C:/Program 
Files/cvsnt/repositories|module_name
 scm:cvs:ext:[EMAIL PROTECTED]:/cvs/root:module
 scm:cvs:local:/cvs/root:module
+scm:cvs:sspi:cvs.apache.org:2222:/cvs/root:module
 -------
 
   If you use anonymous access, with an empty password, you need to add a colon 
(:) between the username and "@" like it's done in the first example.
@@ -62,7 +65,7 @@
 
 * How to choose the CVS provider implementation
 
-  By default, the pure java CVS provider is used, so you don't need a cvs 
client installed on your machine.
+  By default, the pure java CVS provider is used (which may not support SSPI 
protocol), so you don't need a cvs client installed on your machine.
   In some case, you can want to use the installed CVS client (for example, 
CVSNT). To do it, you can change the implementation to use by settings the
   'maven.scm.provider.cvs.implementation' system property:
 


Reply via email to