package de.fd.fh; import de.fd.fh.server.access.AccessContextEventListener; import de.fd.fh.server.access.AccessRepository; import de.fd.fh.server.access.AccessService; import de.fd.fh.server.access.web.AccessController; import de.fd.fh.server.user.UserContextEventListener; import de.fd.fh.server.user.web.UserController; import de.fd.fh.server.user.UserRepository; import de.fd.fh.server.user.UserService; import java.util.HashSet; import java.util.Observable; import java.util.Observer; import java.util.Set; import static spark.Spark.*; public class ServerApp { private static AccessRepository accessRepository; private static UserRepository userRepository; private static final Set listeners = new HashSet<>(); public static void main(String[] args) { initRepositories(); initListeners(); new AccessController((AccessService) addListeners(new AccessService(accessRepository))); new UserController((UserService) addListeners(new UserService(userRepository))); get("/hello", (req, res) -> "Hello World"); } private static Object addListeners(Observable service) { listeners.forEach(service::addObserver); return service; } private static void initListeners() { listeners.add(new AccessContextEventListener(accessRepository)); listeners.add(new UserContextEventListener(userRepository)); } private static void initRepositories() { accessRepository = new AccessRepository(); userRepository = new UserRepository(); } }