package com.github.rojanu.test.util.server;
import com.github.rojanu.server.AbstractFinagleServerWithAdminInterface;
import com.google.common.collect.Lists;
import com.twitter.util.Await;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
public class JustInTimeServer {
private static final Logger logger = LoggerFactory.getLogger(JustInTimeServer.class);
private final List<AbstractFinagleServerWithAdminInterface> embeddedServers = Lists.newArrayList();
public static class Builder {
private final List<AbstractFinagleServerWithAdminInterface> embeddedServers = Lists.newArrayList();
private Builder() {
}
public Builder server(AbstractFinagleServerWithAdminInterface server) {
if (server != null) {
embeddedServers.add(server);
}
return this;
}
public JustInTimeServer build() {
return new JustInTimeServer(embeddedServers);
}
}
public static Builder Builder() {
return new Builder();
}
private JustInTimeServer(final List<AbstractFinagleServerWithAdminInterface> embeddedServers) {
this.embeddedServers.addAll(embeddedServers);
}
public JustInTimeServer stop() throws Exception {
for (AbstractFinagleServerWithAdminInterface embeddedServer : embeddedServers) {
Await.result(embeddedServer.close());
}
return this;
}
public JustInTimeServer stopSilently() {
try {
stop();
} catch (Exception ignored) {
}
return this;
}
}