package jersey;
import com.google.common.collect.Maps;
import com.sun.jersey.api.core.PackagesResourceConfig;
import com.sun.jersey.api.json.JSONConfiguration;
import com.sun.jersey.guice.JerseyServletModule;
import com.sun.jersey.guice.spi.container.servlet.GuiceContainer;
import com.sun.jersey.spi.container.servlet.ServletContainer;
import java.util.Map;
public class ResourceModule extends JerseyServletModule {
private Map<String, String> params = Maps.newHashMap();
@Override
protected void configureServlets() {
configureStuff();
bindResources();
}
private void configureStuff() {
enableJsonResponses();
iThinkItEnablesReplaceUrlWithLinksWhenRendernHtml();
scanThisPackageAndItsSubpackagesForResources("jersey");
//someWayToConfigureJerseyOverAClass();
serve("/*").with(GuiceContainer.class, params);
}
private void someWayToConfigureJerseyOverAClass() {
params.put(ServletContainer.RESOURCE_CONFIG_CLASS, ClassPathResourceConfig.class.getName());
}
private void scanThisPackageAndItsSubpackagesForResources(String packageToScan) {
params.put(PackagesResourceConfig.PROPERTY_PACKAGES, packageToScan);
}
private void iThinkItEnablesReplaceUrlWithLinksWhenRendernHtml() {
params.put("com.sun.jersey.spi.container.ContainerResponseFilters", "com.sun.jersey.server.linking.LinkFilter");
}
private void enableJsonResponses() {
params.put(JSONConfiguration.FEATURE_POJO_MAPPING, "true");
}
private void bindResources() {
bind(RootResource.class);
}
}