1 package org.apache.continuum.scm;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.commons.lang.StringUtils;
23 import org.apache.maven.scm.provider.ScmUrlUtils;
24 import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository;
25
26
27
28
29 public class ContinuumScmUtils
30 {
31 public static final String GIT_SCM_PROVIDERTYPE = "git";
32
33
34 public static ContinuumScmConfiguration setSCMCredentialsforSSH( ContinuumScmConfiguration config, String scmUrl,
35 String scmUsername, String scmPassword )
36 {
37 String sshScmUsername = "";
38 String sshScmPassword = "";
39 String providerType = ScmUrlUtils.getProvider( scmUrl );
40
41 String scmSpecificUrl = scmUrl.substring( providerType.length() + 5 );
42
43 if ( providerType.contains( GIT_SCM_PROVIDERTYPE ) && scmSpecificUrl.startsWith(
44 GitScmProviderRepository.PROTOCOL_SSH ) )
45 {
46 scmSpecificUrl = scmSpecificUrl.substring( GitScmProviderRepository.PROTOCOL_SSH.length() + 3 );
47
48
49 int indexAt = scmSpecificUrl.indexOf( "@" );
50 if ( indexAt >= 0 )
51 {
52 String userInfo = scmSpecificUrl.substring( 0, indexAt );
53 sshScmUsername = userInfo;
54 int indexPwdSep = userInfo.indexOf( ":" );
55
56 if ( indexPwdSep < 0 )
57 {
58 sshScmUsername = userInfo.substring( indexPwdSep + 1 );
59 }
60 else
61 {
62 sshScmUsername = userInfo.substring( 0, indexPwdSep );
63 sshScmPassword = userInfo.substring( indexPwdSep + 1 );
64 }
65 }
66 }
67
68 if ( StringUtils.isBlank( sshScmUsername ) )
69 {
70 config.setUsername( scmUsername );
71 config.setPassword( scmPassword );
72 }
73 else
74 {
75 config.setUsername( sshScmUsername );
76 if ( !StringUtils.isBlank( sshScmPassword ) )
77 {
78 config.setPassword( sshScmPassword );
79 }
80 }
81
82 return config;
83 }
84 }