Example usage for org.springframework.http.converter HttpMessageConverter getSupportedMediaTypes

List of usage examples for org.springframework.http.converter HttpMessageConverter getSupportedMediaTypes

Introduction

In this page you can find the example usage for org.springframework.http.converter HttpMessageConverter getSupportedMediaTypes.

Prototype

List<MediaType> getSupportedMediaTypes();

Source Link

Document

Return the list of MediaType objects supported by this converter.

Usage

From source file:org.infoscoop.api.oauth2.provider.ISOAuth2ExceptionRenderer.java

@SuppressWarnings({ "unchecked", "rawtypes" })
private void writeWithMessageConverters(Object returnValue, HttpInputMessage inputMessage,
        HttpOutputMessage outputMessage, HttpStatus status, HttpServletRequest request)
        throws IOException, HttpMediaTypeNotAcceptableException {
    log.info(request.getRemoteAddr() + " " + returnValue + " " + status.value());

    Class<?> returnValueType = returnValue.getClass();
    List<MediaType> allSupportedMediaTypes = new ArrayList<MediaType>();

    String fileType = request.getPathInfo();
    MediaType acceptedMediaType = MediaType.APPLICATION_JSON;
    if (fileType.substring(fileType.lastIndexOf(".") + 1).equals("xml"))
        acceptedMediaType = MediaType.APPLICATION_XML;

    for (HttpMessageConverter messageConverter : messageConverters) {
        if (messageConverter.canWrite(returnValueType, acceptedMediaType)) {
            messageConverter.write(returnValue, acceptedMediaType, outputMessage);
            if (log.isDebugEnabled()) {
                MediaType contentType = outputMessage.getHeaders().getContentType();
                if (contentType == null) {
                    contentType = acceptedMediaType;
                }//from  w  w  w . j  a v a 2  s .c  o m
                log.debug("Written [" + returnValue + "] as \"" + contentType + "\" using [" + messageConverter
                        + "]");
            }
            return;
        }
    }

    for (HttpMessageConverter messageConverter : messageConverters) {
        allSupportedMediaTypes.addAll(messageConverter.getSupportedMediaTypes());
    }
    throw new HttpMediaTypeNotAcceptableException(allSupportedMediaTypes);
}

From source file:org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerAdapter.java

private List<MediaType> getProducibleMediaTypes(Endpoint<?> endpoint, Class<?> returnValueClass) {
    MediaType[] mediaTypes = endpoint.produces();
    if (mediaTypes != null && mediaTypes.length != 0) {
        return Arrays.asList(mediaTypes);
    }/*from   w ww . j  a  va2s  . c om*/

    if (this.allSupportedMediaTypes.isEmpty()) {
        return Collections.singletonList(MediaType.ALL);
    }

    List<MediaType> result = new ArrayList<MediaType>();
    for (HttpMessageConverter<?> converter : this.messageConverters) {
        if (converter.canWrite(returnValueClass, null)) {
            result.addAll(converter.getSupportedMediaTypes());
        }
    }
    return result;
}

From source file:org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerAdapter.java

public void setMessageConverters(List<HttpMessageConverter<?>> messageConverters) {
    this.messageConverters = messageConverters;
    Set<MediaType> allSupportedMediaTypes = new LinkedHashSet<MediaType>();
    for (HttpMessageConverter<?> messageConverter : messageConverters) {
        allSupportedMediaTypes.addAll(messageConverter.getSupportedMediaTypes());
    }/*from  www. j a v a 2 s  .  c  o  m*/
    this.allSupportedMediaTypes = new ArrayList<MediaType>(allSupportedMediaTypes);
    MediaType.sortBySpecificity(this.allSupportedMediaTypes);
}

From source file:org.springframework.boot.ops.endpoint.mvc.EndpointHandlerAdapter.java

private List<MediaType> getProducibleMediaTypes(Endpoint<?> endpoint, Class<?> returnValueClass) {
    MediaType[] mediaTypes = endpoint.getProduces();
    if (mediaTypes != null && mediaTypes.length != 0) {
        return Arrays.asList(mediaTypes);
    }/*w  w w.j a v  a  2 s.c om*/

    if (this.allSupportedMediaTypes.isEmpty()) {
        return Collections.singletonList(MediaType.ALL);
    }

    List<MediaType> result = new ArrayList<MediaType>();
    for (HttpMessageConverter<?> converter : this.messageConverters) {
        if (converter.canWrite(returnValueClass, null)) {
            result.addAll(converter.getSupportedMediaTypes());
        }
    }
    return result;
}

From source file:org.springframework.data.document.web.bind.annotation.support.HandlerMethodInvoker.java

private Object readWithMessageConverters(MethodParameter methodParam, HttpInputMessage inputMessage,
        Class paramType) throws Exception {

    MediaType contentType = inputMessage.getHeaders().getContentType();
    if (contentType == null) {
        StringBuilder builder = new StringBuilder(ClassUtils.getShortName(methodParam.getParameterType()));
        String paramName = methodParam.getParameterName();
        if (paramName != null) {
            builder.append(' ');
            builder.append(paramName);/*from ww w .j a va  2 s. c  o m*/
        }
        throw new HttpMediaTypeNotSupportedException(
                "Cannot extract parameter (" + builder.toString() + "): no Content-Type found");
    }

    List<MediaType> allSupportedMediaTypes = new ArrayList<MediaType>();
    if (this.messageConverters != null) {
        for (HttpMessageConverter<?> messageConverter : this.messageConverters) {
            allSupportedMediaTypes.addAll(messageConverter.getSupportedMediaTypes());
            if (messageConverter.canRead(paramType, contentType)) {
                if (logger.isDebugEnabled()) {
                    logger.debug("Reading [" + paramType.getName() + "] as \"" + contentType + "\" using ["
                            + messageConverter + "]");
                }
                return messageConverter.read(paramType, inputMessage);
            }
        }
    }
    throw new HttpMediaTypeNotSupportedException(contentType, allSupportedMediaTypes);
}

From source file:org.springframework.security.oauth2.provider.error.DefaultOAuth2ExceptionRenderer.java

@SuppressWarnings({ "unchecked", "rawtypes" })
private void writeWithMessageConverters(Object returnValue, HttpInputMessage inputMessage,
        HttpOutputMessage outputMessage) throws IOException, HttpMediaTypeNotAcceptableException {
    List<MediaType> acceptedMediaTypes = inputMessage.getHeaders().getAccept();
    if (acceptedMediaTypes.isEmpty()) {
        acceptedMediaTypes = Collections.singletonList(MediaType.ALL);
    }//from   w  ww . java 2 s. c om
    MediaType.sortByQualityValue(acceptedMediaTypes);
    Class<?> returnValueType = returnValue.getClass();
    List<MediaType> allSupportedMediaTypes = new ArrayList<MediaType>();
    for (MediaType acceptedMediaType : acceptedMediaTypes) {
        for (HttpMessageConverter messageConverter : messageConverters) {
            if (messageConverter.canWrite(returnValueType, acceptedMediaType)) {
                messageConverter.write(returnValue, acceptedMediaType, outputMessage);
                if (logger.isDebugEnabled()) {
                    MediaType contentType = outputMessage.getHeaders().getContentType();
                    if (contentType == null) {
                        contentType = acceptedMediaType;
                    }
                    logger.debug("Written [" + returnValue + "] as \"" + contentType + "\" using ["
                            + messageConverter + "]");
                }
                return;
            }
        }
    }
    for (HttpMessageConverter messageConverter : messageConverters) {
        allSupportedMediaTypes.addAll(messageConverter.getSupportedMediaTypes());
    }
    throw new HttpMediaTypeNotAcceptableException(allSupportedMediaTypes);
}

From source file:org.springframework.web.bind.annotation.support.HandlerMethodInvoker.java

@SuppressWarnings({ "unchecked", "rawtypes" })
private Object readWithMessageConverters(MethodParameter methodParam, HttpInputMessage inputMessage,
        Class<?> paramType) throws Exception {

    MediaType contentType = inputMessage.getHeaders().getContentType();
    if (contentType == null) {
        StringBuilder builder = new StringBuilder(ClassUtils.getShortName(methodParam.getParameterType()));
        String paramName = methodParam.getParameterName();
        if (paramName != null) {
            builder.append(' ');
            builder.append(paramName);/*from w  w  w .  j a  va 2s  .c om*/
        }
        throw new HttpMediaTypeNotSupportedException(
                "Cannot extract parameter (" + builder.toString() + "): no Content-Type found");
    }

    List<MediaType> allSupportedMediaTypes = new ArrayList<MediaType>();
    if (this.messageConverters != null) {
        for (HttpMessageConverter<?> messageConverter : this.messageConverters) {
            allSupportedMediaTypes.addAll(messageConverter.getSupportedMediaTypes());
            if (messageConverter.canRead(paramType, contentType)) {
                if (logger.isDebugEnabled()) {
                    logger.debug("Reading [" + paramType.getName() + "] as \"" + contentType + "\" using ["
                            + messageConverter + "]");
                }
                return messageConverter.read((Class) paramType, inputMessage);
            }
        }
    }
    throw new HttpMediaTypeNotSupportedException(contentType, allSupportedMediaTypes);
}

From source file:org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.java

/**
 * Return the media types supported by all provided message converters sorted
 * by specificity via {@link MediaType#sortBySpecificity(List)}.
 *///ww  w  . j  a  v a2 s .  c o  m
private static List<MediaType> getAllSupportedMediaTypes(List<HttpMessageConverter<?>> messageConverters) {
    Set<MediaType> allSupportedMediaTypes = new LinkedHashSet<>();
    for (HttpMessageConverter<?> messageConverter : messageConverters) {
        allSupportedMediaTypes.addAll(messageConverter.getSupportedMediaTypes());
    }
    List<MediaType> result = new ArrayList<>(allSupportedMediaTypes);
    MediaType.sortBySpecificity(result);
    return Collections.unmodifiableList(result);
}

From source file:org.springframework.web.servlet.mvc.method.annotation.support.AbstractMessageConverterMethodArgumentResolver.java

/**
 * Returns the media types supported by all provided message converters preserving their ordering and 
 * further sorting by specificity via {@link MediaType#sortBySpecificity(List)}. 
 *///  ww  w . java2  s.  c  o m
private static List<MediaType> getAllSupportedMediaTypes(List<HttpMessageConverter<?>> messageConverters) {
    Set<MediaType> allSupportedMediaTypes = new LinkedHashSet<MediaType>();
    for (HttpMessageConverter<?> messageConverter : messageConverters) {
        allSupportedMediaTypes.addAll(messageConverter.getSupportedMediaTypes());
    }
    List<MediaType> result = new ArrayList<MediaType>(allSupportedMediaTypes);
    MediaType.sortBySpecificity(result);
    return Collections.unmodifiableList(result);
}

From source file:org.springframework.web.servlet.mvc.method.annotation.support.AbstractMessageConverterMethodProcessor.java

@SuppressWarnings("unchecked")
protected <T> Object readWithMessageConverters(NativeWebRequest webRequest, MethodParameter methodParam,
        Class<T> paramType) throws IOException, HttpMediaTypeNotSupportedException {

    HttpInputMessage inputMessage = createInputMessage(webRequest);

    MediaType contentType = inputMessage.getHeaders().getContentType();
    if (contentType == null) {
        StringBuilder builder = new StringBuilder(ClassUtils.getShortName(methodParam.getParameterType()));
        String paramName = methodParam.getParameterName();
        if (paramName != null) {
            builder.append(' ');
            builder.append(paramName);/*from   ww  w.  j  a va2 s  .com*/
        }
        throw new HttpMediaTypeNotSupportedException("Cannot read parameter (" + builder.toString()
                + ") using HttpMessageConverters: no Content-Type found in HTTP request");
    }

    List<MediaType> allSupportedMediaTypes = new ArrayList<MediaType>();
    if (this.messageConverters != null) {
        for (HttpMessageConverter<?> messageConverter : this.messageConverters) {
            allSupportedMediaTypes.addAll(messageConverter.getSupportedMediaTypes());
            if (messageConverter.canRead(paramType, contentType)) {
                if (logger.isDebugEnabled()) {
                    logger.debug("Reading [" + paramType.getName() + "] as \"" + contentType + "\" using ["
                            + messageConverter + "]");
                }
                return ((HttpMessageConverter<T>) messageConverter).read(paramType, inputMessage);
            }
        }
    }

    throw new HttpMediaTypeNotSupportedException(contentType, allSupportedMediaTypes);
}