Modify SessionReader to explicitly catch MissingParameterException and respond with ErrorResponse to request #229
+9
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user