/* Copyright 2011-2014 Red Hat, Inc This file is part of PressGang CCMS. PressGang CCMS is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. PressGang CCMS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with PressGang CCMS. If not, see <http://www.gnu.org/licenses/>. */ package org.jboss.pressgang.ccms.server.rest; import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; import java.util.HashSet; import java.util.Set; import net.java.dev.webdav.jaxrs.xml.WebDavContextResolver; import org.jboss.pressgang.ccms.server.interceptor.ReadOnlyInterceptor; import org.jboss.pressgang.ccms.server.rest.v1.RESTv1; import org.jboss.pressgang.ccms.server.rest.v1.interceptor.RESTv1CreateResponseInterceptor; import org.jboss.pressgang.ccms.server.rest.v1.interceptor.RESTv1VersionHeaderInterceptor; import org.jboss.pressgang.ccms.server.rest.v1.interceptor.RESTv1VersionInterceptor; import org.jboss.pressgang.ccms.server.rest.v1.mapper.BadRequestExceptionMapper; import org.jboss.pressgang.ccms.server.rest.v1.mapper.IllegalArgumentExceptionMapper; import org.jboss.pressgang.ccms.server.rest.v1.mapper.IllegalStateExceptionMapper; import org.jboss.pressgang.ccms.server.rest.v1.mapper.InternalServerErrorExceptionMapper; import org.jboss.pressgang.ccms.server.rest.v1.mapper.JAXBMarshalExceptionMapper; import org.jboss.pressgang.ccms.server.rest.v1.mapper.JAXBUnmarshalExceptionMapper; import org.jboss.pressgang.ccms.server.rest.v1.mapper.MethodNotAllowedExceptionMapper; import org.jboss.pressgang.ccms.server.rest.v1.mapper.NotAcceptableExceptionMapper; import org.jboss.pressgang.ccms.server.rest.v1.mapper.NotFoundExceptionMapper; import org.jboss.pressgang.ccms.server.rest.v1.mapper.ReaderExceptionMapper; import org.jboss.pressgang.ccms.server.rest.v1.mapper.UnauthorizedExceptionMapper; import org.jboss.pressgang.ccms.server.rest.v1.mapper.WriterExceptionMapper; import org.jboss.pressgang.ccms.server.webdav.jaxrs.WebDavResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * A class extending {@link javax.ws.rs.core.Application} and annotated with @ApplicationPath is the Java EE 6 * "no XML" approach to activating JAX-RS. * <p/> * <p> * Resources are served relative to the servlet path specified in the {@link javax.ws.rs.ApplicationPath} * annotation. * </p> */ @ApplicationPath("/") public class JaxRsActivator extends Application { private static final Logger LOGGER = LoggerFactory.getLogger(JaxRsActivator.class); private final HashSet<Class<?>> classes = new HashSet<Class<?>>(); public JaxRsActivator() { LOGGER.debug("ENTER JaxRsActivator()"); // Endpoints classes.add(REST.class); classes.add(RESTv1.class); classes.add(WebDavResource.class); // Providers classes.add(CustomJacksonJsonProvider.class); classes.add(WebDavContextResolver.class); // Interceptors classes.add(RESTv1VersionHeaderInterceptor.class); classes.add(RESTv1VersionInterceptor.class); classes.add(RESTv1CreateResponseInterceptor.class); classes.add(ReadOnlyInterceptor.class); // Exception Mappers classes.add(BadRequestExceptionMapper.class); classes.add(InternalServerErrorExceptionMapper.class); classes.add(JAXBMarshalExceptionMapper.class); classes.add(JAXBUnmarshalExceptionMapper.class); classes.add(MethodNotAllowedExceptionMapper.class); classes.add(NotAcceptableExceptionMapper.class); classes.add(NotFoundExceptionMapper.class); classes.add(ReaderExceptionMapper.class); classes.add(UnauthorizedExceptionMapper.class); classes.add(WriterExceptionMapper.class); classes.add(IllegalArgumentExceptionMapper.class); classes.add(IllegalStateExceptionMapper.class); } @Override public Set<Class<?>> getClasses() { return classes; } }