Return-Path: X-Original-To: apmail-maven-commits-archive@www.apache.org Delivered-To: apmail-maven-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E70B1117AF for ; Sun, 4 May 2014 21:16:47 +0000 (UTC) Received: (qmail 60151 invoked by uid 500); 4 May 2014 21:16:46 -0000 Delivered-To: apmail-maven-commits-archive@maven.apache.org Received: (qmail 60044 invoked by uid 500); 4 May 2014 21:16:46 -0000 Mailing-List: contact commits-help@maven.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@maven.apache.org Delivered-To: mailing list commits@maven.apache.org Received: (qmail 60037 invoked by uid 99); 4 May 2014 21:16:46 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 04 May 2014 21:16:46 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id D50AA90D176; Sun, 4 May 2014 21:16:45 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: dantran@apache.org To: commits@maven.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: git commit: [SCM-747] enhance scm url to support perforce' protocol declaration ( ie ssl, etc ) Date: Sun, 4 May 2014 21:16:45 +0000 (UTC) Repository: maven-scm Updated Branches: refs/heads/master 0e8759c3a -> 84fe9d2f1 [SCM-747] enhance scm url to support perforce' protocol declaration ( ie ssl, etc ) Project: http://git-wip-us.apache.org/repos/asf/maven-scm/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-scm/commit/84fe9d2f Tree: http://git-wip-us.apache.org/repos/asf/maven-scm/tree/84fe9d2f Diff: http://git-wip-us.apache.org/repos/asf/maven-scm/diff/84fe9d2f Branch: refs/heads/master Commit: 84fe9d2f1928f0813d341fc7c564f2088f3f0b10 Parents: 0e8759c Author: dantran Authored: Sun May 4 14:09:11 2014 -0700 Committer: dantran Committed: Sun May 4 14:09:11 2014 -0700 ---------------------------------------------------------------------- .../provider/perforce/PerforceScmProvider.java | 30 ++++++++++++++++++-- .../PerforceScmProviderRepository.java | 15 ++++++++++ .../perforce/PerforceScmProviderTest.java | 24 +++++++++++++++- 3 files changed, 66 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-scm/blob/84fe9d2f/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java b/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java index 4109f78..6a3273e 100644 --- a/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java +++ b/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/PerforceScmProvider.java @@ -26,6 +26,8 @@ import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.UnknownHostException; +import java.util.Arrays; +import java.util.HashSet; import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmException; @@ -75,6 +77,7 @@ import org.codehaus.plexus.util.cli.Commandline; public class PerforceScmProvider extends AbstractScmProvider { + private static final String [] PROTOCOLS = { "tcp", "tcp4", "tcp6", "tcp46", "tcp64", "ssl", "ssl4", "ssl6", "ssl46", "ssl64" }; // ---------------------------------------------------------------------- // ScmProvider Implementation // ---------------------------------------------------------------------- @@ -87,10 +90,27 @@ public class PerforceScmProvider public ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, char delimiter ) throws ScmRepositoryException { + String protocol = null; String path; int port = 0; String host = null; + //minimal logic to support perforce protocols in scm url, and keep the next part unchange + int i0 = scmSpecificUrl.indexOf( delimiter ); + if ( i0 > 0 ) + { + protocol = scmSpecificUrl.substring( 0, i0 ); + HashSet protocols = new HashSet( Arrays.asList( PROTOCOLS )); + if ( protocols.contains( protocol ) ) + { + scmSpecificUrl = scmSpecificUrl.substring( i0 + 1 ); + } + else + { + protocol = null; + } + } + int i1 = scmSpecificUrl.indexOf( delimiter ); int i2 = scmSpecificUrl.indexOf( delimiter, i1 + 1 ); @@ -143,7 +163,7 @@ public class PerforceScmProvider path = path.substring( path.indexOf( '@' ) + 1 ); } - return new PerforceScmProviderRepository( host, port, path, user, password ); + return new PerforceScmProviderRepository( protocol, host, port, path, user, password ); } public String getScmType() @@ -269,10 +289,16 @@ public class PerforceScmProvider command.createArg().setValue( workingDir.getAbsolutePath() ); } + if ( repo.getHost() != null ) { command.createArg().setValue( "-p" ); - String value = repo.getHost(); + String value = ""; + if ( ! StringUtils.isBlank( repo.getProtocol() ) ) + { + value += repo.getProtocol() + ":"; + } + value += repo.getHost(); if ( repo.getPort() != 0 ) { value += ":" + Integer.toString( repo.getPort() ); http://git-wip-us.apache.org/repos/asf/maven-scm/blob/84fe9d2f/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/repository/PerforceScmProviderRepository.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/repository/PerforceScmProviderRepository.java b/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/repository/PerforceScmProviderRepository.java index 09aecfa..3289209 100644 --- a/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/repository/PerforceScmProviderRepository.java +++ b/maven-scm-providers/maven-scm-provider-perforce/src/main/java/org/apache/maven/scm/provider/perforce/repository/PerforceScmProviderRepository.java @@ -28,6 +28,8 @@ import org.apache.maven.scm.provider.ScmProviderRepositoryWithHost; public class PerforceScmProviderRepository extends ScmProviderRepositoryWithHost { + private String protocol;//when empty perforce treats it as 'tcp' + private String path; public PerforceScmProviderRepository( String host, int port, String path, String user, String password ) @@ -43,6 +45,14 @@ public class PerforceScmProviderRepository setPassword( password ); } + + public PerforceScmProviderRepository( String protocol, String host, int port, String path, String user, String password ) + { + this( host, port, path, user, password ); + + this.protocol = protocol; + } + // ---------------------------------------------------------------------- // ScmProviderRepository Implementation // ---------------------------------------------------------------------- @@ -51,4 +61,9 @@ public class PerforceScmProviderRepository { return path; } + + public String getProtocol() + { + return this.protocol; + } } http://git-wip-us.apache.org/repos/asf/maven-scm/blob/84fe9d2f/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/PerforceScmProviderTest.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/PerforceScmProviderTest.java b/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/PerforceScmProviderTest.java index dd20ee8..8507edd 100644 --- a/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/PerforceScmProviderTest.java +++ b/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/PerforceScmProviderTest.java @@ -22,10 +22,10 @@ package org.apache.maven.scm.provider.perforce; import org.apache.maven.scm.ScmTestCase; import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository; import org.apache.maven.scm.repository.ScmRepository; +import org.codehaus.plexus.util.StringUtils; /** * @author Trygve Laugstøl - * */ public class PerforceScmProviderTest extends ScmTestCase @@ -46,6 +46,8 @@ public class PerforceScmProviderTest assertNull( p4Repo.getPassword() ); assertEquals( "//depot/projects/pathname", p4Repo.getPath() ); + + assertTrue( StringUtils.isBlank( p4Repo.getProtocol() ) ); } public void testParseConnectionWithUsername() @@ -164,4 +166,24 @@ public class PerforceScmProviderTest assertEquals( "//depot/foo/bar/...", PerforceScmProvider.getCanonicalRepoPath( "//depot/foo/bar/..." ) ); } + + public void testParseConnectionWithSsl() + throws Exception + { + ScmRepository repo = makeScmRepository( "scm:perforce:ssl:host:1066://depot/projects/pathname" ); + + PerforceScmProviderRepository p4Repo = (PerforceScmProviderRepository) repo.getProviderRepository(); + + assertEquals( "host", p4Repo.getHost() ); + + assertEquals( 1066, p4Repo.getPort() ); + + assertNull( p4Repo.getUser() ); + + assertNull( p4Repo.getPassword() ); + + assertEquals( "//depot/projects/pathname", p4Repo.getPath() ); + + assertEquals( "ssl", p4Repo.getProtocol() ); + } }