From eb63f6d39b91b4170e38aacabafde5e732e9dd07 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Mon, 23 Mar 2026 15:45:44 +0100 Subject: [PATCH] Add: Base classes for all responses --- .../network/response/ErrorResponse.java | 32 +++++++++++++++++++ .../server/network/response/Response.java | 16 ++++++++++ .../network/response/SuccessResponse.java | 23 +++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/ErrorResponse.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/Response.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/SuccessResponse.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/ErrorResponse.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/ErrorResponse.java new file mode 100644 index 0000000..801667e --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/ErrorResponse.java @@ -0,0 +1,32 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.network.response; + +import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId; + +public class ErrorResponse extends Response { + private final String code; + private final String message; + + public ErrorResponse( + SessionId sessionId, int requestId, String errorCode, String errorMessage) { + this.sessionId = sessionId; + this.requestId = requestId; + this.code = errorCode; + this.message = errorMessage; + } + + public ErrorResponse(SessionId sessionId, int requestId, String errorCode) { + this.sessionId = sessionId; + this.requestId = requestId; + this.code = errorCode; + this.message = null; + } + + @Override + public String encode() { + if (message != null && !message.isEmpty()) { + return "-ERR CODE=" + code + " MSG=" + message; + } else { + return "-ERR CODE=" + code; + } + } +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/Response.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/Response.java new file mode 100644 index 0000000..f9c0f20 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/Response.java @@ -0,0 +1,16 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.network.response; + +import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId; + +public abstract class Response implements Encodable { + protected SessionId sessionId; + protected int requestId; + + public SessionId getSessionId() { + return sessionId; + } + + public int getRequestId() { + return requestId; + } +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/SuccessResponse.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/SuccessResponse.java new file mode 100644 index 0000000..e9f9f2d --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/response/SuccessResponse.java @@ -0,0 +1,23 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.network.response; + +import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId; + +public abstract class SuccessResponse extends Response { + public SuccessResponse(SessionId sessionId, int requestId) { + this.sessionId = sessionId; + this.requestId = requestId; + } + + public final String encode() { + String payload = payload(); + if (payload.isBlank()) { + return "+OK"; + } else { + return "+OK " + payload; + } + } + + protected String payload() { + return ""; + } +}