package scanner;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.inject.Named;
import org.jooby.Jooby;
import org.jooby.json.Jackson;
import org.jooby.scanner.Scanner;
import com.google.common.util.concurrent.Service;
import com.google.common.util.concurrent.ServiceManager;
public class ScannerApp extends Jooby {
{
use(new Jackson());
use(new Scanner()
.scan(Service.class)
.scan(IBar.class)
.scan(Named.class)
.scan(AbsFoo.class)
);
get("/guava", req -> {
ServiceManager sm = req.require(ServiceManager.class);
return sm.servicesByState();
});
get("/bar", req -> {
Bar sm = req.require(Bar.class);
return sm.bar();
});
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
get("/stop", () -> {
executor.schedule(() -> {
this.stop();
System.exit(0);
}, 500, TimeUnit.MILLISECONDS);
return "Stopping";
});
}
public static void main(final String[] args) throws Throwable {
run(ScannerApp::new, args);
}
}