Package org.platformlayer.xaas.web.jaxrs

Source Code of org.platformlayer.xaas.web.jaxrs.OpsExceptionMapper

package org.platformlayer.xaas.web.jaxrs;

import javax.inject.Singleton;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;

import org.slf4j.*;
import org.platformlayer.CustomerFacingException;
import org.platformlayer.core.model.ErrorDetail;
import org.platformlayer.core.model.ErrorResponse;
import org.platformlayer.ops.OpsException;

import com.sun.jersey.api.core.HttpContext;

@Singleton
@Provider
public class OpsExceptionMapper implements ExceptionMapper<OpsException> {
  private static final Logger log = LoggerFactory.getLogger(OpsExceptionMapper.class);

  @Context
  HttpContext httpContext;

  @Override
  public Response toResponse(OpsException e) {
    log.warn("Returning error to client", e);

    ErrorResponse error = new ErrorResponse();
    error.message = e.getMessage();

    if (e instanceof CustomerFacingException) {
      CustomerFacingException cfe = (CustomerFacingException) e;
      error.code = cfe.getCode();

      for (CustomerFacingException.Info info : cfe.getInfo()) {
        ErrorDetail errorInfo = new ErrorDetail();
        errorInfo.code = info.getCode();
        errorInfo.field = info.getField();
        errorInfo.message = info.getMessage();

        error.details.add(errorInfo);
      }
    }

    if (error.code == null) {
      error.code = e.getClass().getSimpleName();
    }

    ResponseBuilder response = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
    response.entity(error);
    return response.build();

    // VariantListBuilder variantListBuilder = VariantListBuilder.newInstance();
    // variantListBuilder.mediaTypes(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_XML_TYPE);
    // List<Variant> variants = variantListBuilder.build();
    //
    // Variant variant = httpContext.getRequest().selectVariant(variants);
    //
    // ResponseBuilder response = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
    //
    // if (variant.getMediaType().equals(MediaType.APPLICATION_JSON_TYPE)) {
    // response.entity(error);
    //
    // .entity(exception.getMessage()).type("text/plain").build();
    // }
    // else {
    // .entity(exception.getMessage()).type("text/plain").build();
    // }
    //
    // return response.build();
  }
}
TOP

Related Classes of org.platformlayer.xaas.web.jaxrs.OpsExceptionMapper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.