List of usage examples for org.springframework.http MediaType parseMediaTypes
public static List<MediaType> parseMediaTypes(@Nullable List<String> mediaTypes)
From source file:biz.c24.io.spring.config.FormatBeanDefinitionParser.java
public BeanDefinition parse(Element element, ParserContext parserContext) { List<MediaType> mediaTypes = MediaType.parseMediaTypes(element.getAttribute("content-type")); String format = element.getAttribute("type"); BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(DataFormat.class); builder.addConstructorArgValue(format.toUpperCase()); builder.addConstructorArgValue(mediaTypes); return BeanDefinitionUtils.getSourcedBeanDefinition(builder, parserContext.extractSource(element)); }
From source file:org.cloudfoundry.identity.uaa.error.JsonAwareAccessDeniedHandler.java
@Override public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException authException) throws IOException, ServletException { String accept = request.getHeader("Accept"); boolean json = false; if (StringUtils.hasText(accept)) { for (MediaType mediaType : MediaType.parseMediaTypes(accept)) { if (mediaType.includes(MediaType.APPLICATION_JSON)) { json = true;/* w w w . j a va 2s. c om*/ break; } } } if (json) { response.setStatus(HttpServletResponse.SC_FORBIDDEN); response.setContentType(MediaType.APPLICATION_JSON_VALUE); response.getWriter().append(String.format("{\"error\":\"%s\"}", authException.getMessage())); } else { response.sendError(HttpServletResponse.SC_FORBIDDEN, authException.getMessage()); } }
From source file:org.cloudfoundry.identity.uaa.error.JsonAwareAuthenticationEntryPoint.java
@Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { response.addHeader("WWW-Authenticate", String.format("%s realm=\"%s\"", typeName, realmName)); String accept = request.getHeader("Accept"); boolean json = false; if (StringUtils.hasText(accept)) { for (MediaType mediaType : MediaType.parseMediaTypes(accept)) { if (mediaType.includes(MediaType.APPLICATION_JSON)) { json = true;/* ww w. j a v a 2 s. c o m*/ break; } } } if (json) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); response.setContentType(MediaType.APPLICATION_JSON_VALUE); response.getWriter().append(String.format("{\"error\":\"%s\"}", authException.getMessage())); } else { response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException.getMessage()); } }
From source file:org.cloudfoundry.identity.uaa.web.ForwardAwareInternalResourceViewResolver.java
private MediaType getMediaTypes(HttpServletRequest request) { String acceptHeader = request.getHeader(ACCEPT_HEADER); if (StringUtils.hasText(acceptHeader)) { try {//from ww w .j a va 2 s .co m List<MediaType> acceptableMediaTypes = MediaType.parseMediaTypes(acceptHeader); return acceptableMediaTypes.isEmpty() ? null : acceptableMediaTypes.get(0); } catch (IllegalArgumentException ex) { if (logger.isDebugEnabled()) { logger.debug("Could not parse accept header [" + acceptHeader + "]: " + ex.getMessage()); } return null; } } return null; }
From source file:ar.com.zauber.commons.web.filter.webkit.WebKitContentTypeFilter.java
/** * @param request//from ww w . j a va 2 s. c o m * @return todos los tipos de media types que acepta este request. */ private List<MediaType> getMediaTypes(final HttpServletRequest request) { Validate.notNull(request); String acceptHeader = request.getHeader(ACCEPT_HEADER); List<MediaType> mediaTypes = null; if (StringUtils.isNotBlank(acceptHeader)) { mediaTypes = MediaType.parseMediaTypes(acceptHeader); } return mediaTypes; }
From source file:morph.plugin.views.annotation.ServletAnnotationMappingUtils.java
/** * Check whether the given request matches the specified header conditions. * @param headers the header conditions, following * {@link org.springframework.web.bind.annotation.RequestMapping#headers() RequestMapping.headers()} * @param request the current HTTP request to check *//*from ww w. ja va2 s . co m*/ public static boolean checkHeaders(String[] headers, HttpServletRequest request) { if (!ObjectUtils.isEmpty(headers)) { for (String header : headers) { int separator = header.indexOf('='); if (separator == -1) { if (header.startsWith("!")) { if (request.getHeader(header.substring(1)) != null) { return false; } } else if (request.getHeader(header) == null) { return false; } } else { boolean negated = separator > 0 && header.charAt(separator - 1) == '!'; String key = !negated ? header.substring(0, separator) : header.substring(0, separator - 1); String value = header.substring(separator + 1); if (isMediaTypeHeader(key)) { List<MediaType> requestMediaTypes = MediaType.parseMediaTypes(request.getHeader(key)); List<MediaType> valueMediaTypes = MediaType.parseMediaTypes(value); boolean found = false; for (Iterator<MediaType> valIter = valueMediaTypes.iterator(); valIter.hasNext() && !found;) { MediaType valueMediaType = valIter.next(); for (Iterator<MediaType> reqIter = requestMediaTypes.iterator(); reqIter.hasNext() && !found;) { MediaType requestMediaType = reqIter.next(); if (valueMediaType.includes(requestMediaType)) { found = true; } } } if (!found) { return negated; } } else if (!value.equals(request.getHeader(key))) { return negated; } } } } return true; }
From source file:com.icl.integrator.util.patch.ServletAnnotationMappingUtils.java
/** * Check whether the given request matches the specified header conditions. * @param headers the header conditions, following * {@link org.springframework.web.bind.annotation.RequestMapping#headers() RequestMapping.headers()} * @param request the current HTTP request to check *///from w w w . j a v a2 s. co m public static boolean checkHeaders(String[] headers, HttpServletRequest request) { if (!ObjectUtils.isEmpty(headers)) { for (String header : headers) { int separator = header.indexOf('='); if (separator == -1) { if (header.startsWith("!")) { if (request.getHeader(header.substring(1)) != null) { return false; } } else if (request.getHeader(header) == null) { return false; } } else { boolean negated = (separator > 0 && header.charAt(separator - 1) == '!'); String key = !negated ? header.substring(0, separator) : header.substring(0, separator - 1); String value = header.substring(separator + 1); if (isMediaTypeHeader(key)) { List<MediaType> requestMediaTypes = MediaType.parseMediaTypes(request.getHeader(key)); List<MediaType> valueMediaTypes = MediaType.parseMediaTypes(value); boolean found = false; for (Iterator<MediaType> valIter = valueMediaTypes.iterator(); valIter.hasNext() && !found;) { MediaType valueMediaType = valIter.next(); for (Iterator<MediaType> reqIter = requestMediaTypes.iterator(); reqIter.hasNext() && !found;) { MediaType requestMediaType = reqIter.next(); if (valueMediaType.includes(requestMediaType)) { found = true; } } } if (negated) { found = !found; } if (!found) { return false; } } else { boolean match = value.equals(request.getHeader(key)); if (negated) { match = !match; } if (!match) { 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 *//* w w w. j av a 2 s . co 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.cloudfoundry.identity.uaa.security.web.UaaRequestMatcher.java
private boolean matchesAcceptHeader(String requestValue, List<String> expectedValues) { // Accept header is not required to be checked! if (requestValue == null) { return true; }//from ww w .j a va2 s. c om List<MediaType> requestValues = MediaType.parseMediaTypes(requestValue); for (String expectedValue : expectedValues) { if (MediaType.parseMediaType(expectedValue).includes(requestValues.get(0))) { return true; } } return false; }
From source file:com.seajas.search.attender.wsdl.Profile.java
/** * {@inheritDoc}//from w ww.j av a 2 s . co m */ @Override public List<ProfileError> createProfile(final String email, final String emailLanguage, final String timeZone, final String notificationType, final Integer day, final Integer hour, final Integer minute, final Integer interval, final Integer maximum, final String query, final String searchParameterFormat, final String searchParameterLanguage, final String searchParameterAuthor, final String searchParameterType, final String searchParameterGeo, final List<Integer> taxonomyIdentifiers) { List<ProfileError> errors = new ArrayList<ProfileError>(); // Validate the given input if (StringUtils.isEmpty(query)) errors.add(new ProfileError("query", "profiles.error.query.empty")); String unescapedQuery = StringEscapeUtils.unescapeXml(StringEscapeUtils.unescapeXml(query)); // Validate the subscriber(s) String[] emails = email.trim().split(","); for (String subscriberEmail : emails) if (StringUtils.isEmpty(subscriberEmail.trim()) || !EmailValidator.getInstance().isValid(subscriberEmail.trim())) errors.add(new ProfileError("email", "profiles.error.subscriber.emails.invalid")); if (StringUtils.isEmpty(emailLanguage)) errors.add(new ProfileError("emailLanguage", "profiles.error.subscriber.email.languages.invalid")); else if (!attenderService.getAvailableSearchLanguages().contains(emailLanguage)) errors.add(new ProfileError("emailLanguage", "profiles.error.subscriber.email.languages.invalid")); if (StringUtils.isEmpty(timeZone)) errors.add(new ProfileError("timeZone", "profiles.error.subscriber.timezones.invalid")); else if (!Arrays.asList(TimeZone.getAvailableIDs()).contains(timeZone) && !timeZone.matches("^GMT[+\\-][0-9]{2}:[0-9]{2}$")) errors.add(new ProfileError("timeZone", "profiles.error.subscriber.timezones.invalid")); if (StringUtils.isEmpty(notificationType)) errors.add(new ProfileError("notificationType", "profiles.error.subscriber.types.invalid")); else try { NotificationType.valueOf(notificationType); } catch (IllegalArgumentException e) { errors.add(new ProfileError("notificationType", "profiles.error.subscriber.types.invalid")); } if (day == null) errors.add(new ProfileError("day", "profiles.error.subscriber.days.invalid")); else if (day < 0 || day > 6) errors.add(new ProfileError("day", "profiles.error.subscriber.days.invalid")); if (hour == null) errors.add(new ProfileError("subscriberHours", "profiles.error.subscriber.hours.invalid")); else if (hour < 0 || hour > 23) errors.add(new ProfileError("subscriberHours", "profiles.error.subscriber.hours.invalid")); if (minute == null) errors.add(new ProfileError("minute", "profiles.error.subscriber.minutes.invalid")); else if (minute < 0 || minute > 59) errors.add(new ProfileError("minute", "profiles.error.subscriber.minutes.invalid")); // Validate the search parameters if (!StringUtils.isEmpty(searchParameterFormat)) try { MediaType.parseMediaTypes(searchParameterFormat.replaceAll(" ", ",")); } catch (IllegalArgumentException e) { errors.add(new ProfileError("searchParameterFormat", "profiles.error.search.parameter.format.invalid")); } else if (!StringUtils.isEmpty(searchParameterLanguage)) { if (!attenderService.getAvailableSearchLanguages().contains(searchParameterLanguage)) errors.add(new ProfileError("searchParameterLanguage", "profiles.error.search.parameter.language.invalid")); } // Validate the taxonomy identifiers for (Integer taxonomyIdentifier : taxonomyIdentifiers) if (taxonomyIdentifier == null) errors.add(new ProfileError("taxonomyIdentifiers", "profiles.error.taxonomy.identifiers.empty")); // Add it up if there aren't any errors if (errors.size() == 0) { List<ProfileSubscriber> subscribers = new ArrayList<ProfileSubscriber>(emails.length); for (String subscriberEmail : emails) subscribers.add(new ProfileSubscriber(subscriberEmail.trim(), emailLanguage, false, null, timeZone, NotificationType.valueOf(notificationType), day, hour, minute, interval, maximum, null)); Map<String, String> searchParameters = new HashMap<String, String>(); if (!StringUtils.isEmpty(searchParameterFormat)) searchParameters.put("dcterms_format", searchParameterFormat); if (!StringUtils.isEmpty(searchParameterLanguage)) searchParameters.put("dcterms_language", searchParameterLanguage); if (!StringUtils.isEmpty(searchParameterAuthor)) searchParameters.put("dcterms_author", searchParameterAuthor); if (!StringUtils.isEmpty(searchParameterType)) searchParameters.put("dcterms_type", searchParameterType); if (!StringUtils.isEmpty(searchParameterGeo)) searchParameters.put("geo_total", searchParameterGeo); attenderService.addProfile(unescapedQuery, true, subscribers, searchParameters, taxonomyIdentifiers); } return errors; }