package com.giorgiosironi.gameoflife; import org.glassfish.hk2.utilities.binding.AbstractBinder; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.server.mvc.MvcFeature; import org.glassfish.jersey.server.mvc.freemarker.FreemarkerMvcFeature; import com.giorgiosironi.gameoflife.domain.Cell; import com.giorgiosironi.gameoflife.domain.Generation; import com.giorgiosironi.gameoflife.domain.GenerationRepository; import com.giorgiosironi.gameoflife.domain.InMemoryGenerationRepository; public class WebApplicationResourceConfig extends ResourceConfig { public WebApplicationResourceConfig() { packages("com.giorgiosironi.gameoflife.web"); property(MvcFeature.TEMPLATE_BASE_PATH, "templates"); register(FreemarkerMvcFeature.class); register(new AbstractBinder() { @Override protected void configure() { InMemoryGenerationRepository repository = new InMemoryGenerationRepository(); Generation original = Generation.withAliveCells( Cell.onXAndY(1, 1), Cell.onXAndY(1, 2), Cell.onXAndY(2, 1), Cell.onXAndY(2, 2), Cell.onXAndY(7, 1), Cell.onXAndY(7, 2), Cell.onXAndY(7, 3), Cell.onXAndY(7, 8) ); repository.add("a-block-and-a-bar", 0, original); bind(repository).to(GenerationRepository.class); } }); } }