package com.aol.micro.server;
import java.util.ServiceLoader;
import java.util.function.Supplier;
import cyclops.collections.ListX;
import cyclops.function.FluentFunctions;
import cyclops.stream.ReactiveSeq;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@NoArgsConstructor(access=AccessLevel.PRIVATE)
public class PluginLoader {
public final static PluginLoader INSTANCE = new PluginLoader();
public final Supplier<ListX<Plugin>> plugins = FluentFunctions.of(this::load)
.memoize();
private ListX<Plugin> load(){
return ReactiveSeq.fromIterable(ServiceLoader.load(Plugin.class)).toListX();
}
}