BundleDownloaderFactory.java
package org.entando.kubernetes.model.bundle.downloader;
import java.util.EnumMap;
import java.util.function.Supplier;
import org.entando.kubernetes.model.bundle.downloader.BundleDownloader.Type;
public class BundleDownloaderFactory {
EnumMap<Type, Supplier<BundleDownloader>> downloaderSuppliers;
Supplier<BundleDownloader> defaultSupplier;
public BundleDownloaderFactory() {
this.downloaderSuppliers = new EnumMap<>(Type.class);
}
public void registerSupplier(Type type, Supplier<BundleDownloader> downloaderSupplier) {
this.downloaderSuppliers.put(type, downloaderSupplier);
}
public BundleDownloader newDownloader(Type type) {
return this.downloaderSuppliers.getOrDefault(type, this.getDefaultSupplier()).get();
}
public BundleDownloader newDownloader() {
return this.getDefaultSupplier().get();
}
public Supplier<BundleDownloader> getDefaultSupplier() {
return this.defaultSupplier;
}
public void setDefaultSupplier(Supplier<BundleDownloader> defaultSupplier) {
this.defaultSupplier = defaultSupplier;
}
}