Add: Modify CommandRouter to use generic CommandHandler type

This commit is contained in:
Lars Simon Winzer
2026-03-26 17:55:26 +01:00
parent 2004740541
commit 52c347d233
@@ -6,14 +6,16 @@ import java.util.Map;
import ch.unibas.dmi.dbis.cs108.casono.server.network.parser.Request; import ch.unibas.dmi.dbis.cs108.casono.server.network.parser.Request;
public class CommandRouter { public class CommandRouter {
private final Map<Class<? extends Request>, CommandHandler> handlers = new HashMap<>(); private final Map<Class<? extends Request>, CommandHandler<?>> handlers = new HashMap<>();
public void register(Class<? extends Request> request, CommandHandler handler) { public void register(Class<? extends Request> request, CommandHandler<?> handler) {
handlers.put(request, handler); handlers.put(request, handler);
} }
// Safe, because during registration, it's ensured that the provided CommandHandler only receives requests it can handle.
@SuppressWarnings("unchecked")
public void execute(Request request) { public void execute(Request request) {
CommandHandler handler = handlers.get(request.getClass()); CommandHandler<Request> handler = (CommandHandler<Request>) handlers.get(request.getClass());
if (handler == null) { if (handler == null) {
String requestName = request.getClass().toString(); String requestName = request.getClass().toString();