Commit b91d42b7 authored by wenmo's avatar wenmo

[Optimization-397] [daemon] SPI Optimization

parent f044493d
package com.dlink.daemon.task; package com.dlink.daemon.task;
import java.util.Optional;
import java.util.ServiceLoader;
import com.dlink.assertion.Asserts; import com.dlink.assertion.Asserts;
import com.dlink.daemon.exception.DaemonTaskException; import com.dlink.daemon.exception.DaemonTaskException;
import sun.misc.Service;
import java.util.Iterator;
import java.util.Optional;
public interface DaemonTask { public interface DaemonTask {
static Optional<DaemonTask> get(DaemonTaskConfig config) { static Optional<DaemonTask> get(DaemonTaskConfig config) {
Asserts.checkNotNull(config, "线程任务配置不能为空"); Asserts.checkNotNull(config, "线程任务配置不能为空");
Iterator<DaemonTask> providers = Service.providers(DaemonTask.class); ServiceLoader<DaemonTask> daemonTasks = ServiceLoader.load(DaemonTask.class);
while (providers.hasNext()) { for (DaemonTask daemonTask : daemonTasks) {
DaemonTask daemonTask = providers.next();
if (daemonTask.canHandle(config.getType())) { if (daemonTask.canHandle(config.getType())) {
return Optional.of(daemonTask.setConfig(config)); return Optional.of(daemonTask.setConfig(config));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment