// Path: src/main/java/com/strandls/alchemy/rest/client/exception/ThrowableToResponseMapper.java
// @Slf4j
// @Singleton
// public class ThrowableToResponseMapper implements Function<Throwable, Response> {
//     /**
//      * The object mapper to be used.
//      */
//     private final ObjectMapper exceptionObjectMapper;
// 
//     /**
//      * @param exceptionObjectMapper
//      */
//     @Inject
//     public ThrowableToResponseMapper(@ThrowableObjectMapper final ObjectMapper exceptionObjectMapper) {
//         this.exceptionObjectMapper = exceptionObjectMapper;
//     }
// 
//     /*
//      * (non-Javadoc)
//      * @see com.google.common.base.Function#apply(java.lang.Object)
//      */
//     @Override
//     public Response apply(final Throwable input) {
// 
//         final ExceptionPayload payLoad = new ExceptionPayload(input);
//         try {
//             final int statusCode =
//                     input instanceof WebApplicationException ? ((WebApplicationException) input)
//                             .getResponse().getStatus() : Status.INTERNAL_SERVER_ERROR
//                             .getStatusCode();
// 
//             return Response.status(Status.fromStatusCode(statusCode))
//                                     .entity(exceptionObjectMapper.writeValueAsString(payLoad)).build();
//         } catch (final JsonProcessingException e) {
//             log.warn("Error deserializing exception.", e);
//             return Response.status(Status.INTERNAL_SERVER_ERROR).entity(input.getMessage()).build();
//         }
//     }
// }


import javax.inject.Inject;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
import lombok.RequiredArgsConstructor;
import com.strandls.alchemy.rest.client.exception.ThrowableToResponseMapper;
/*
 * Copyright (C) 2015 Strand Life Sciences.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.strandls.alchemy.rest.client;




/**
 * Mapper for testing exceptions.
 *
 * @author Ashish Shinde
 *
 */
@Provider
@RequiredArgsConstructor(onConstructor = @_(@Inject))
public class TestExceptionMapper implements javax.ws.rs.ext.ExceptionMapper<Exception> {
    /**
     * The response mapper.
     */
// Path: src/main/java/com/strandls/alchemy/rest/client/exception/ThrowableToResponseMapper.java
// @Slf4j
// @Singleton
// public class ThrowableToResponseMapper implements Function<Throwable, Response> {
//     /**
//      * The object mapper to be used.
//      */
//     private final ObjectMapper exceptionObjectMapper;
// 
//     /**
//      * @param exceptionObjectMapper
//      */
//     @Inject
//     public ThrowableToResponseMapper(@ThrowableObjectMapper final ObjectMapper exceptionObjectMapper) {
//         this.exceptionObjectMapper = exceptionObjectMapper;
//     }
// 
//     /*
//      * (non-Javadoc)
//      * @see com.google.common.base.Function#apply(java.lang.Object)
//      */
//     @Override
//     public Response apply(final Throwable input) {
// 
//         final ExceptionPayload payLoad = new ExceptionPayload(input);
//         try {
//             final int statusCode =
//                     input instanceof WebApplicationException ? ((WebApplicationException) input)
//                             .getResponse().getStatus() : Status.INTERNAL_SERVER_ERROR
//                             .getStatusCode();
// 
//             return Response.status(Status.fromStatusCode(statusCode))
//                                     .entity(exceptionObjectMapper.writeValueAsString(payLoad)).build();
//         } catch (final JsonProcessingException e) {
//             log.warn("Error deserializing exception.", e);
//             return Response.status(Status.INTERNAL_SERVER_ERROR).entity(input.getMessage()).build();
//         }
//     }
// }


// Path: src/test/java/com/strandls/alchemy/rest/client/TestExceptionMapper.java
import javax.inject.Inject;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
import lombok.RequiredArgsConstructor;
import com.strandls.alchemy.rest.client.exception.ThrowableToResponseMapper;

/*
 * Copyright (C) 2015 Strand Life Sciences.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.strandls.alchemy.rest.client;




/**
 * Mapper for testing exceptions.
 *
 * @author Ashish Shinde
 *
 */
@Provider
@RequiredArgsConstructor(onConstructor = @_(@Inject))
public class TestExceptionMapper implements javax.ws.rs.ext.ExceptionMapper<Exception> {
    /**
     * The response mapper.
     */
    private final ThrowableToResponseMapper responseMapper;