From 2feb0579e2b054ee1da30a0ebf5c3617463f4754 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Mon, 30 Mar 2026 12:40:59 +0200 Subject: [PATCH] Add: RequestParameterAccessor as utility class for simplified access of parameters of PrimitiveRequest --- .../parser/RequestParameterAccessor.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/parser/RequestParameterAccessor.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/parser/RequestParameterAccessor.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/parser/RequestParameterAccessor.java new file mode 100644 index 0000000..ce5ddd8 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/parser/RequestParameterAccessor.java @@ -0,0 +1,59 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.network.parser; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class RequestParameterAccessor { + private final Map index; + + public RequestParameterAccessor(List parameters) { + this.index = parameters.stream() + .collect(Collectors.toUnmodifiableMap( + Parameter::key, + Parameter::value + )); + } + + public String require(String key) throws MissingParameterException { + String value = index.get(key); + if (value == null) { + throw new MissingParameterException("Required parameter with key '" + key + "' is missing.", key); + } + return value; + } + + public T require(String key, ThrowingParser parser) throws MissingParameterException, ParameterParseException { + String value = require(key); + try { + return parser.parse(value); + } catch (Exception e) { + throw new ParameterParseException("Error while parsing with specified parser", e); + } + } + + public String optional(String key, String defaultValue) { + String value = index.get(key); + if (value == null) { + return defaultValue; + } + return value; + } + + public T optional(String key, T defaultValue, ThrowingParser parser) throws ParameterParseException { + String value = index.get(key); + if (value == null) { + return defaultValue; + } + + try { + return parser.parse(value); + } catch (Exception e) { + throw new ParameterParseException("Error while parsing with specified parser", e); + } + } + + public boolean containsKey(String key) { + return index.containsKey(key); + } +}