package com.yunspace.dropwizard.xml.example; import com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module; import com.yunspace.dropwizard.xml.XmlBundle; import com.yunspace.dropwizard.xml.example.core.Pirate; import com.yunspace.dropwizard.xml.example.core.Ship; import com.yunspace.dropwizard.xml.example.db.PirateDAO; import com.yunspace.dropwizard.xml.example.db.ShipDAO; import com.yunspace.dropwizard.xml.example.resources.PirateResource; import com.yunspace.dropwizard.xml.example.resources.ShipResource; import io.dropwizard.Application; import io.dropwizard.db.DataSourceFactory; import io.dropwizard.hibernate.HibernateBundle; import io.dropwizard.setup.Bootstrap; import io.dropwizard.setup.Environment; import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL; import static com.fasterxml.jackson.databind.SerializationFeature.INDENT_OUTPUT; public class PirateApplication extends Application<PirateConfiguration> { public static void main(String[] args) throws Exception { new PirateApplication().run(args); } private final HibernateBundle<PirateConfiguration> hibernateBundle = new HibernateBundle<PirateConfiguration>(Pirate.class, Ship.class) { @Override public DataSourceFactory getDataSourceFactory(PirateConfiguration configuration) { return configuration.getDataSourceFactory(); } }; @Override public String getName() { return "XML Pirate Application"; } @Override public void initialize(Bootstrap<PirateConfiguration> bootstrap) { bootstrap.addBundle(hibernateBundle); final XmlBundle xmlBundle = new XmlBundle(); xmlBundle.getXmlMapper() .enable(INDENT_OUTPUT) .setSerializationInclusion(NON_NULL) .registerModule(new Hibernate5Module()); bootstrap.addBundle(xmlBundle); } @Override public void run(PirateConfiguration configuration, Environment environment) throws ClassNotFoundException { final PirateDAO pirateDAO = new PirateDAO(hibernateBundle.getSessionFactory()); final ShipDAO shipDAO = new ShipDAO(hibernateBundle.getSessionFactory()); environment.jersey().register(new PirateResource(pirateDAO)); environment.jersey().register(new ShipResource(shipDAO)); } }