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 ev...@apache.org on 2005/06/24 17:50:35 UTC

svn commit: r201634 - in /maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src: main/java/org/apache/maven/scm/provider/svn/ main/java/org/apache/maven/scm/provider/svn/repository/ test/java/org/apache/maven/scm/provider/svn/command/checkin/ ...

Author: evenisse
Date: Fri Jun 24 08:50:34 2005
New Revision: 201634

URL: http://svn.apache.org/viewcvs?rev=201634&view=rev
Log:
[SCM-40] Allow username configuration for svn+ssh
[SCM-41] username as part of svn+ssh url is now accepted

The general format for svn url is scm:(svn_protocol)/[username@]url like scm:svn+ssh://myusername@myserver/path_to_repo


Modified:
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/SvnScmProvider.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkin/SvnCheckInCommandTest.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepositoryTest.java

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/SvnScmProvider.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/SvnScmProvider.java?rev=201634&r1=201633&r2=201634&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/SvnScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/SvnScmProvider.java Fri Jun 24 08:50:34 2005
@@ -51,7 +51,7 @@
     // ----------------------------------------------------------------------
 
     public ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, char delimiter )
-    	throws ScmRepositoryException
+        throws ScmRepositoryException
     {
         ScmUrlParserResult result = parseScmUrl( scmSpecificUrl );
 
@@ -94,28 +94,18 @@
 
         int at = scmSpecificUrl.indexOf( "@" );
 
-        String url;
+        String url = scmSpecificUrl;
 
         String user = null;
 
         String password = null;
 
-        if ( at >= 1 )
-        {
-            user = scmSpecificUrl.substring( 0, at );
-
-            url = scmSpecificUrl.substring( at + 1 );
-        }
-        else
-        {
-            url = scmSpecificUrl;
-        }
+        String protocol = null;
 
         // ----------------------------------------------------------------------
         // Do some sanity checking of the SVN url
         // ----------------------------------------------------------------------
 
-        // todo: this could possibly be generalized for all providers.
         if ( url.startsWith( "file" ) )
         {
             if ( !url.startsWith( "file:///" ) && !url.startsWith( "file://localhost/" ) )
@@ -124,6 +114,8 @@
 
                 return result;
             }
+
+            protocol = "file://";
         }
         else if ( url.startsWith( "https" ) )
         {
@@ -133,6 +125,8 @@
 
                 return result;
             }
+
+            protocol = "https://";
         }
         else if ( url.startsWith( "http" ) )
         {
@@ -142,6 +136,8 @@
 
                 return result;
             }
+
+            protocol = "http://";
         }
         else if ( url.startsWith( "svn+ssh" ) )
         {
@@ -151,6 +147,8 @@
 
                 return result;
             }
+
+            protocol = "svn+ssh://";
         }
         else if ( url.startsWith( "svn" ) )
         {
@@ -160,6 +158,23 @@
 
                 return result;
             }
+
+            protocol = "svn://";
+        }
+
+        String urlPath = url.substring( protocol.length() );
+
+        int indexAt = urlPath.indexOf( "@" );
+
+        if ( indexAt > 0 && !"svn+ssh://".equals( protocol ) )
+        {
+            user = urlPath.substring( 0, indexAt );
+
+            url = protocol + urlPath.substring( indexAt + 1 );
+        }
+        else
+        {
+            url = protocol + urlPath;
         }
 
         result.repository = new SvnScmProviderRepository( url, user, password );

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java?rev=201634&r1=201633&r2=201634&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java Fri Jun 24 08:50:34 2005
@@ -26,7 +26,7 @@
     extends ScmProviderRepository
 {
     /** */
-    private final String url;
+    private String url;
 
     /** */
     private String user;
@@ -41,13 +41,13 @@
 
     public SvnScmProviderRepository( String url, String user, String password )
     {
-        this.url = url;
-
         this.tagBase = url.substring( 0, url.lastIndexOf( '/' ) ) + "/tags";
 
         this.user = user;
 
         this.password = password;
+
+        parseUrl( url );
     }
 
     public String getUrl()
@@ -83,5 +83,46 @@
     public void setTagBase( String tagBase )
     {
         this.tagBase = tagBase;
+    }
+
+    private void parseUrl( String url )
+    {
+        String protocol = null;
+
+        if ( url.startsWith( "file" ) )
+        {
+            protocol = "file://";
+        }
+        else if ( url.startsWith( "https" ) )
+        {
+            protocol = "https://";
+        }
+        else if ( url.startsWith( "http" ) )
+        {
+            protocol = "http://";
+        }
+        else if ( url.startsWith( "svn+ssh" ) )
+        {
+            protocol = "svn+ssh://";
+        }
+        else if ( url.startsWith( "svn" ) )
+        {
+            protocol = "svn://";
+        }
+
+        String urlPath = url.substring( protocol.length() );
+
+        int indexAt = urlPath.indexOf( "@" );
+
+        if ( indexAt > 0 && !"svn+ssh://".equals( protocol ) )
+        {
+            this.user = urlPath.substring( 0, indexAt );
+
+            this.url = protocol + urlPath.substring( indexAt + 1 );
+        }
+        else
+        {
+            this.url = protocol + urlPath;
+        }
     }
 }

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkin/SvnCheckInCommandTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkin/SvnCheckInCommandTest.java?rev=201634&r1=201633&r2=201634&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkin/SvnCheckInCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/checkin/SvnCheckInCommandTest.java Fri Jun 24 08:50:34 2005
@@ -66,14 +66,14 @@
     public void testCommandLineTag()
         throws Exception
     {
-        testCommandLine( "scm:svn:anonymous@http://foo.com/svn/trunk",
+        testCommandLine( "scm:svn:http://anonymous@foo.com/svn/trunk",
                          "svn --username anonymous --non-interactive commit " + messageFileString );
     }
 
     public void testCommandLineWithUsernameAndTag()
         throws Exception
     {
-        testCommandLine( "scm:svn:anonymous@http://foo.com/svn/trunk",
+        testCommandLine( "scm:svn:http://anonymous@foo.com/svn/trunk",
                          "svn --username anonymous --non-interactive commit " + messageFileString );
     }
 

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java?rev=201634&r1=201633&r2=201634&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/update/SvnUpdateCommandTest.java Fri Jun 24 08:50:34 2005
@@ -47,14 +47,14 @@
     public void testCommandLineTag()
         throws Exception
     {
-        testCommandLine( "scm:svn:anonymous@http://foo.com/svn/trunk", "10",
+        testCommandLine( "scm:svn:http://anonymous@foo.com/svn/trunk", "10",
                          "svn --username anonymous --non-interactive update -r 10" );
     }
 
     public void testCommandLineWithUsernameAndTag()
         throws Exception
     {
-       testCommandLine( "scm:svn:anonymous@http://foo.com/svn/trunk", "10",
+       testCommandLine( "scm:svn:http://anonymous@foo.com/svn/trunk", "10",
                         "svn --username anonymous --non-interactive update -r 10" );
     }
 

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepositoryTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepositoryTest.java?rev=201634&r1=201633&r2=201634&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepositoryTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepositoryTest.java Fri Jun 24 08:50:34 2005
@@ -45,37 +45,49 @@
     public void testLegalFileURL()
         throws Exception
     {
-        testUrl( "file:///tmp/repo" );
+        testUrl( "scm:svn:file:///tmp/repo", "file:///tmp/repo", null );
     }
 
     public void testLegalLocalhostFileURL()
         throws Exception
     {
-        testUrl( "file://localhost/tmp/repo" );
+        testUrl( "scm:svn:file://localhost/tmp/repo", "file://localhost/tmp/repo", null );
     }
 
     public void testLegalHttpURL()
         throws Exception
     {
-        testUrl( "http://subversion.tigris.org" );
+        testUrl( "scm:svn:http://subversion.tigris.org", "http://subversion.tigris.org", null );
     }
 
     public void testLegalHttpsURL()
         throws Exception
     {
-        testUrl( "https://subversion.tigris.org" );
+        testUrl( "scm:svn:https://subversion.tigris.org", "https://subversion.tigris.org", null );
     }
 
     public void testLegalSvnURL()
         throws Exception
     {
-        testUrl( "svn://subversion.tigris.org" );
+        testUrl( "scm:svn:svn://subversion.tigris.org", "svn://subversion.tigris.org", null );
+    }
+
+    public void testLegalSvnPlusUsernameURL()
+        throws Exception
+    {
+        testUrl( "scm:svn:svn://username@subversion.tigris.org", "svn://subversion.tigris.org", "username" );
     }
 
     public void testLegalSvnPlusSshURL()
         throws Exception
     {
-        testUrl( "svn+ssh://subversion.tigris.org" );
+        testUrl( "scm:svn:svn+ssh://subversion.tigris.org", "svn+ssh://subversion.tigris.org", null );
+    }
+
+    public void testLegalSvnPlusSshPlusUsernameURL()
+        throws Exception
+    {
+        testUrl( "scm:svn:svn+ssh://username@subversion.tigris.org", "svn+ssh://username@subversion.tigris.org", null );
     }
 
     // ----------------------------------------------------------------------
@@ -92,16 +104,23 @@
     //
     // ----------------------------------------------------------------------
 
-    private void testUrl( String url )
+    private void testUrl( String scmUrl, String expectedUrl, String expectedUser )
         throws Exception
     {
-        ScmRepository repository = scmManager.makeScmRepository( "scm:svn:" + url );
+        ScmRepository repository = scmManager.makeScmRepository( scmUrl );
 
         assertNotNull( "ScmManager.makeScmRepository() returned null", repository );
 
         assertNotNull( "The provider repository was null.", repository.getProviderRepository() );
 
-        assertTrue( "The SCM Repository isn't a " + SvnScmProviderRepository.class.getName() + ".", repository.getProviderRepository() instanceof SvnScmProviderRepository );
+        assertTrue( "The SCM Repository isn't a " + SvnScmProviderRepository.class.getName() + ".",
+                    repository.getProviderRepository() instanceof SvnScmProviderRepository );
+
+        SvnScmProviderRepository providerRepository = (SvnScmProviderRepository) repository.getProviderRepository();
+
+        assertEquals( "url is incorrect", expectedUrl, providerRepository.getUrl() );
+
+        assertEquals( "User is incorrect", expectedUser, providerRepository.getUser() );
     }
 
     private void testIllegalUrl( String url )