001package org.apache.maven.scm.provider;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied.  See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022import org.apache.maven.scm.CommandParameters;
023import org.apache.maven.scm.ScmBranch;
024import org.apache.maven.scm.ScmBranchParameters;
025import org.apache.maven.scm.ScmException;
026import org.apache.maven.scm.ScmFile;
027import org.apache.maven.scm.ScmFileSet;
028import org.apache.maven.scm.ScmTagParameters;
029import org.apache.maven.scm.ScmVersion;
030import org.apache.maven.scm.command.add.AddScmResult;
031import org.apache.maven.scm.command.blame.BlameScmRequest;
032import org.apache.maven.scm.command.blame.BlameScmResult;
033import org.apache.maven.scm.command.branch.BranchScmResult;
034import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
035import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
036import org.apache.maven.scm.command.checkin.CheckInScmResult;
037import org.apache.maven.scm.command.checkout.CheckOutScmResult;
038import org.apache.maven.scm.command.diff.DiffScmResult;
039import org.apache.maven.scm.command.edit.EditScmResult;
040import org.apache.maven.scm.command.export.ExportScmResult;
041import org.apache.maven.scm.command.info.InfoScmResult;
042import org.apache.maven.scm.command.list.ListScmResult;
043import org.apache.maven.scm.command.mkdir.MkdirScmResult;
044import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
045import org.apache.maven.scm.command.remove.RemoveScmResult;
046import org.apache.maven.scm.command.status.StatusScmResult;
047import org.apache.maven.scm.command.tag.TagScmResult;
048import org.apache.maven.scm.command.unedit.UnEditScmResult;
049import org.apache.maven.scm.command.update.UpdateScmResult;
050import org.apache.maven.scm.log.ScmLogger;
051import org.apache.maven.scm.repository.ScmRepository;
052import org.apache.maven.scm.repository.ScmRepositoryException;
053import org.apache.maven.scm.repository.UnknownRepositoryStructure;
054
055import java.io.File;
056import java.util.ArrayList;
057import java.util.Collections;
058import java.util.Date;
059import java.util.List;
060
061/**
062 * Stub implementation of ScmProvider for unit testing purposes.
063 * It allows setting the expected results that the different methods will return.
064 * More information about Stubs on <a href="http://martinfowler.com/bliki/TestDouble.html">Martin Fowler's TestDouble</a>
065 *
066 * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
067 *
068 */
069public class ScmProviderStub
070    implements ScmProvider
071{
072
073    private String scmType, scmSpecificFilename;
074
075    private List<ScmLogger> loggers = new ArrayList<ScmLogger>();
076
077    private boolean requiresEditmode;
078
079    private ScmProviderRepository scmProviderRepository = new ScmProviderRepositoryStub();
080
081    private List<String> errors = new ArrayList<String>();
082
083    private AddScmResult addScmResult;
084
085    private BranchScmResult branchScmResult;
086
087    private CheckInScmResult checkInScmResult;
088
089    private CheckOutScmResult checkOutScmResult;
090
091    private ChangeLogScmResult changeLogScmResult;
092
093    private DiffScmResult diffScmResult;
094
095    private RemoveScmResult removeScmResult;
096
097    private StatusScmResult statusScmResult;
098
099    private TagScmResult tagScmResult;
100
101    private UpdateScmResult updateScmResult;
102
103    private EditScmResult editScmResult;
104
105    private UnEditScmResult unEditScmResult;
106
107    private ListScmResult listScmResult;
108
109    private ExportScmResult exportScmResult;
110
111    private BlameScmResult blameScmResult;
112
113    private MkdirScmResult mkdirScmResult;
114
115    /**
116     * Create a new ScmProviderStub with bogus (not null) attributes
117     */
118    public ScmProviderStub()
119    {
120        setScmSpecificFilename( "" );
121        setAddScmResult( new AddScmResult( "", Collections.<ScmFile>emptyList() ) );
122        setBranchScmResult( new BranchScmResult( "", Collections.<ScmFile>emptyList() ) );
123        setChangeLogScmResult( new ChangeLogScmResult( "", "", "", true ) );
124        setCheckInScmResult( new CheckInScmResult( "", "", "", true ) );
125        setCheckOutScmResult( new CheckOutScmResult( "", "", "", true ) );
126        setDiffScmResult( new DiffScmResult( "", "", "", true ) );
127        setEditScmResult( new EditScmResult( "", "", "", true ) );
128        setExportScmResult( new ExportScmResult( "", "", "", true ) );
129        setRemoveScmResult( new RemoveScmResult( "", "", "", true ) );
130        setStatusScmResult( new StatusScmResult( "", "", "", true ) );
131        setTagScmResult( new TagScmResult( "", "", "", true ) );
132        setUnEditScmResult( new UnEditScmResult( "", "", "", true ) );
133        setUpdateScmResult( new UpdateScmResult( "", "", "", true ) );
134        setBlameScmResult( new BlameScmResult( "", "", "", true ) );
135        setMkdirScmResult( new MkdirScmResult( "", "", "", true ) );
136    }
137
138    /**
139     * {@inheritDoc}
140     */
141    public String sanitizeTagName( String tag )
142    {
143        return tag;
144    }
145
146    /**
147     * {@inheritDoc}
148     */
149    public boolean validateTagName( String tag )
150    {
151        return true;
152    }
153
154    /**
155     * {@inheritDoc}
156     */
157    public String getScmType()
158    {
159        return scmType;
160    }
161
162    public void setScmSpecificFilename( String scmSpecificFilename )
163    {
164        this.scmSpecificFilename = scmSpecificFilename;
165    }
166
167    /**
168     * {@inheritDoc}
169     */
170    public void addListener( ScmLogger logger )
171    {
172        loggers.add( logger );
173    }
174
175    public boolean requiresEditMode()
176    {
177        return requiresEditmode;
178    }
179
180    public void setAddScmResult( AddScmResult addScmResult )
181    {
182        this.addScmResult = addScmResult;
183    }
184
185    public AddScmResult getAddScmResult()
186    {
187        return addScmResult;
188    }
189
190    public void setBranchScmResult( BranchScmResult branchScmResult )
191    {
192        this.branchScmResult = branchScmResult;
193    }
194
195    public BranchScmResult getBranchScmResult()
196    {
197        return branchScmResult;
198    }
199
200    public void setCheckInScmResult( CheckInScmResult checkInScmResult )
201    {
202        this.checkInScmResult = checkInScmResult;
203    }
204
205    public CheckInScmResult getCheckInScmResult()
206    {
207        return checkInScmResult;
208    }
209
210    public void setCheckOutScmResult( CheckOutScmResult checkOutScmResult )
211    {
212        this.checkOutScmResult = checkOutScmResult;
213    }
214
215    public CheckOutScmResult getCheckOutScmResult()
216    {
217        return checkOutScmResult;
218    }
219
220    public void setChangeLogScmResult( ChangeLogScmResult changeLogScmResult )
221    {
222        this.changeLogScmResult = changeLogScmResult;
223    }
224
225    public ChangeLogScmResult getChangeLogScmResult()
226    {
227        return changeLogScmResult;
228    }
229
230    public void setDiffScmResult( DiffScmResult diffScmResult )
231    {
232        this.diffScmResult = diffScmResult;
233    }
234
235    public DiffScmResult getDiffScmResult()
236    {
237        return diffScmResult;
238    }
239
240    public ExportScmResult getExportScmResult()
241    {
242        return exportScmResult;
243    }
244
245    public void setExportScmResult( ExportScmResult exportScmResult )
246    {
247        this.exportScmResult = exportScmResult;
248    }
249
250    public void setTagScmResult( TagScmResult tagScmResult )
251    {
252        this.tagScmResult = tagScmResult;
253    }
254
255    public TagScmResult getTagScmResult()
256    {
257        return tagScmResult;
258    }
259
260    public void setRemoveScmResult( RemoveScmResult removeScmResult )
261    {
262        this.removeScmResult = removeScmResult;
263    }
264
265    public RemoveScmResult getRemoveScmResult()
266    {
267        return removeScmResult;
268    }
269
270    public void setStatusScmResult( StatusScmResult statusScmResult )
271    {
272        this.statusScmResult = statusScmResult;
273    }
274
275    public StatusScmResult getStatusScmResult()
276    {
277        return statusScmResult;
278    }
279
280    public void setUpdateScmResult( UpdateScmResult updateScmResult )
281    {
282        this.updateScmResult = updateScmResult;
283    }
284
285    public UpdateScmResult getUpdateScmResult()
286    {
287        return updateScmResult;
288    }
289
290    public void setEditScmResult( EditScmResult editScmResult )
291    {
292        this.editScmResult = editScmResult;
293    }
294
295    public EditScmResult getEditScmResult()
296    {
297        return editScmResult;
298    }
299
300    public void setUnEditScmResult( UnEditScmResult unEditScmResult )
301    {
302        this.unEditScmResult = unEditScmResult;
303    }
304
305    public UnEditScmResult getUnEditScmResult()
306    {
307        return unEditScmResult;
308    }
309
310    public void setListScmResult( ListScmResult listScmResult )
311    {
312        this.listScmResult = listScmResult;
313    }
314
315    public ListScmResult getListScmResult()
316    {
317        return listScmResult;
318    }
319
320    public void setBlameScmResult( BlameScmResult blameScmResult )
321    {
322        this.blameScmResult = blameScmResult;
323    }
324
325    public BlameScmResult getBlameScmResult()
326    {
327        return blameScmResult;
328    }
329
330    public MkdirScmResult getMkdirScmResult()
331    {
332        return mkdirScmResult;
333    }
334
335    public void setMkdirScmResult( MkdirScmResult mkdirScmResult )
336    {
337        this.mkdirScmResult = mkdirScmResult;
338    }
339
340    /**
341     * {@inheritDoc}
342     */
343    public ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, char delimiter )
344        throws ScmRepositoryException
345    {
346        return scmProviderRepository;
347    }
348
349    /**
350     * {@inheritDoc}
351     */
352    public ScmProviderRepository makeProviderScmRepository( File path )
353        throws ScmRepositoryException, UnknownRepositoryStructure
354    {
355        return scmProviderRepository;
356    }
357
358    /**
359     * {@inheritDoc}
360     */
361    public List<String> validateScmUrl( String scmSpecificUrl, char delimiter )
362    {
363        return errors;
364    }
365
366    /**
367     * {@inheritDoc}
368     */
369    public String getScmSpecificFilename()
370    {
371        return scmSpecificFilename;
372    }
373
374    /**
375     * {@inheritDoc}
376     */
377    public AddScmResult add( ScmRepository repository, ScmFileSet fileSet )
378        throws ScmException
379    {
380        return getAddScmResult();
381    }
382
383    /**
384     * {@inheritDoc}
385     */
386    public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, String message )
387        throws ScmException
388    {
389        return getAddScmResult();
390    }
391
392    public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, CommandParameters commandParameters )
393        throws ScmException
394    {
395        return getAddScmResult();
396    }
397
398    /**
399     * {@inheritDoc}
400     */
401    public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName )
402        throws ScmException
403    {
404        return getBranchScmResult();
405    }
406
407    /**
408     * {@inheritDoc}
409     */
410    public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, String message )
411        throws ScmException
412    {
413        return getBranchScmResult();
414    }
415
416    /**
417     * {@inheritDoc}
418     */
419    public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName,
420                                   ScmBranchParameters scmBranchParameters )
421        throws ScmException
422    {
423        return getBranchScmResult();
424    }
425
426    /**
427     * {@inheritDoc}
428     */
429    public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
430                                         int numDays, String branch )
431        throws ScmException
432    {
433        return getChangeLogScmResult();
434    }
435
436    /**
437     * {@inheritDoc}
438     */
439    public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
440                                         int numDays, String branch, String datePattern )
441        throws ScmException
442    {
443        return getChangeLogScmResult();
444    }
445
446    /**
447     * {@inheritDoc}
448     */
449    public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag )
450        throws ScmException
451    {
452        return getChangeLogScmResult();
453    }
454
455    /**
456     * {@inheritDoc}
457     */
458    public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag,
459                                         String datePattern )
460        throws ScmException
461    {
462        return getChangeLogScmResult();
463    }
464
465    /**
466     * {@inheritDoc}
467     */
468    public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
469                                         int numDays, ScmBranch branch )
470        throws ScmException
471    {
472        return getChangeLogScmResult();
473    }
474
475    /**
476     * {@inheritDoc}
477     */
478    public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
479                                         int numDays, ScmBranch branch, String datePattern )
480        throws ScmException
481    {
482        return getChangeLogScmResult();
483    }
484
485    public ChangeLogScmResult changeLog( ChangeLogScmRequest scmRequest )
486        throws ScmException
487    {
488        return getChangeLogScmResult();
489    }
490
491    /**
492     * {@inheritDoc}
493     */
494    public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
495                                         ScmVersion endVersion )
496        throws ScmException
497    {
498        return getChangeLogScmResult();
499    }
500
501    /**
502     * {@inheritDoc}
503     */
504    public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startRevision,
505                                         ScmVersion endRevision, String datePattern )
506        throws ScmException
507    {
508        return getChangeLogScmResult();
509    }
510
511    /**
512     * {@inheritDoc}
513     */
514    public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String tag, String message )
515        throws ScmException
516    {
517        return getCheckInScmResult();
518    }
519
520    /**
521     * {@inheritDoc}
522     */
523    public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String message )
524        throws ScmException
525    {
526        return getCheckInScmResult();
527    }
528
529    /**
530     * {@inheritDoc}
531     */
532    public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, ScmVersion revision, String message )
533        throws ScmException
534    {
535        return getCheckInScmResult();
536    }
537
538    /**
539     * {@inheritDoc}
540     */
541    public CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, String tag,
542                                       boolean recursive )
543        throws ScmException
544    {
545        return getCheckOutScmResult();
546    }
547
548    /**
549     * {@inheritDoc}
550     */
551    public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag )
552        throws ScmException
553    {
554        return getCheckOutScmResult();
555    }
556
557    /**
558     * {@inheritDoc}
559     */
560    public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet )
561        throws ScmException
562    {
563        return getCheckOutScmResult();
564    }
565
566    /**
567     * {@inheritDoc}
568     */
569    public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion version )
570        throws ScmException
571    {
572        return getCheckOutScmResult();
573    }
574
575    /**
576     * {@inheritDoc}
577     */
578    public CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, boolean recursive )
579        throws ScmException
580    {
581        return getCheckOutScmResult();
582    }
583
584    /**
585     * {@inheritDoc}
586     */
587    public CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion version,
588                                       boolean recursive )
589        throws ScmException
590    {
591        return getCheckOutScmResult();
592    }
593
594    /**
595     * {@inheritDoc}
596     */
597    public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, String startRevision, String endRevision )
598        throws ScmException
599    {
600        return getDiffScmResult();
601    }
602
603    /**
604     * {@inheritDoc}
605     */
606    public DiffScmResult diff( ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion startVersion,
607                               ScmVersion endVersion )
608        throws ScmException
609    {
610        return getDiffScmResult();
611    }
612
613    /**
614     * @return getUpdateScmResult() always
615     */
616    public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate,
617                                   String datePattern, boolean runChangelog )
618        throws ScmException
619    {
620        return getUpdateScmResult();
621    }
622
623    /**
624     * {@inheritDoc}
625     */
626    public EditScmResult edit( ScmRepository repository, ScmFileSet fileSet )
627        throws ScmException
628    {
629        return getEditScmResult();
630    }
631
632    /**
633     * {@inheritDoc}
634     */
635    public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag )
636        throws ScmException
637    {
638        return getExportScmResult();
639    }
640
641    /**
642     * {@inheritDoc}
643     */
644    public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory )
645        throws ScmException
646    {
647        return getExportScmResult();
648    }
649
650    /**
651     * {@inheritDoc}
652     */
653    public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet )
654        throws ScmException
655    {
656        return getExportScmResult();
657    }
658
659    /**
660     * {@inheritDoc}
661     */
662    public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version )
663        throws ScmException
664    {
665        return getExportScmResult();
666    }
667
668    /**
669     * {@inheritDoc}
670     */
671    public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version,
672                                   String outputDirectory )
673        throws ScmException
674    {
675        return getExportScmResult();
676    }
677
678    /**
679     * {@inheritDoc}
680     */
681    public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, String tag )
682        throws ScmException
683    {
684        return getListScmResult();
685    }
686
687    /**
688     * {@inheritDoc}
689     */
690    public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion version )
691        throws ScmException
692    {
693        return getListScmResult();
694    }
695
696    /**
697     * {@inheritDoc}
698     */
699    public RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message )
700        throws ScmException
701    {
702        return getRemoveScmResult();
703    }
704
705    /**
706     * {@inheritDoc}
707     */
708    public StatusScmResult status( ScmRepository repository, ScmFileSet fileSet )
709        throws ScmException
710    {
711        return getStatusScmResult();
712    }
713
714    /**
715     * {@inheritDoc}
716     */
717    public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tag )
718        throws ScmException
719    {
720        return getTagScmResult();
721    }
722
723    /**
724     * {@inheritDoc}
725     */
726    public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tag, String message )
727        throws ScmException
728    {
729        return getTagScmResult();
730    }
731
732    public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName,
733                             ScmTagParameters scmTagParameters )
734        throws ScmException
735    {
736        return getTagScmResult();
737    }
738
739    /**
740     * {@inheritDoc}
741     */
742    public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag )
743        throws ScmException
744    {
745        return getUpdateScmResult();
746    }
747
748    /**
749     * {@inheritDoc}
750     */
751    public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, boolean runChangelog )
752        throws ScmException
753    {
754        return getUpdateScmResult();
755    }
756
757    /**
758     * {@inheritDoc}
759     */
760    public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern )
761        throws ScmException
762    {
763        return getUpdateScmResult();
764    }
765
766    /**
767     * {@inheritDoc}
768     */
769    public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate )
770        throws ScmException
771    {
772        return getUpdateScmResult();
773    }
774
775    /**
776     * {@inheritDoc}
777     */
778    public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate,
779                                   String datePattern )
780        throws ScmException
781    {
782        return getUpdateScmResult();
783    }
784
785    /**
786     * {@inheritDoc}
787     */
788    public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet )
789        throws ScmException
790    {
791        return getUpdateScmResult();
792    }
793
794    /**
795     * {@inheritDoc}
796     */
797    public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version )
798        throws ScmException
799    {
800        return getUpdateScmResult();
801    }
802
803    /**
804     * {@inheritDoc}
805     */
806    public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, boolean runChangelog )
807        throws ScmException
808    {
809        return getUpdateScmResult();
810    }
811
812    /**
813     * {@inheritDoc}
814     */
815    public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version,
816                                   boolean runChangelog )
817        throws ScmException
818    {
819        return getUpdateScmResult();
820    }
821
822    /**
823     * {@inheritDoc}
824     */
825    public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version,
826                                   String datePattern )
827        throws ScmException
828    {
829        return getUpdateScmResult();
830    }
831
832    /**
833     * {@inheritDoc}
834     */
835    public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate )
836        throws ScmException
837    {
838        return getUpdateScmResult();
839    }
840
841    /**
842     * {@inheritDoc}
843     */
844    public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate,
845                                   String datePattern )
846        throws ScmException
847    {
848        return getUpdateScmResult();
849    }
850
851    /**
852     * {@inheritDoc}
853     */
854    public UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet )
855        throws ScmException
856    {
857        return getUnEditScmResult();
858    }
859
860    /**
861     * {@inheritDoc}
862     */
863    public BlameScmResult blame( ScmRepository repository, ScmFileSet fileSet, String filename )
864        throws ScmException
865    {
866        return getBlameScmResult();
867    }
868
869    public BlameScmResult blame( BlameScmRequest blameScmRequest )
870        throws ScmException
871    {
872        return getBlameScmResult();
873    }
874
875    /**
876     * {@inheritDoc}
877     */
878    public MkdirScmResult mkdir( ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal )
879        throws ScmException
880    {
881        return getMkdirScmResult();
882    }
883
884    public InfoScmResult info( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
885        throws ScmException
886    {
887        return new InfoScmResult( "", "", "", true );
888    }
889
890    public RemoteInfoScmResult remoteInfo( ScmProviderRepository repository, ScmFileSet fileSet,
891                                           CommandParameters parameters )
892        throws ScmException
893    {
894        return new RemoteInfoScmResult( "", null, null );
895    }
896}