package org.koshinuke;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;
import org.codehaus.jackson.JsonGenerator.Feature;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import org.codehaus.jackson.map.ObjectMapper;
import org.koshinuke.jackson.KoshinukeModule;
import org.koshinuke.jackson.LowerCaseStrategy;
import org.koshinuke.jersey.ConfigurationProvider;
import org.koshinuke.jersey.KoshinukePrincipalProvider;
import org.koshinuke.jgit.server.EachRefPackWriter;
import org.koshinuke.jgit.server.GitHttpdService;
import org.koshinuke.jgit.server.ReceivePackWriter;
import org.koshinuke.jgit.server.UploadPackWriter;
import org.koshinuke.service.RepositoryService;
import org.koshinuke.service.RootService;
import org.koshinuke.service.UserService;
/**
* @author taichi
*/
public class App extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<>();
classes.add(RootService.class);
classes.add(GitHttpdService.class);
classes.add(UserService.class);
classes.add(RepositoryService.class);
classes.add(ConfigurationProvider.class);
classes.add(KoshinukePrincipalProvider.class);
return classes;
}
@Override
public Set<Object> getSingletons() {
HashSet<Object> singletons = new HashSet<Object>();
singletons.add(makeJsonProvider());
singletons.add(new EachRefPackWriter());
singletons.add(new UploadPackWriter());
singletons.add(new ReceivePackWriter());
return singletons;
}
public static JacksonJsonProvider makeJsonProvider() {
ObjectMapper om = new ObjectMapper();
om.setPropertyNamingStrategy(new LowerCaseStrategy());
om.configure(Feature.ESCAPE_NON_ASCII, true);
om.registerModule(new KoshinukeModule());
return new JacksonJsonProvider(om);
}
}