package edu.uw.zookeeper.server;
import com.google.common.util.concurrent.Service;
import edu.uw.zookeeper.ZooKeeperApplication;
import edu.uw.zookeeper.common.Application;
import edu.uw.zookeeper.common.ServiceApplication;
import edu.uw.zookeeper.common.ServiceMonitor;
public class Main extends ZooKeeperApplication.ForwardingApplication {
public static void main(String[] args) {
ZooKeeperApplication.main(args, new MainBuilder());
}
protected Main(Application delegate) {
super(delegate);
}
protected static class MainBuilder extends ZooKeeperApplication.ForwardingBuilder<Main, SimpleServerBuilder<?>, MainBuilder> {
protected static final String DESCRIPTION = "ZooKeeper Standalone In-Memory Server";
public MainBuilder() {
this(SimpleServerBuilder.defaults());
}
public MainBuilder(SimpleServerBuilder<?> delegate) {
super(delegate);
}
@Override
protected MainBuilder newInstance(SimpleServerBuilder<?> delegate) {
return new MainBuilder(delegate);
}
@Override
protected Main doBuild() {
getRuntimeModule().getConfiguration().getArguments().setDescription(getDescription());
ServiceMonitor monitor = getRuntimeModule().getServiceMonitor();
for (Service service: delegate.build()) {
monitor.add(service);
}
return new Main(ServiceApplication.forService(monitor));
}
protected String getDescription() {
return DESCRIPTION;
}
}
}