List of usage examples for org.springframework.http MediaType isCompatibleWith
public boolean isCompatibleWith(@Nullable MediaType other)
From source file:example.xmlbeam.XmlBeamHttpMessageConverter.java
@Override public boolean canRead(Class<?> clazz, MediaType mediaType) { return clazz.isInterface() && mediaType.isCompatibleWith(MediaType.APPLICATION_XML); }
From source file:biz.c24.io.spring.core.DataFormat.java
/** * Returns whether the {@link DataFormat} supports the given {@link MediaType}. * // www. j a va 2s .c o m * @param mediaType * @return */ public boolean supports(MediaType mediaType) { for (MediaType type : mediaTypes) { if (type.isCompatibleWith(mediaType)) { return true; } } return false; }
From source file:carldav.jackrabbit.webdav.io.DavInputContext.java
/** * Parses the input stream into a calendar object. * // ww w . j av a2 s. c o m * @param allowCalendarWithMethod * don't break on Calendars with METHOD property * @return Calendar parsed * @throws CosmoDavException * - if something is wrong this exception is thrown. */ public Calendar getCalendar(boolean allowCalendarWithMethod) throws CosmoDavException { if (calendar != null) { return calendar; } if (!hasStream()) { return null; } if (getContentType() == null) { throw new BadRequestException("No media type specified"); } final MediaType mediaType = MediaType.parseMediaType(getContentType()); if (!mediaType.isCompatibleWith(TEXT_CALENDAR) && !mediaType.isCompatibleWith(TEXT_VCARD)) { throw new UnsupportedCalendarDataException(mediaType.toString()); } try { Calendar c = CalendarUtils.parseCalendar(getInputStream()); c.validate(true); if (CalendarUtils.hasMultipleComponentTypes(c)) { throw new InvalidCalendarResourceException( "Calendar object contains more than one type of component"); } if (!allowCalendarWithMethod && c.getProperties().getProperty(Property.METHOD) != null) { throw new InvalidCalendarResourceException("Calendar object contains METHOD property"); } calendar = c; } catch (IOException e) { throw new CosmoDavException(e); } catch (ParserException e) { throw new InvalidCalendarDataException("Failed to parse calendar object: " + e.getMessage()); } catch (ValidationException e) { throw new InvalidCalendarDataException("Invalid calendar object: " + e.getMessage()); } return calendar; }
From source file:net.sf.jsog.spring.StringJsogHttpMessageConverter.java
@Override public boolean canRead(Class<?> clazz, MediaType mediaType) { if (!JSOG.class.isAssignableFrom(clazz)) { return false; }/*from w w w . ja v a 2s.c o m*/ for (MediaType type : supportedMediaTypes) { if (type == null || !type.isCompatibleWith(mediaType)) { return false; } } return true; }
From source file:org.mitre.openid.connect.web.UserInfoEndpoint.java
/** * Get information about the user as specified in the accessToken included in this request *//*from w ww . j av a 2s .c o m*/ @PreAuthorize("hasRole('ROLE_USER') and #oauth2.hasScope('" + SystemScopeService.OPENID_SCOPE + "')") @RequestMapping(method = { RequestMethod.GET, RequestMethod.POST }, produces = { MediaType.APPLICATION_JSON_VALUE, UserInfoJWTView.JOSE_MEDIA_TYPE_VALUE }) public String getInfo(@RequestParam(value = "claims", required = false) String claimsRequestJsonString, @RequestHeader(value = HttpHeaders.ACCEPT, required = false) String acceptHeader, OAuth2Authentication auth, Model model) { if (auth == null) { logger.error("getInfo failed; no principal. Requester is not authorized."); model.addAttribute(HttpCodeView.CODE, HttpStatus.FORBIDDEN); return HttpCodeView.VIEWNAME; } String username = auth.getName(); UserInfo userInfo = userInfoService.getByUsernameAndClientId(username, auth.getOAuth2Request().getClientId()); if (userInfo == null) { logger.error("getInfo failed; user not found: " + username); model.addAttribute(HttpCodeView.CODE, HttpStatus.NOT_FOUND); return HttpCodeView.VIEWNAME; } model.addAttribute(UserInfoView.SCOPE, auth.getOAuth2Request().getScope()); model.addAttribute(UserInfoView.AUTHORIZED_CLAIMS, auth.getOAuth2Request().getExtensions().get("claims")); if (!Strings.isNullOrEmpty(claimsRequestJsonString)) { model.addAttribute(UserInfoView.REQUESTED_CLAIMS, claimsRequestJsonString); } model.addAttribute(UserInfoView.USER_INFO, userInfo); // content negotiation // start off by seeing if the client has registered for a signed/encrypted JWT from here ClientDetailsEntity client = clientService.loadClientByClientId(auth.getOAuth2Request().getClientId()); model.addAttribute(UserInfoJWTView.CLIENT, client); List<MediaType> mediaTypes = MediaType.parseMediaTypes(acceptHeader); MediaType.sortBySpecificityAndQuality(mediaTypes); if (client.getUserInfoSignedResponseAlg() != null || client.getUserInfoEncryptedResponseAlg() != null || client.getUserInfoEncryptedResponseEnc() != null) { // client has a preference, see if they ask for plain JSON specifically on this request for (MediaType m : mediaTypes) { if (!m.isWildcardType() && m.isCompatibleWith(UserInfoJWTView.JOSE_MEDIA_TYPE)) { return UserInfoJWTView.VIEWNAME; } else if (!m.isWildcardType() && m.isCompatibleWith(MediaType.APPLICATION_JSON)) { return UserInfoView.VIEWNAME; } } // otherwise return JWT return UserInfoJWTView.VIEWNAME; } else { // client has no preference, see if they asked for JWT specifically on this request for (MediaType m : mediaTypes) { if (!m.isWildcardType() && m.isCompatibleWith(MediaType.APPLICATION_JSON)) { return UserInfoView.VIEWNAME; } else if (!m.isWildcardType() && m.isCompatibleWith(UserInfoJWTView.JOSE_MEDIA_TYPE)) { return UserInfoJWTView.VIEWNAME; } } // otherwise return JSON return UserInfoView.VIEWNAME; } }
From source file:org.craftercms.commons.rest.HttpMessageConvertingResponseWriter.java
public <T> void writeWithMessageConverters(T returnValue, HttpServletRequest request, HttpServletResponse response) throws IOException, HttpMediaTypeNotAcceptableException { Class<?> returnValueClass = returnValue.getClass(); List<MediaType> requestedMediaTypes = getAcceptableMediaTypes(request); List<MediaType> producibleMediaTypes = getProducibleMediaTypes(returnValueClass); Set<MediaType> compatibleMediaTypes = new LinkedHashSet<MediaType>(); for (MediaType r : requestedMediaTypes) { for (MediaType p : producibleMediaTypes) { if (r.isCompatibleWith(p)) { compatibleMediaTypes.add(getMostSpecificMediaType(r, p)); }/*from w w w.j av a 2s.com*/ } } if (compatibleMediaTypes.isEmpty()) { throw new HttpMediaTypeNotAcceptableException(producibleMediaTypes); } List<MediaType> mediaTypes = new ArrayList<MediaType>(compatibleMediaTypes); MediaType.sortBySpecificityAndQuality(mediaTypes); MediaType selectedMediaType = null; for (MediaType mediaType : mediaTypes) { if (mediaType.isConcrete()) { selectedMediaType = mediaType; break; } else if (mediaType.equals(MediaType.ALL) || mediaType.equals(MEDIA_TYPE_APPLICATION)) { selectedMediaType = MediaType.APPLICATION_OCTET_STREAM; break; } } if (selectedMediaType != null) { selectedMediaType = selectedMediaType.removeQualityValue(); for (HttpMessageConverter<?> messageConverter : messageConverters) { if (messageConverter.canWrite(returnValueClass, selectedMediaType)) { ((HttpMessageConverter<T>) messageConverter).write(returnValue, selectedMediaType, new ServletServerHttpResponse(response)); logger.debug(LOG_KEY_WRITTEN_WITH_MESSAGE_CONVERTER, returnValue, selectedMediaType, messageConverter); return; } } } throw new HttpMediaTypeNotAcceptableException(allSupportedMediaTypes); }
From source file:com.asual.summer.core.spring.ViewResolverConfiguration.java
public AbstractView handleViews(Collection<AbstractView> views, NativeWebRequest request) { List<MediaType> requestedMediaTypes; try {//from w w w.j a va 2 s .c o m requestedMediaTypes = contentNegotiationManager.resolveMediaTypes(request); for (MediaType requestedMediaType : requestedMediaTypes) { for (AbstractView view : views) { MediaType producableMediaType = MediaType.parseMediaType(view.getContentType()); if (requestedMediaType.isCompatibleWith(producableMediaType) && !requestedMediaType.isWildcardType() && requestedMediaType.getQualityValue() > 0.9) { return view; } } } } catch (HttpMediaTypeNotAcceptableException e) { logger.debug(e.getMessage(), e); } return null; }
From source file:com.onedrive.api.internal.MultipartRelatedHttpMessageConverter.java
public boolean canWrite(Class<?> clazz, MediaType mediaType) { if (!MultiValueMap.class.isAssignableFrom(clazz)) { return false; }/* w w w. j a va 2s . c o m*/ if (mediaType == null || MediaType.ALL.equals(mediaType)) { return true; } for (MediaType supportedMediaType : getSupportedMediaTypes()) { if (supportedMediaType.isCompatibleWith(mediaType)) { return true; } } return false; }
From source file:edu.mayo.trilliumbridge.webapp.TransformerController.java
protected void doTransform(HttpServletRequest request, HttpServletResponse response, String acceptHeader, String formatOverride, Transformer transformer) throws IOException { // default to XML if no Accept Header (it should at least be */*, but just in case). if (StringUtils.isBlank(acceptHeader)) { acceptHeader = MediaType.APPLICATION_ATOM_XML_VALUE; }/*from www . j a v a 2s . c om*/ TrilliumBridgeTransformer.Format responseFormat = null; if (StringUtils.isNotBlank(formatOverride)) { responseFormat = TrilliumBridgeTransformer.Format.valueOf(formatOverride); } else { String[] accepts = StringUtils.split(acceptHeader, ','); for (String accept : accepts) { MediaType askedForType = MediaType.parseMediaType(accept); if (askedForType.isCompatibleWith(MediaType.TEXT_XML) || askedForType.isCompatibleWith(MediaType.APPLICATION_XML)) { responseFormat = TrilliumBridgeTransformer.Format.XML; } else if (askedForType.isCompatibleWith(MediaType.TEXT_HTML) || askedForType.isCompatibleWith(MediaType.APPLICATION_XHTML_XML)) { responseFormat = TrilliumBridgeTransformer.Format.HTML; } else if (askedForType.getType().equals("application") && askedForType.getSubtype().equals("pdf")) { responseFormat = TrilliumBridgeTransformer.Format.PDF; } if (responseFormat != null) { break; } } } if (responseFormat == null) { throw new UserInputException("Cannot return type: " + acceptHeader, HttpStatus.NOT_ACCEPTABLE); } String contentType; switch (responseFormat) { case XML: contentType = MediaType.APPLICATION_XML_VALUE; break; case HTML: contentType = MediaType.TEXT_HTML_VALUE.toString(); break; case PDF: contentType = "application/pdf"; break; default: throw new IllegalStateException("Illegal Response Format"); } InputStream inputStream; if (request instanceof MultipartHttpServletRequest) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile multipartFile = multipartRequest.getFile(INPUT_FILE_NAME); inputStream = multipartFile.getInputStream(); } else { inputStream = request.getInputStream(); } inputStream = this.checkForUtf8BOMAndDiscardIfAny(this.checkStreamIsNotEmpty(inputStream)); // create a buffer so we don't use the servlet's output stream unless // we get a successful transform, because if we do use it, // we can't use the error view anymore. ByteArrayOutputStream baos = new ByteArrayOutputStream(); transformer.transform(inputStream, baos, responseFormat); try { response.setContentType(contentType); response.getOutputStream().write(baos.toByteArray()); } finally { IOUtils.closeQuietly(baos); } }
From source file:edu.mayo.qdm.webapp.rest.controller.TranslatorController.java
/** * Checks if is html request./*from w w w .j a v a 2s . co m*/ * * @param request the request * @return true, if is html request */ protected boolean isHtmlRequest(HttpServletRequest request) { String acceptHeader = request.getHeader("Accept"); List<MediaType> types; if (StringUtils.isBlank(acceptHeader)) { types = Arrays.asList(DEFAULT_ACCEPT_HEADER); } else { types = MediaType.parseMediaTypes(acceptHeader); } MediaType.sortByQualityValue(types); MediaType type = types.get(0); return type.isCompatibleWith(MediaType.TEXT_HTML); }