Skip to content

Commit 0f5ea67

Browse files
committed
first pass at system out api
1 parent b90577a commit 0f5ea67

File tree

6 files changed

+63
-9
lines changed

6 files changed

+63
-9
lines changed

org-code-javabuilder/lib/src/main/java/org/code/javabuilder/ValidationRunner.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.code.javabuilder.util.ProjectLoadUtils;
77
import org.code.protocol.*;
88
import org.code.validation.support.NeighborhoodTracker;
9+
import org.code.validation.support.SystemOutTracker;
910
import org.code.validation.support.ValidationProtocol;
1011

1112
public class ValidationRunner extends BaseTestRunner {
@@ -49,6 +50,6 @@ private void setUpForValidation(URLClassLoader urlClassLoader) throws UserInitia
4950
JavabuilderContext.getInstance()
5051
.register(
5152
ValidationProtocol.class,
52-
new ValidationProtocol(mainMethod, new NeighborhoodTracker()));
53+
new ValidationProtocol(mainMethod, new NeighborhoodTracker(), new SystemOutTracker()));
5354
}
5455
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.code.validation;
2+
3+
import java.util.List;
4+
import org.code.protocol.JavabuilderContext;
5+
import org.code.validation.support.ValidationProtocol;
6+
7+
public class SystemOutTestRunner {
8+
public static List<String> run() {
9+
ValidationProtocol protocolInstance =
10+
(ValidationProtocol) JavabuilderContext.getInstance().get(ValidationProtocol.class);
11+
protocolInstance.invokeMainMethod();
12+
return protocolInstance.getSystemOutMessages();
13+
}
14+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package org.code.validation.support;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import org.code.protocol.ClientMessage;
6+
import org.code.protocol.ClientMessageType;
7+
8+
public class SystemOutTracker {
9+
private List<String> messages;
10+
11+
public SystemOutTracker() {
12+
this.messages = new ArrayList<>();
13+
}
14+
15+
public List<String> getSystemOutMessages() {
16+
return this.messages;
17+
}
18+
19+
public void trackEvent(ClientMessage message) {
20+
if (message.getType() != ClientMessageType.SYSTEM_OUT) {
21+
return;
22+
}
23+
this.messages.add(message.getValue());
24+
}
25+
}

org-code-javabuilder/validation/src/main/java/org/code/validation/support/UserTestOutputAdapter.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,16 @@ public void sendMessage(ClientMessage message) {
2929
delegateOutputAdapter.sendMessage(message);
3030
}
3131
break;
32-
case NEIGHBORHOOD:
33-
if (this.isValidation) {
34-
ValidationProtocol protocolInstance =
35-
(ValidationProtocol) JavabuilderContext.getInstance().get(ValidationProtocol.class);
36-
protocolInstance.trackEvent(message);
37-
}
38-
break;
3932
default:
4033
break;
4134
}
35+
// If this is validation, send all messages to the validation protocol, which will decide
36+
// whether or not to track them.
37+
if (this.isValidation) {
38+
ValidationProtocol protocolInstance =
39+
(ValidationProtocol) JavabuilderContext.getInstance().get(ValidationProtocol.class);
40+
protocolInstance.trackEvent(message);
41+
}
4242
}
4343

4444
public void setIsValidation(boolean isValidation) {

org-code-javabuilder/validation/src/main/java/org/code/validation/support/ValidationProtocol.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,36 @@
22

33
import java.lang.reflect.InvocationTargetException;
44
import java.lang.reflect.Method;
5+
import java.util.List;
56
import org.code.protocol.ClientMessage;
67
import org.code.protocol.JavabuilderSharedObject;
78
import org.code.validation.NeighborhoodLog;
89

910
public class ValidationProtocol extends JavabuilderSharedObject {
1011
private final Method mainMethod;
1112
private final NeighborhoodTracker neighborhoodTracker;
13+
private final SystemOutTracker systemOutTracker;
1214

13-
public ValidationProtocol(Method mainMethod, NeighborhoodTracker neighborhoodTracker) {
15+
public ValidationProtocol(
16+
Method mainMethod,
17+
NeighborhoodTracker neighborhoodTracker,
18+
SystemOutTracker systemOutTracker) {
1419
this.mainMethod = mainMethod;
1520
this.neighborhoodTracker = neighborhoodTracker;
21+
this.systemOutTracker = systemOutTracker;
1622
}
1723

1824
public NeighborhoodLog getNeighborhoodLog() {
1925
return this.neighborhoodTracker.getNeighborhoodLog();
2026
}
2127

28+
public List<String> getSystemOutMessages() {
29+
return this.systemOutTracker.getSystemOutMessages();
30+
}
31+
2232
public void trackEvent(ClientMessage message) {
2333
this.neighborhoodTracker.trackEvent(message);
34+
this.systemOutTracker.trackEvent(message);
2435
}
2536

2637
public void invokeMainMethod() {

org-code-javabuilder/validation/src/test/java/org/code/validation/support/UserTestOutputAdapterTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ public class UserTestOutputAdapterTest {
1414

1515
@BeforeEach
1616
public void setUp() {
17+
1718
testOutputAdapter = new UserTestOutputAdapter(delegateOutputAdapter);
19+
JavabuilderContext.getInstance()
20+
.register(ValidationProtocol.class, mock(ValidationProtocol.class));
1821
}
1922

2023
@Test

0 commit comments

Comments
 (0)