Skip to content
This repository was archived by the owner on Mar 8, 2020. It is now read-only.

Commit 84d6960

Browse files
authored
Merge pull request #28 from abeaumont/feature/error-reporting
native: Improve error reporting
2 parents d7e0bab + 98683a3 commit 84d6960

2 files changed

Lines changed: 24 additions & 2 deletions

File tree

native/src/main/java/bblfsh/Driver.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package bblfsh;
22

3+
import org.eclipse.jdt.core.dom.Message;
4+
35
import sun.reflect.annotation.ExceptionProxy;
46

57
import java.io.IOException;
8+
69
import java.util.ArrayList;
10+
import java.util.Arrays;
11+
import java.util.stream.Stream;
12+
import java.util.stream.Collectors;
713

814
public class Driver {
915

@@ -63,8 +69,10 @@ private Response processRequest(final Request request) {
6369
} catch (IOException e) {
6470
return createFatalResponse(e);
6571
}
66-
67-
response.status = "ok";
72+
response.errors = Arrays.stream(response.ast.getMessages())
73+
.map(Message::getMessage)
74+
.collect(Collectors.toCollection(ArrayList::new));
75+
response.status = response.errors.isEmpty() ? "ok" : "error";
6876
return response;
6977
}
7078
}

native/src/test/java/bblfsh/DriverTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,20 @@ public void exitOnCloseIn() throws DriverException, CloseException {
4040
} catch (CloseException ex) { }
4141
}
4242

43+
@Test
44+
public void processError() throws DriverException, CloseException {
45+
final String input = "{\"content\":\"package\"}\n";
46+
final InputStream in = new ByteArrayInputStream(input.getBytes());
47+
final RequestReader reader = new RequestReader(in);
48+
49+
final ByteArrayOutputStream out = new ByteArrayOutputStream();
50+
final ResponseWriter writer = new ResponseWriter(out);
51+
52+
final Driver driver = new Driver(reader, writer);
53+
driver.processOne();
54+
assertThat(out.toString()).contains("\"status\":\"error\"");
55+
}
56+
4357
@Test
4458
public void processInvalid() throws DriverException, CloseException {
4559
final String input = "garbage";

0 commit comments

Comments
 (0)