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: