1 package org.apache.maven.scm.provider.integrity;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.scm.CommandParameter;
23 import org.apache.maven.scm.CommandParameters;
24 import org.apache.maven.scm.ScmException;
25 import org.apache.maven.scm.ScmFileSet;
26 import org.apache.maven.scm.ScmResult;
27 import org.apache.maven.scm.command.add.AddScmResult;
28 import org.apache.maven.scm.command.blame.BlameScmResult;
29 import org.apache.maven.scm.command.branch.BranchScmResult;
30 import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
31 import org.apache.maven.scm.command.checkin.CheckInScmResult;
32 import org.apache.maven.scm.command.checkout.CheckOutScmResult;
33 import org.apache.maven.scm.command.diff.DiffScmResult;
34 import org.apache.maven.scm.command.edit.EditScmResult;
35 import org.apache.maven.scm.command.export.ExportScmResult;
36 import org.apache.maven.scm.command.list.ListScmResult;
37 import org.apache.maven.scm.command.login.LoginScmResult;
38 import org.apache.maven.scm.command.mkdir.MkdirScmResult;
39 import org.apache.maven.scm.command.remove.RemoveScmResult;
40 import org.apache.maven.scm.command.status.StatusScmResult;
41 import org.apache.maven.scm.command.tag.TagScmResult;
42 import org.apache.maven.scm.command.unedit.UnEditScmResult;
43 import org.apache.maven.scm.command.update.UpdateScmResult;
44 import org.apache.maven.scm.provider.AbstractScmProvider;
45 import org.apache.maven.scm.provider.ScmProviderRepository;
46 import org.apache.maven.scm.provider.integrity.command.add.IntegrityAddCommand;
47 import org.apache.maven.scm.provider.integrity.command.blame.IntegrityBlameCommand;
48 import org.apache.maven.scm.provider.integrity.command.branch.IntegrityBranchCommand;
49 import org.apache.maven.scm.provider.integrity.command.changelog.IntegrityChangeLogCommand;
50 import org.apache.maven.scm.provider.integrity.command.checkin.IntegrityCheckInCommand;
51 import org.apache.maven.scm.provider.integrity.command.checkout.IntegrityCheckOutCommand;
52 import org.apache.maven.scm.provider.integrity.command.diff.IntegrityDiffCommand;
53 import org.apache.maven.scm.provider.integrity.command.edit.IntegrityEditCommand;
54 import org.apache.maven.scm.provider.integrity.command.export.IntegrityExportCommand;
55 import org.apache.maven.scm.provider.integrity.command.fileinfo.IntegrityFileInfoCommand;
56 import org.apache.maven.scm.provider.integrity.command.list.IntegrityListCommand;
57 import org.apache.maven.scm.provider.integrity.command.lock.IntegrityLockCommand;
58 import org.apache.maven.scm.provider.integrity.command.login.IntegrityLoginCommand;
59 import org.apache.maven.scm.provider.integrity.command.mkdir.IntegrityMkdirCommand;
60 import org.apache.maven.scm.provider.integrity.command.remove.IntegrityRemoveCommand;
61 import org.apache.maven.scm.provider.integrity.command.status.IntegrityStatusCommand;
62 import org.apache.maven.scm.provider.integrity.command.tag.IntegrityTagCommand;
63 import org.apache.maven.scm.provider.integrity.command.unedit.IntegrityUnEditCommand;
64 import org.apache.maven.scm.provider.integrity.command.unlock.IntegrityUnlockCommand;
65 import org.apache.maven.scm.provider.integrity.command.update.IntegrityUpdateCommand;
66 import org.apache.maven.scm.provider.integrity.repository.IntegrityScmProviderRepository;
67 import org.apache.maven.scm.repository.ScmRepositoryException;
68 import org.codehaus.plexus.util.StringUtils;
69
70
71
72
73
74
75
76
77
78 public class IntegrityScmProvider
79 extends AbstractScmProvider
80 {
81 public static final String INTEGRITY_CM_URL = "[[user][/pass]@host[:port]]|configPath";
82
83
84
85
86 public String getScmType()
87 {
88 return "integrity";
89 }
90
91
92
93
94
95
96
97
98
99
100 public ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, char delimiter )
101 throws ScmRepositoryException
102 {
103
104 String hostName = "";
105 int port = 0;
106 String userName = "";
107 String password = "";
108 String configPath = "";
109
110
111
112
113 String[] tokens = StringUtils.split( scmSpecificUrl, String.valueOf( delimiter ) );
114
115 if ( tokens.length < 1 || tokens.length > 2 )
116 {
117 throw new ScmRepositoryException(
118 "Invalid SCM URL '" + scmSpecificUrl + "'. Expecting a url using format: " + INTEGRITY_CM_URL );
119 }
120 else
121 {
122
123 if ( tokens[0].indexOf( '@' ) >= 0 )
124 {
125
126 String userPassStr = tokens[0].substring( 0, tokens[0].indexOf( '@' ) );
127 getLogger().debug( "User/Password information supplied: " + userPassStr );
128 String hostPortStr = tokens[0].substring( tokens[0].indexOf( '@' ) + 1, tokens[0].length() );
129 getLogger().debug( "Host/Port information supplied: " + hostPortStr );
130
131 if ( userPassStr.length() > 0 )
132 {
133
134 int userPassDelimIndx = userPassStr.indexOf( '/' );
135 if ( userPassDelimIndx > 0 )
136 {
137 userName = userPassStr.substring( 0, userPassStr.indexOf( '/' ) );
138 if ( userPassStr.length() > ( userPassDelimIndx + 1 ) )
139 {
140 password = userPassStr.substring( userPassStr.indexOf( '/' ) + 1, userPassStr.length() );
141 }
142 }
143 else
144 {
145 userName = userPassStr;
146 }
147 }
148
149 if ( hostPortStr.length() > 0 )
150 {
151 int hostPortDelimIndx = hostPortStr.indexOf( ':' );
152 if ( hostPortDelimIndx > 0 )
153 {
154 hostName = hostPortStr.substring( 0, hostPortStr.indexOf( ':' ) );
155 if ( hostPortStr.length() > ( hostPortDelimIndx + 1 ) )
156 {
157 port = Integer.parseInt(
158 hostPortStr.substring( hostPortStr.indexOf( ':' ) + 1, hostPortStr.length() ) );
159 }
160 }
161 else
162 {
163 hostName = hostPortStr;
164 }
165 }
166 }
167
168 configPath = tokens[tokens.length - 1];
169 }
170
171 return new IntegrityScmProviderRepository( hostName, port, userName, password, configPath, getLogger() );
172 }
173
174
175
176
177 @Override
178 protected LoginScmResult login( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
179 throws ScmException
180 {
181 IntegrityLoginCommand command = new IntegrityLoginCommand();
182 command.setLogger( getLogger() );
183 return (LoginScmResult) command.execute( repository, fileSet, params );
184 }
185
186
187
188
189 @Override
190 protected ChangeLogScmResult changelog( ScmProviderRepository repository, ScmFileSet fileSet,
191 CommandParameters parameters )
192 throws ScmException
193 {
194 IntegrityChangeLogCommand command = new IntegrityChangeLogCommand();
195 command.setLogger( getLogger() );
196 return (ChangeLogScmResult) command.execute( repository, fileSet, parameters );
197 }
198
199
200
201
202 @Override
203 public AddScmResult add( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
204 throws ScmException
205 {
206 IntegrityAddCommand command = new IntegrityAddCommand();
207 command.setLogger( getLogger() );
208 return (AddScmResult) command.execute( repository, fileSet, params );
209 }
210
211
212
213
214 @Override
215 protected RemoveScmResult remove( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
216 throws ScmException
217 {
218 IntegrityRemoveCommand command = new IntegrityRemoveCommand();
219 command.setLogger( getLogger() );
220 return (RemoveScmResult) command.execute( repository, fileSet, params );
221 }
222
223
224
225
226
227 @Override
228 protected CheckInScmResult checkin( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
229 throws ScmException
230 {
231 IntegrityCheckInCommand command = new IntegrityCheckInCommand();
232 command.setLogger( getLogger() );
233 return (CheckInScmResult) command.execute( repository, fileSet, params );
234 }
235
236
237
238
239 @Override
240 protected CheckOutScmResult checkout( ScmProviderRepository repository, ScmFileSet fileSet,
241 CommandParameters params )
242 throws ScmException
243 {
244 IntegrityCheckOutCommand command = new IntegrityCheckOutCommand();
245 command.setLogger( getLogger() );
246 return (CheckOutScmResult) command.execute( repository, fileSet, params );
247 }
248
249
250
251
252 @Override
253 protected DiffScmResult diff( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
254 throws ScmException
255 {
256 IntegrityDiffCommand command = new IntegrityDiffCommand();
257 command.setLogger( getLogger() );
258 return (DiffScmResult) command.execute( repository, fileSet, params );
259 }
260
261
262
263
264 @Override
265 protected EditScmResult edit( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
266 throws ScmException
267 {
268 IntegrityEditCommand command = new IntegrityEditCommand();
269 command.setLogger( getLogger() );
270 return (EditScmResult) command.execute( repository, fileSet, params );
271 }
272
273
274
275
276 @Override
277 protected StatusScmResult status( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
278 throws ScmException
279 {
280 IntegrityStatusCommand command = new IntegrityStatusCommand();
281 command.setLogger( getLogger() );
282 return (StatusScmResult) command.execute( repository, fileSet, params );
283 }
284
285
286
287
288 @Override
289 protected TagScmResult tag( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
290 throws ScmException
291 {
292 IntegrityTagCommand command = new IntegrityTagCommand();
293 command.setLogger( getLogger() );
294 return (TagScmResult) command.execute( repository, fileSet, params );
295 }
296
297
298
299
300 @Override
301 protected UnEditScmResult unedit( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
302 throws ScmException
303 {
304 IntegrityUnEditCommand command = new IntegrityUnEditCommand();
305 command.setLogger( getLogger() );
306 return (UnEditScmResult) command.execute( repository, fileSet, params );
307 }
308
309
310
311
312 @Override
313 protected UpdateScmResult update( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
314 throws ScmException
315 {
316 IntegrityUpdateCommand command = new IntegrityUpdateCommand();
317 command.setLogger( getLogger() );
318 return (UpdateScmResult) command.execute( repository, fileSet, params );
319 }
320
321
322
323
324 @Override
325 protected BlameScmResult blame( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
326 throws ScmException
327 {
328 IntegrityBlameCommand command = new IntegrityBlameCommand();
329 command.setLogger( getLogger() );
330 return (BlameScmResult) command.execute( repository, fileSet, params );
331 }
332
333
334
335
336 @Override
337 protected ListScmResult list( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
338 throws ScmException
339 {
340 IntegrityListCommand command = new IntegrityListCommand();
341 command.setLogger( getLogger() );
342 return (ListScmResult) command.execute( repository, fileSet, params );
343 }
344
345
346
347
348 @Override
349 protected ExportScmResult export( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
350 throws ScmException
351 {
352 IntegrityExportCommand command = new IntegrityExportCommand();
353 command.setLogger( getLogger() );
354 return (ExportScmResult) command.execute( repository, fileSet, params );
355 }
356
357
358
359
360 @Override
361 protected BranchScmResult branch( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
362 throws ScmException
363 {
364 IntegrityBranchCommand command = new IntegrityBranchCommand();
365 command.setLogger( getLogger() );
366 return (BranchScmResult) command.execute( repository, fileSet, params );
367 }
368
369
370
371
372 @Override
373 protected MkdirScmResult mkdir( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
374 throws ScmException
375 {
376 IntegrityMkdirCommand command = new IntegrityMkdirCommand();
377 command.setLogger( getLogger() );
378 return (MkdirScmResult) command.execute( repository, fileSet, params );
379 }
380
381
382
383
384 protected ScmResult fileinfo( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
385 throws ScmException
386 {
387 IntegrityFileInfoCommand command = new IntegrityFileInfoCommand();
388 command.setLogger( getLogger() );
389 return command.execute( repository, fileSet, params );
390 }
391
392
393
394
395 protected ScmResult lock( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
396 throws ScmException
397 {
398 IntegrityLockCommand command = new IntegrityLockCommand();
399 command.setLogger( getLogger() );
400 return command.execute( repository, fileSet, params );
401 }
402
403
404
405
406 protected ScmResult unlock( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters params )
407 throws ScmException
408 {
409 IntegrityUnlockCommand command = new IntegrityUnlockCommand( params.getString( CommandParameter.FILE ) );
410 command.setLogger( getLogger() );
411 return command.execute( repository, fileSet, params );
412 }
413 }