1 package org.apache.maven.scm.provider.cvslib.cvsjava.command.checkin;
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.checkin.CheckInScmResult;
24 import org.apache.maven.scm.provider.cvslib.command.checkin.AbstractCvsCheckInCommand;
25 import org.apache.maven.scm.provider.cvslib.command.checkin.CvsCheckInConsumer;
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.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepository;
29 import org.codehaus.plexus.util.FileUtils;
30 import org.codehaus.plexus.util.cli.Commandline;
31
32 import java.io.BufferedReader;
33 import java.io.ByteArrayInputStream;
34 import java.io.File;
35 import java.io.IOException;
36 import java.io.InputStreamReader;
37
38
39
40
41
42 public class CvsJavaCheckInCommand
43 extends AbstractCvsCheckInCommand
44 {
45
46 protected CheckInScmResult executeCvsCommand( Commandline cl, CvsScmProviderRepository repository,
47 File messageFile )
48 throws ScmException
49 {
50 CvsLogListener logListener = new CvsLogListener();
51
52 CvsCheckInConsumer consumer = new CvsCheckInConsumer( repository.getPath(), getLogger() );
53
54 try
55 {
56 boolean isSuccess = CvsConnection.processCommand( cl.getArguments(),
57 cl.getWorkingDirectory().getAbsolutePath(), logListener,
58 getLogger() );
59
60 if ( !isSuccess )
61 {
62 return new CheckInScmResult( cl.toString(), "The cvs command failed.",
63 logListener.getStderr().toString(), false );
64 }
65 BufferedReader stream = new BufferedReader(
66 new InputStreamReader( new ByteArrayInputStream( logListener.getStdout().toString().getBytes() ) ) );
67
68 String line;
69
70 while ( ( line = stream.readLine() ) != null )
71 {
72 consumer.consumeLine( line );
73 }
74 }
75 catch ( Exception e )
76 {
77 e.printStackTrace();
78 return new CheckInScmResult( cl.toString(), "The cvs command failed.", logListener.getStdout().toString(),
79 false );
80 }
81 finally
82 {
83 try
84 {
85 FileUtils.forceDelete( messageFile );
86 }
87 catch ( IOException ex )
88 {
89
90 }
91
92
93 }
94
95 return new CheckInScmResult( cl.toString(), consumer.getCheckedInFiles() );
96 }
97 }