diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/ResponseBody.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/ResponseBody.java new file mode 100644 index 0000000..7e75f59 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/ResponseBody.java @@ -0,0 +1,19 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.network.response; + +import java.util.List; + +public class ResponseBody { + private final List nodes; + + ResponseBody(List nodes) { + this.nodes = List.copyOf(nodes); + } + + public static ResponseBodyBuilder builder() { + return new ResponseBodyBuilder(); + } + + public List nodes() { + return nodes; + } +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/ResponseBodyBuilder.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/ResponseBodyBuilder.java new file mode 100644 index 0000000..e8a8329 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/ResponseBodyBuilder.java @@ -0,0 +1,25 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.network.response; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; + +public class ResponseBodyBuilder { + private final List nodes = new ArrayList<>(); + + public ResponseBodyBuilder param(String key, Object value) { + nodes.add(new ResponseParameter(key, value)); + return this; + } + + public ResponseBodyBuilder block(String tag, Consumer content) { + ResponseBodyBuilder childBuilder = new ResponseBodyBuilder(); + content.accept(childBuilder); + nodes.add(new ResponseBlock(tag, childBuilder.build().nodes())); + return this; + } + + public ResponseBody build() { + return new ResponseBody(nodes); + } +}