Services.java 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package me.lethunderhawk.fluxapi;
  2. import me.lethunderhawk.fluxapi.util.interfaces.BazaarFluxModule;
  3. import java.util.Map;
  4. import java.util.concurrent.ConcurrentHashMap;
  5. public final class Services {
  6. private static final Map<Class<?>, Object> services = new ConcurrentHashMap<>();
  7. public static <T> T register(Class<T> type, T service) {
  8. services.put(type, service);
  9. return service;
  10. }
  11. public static <T> void registerModule(Class<? extends BazaarFluxModule> type, T service) {
  12. services.put(type, service);
  13. }
  14. @SuppressWarnings("unchecked")
  15. public static <T> T get(Class<T> type) {
  16. T service = (T) services.get(type);
  17. if(service == null) {
  18. throw new RuntimeException("No service registered for " + type);
  19. }
  20. return service;
  21. }
  22. @SuppressWarnings("unchecked")
  23. public static <T> T unregister(Class<T> type) {
  24. return (T) services.remove(type);
  25. }
  26. public static <T> void unregisterModule(Class<? extends BazaarFluxModule> type) {
  27. services.remove(type);
  28. }
  29. }