Modify SessionReader to explicitly catch MissingParameterException and respond with ErrorResponse to request #229

Merged
lars.winzer merged 2 commits from fix/46-sessionreader-catch-missingparameterexception into main 2026-04-02 13:48:27 +02:00
@@ -12,6 +12,7 @@ import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.Primitive
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.RawRequest; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.RawRequest;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.Request; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.Request;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.RequestContext; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.RequestContext;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.accessor.MissingParameterException;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.PrimitiveResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.PrimitiveResponse;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.dispatcher.ResponseDispatchException; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.dispatcher.ResponseDispatchException;
@@ -94,6 +95,14 @@ public class SessionReader implements Runnable {
"Unexpected ResponseDispatchException exception while dispatching request", "Unexpected ResponseDispatchException exception while dispatching request",
e); e);
} catch (MissingParameterException e) {
logger.error(
"Recieved request for command '{}' was missing the '{}' parameter",
rawRequest.command(),
e.getParameterKey());
sendErrorResponse(
new ErrorResponse(requestContext, "MISSING_PARAMETER", e.getMessage()));
} catch (IOException e) { } catch (IOException e) {
logger.error("Unexpected IO exception while reading from transport", e); logger.error("Unexpected IO exception while reading from transport", e);