Files
CraterLib/Common/src/main/java/com/hypherionmc/craterlib/utils/InternalServiceUtil.java

27 lines
735 B
Java

package com.hypherionmc.craterlib.utils;
import com.hypherionmc.craterlib.CraterConstants;
import java.util.ServiceLoader;
/**
* @author HypherionSA
* Utility class to handle SPI loading
*/
public class InternalServiceUtil {
/**
* Try to load a service
*
* @param clazz The service class type to load
* @return The loaded class
*/
public static <T> T load(Class<T> clazz) {
final T loadedService = ServiceLoader.load(clazz)
.findFirst()
.orElseThrow(() -> new NullPointerException("Failed to load service for " + clazz.getName()));
CraterConstants.LOG.debug("Loaded {} for service {}", loadedService, clazz);
return loadedService;
}
}