| 123456789101112131415161718192021222324252627282930313233343536 |
- package me.lethunderhawk.fluxapi;
- import me.lethunderhawk.fluxapi.util.interfaces.BazaarFluxModule;
- import java.util.Map;
- import java.util.concurrent.ConcurrentHashMap;
- public final class Services {
- private static final Map<Class<?>, Object> services = new ConcurrentHashMap<>();
- public static <T> T register(Class<T> type, T service) {
- services.put(type, service);
- return service;
- }
- public static <T> void registerModule(Class<? extends BazaarFluxModule> type, T service) {
- services.put(type, service);
- }
- @SuppressWarnings("unchecked")
- public static <T> T get(Class<T> type) {
- T service = (T) services.get(type);
- if(service == null) {
- throw new RuntimeException("No service registered for " + type);
- }
- return service;
- }
- @SuppressWarnings("unchecked")
- public static <T> T unregister(Class<T> type) {
- return (T) services.remove(type);
- }
- public static <T> void unregisterModule(Class<? extends BazaarFluxModule> type) {
- services.remove(type);
- }
- }
|