1 package org.apache.maven.scm.provider.cvslib.cvsjava.command.blame;
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.command.blame.BlameScmResult;
23 import org.apache.maven.scm.provider.cvslib.command.blame.AbstractCvsBlameCommand;
24 import org.apache.maven.scm.provider.cvslib.command.blame.CvsBlameConsumer;
25 import org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsConnection;
26 import org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsLogListener;
27 import org.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepository;
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 public class CvsJavaBlameCommand
39 extends AbstractCvsBlameCommand
40 {
41
42
43
44 protected BlameScmResult executeCvsCommand( Commandline cl, CvsScmProviderRepository repository )
45 {
46 CvsLogListener logListener = new CvsLogListener();
47 CvsBlameConsumer consumer = new CvsBlameConsumer( getLogger() );
48 try
49 {
50 boolean isSuccess =
51 CvsConnection.processCommand( cl.getArguments(), cl.getWorkingDirectory().getAbsolutePath(),
52 logListener, getLogger() );
53 if ( !isSuccess )
54 {
55 return new BlameScmResult( cl.toString(), "The cvs command failed.", logListener.getStderr().toString(),
56 false );
57 }
58 BufferedReader stream = new BufferedReader(
59 new InputStreamReader( new ByteArrayInputStream( logListener.getStdout().toString().getBytes() ) ) );
60 String line;
61 while ( ( line = stream.readLine() ) != null )
62 {
63 consumer.consumeLine( line );
64 }
65 }
66 catch ( Exception e )
67 {
68 getLogger().error( e );
69 return new BlameScmResult( cl.toString(), "The cvs command failed.", logListener.getStdout().toString(),
70 false );
71 }
72
73 return new BlameScmResult( cl.toString(), consumer.getLines() );
74 }
75 }