1 package org.apache.maven.scm.provider.cvslib.cvsjava.command.branch;
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.ScmException;
23 import org.apache.maven.scm.command.branch.BranchScmResult;
24 import org.apache.maven.scm.provider.cvslib.command.branch.AbstractCvsBranchCommand;
25 import org.apache.maven.scm.provider.cvslib.command.branch.CvsBranchConsumer;
26 import org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsConnection;
27 import org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsLogListener;
28 import org.codehaus.plexus.util.cli.Commandline;
29
30 import java.io.BufferedReader;
31 import java.io.ByteArrayInputStream;
32 import java.io.InputStreamReader;
33
34
35
36
37
38
39 public class CvsJavaBranchCommand
40 extends AbstractCvsBranchCommand
41 {
42
43 protected BranchScmResult executeCvsCommand( Commandline cl )
44 throws ScmException
45 {
46 CvsLogListener logListener = new CvsLogListener();
47
48 CvsBranchConsumer consumer = new CvsBranchConsumer( getLogger() );
49
50 try
51 {
52 boolean isSuccess = CvsConnection.processCommand( cl.getArguments(),
53 cl.getWorkingDirectory().getAbsolutePath(), logListener,
54 getLogger() );
55
56 if ( !isSuccess )
57 {
58 return new BranchScmResult( cl.toString(), "The cvs branch command failed.",
59 logListener.getStderr().toString(), false );
60 }
61 BufferedReader stream = new BufferedReader(
62 new InputStreamReader( new ByteArrayInputStream( logListener.getStdout().toString().getBytes() ) ) );
63
64 String line;
65
66 while ( ( line = stream.readLine() ) != null )
67 {
68 consumer.consumeLine( line );
69 }
70 }
71 catch ( Exception e )
72 {
73 getLogger().error( e.getMessage(), e );
74 return new BranchScmResult( cl.toString(), "The cvs branch command failed.",
75 logListener.getStderr().toString(), false );
76 }
77
78 return new BranchScmResult( cl.toString(), consumer.getTaggedFiles() );
79 }
80 }