1 package org.apache.maven.scm.provider;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.ArrayList;
23 import java.util.List;
24
25
26
27
28
29
30
31
32
33
34
35
36
37 public abstract class ScmUrlUtils
38 {
39 private static final String ILLEGAL_SCM_URL =
40 "The scm url must be on the form 'scm:<scm provider><delimiter><provider specific part>' "
41 + "where <delimiter> can be either ':' or '|'.";
42
43
44
45
46
47
48
49 public static String getDelimiter( String scmUrl )
50 {
51 scmUrl = scmUrl.substring( 4 );
52
53 int index = scmUrl.indexOf( '|' );
54
55 if ( index == -1 )
56 {
57 index = scmUrl.indexOf( ':' );
58
59 if ( index == -1 )
60 {
61 throw new IllegalArgumentException( "The scm url does not contain a valid delimiter." );
62 }
63 }
64
65 return scmUrl.substring( index, index + 1 );
66 }
67
68
69
70
71
72
73
74 public static String getProvider( String scmUrl )
75 {
76 String delimiter = getDelimiter( scmUrl );
77
78 scmUrl = scmUrl.substring( 4 );
79
80 int firstDelimiterIndex = scmUrl.indexOf( delimiter );
81
82 return scmUrl.substring( 0, firstDelimiterIndex );
83 }
84
85
86
87
88
89
90
91 public static String getProviderSpecificPart( String scmUrl )
92 {
93 String delimiter = getDelimiter( scmUrl );
94
95 scmUrl = scmUrl.substring( 4 );
96
97 int firstDelimiterIndex = scmUrl.indexOf( delimiter );
98
99 return scmUrl.substring( firstDelimiterIndex + 1 );
100 }
101
102
103
104
105
106
107
108
109
110
111
112 public static boolean isValid( String scmUrl )
113 {
114 List<String> messages = validate( scmUrl );
115
116 return messages.isEmpty();
117 }
118
119
120
121
122
123
124
125
126
127
128 public static List<String> validate( String scmUrl )
129 {
130 List<String> messages = new ArrayList<String>();
131
132 if ( scmUrl == null )
133 {
134 messages.add( "The scm url cannot be null." );
135
136 return messages;
137 }
138
139 if ( !scmUrl.startsWith( "scm:" ) )
140 {
141 messages.add( "The scm url must start with 'scm:'." );
142
143 return messages;
144 }
145
146 if ( scmUrl.length() < 6 )
147 {
148 messages.add( ILLEGAL_SCM_URL );
149
150 return messages;
151 }
152
153 try
154 {
155 getDelimiter( scmUrl );
156 }
157 catch ( IllegalArgumentException e )
158 {
159 messages.add( e.getMessage() );
160 }
161
162 return messages;
163 }
164 }