package net.sf.gazpachoquest.rest;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import org.apache.cxf.jaxrs.validation.JAXRSBeanValidationInInterceptor;
import org.apache.cxf.jaxrs.validation.JAXRSBeanValidationOutInterceptor;
import org.apache.cxf.jaxrs.validation.ValidationExceptionMapper;
import net.sf.gazpachoquest.rest.exception.AccountNotFoundExceptionHandler;
import net.sf.gazpachoquest.rest.exception.DefaultExceptionHandler;
import net.sf.gazpachoquest.rest.exception.ShiroExceptionHandler;
import net.sf.gazpachoquest.rest.filter.LoginShiroFilter;
import net.sf.gazpachoquest.rest.filter.LogoutShiroFilter;
import net.sf.gazpachoquest.rest.resources.AuthenticationResource;
import net.sf.gazpachoquest.rest.resources.InvitationResource;
import net.sf.gazpachoquest.rest.resources.QuestionnaireDefinitionResource;
import net.sf.gazpachoquest.rest.resources.QuestionnaireResource;
import net.sf.gazpachoquest.rest.resources.ResearchResource;
import net.sf.gazpachoquest.rest.resources.UserResource;
import net.sf.gazpachoquest.rest.support.JacksonContextResolver;
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
import com.wordnik.swagger.jaxrs.listing.ApiDeclarationProvider;
import com.wordnik.swagger.jaxrs.listing.ApiListingResourceJSON;
import com.wordnik.swagger.jaxrs.listing.ResourceListingProvider;
@ApplicationPath("/api")
public class ApplicationConfig extends Application {
private String resourcePackage = "net.sf.gazpachoquest.rest";
// https://github.com/rvullriede/swagger-core/blob/master/samples/swagger-java-sample-app-cxf/src/main/java/com/wordnik/swagger/sample/util/ApplicationConfig.java
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(AuthenticationResource.class);
classes.add(InvitationResource.class);
classes.add(QuestionnaireDefinitionResource.class);
classes.add(QuestionnaireResource.class);
classes.add(UserResource.class);
classes.add(ResearchResource.class);
classes.add(ApiListingResourceJSON.class);
classes.add(ResourceListingProvider.class);
classes.add(ApiDeclarationProvider.class);
classes.add(JacksonContextResolver.class);
classes.add(JacksonJsonProvider.class);
classes.add(LoginShiroFilter.class);
classes.add(LogoutShiroFilter.class);
classes.add(ShiroExceptionHandler.class);
classes.add(AccountNotFoundExceptionHandler.class);
classes.add(DefaultExceptionHandler.class);
// Validation feature
classes.add(ValidationExceptionMapper.class);
classes.add(JAXRSBeanValidationInInterceptor.class);
classes.add(JAXRSBeanValidationOutInterceptor.class);
return classes;
}
@Override
public Set<Object> getSingletons() {
return Collections.emptySet();
}
public final String getResourcePackage() {
return resourcePackage;
}
public final void setResourcePackage(final String ressourcePackage) {
resourcePackage = ressourcePackage;
}
}