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"); }); } }