diff --git a/api/server/pom.xml b/api/server/pom.xml
index a04b0e3..5429449 100644
--- a/api/server/pom.xml
+++ b/api/server/pom.xml
@@ -1,132 +1,132 @@
4.0.0
org.softwareheritage.graph
graph
1.0-ALPHA
graph
https://www.softwareheritage.org/
UTF-8
11
junit
junit
4.11
test
org.hamcrest
hamcrest
2.1
test
io.javalin
javalin
- 2.8.0
+ 3.0.0
org.slf4j
slf4j-simple
1.7.26
com.fasterxml.jackson.core
jackson-databind
2.9.8
it.unimi.dsi
webgraph-big
3.5.0
it.unimi.dsi
fastutil
8.2.2
maven-clean-plugin
3.1.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.8.0
-verbose
-Xlint:all
maven-surefire-plugin
2.22.1
maven-jar-plugin
3.0.2
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2
maven-site-plugin
3.7.1
maven-project-info-reports-plugin
3.0.0
maven-assembly-plugin
org.softwareheritage.graph.App
jar-with-dependencies
make-assembly
package
single
diff --git a/api/server/src/main/java/org/softwareheritage/graph/App.java b/api/server/src/main/java/org/softwareheritage/graph/App.java
index 31ad1c4..d6ed0d0 100644
--- a/api/server/src/main/java/org/softwareheritage/graph/App.java
+++ b/api/server/src/main/java/org/softwareheritage/graph/App.java
@@ -1,70 +1,70 @@
package org.softwareheritage.graph;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import io.javalin.Javalin;
-import io.javalin.json.JavalinJackson;
+import io.javalin.plugin.json.JavalinJackson;
import org.softwareheritage.graph.Graph;
import org.softwareheritage.graph.SwhId;
import org.softwareheritage.graph.algo.Stats;
import org.softwareheritage.graph.algo.Visit;
public class App {
public static void main(String[] args) throws IOException {
String path = args[0];
Graph graph = new Graph(path);
Stats stats = new Stats(path);
// Clean up on exit
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
try {
graph.cleanUp();
} catch (IOException e) {
System.out.println("Could not clean up graph on exit: " + e);
}
}
});
// Configure Jackson JSON to use snake case naming style
ObjectMapper objectMapper = JavalinJackson.getObjectMapper();
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
JavalinJackson.configure(objectMapper);
Javalin app = Javalin.create().start(5010);
app.get("/stats", ctx -> {
ctx.json(stats);
});
app.get("/visit/:swh_id", ctx -> {
try {
Map> queryParamMap = ctx.queryParamMap();
for (String key : queryParamMap.keySet()) {
if (!key.matches("direction|edges|traversal")) {
throw new IllegalArgumentException("Unknown query string: " + key);
}
}
SwhId swhId = new SwhId(ctx.pathParam("swh_id"));
// By default, traversal is a forward DFS using all edges
String traversal = ctx.queryParam("traversal", "dfs");
String direction = ctx.queryParam("direction", "forward");
String edges = ctx.queryParam("edges", "all");
ctx.json(new Visit(graph, swhId, edges, traversal, direction));
} catch (IllegalArgumentException e) {
ctx.status(400);
ctx.result(e.getMessage());
}
});
app.error(404, ctx -> { ctx.result("Not found"); });
}
}