1 package org.apache.maven.surefire.booter.output;
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.surefire.report.ForkingConsoleReporter;
23 import org.codehaus.plexus.util.cli.StreamConsumer;
24
25
26
27
28
29
30
31
32
33 public class ForkingStreamConsumer
34 implements StreamConsumer
35 {
36 private final static int STANDARD_PREFIX_LENGTH = ForkingConsoleReporter.FORKING_PREFIX_STANDARD.length();
37
38 private final static int HEADING_PREFIX_LENGTH = ForkingConsoleReporter.FORKING_PREFIX_HEADING.length();
39
40 private final static int FOOTER_PREFIX_LENGTH = ForkingConsoleReporter.FORKING_PREFIX_FOOTER.length();
41
42 private OutputConsumer outputConsumer;
43
44 public ForkingStreamConsumer( OutputConsumer outputConsumer )
45 {
46 this.outputConsumer = outputConsumer;
47 }
48
49 public void consumeLine( String line )
50 {
51 if ( line.startsWith( ForkingConsoleReporter.FORKING_PREFIX_HEADING ) )
52 {
53 outputConsumer.consumeHeaderLine( line.substring( HEADING_PREFIX_LENGTH ) );
54 }
55 else if ( line.startsWith( ForkingConsoleReporter.FORKING_PREFIX_STANDARD ) )
56 {
57 String message = line.substring( STANDARD_PREFIX_LENGTH );
58 if ( ForkingConsoleReporter.isTestSetStartingMessage( message ) )
59 {
60 outputConsumer.testSetStarting( ForkingConsoleReporter.parseTestSetStartingMessage( message ) );
61 }
62 else if ( ForkingConsoleReporter.isTestSetCompletedMessage( message ) )
63 {
64 outputConsumer.testSetCompleted();
65 }
66 outputConsumer.consumeMessageLine( message );
67 }
68 else if ( line.startsWith( ForkingConsoleReporter.FORKING_PREFIX_FOOTER ) )
69 {
70 outputConsumer.consumeFooterLine( line.substring( FOOTER_PREFIX_LENGTH ) );
71 }
72 else
73 {
74 outputConsumer.consumeOutputLine( line );
75 }
76 }
77
78
79
80
81 public OutputConsumer getOutputConsumer()
82 {
83 return this.outputConsumer;
84 }
85
86 }