private ContinuationProvider getContinuationProvider() { return (ContinuationProvider)JAXRSUtils.getCurrentMessage().getExchange() .getInMessage().get(ContinuationProvider.class.getName()); } }
public static <T> T find(final Class<T> clazz) { final Message m = PhaseInterceptorChain.getCurrentMessage(); if (m != null) { return JAXRSUtils.createContextValue(m, null, clazz); } final Exchange exchange = EXCHANGE.get(); if (exchange == null) { throw new IllegalStateException("No CXF message usable for JAX-RS @Context injections in that thread so can't use " + clazz); } return JAXRSUtils.createContextValue(exchange.getInMessage(), null, clazz); }
public static ResponseBuilder fromResponse(Response response, boolean copyEntity) { ResponseBuilder rb = toResponseBuilder(response.getStatus()); if (copyEntity) { rb.entity(response.getEntity()); } for (Map.Entry<String, List<Object>> entry : response.getMetadata().entrySet()) { List<Object> values = entry.getValue(); for (Object value : values) { rb.header(entry.getKey(), value); } } return rb; }
private MessageContext createMessageContext() { return JAXRSUtils.createContextValue( JAXRSUtils.getCurrentMessage(), null, MessageContext.class); }
boolean firstTry) { response = JAXRSUtils.copyResponseIfNeeded(response); final Exchange exchange = message.getExchange(); Method invoked = ori == null ? null : ori.getAnnotatedMethod() != null ? ori.getAnnotatedMethod() : ori.getMethodToInvoke(); getActualStatus(response.getStatus(), entity)); ((ResponseImpl)response).setEntity(entity, annotations); (Map<String, List<Object>>)message.get(Message.PROTOCOL_HEADERS); if (firstTry && userHeaders != null) { responseHeaders.putAll(userHeaders); JAXRSUtils.runContainerResponseFilters(providerFactory, response, message, ori, invoked); } catch (IOException ex) { handleWriteException(providerFactory, message, ex, firstTry); String finalResponseContentType = JAXRSUtils.mediaTypeToString(responseMediaType); if (LOG.isLoggable(Level.FINE)) { LOG.fine("Response content type is: " + finalResponseContentType); JAXRSUtils.writeMessageBody(writers, entity, targetType,
@Override public void filter(ContainerRequestContext requestContext) throws IOException { MultivaluedMap<String, String> form = toFormData(requestContext); String idTokenParamValue = form.getFirst(tokenFormParameter); if (idTokenParamValue == null) { requestContext.abortWith(Response.status(401).build()); return; } IdToken idToken = idTokenReader.getIdToken(idTokenParamValue, consumer); JAXRSUtils.getCurrentMessage().setContent(IdToken.class, idToken); OidcSecurityContext oidcSecCtx = new OidcSecurityContext(idToken); oidcSecCtx.setRoleClaim(roleClaim); requestContext.setSecurityContext(oidcSecCtx); }
@Override public void filter(ContainerRequestContext context) { try { interceptor.handleMessage(JAXRSUtils.getCurrentMessage()); } catch (AccessDeniedException ex) { context.abortWith(Response.status(Response.Status.FORBIDDEN).build()); } }
@Override public void filter(ContainerRequestContext requestContext) throws IOException { Message m = JAXRSUtils.getCurrentMessage(); final Method method = (Method) m.get("org.apache.cxf.resource.method"); if (!JaxRsAnnotationScanner.hasAnnotation(method, LoggedIn.class)) { LoggedInFilter.LOGGER.debug("No login mandatory"); return; } LoggedInFilter.LOGGER.debug("Login mandatory"); SecurityContext securityContext = m.get(SecurityContext.class); if (securityContext == null || securityContext.getUserPrincipal() == null) { requestContext.abortWith(Response.status(Status.UNAUTHORIZED).build()); } }
boolean firstTry) { ResponseImpl response = (ResponseImpl)JAXRSUtils.copyResponseIfNeeded(theResponse); final Exchange exchange = message.getExchange(); Method invoked = ori == null ? null : ori.getAnnotatedMethod() != null ? ori.getAnnotatedMethod() : ori.getMethodToInvoke(); JAXRSUtils.runContainerResponseFilters(providerFactory, response, message, ori, invoked); } catch (Throwable ex) { handleWriteException(providerFactory, message, ex, firstTry); getResponseMediaType(responseHeaders.getFirst(HttpHeaders.CONTENT_TYPE)); if (responseMediaType.isWildcardSubtype()) { return; String finalResponseContentType = JAXRSUtils.mediaTypeToString(responseMediaType); if (LOG.isLoggable(Level.FINE)) { LOG.fine("Response content type is: " + finalResponseContentType); JAXRSUtils.writeMessageBody(writers, entity, targetType,
/** * Overriding {@link JAXRSUtils#fromResponse(javax.ws.rs.core.Response)} in order to avoid setting * {@code Content-Type} from original {@code response}. * * @param response model to construct {@link ResponseBuilder} from * @return new {@link ResponseBuilder} instance initialized from given response */ private ResponseBuilder builder(final Response response) { ResponseBuilder builder = JAXRSUtils.toResponseBuilder(response.getStatus()); builder.entity(response.getEntity()); response.getMetadata().forEach((key, value) -> { if (!HttpHeaders.CONTENT_TYPE.equals(key)) { value.forEach(headerValue -> { builder.header(key, headerValue); }); } }); return builder; }
requestType = toMediaType(requestContentType); } catch (IllegalArgumentException ex) { throw ExceptionUtils.toNotSupportedException(ex, null); String path = getCurrentPath(values); LOG.fine(() -> new org.apache.cxf.common.i18n.Message("START_OPER_MATCH", BUNDLE, } else if (finalPath) { pathMatched++; if (matchHttpMethod(ori.getHttpMethod(), httpMethod)) { methodMatched++; if (getMethod || matchConsumeTypes(requestType, ori)) { consumeMatched++; for (MediaType acceptType : acceptContentTypes) { if (matchProduceTypes(acceptType, ori)) { candidateList.put(ori, map); added = true; LOG.fine(matchMessageLogSupplier(ori, path, httpMethod, requestType, acceptContentTypes, added)); Map.Entry<OperationResourceInfo, MultivaluedMap<String, String>> firstEntry = candidateList.entrySet().iterator().next(); matchedValues.clear(); matchedValues.putAll(firstEntry.getValue()); OperationResourceInfo ori = firstEntry.getKey(); if (headMethodPossible(ori.getHttpMethod(), httpMethod)) {
@Override public void filter(ContainerRequestContext context) { if (uriInfo.getPath().endsWith("/propogateExceptionVar/1")) { MultivaluedMap<String, String> vars = uriInfo.getPathParameters(); if (vars.size() == 1 && vars.get("i") != null && vars.get("i").size() == 1 && "1".equals(vars.getFirst("i"))) { JAXRSUtils.getCurrentMessage().getExchange() .put("org.apache.cxf.systest.for-out-fault-interceptor", Boolean.TRUE); throw new RuntimeException(); } } }
public String getSearchExpression() { String queryStr = (String)message.get(Message.QUERY_STRING); if (queryStr != null) { if (MessageUtils.getContextualBoolean(message, USE_ALL_QUERY_COMPONENT)) { return queryStr; } boolean encoded = PropertyUtils.isTrue(getKeepEncodedProperty()); MultivaluedMap<String, String> params = JAXRSUtils.getStructuredParams(queryStr, "&", !encoded, false); String customQueryParamName = (String)message.getContextualProperty(CUSTOM_SEARCH_QUERY_PARAM_NAME); if (customQueryParamName != null) { return params.getFirst(customQueryParamName); } if (queryStr.contains(SHORT_SEARCH_QUERY) || queryStr.contains(SEARCH_QUERY)) { if (params.containsKey(SHORT_SEARCH_QUERY)) { return params.getFirst(SHORT_SEARCH_QUERY); } return params.getFirst(SEARCH_QUERY); } else if (MessageUtils.getContextualBoolean(message, USE_PLAIN_QUERY_PARAMETERS)) { return convertPlainQueriesToFiqlExp(params); } } return null; }
protected ResponseBuilder setResponseBuilder(Message outMessage, Exchange exchange) throws Exception { Response response = exchange.get(Response.class); if (response != null) { outMessage.getExchange().getInMessage().put(Message.PROTOCOL_HEADERS, response.getStringHeaders()); return JAXRSUtils.fromResponse(JAXRSUtils.copyResponseIfNeeded(response)); ResponseBuilder currentResponseBuilder = JAXRSUtils.toResponseBuilder(status); Message responseMessage = exchange.getInMessage() != null ? exchange.getInMessage() : exchange.getInFaultMessage(); CastUtils.cast((Map<?, ?>)responseMessage.get(Message.PROTOCOL_HEADERS)); boolean splitHeaders = MessageUtils.getContextualBoolean(outMessage, HEADER_SPLIT_PROPERTY); for (Map.Entry<String, List<Object>> entry : protocolHeaders.entrySet()) { if (null == entry.getKey()) { currentResponseBuilder.header(entry.getKey(), entry.getValue().get(0)); continue; String theValue = s.trim(); if (theValue.length() > 0) { currentResponseBuilder.header(entry.getKey(), theValue); currentResponseBuilder.header(entry.getKey(), valObject);
requestType = getMethod ? MediaType.WILDCARD_TYPE : toMediaType(requestContentType); } catch (IllegalArgumentException ex) { throw ExceptionUtils.toNotSupportedException(ex, null); URITemplate uriTemplate = ori.getURITemplate(); MultivaluedMap<String, String> map = new MetadataMap<String, String>(values); if (uriTemplate != null && uriTemplate.match(path, map)) { if (ori.isSubResourceLocator()) { candidateList.put(ori, map); added = true; } else { String finalGroup = map.getFirst(URITemplate.FINAL_MATCH_GROUP); if (StringUtils.isEmpty(finalGroup) || PATH_SEGMENT_SEP.equals(finalGroup)) { pathMatched++; if (matchHttpMethod(ori.getHttpMethod(), httpMethod)) { methodMatched++; if (getMethod || matchConsumeTypes(requestType, ori)) { consumeMatched++; for (MediaType acceptType : acceptContentTypes) { if (matchProduceTypes(acceptType, ori)) { candidateList.put(ori, map); added = true; logNoMatchMessage(ori, path, httpMethod, requestType, acceptContentTypes); if (headMethodPossible(ori.getHttpMethod(), httpMethod)) { LOG.info(new org.apache.cxf.common.i18n.Message("GET_INSTEAD_OF_HEAD", BUNDLE, resource.getServiceClass().getName(),
public String getSearchExpression() { String queryStr = (String)message.get(Message.QUERY_STRING); if (queryStr != null) { if (MessageUtils.isTrue(message.getContextualProperty(USE_ALL_QUERY_COMPONENT))) { return queryStr; } boolean encoded = PropertyUtils.isTrue(getKeepEncodedProperty()); MultivaluedMap<String, String> params = JAXRSUtils.getStructuredParams(queryStr, "&", !encoded, false); String customQueryParamName = (String)message.getContextualProperty(CUSTOM_SEARCH_QUERY_PARAM_NAME); if (customQueryParamName != null) { return params.getFirst(customQueryParamName); } if (queryStr.contains(SHORT_SEARCH_QUERY) || queryStr.contains(SEARCH_QUERY)) { if (params.containsKey(SHORT_SEARCH_QUERY)) { return params.getFirst(SHORT_SEARCH_QUERY); } else { return params.getFirst(SEARCH_QUERY); } } else if (MessageUtils.isTrue(message.getContextualProperty(USE_PLAIN_QUERY_PARAMETERS))) { return convertPlainQueriesToFiqlExp(params); } } return null; }
protected String getCallbackValue(Message message) { String theQuery = (String)message.get(Message.QUERY_STRING); String callback = JAXRSUtils.getStructuredParams(theQuery, "&", false, false).getFirst(callbackParam); if (StringUtils.isEmpty(callback)) { String httpAcceptType = (String)message.get(Message.ACCEPT_CONTENT_TYPE); if (httpAcceptType != null && mediaType.equals(httpAcceptType)) { return defaultCallback; } } return callback; }
@Override public Response toResponse(ValidationException exception) { Response r = super.toResponse(exception); return JAXRSUtils.toResponseBuilder( r.getStatus()).type("application/xml").entity(new Book("Validation", 123L)).build(); } });
protected boolean processParams(ContainerRequestContext ct, MultivaluedMap<String, String> params, boolean postBinding) { String encodedSamlResponse = params.getFirst(SSOConstants.SAML_RESPONSE); String relayState = params.getFirst(SSOConstants.RELAY_STATE); if (relayState == null && encodedSamlResponse == null) { // initial redirect to IDP has not happened yet, let the SAML authentication filter do it JAXRSUtils.getCurrentMessage().put(SSOConstants.RACS_IS_COLLOCATED, Boolean.TRUE); return false; } ct.abortWith(doProcessSamlResponse(encodedSamlResponse, relayState, postBinding)); return true; } public void setSupportPostBinding(boolean supportPostBinding) {
@Override public void setMediaType(MediaType mt) { if (!getMediaType().isCompatible(mt)) { providerSelectionPropertyChanged(); } m.put(Message.CONTENT_TYPE, JAXRSUtils.mediaTypeToString(mt)); getHeaders().putSingle(HttpHeaders.CONTENT_TYPE, mt); }