PlatformRuntimeProviders.java
package com.cloudforge.core.local;
import java.util.EnumMap;
import java.util.Map;
import java.util.ServiceLoader;
/** Classpath registry for target-owned {@link PlatformRuntimeProvider} implementations. */
public final class PlatformRuntimeProviders {
private PlatformRuntimeProviders() {
}
public static Map<DeploymentTarget, PlatformRuntimeProvider> all() {
Map<DeploymentTarget, PlatformRuntimeProvider> providers = new EnumMap<>(DeploymentTarget.class);
ServiceLoader.load(PlatformRuntimeProvider.class).forEach(provider -> {
PlatformRuntimeProvider existing = providers.putIfAbsent(provider.target(), provider);
if (existing != null) {
throw new IllegalStateException("Duplicate PlatformRuntimeProvider for " + provider.target());
}
});
return Map.copyOf(providers);
}
public static PlatformRuntimeProvider forTarget(DeploymentTarget target) {
PlatformRuntimeProvider provider = all().get(target);
if (provider == null) {
throw new IllegalStateException("No PlatformRuntimeProvider registered for " + target);
}
return provider;
}
}