package be.swsb.fiazard.ordering;
import com.mongodb.DB;
import io.dropwizard.ConfiguredBundle;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import be.swsb.fiazard.common.eventsourcing.EventStore;
import be.swsb.fiazard.main.FiazardConfig;
import be.swsb.fiazard.main.MongoBundle;
import be.swsb.fiazard.ordering.bun.BunDAO;
import be.swsb.fiazard.ordering.bun.BunResource;
import be.swsb.fiazard.ordering.condiment.CondimentDAO;
import be.swsb.fiazard.ordering.condiment.CondimentResource;
import be.swsb.fiazard.ordering.openinghours.OpeningHourResourceV1;
import be.swsb.fiazard.ordering.topping.ToppingDAO;
import be.swsb.fiazard.ordering.topping.ToppingResource;
public class OrderingBundle implements ConfiguredBundle<FiazardConfig> {
private MongoBundle mongoBundle;
public OrderingBundle(MongoBundle mongoBundle) {
this.mongoBundle = mongoBundle;
}
@Override
public void initialize(Bootstrap<?> bootstrap) {
}
@Override
public void run(FiazardConfig configuration, Environment environment) throws Exception {
environment.jersey().register(new BunResource(new BunDAO(db()), eventStore()));
environment.jersey().register(new ToppingResource(new ToppingDAO(db()), eventStore()));
environment.jersey().register(new CondimentResource(new CondimentDAO(db()), eventStore()));
environment.jersey().register(new OpeningHourResourceV1());
}
private DB db() {
return mongoBundle.getDb();
}
private EventStore eventStore() {
return mongoBundle.getEventStore();
}
}