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