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 ol...@apache.org on 2010/07/09 00:04:57 UTC
svn commit: r961960 - in /maven/scm/trunk: ./
maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/repository/
maven-scm-providers/maven-scm-provider-hg/src/test/java/org/apache/maven/scm/provider/hg/repository/
Author: olamy
Date: Thu Jul 8 22:04:57 2010
New Revision: 961960
URL: http://svn.apache.org/viewvc?rev=961960&view=rev
Log:
[SCM-431] Username and Password cause NumberFormatException in scm:hg:http URLS
Submitted by Andrew Denyes
Modified:
maven/scm/trunk/ (props changed)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepository.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/test/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepositoryTest.java
Propchange: maven/scm/trunk/
------------------------------------------------------------------------------
bugtraq:message =
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepository.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepository.java?rev=961960&r1=961959&r2=961960&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepository.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepository.java Thu Jul 8 22:04:57 2010
@@ -59,8 +59,7 @@ public class HgScmProviderRepository
public String getURI()
{
- return protocol + ( needsAuthentication() ? addUser() + addPassword() + addAt() : "" ) + addHost()
- + addPort() + addPath();
+ return protocol + addAuthority() + addHost() + addPort() + addPath();
}
/**
@@ -172,7 +171,7 @@ public class HgScmProviderRepository
private String parseUsernameAndPassword( String url )
{
- if ( needsAuthentication() )
+ if ( canAuthenticate() )
{
String[] split = url.split( "@" );
if ( split.length == 2 )
@@ -225,11 +224,6 @@ public class HgScmProviderRepository
return ( getPassword() == null ) ? "" : ":" + getPassword();
}
- private String addAt()
- {
- return needsAuthentication() ? "@" : "";
- }
-
private String addHost()
{
return ( getHost() == null ) ? "" : getHost();
@@ -250,6 +244,18 @@ public class HgScmProviderRepository
return protocol == SFTP || protocol == FTP || protocol == HTTPS || protocol == AFTP;
}
+ private String addAuthority()
+ {
+ return ( (canAuthenticate() && (getUser() != null))
+ ? addUser() + addPassword() + "@"
+ : "" );
+ }
+
+
+ private boolean canAuthenticate()
+ {
+ return needsAuthentication() || protocol == HTTP;
+ }
/** {@inheritDoc} */
public String toString()
{
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/test/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepositoryTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/test/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepositoryTest.java?rev=961960&r1=961959&r2=961960&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/test/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepositoryTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-hg/src/test/java/org/apache/maven/scm/provider/hg/repository/HgScmProviderRepositoryTest.java Thu Jul 8 22:04:57 2010
@@ -85,7 +85,7 @@ public class HgScmProviderRepositoryTest
String url = "http://www.myhost.com/~username/dev/maven";
HgScmProviderRepository repo = new HgScmProviderRepository( url );
assertEquals( url, repo.getURI() );
- assertNull( repo.validateURI() );
+ assertEquals( null, repo.validateURI() );
//2. Test with absolute path
url = "http://www.myhost.com/dev/maven";
@@ -93,14 +93,14 @@ public class HgScmProviderRepositoryTest
assertEquals( url, repo.getURI() );
assertNull( repo.validateURI() );
- //3. Test with unessesary authentication information
+ //3. Test with authentication information
repo.setPassword( "Password" );
repo.setUser( "User" );
repo.setPassphrase( "Passphrase" );
- assertEquals( "http://www.myhost.com/dev/maven", repo.getURI() );
+ assertEquals( "http://User:Password@www.myhost.com/dev/maven", repo.getURI() );
assertNull( repo.validateURI() );
repo.setPort( 81 );
- assertEquals( "http://www.myhost.com:81/dev/maven", repo.getURI() );
+ assertEquals( "http://User:Password@www.myhost.com:81/dev/maven", repo.getURI() );
assertNull( repo.validateURI() );
assertTrue( true );
}
@@ -125,4 +125,25 @@ public class HgScmProviderRepositoryTest
repo = new HgScmProviderRepository( url );
assertEquals( repo.getURI(), url );
}
+
+ /**
+ * Test SCM-431
+ *
+ * @throws Exception
+ */
+ public void testParseBasicAuth()
+ throws Exception
+ {
+ String url = "http://a:b@localhost:8000/";
+ HgScmProviderRepository repo = new HgScmProviderRepository( url );
+ assertEquals( url, repo.getURI() );
+
+ url = "http://aa@localhost/";
+ repo = new HgScmProviderRepository( url );
+ assertEquals( url, repo.getURI() );
+
+ url = "http://SCM:431@www.myhost.com:81/dev/maven";
+ repo = new HgScmProviderRepository( url );
+ assertEquals( url, repo.getURI() );
+ }
}
\ No newline at end of file