1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.surefire.booter.spi;
20
21 import javax.annotation.Nonnull;
22
23 import java.io.IOException;
24 import java.net.MalformedURLException;
25
26 import org.apache.maven.surefire.api.booter.MasterProcessChannelDecoder;
27 import org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder;
28 import org.apache.maven.surefire.api.fork.ForkNodeArguments;
29 import org.apache.maven.surefire.api.util.internal.WritableBufferedByteChannel;
30
31 import static org.apache.maven.surefire.api.util.internal.Channels.newBufferedChannel;
32
33
34
35
36
37
38
39
40 public class LegacyMasterProcessChannelProcessorFactory extends AbstractMasterProcessChannelProcessorFactory {
41 private static final int FLUSH_PERIOD_MILLIS = 100;
42
43 @Override
44 public boolean canUse(String channelConfig) {
45 return channelConfig.startsWith("pipe://");
46 }
47
48 @Override
49 public void connect(String channelConfig) throws IOException {
50 if (!canUse(channelConfig)) {
51 throw new MalformedURLException("Unknown channel string " + channelConfig);
52 }
53 }
54
55 @Override
56 public MasterProcessChannelDecoder createDecoder(@Nonnull ForkNodeArguments forkingArguments) {
57 return new CommandChannelDecoder(newBufferedChannel(System.in), forkingArguments);
58 }
59
60 @Override
61 public MasterProcessChannelEncoder createEncoder(@Nonnull ForkNodeArguments forkingArguments) {
62 WritableBufferedByteChannel channel = newBufferedChannel(System.out);
63 schedulePeriodicFlusher(FLUSH_PERIOD_MILLIS, channel);
64 return new EventChannelEncoder(channel);
65 }
66 }