public WebApp(String id, Set<String> owners, Set<String> hostnames, Set<String> uriContexts, AppMode mode,
Router router, PojoDispatcher dispatcher, Classes classes, Config config) {
this.id = id;
this.router = U.or(router, new HttpRouter());
this.dispatcher = U.or(dispatcher, new WebPojoDispatcher(classes));
this.owners = U.safe(owners);
this.hostnames = U.safe(hostnames);
this.uriContexts = U.safe(uriContexts);
this.mode = U.or(mode, AppMode.DEVELOPMENT);
this.classes = U.or(classes, new Classes());
this.config = U.or(config, new Config());
}