package fi.internetix.smvc.controllers;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import fi.internetix.smvc.logging.Logging;
public class RequestControllerMapper {
private RequestControllerMapper() {
}
public static RequestController getRequestController(String controllerName) {
return requestControllers.get(controllerName);
}
@SuppressWarnings("unchecked")
public final static void mapControllers(Properties properties, String urlPostfix) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
Enumeration<Object> keys = properties.keys();
while (keys.hasMoreElements()) {
String name = (String) keys.nextElement();
String className = ((String) properties.get(name)).trim();
Class<RequestController> controller = (Class<RequestController>) Class.forName(className);
mapController(name, urlPostfix, controller.newInstance());
}
}
public static void mapController(String name, String urlPostfix, RequestController controller) {
String key = name + urlPostfix;
requestControllers.put(key, controller);
Logging.logDebug("Registered: " + key + " : " + controller);
}
public final static Map<String, RequestController> getControllers() {
// TODO: Clone map?
return requestControllers;
}
/**
* Hashmap for page request controller names and their instances.
*/
private static Map<String, RequestController> requestControllers = new HashMap<>();
}