Refine search
protected static int getBodyIndex(MultivaluedMap<ParameterType, Parameter> map, OperationResourceInfo ori) { List<Parameter> list = map.get(ParameterType.REQUEST_BODY); int index = list == null || list.size() > 1 ? -1 : list.get(0).getIndex(); if (ori.isSubResourceLocator() && index != -1) { reportInvalidResourceMethod(ori.getMethodToInvoke(), "NO_BODY_IN_SUBRESOURCE"); } return index; }
private void setExchangeProperties(Message message, OperationResourceInfo ori, MultivaluedMap<String, String> values, int numberOfResources) { message.getExchange().put(OperationResourceInfo.class, ori); message.put(RESOURCE_METHOD, ori.getMethodToInvoke()); message.put(URITemplate.TEMPLATE_PARAMETERS, values); String plainOperationName = ori.getMethodToInvoke().getName(); if (numberOfResources > 1) { plainOperationName = ori.getClassResourceInfo().getServiceClass().getSimpleName() + "#" + plainOperationName; } message.getExchange().put(RESOURCE_OPERATION_NAME, plainOperationName); boolean oneway = ori.isOneway() || MessageUtils.isTrue(HttpUtils.getProtocolHeader(message, Message.ONE_WAY_REQUEST, null)); message.getExchange().setOneWay(oneway); }
@Override public void handleMessage(Message message) { OperationResourceInfo ori = message.getExchange().get(OperationResourceInfo.class); simpleRequest(message, ori.getAnnotatedMethod()); } }
public ResourceContextImpl(Message m, OperationResourceInfo ori) { this.m = m; this.cri = ori.getClassResourceInfo(); this.subClass = ori.getMethodToInvoke().getReturnType(); }
public static boolean matchMimeTypes(MediaType requestContentType, MediaType acceptContentType, OperationResourceInfo ori) { return doMimeTypesIntersect(ori.getConsumeTypes(), requestContentType) && doMimeTypesIntersect(ori.getProduceTypes(), acceptContentType); }
@Override public String getMethodResponseDoc(OperationResourceInfo ori) { Method method = ori.getAnnotatedMethod() == null ? ori.getMethodToInvoke() : ori.getAnnotatedMethod(); String methodResponseKey = method.getDeclaringClass().getName() + "." + method.getName() + "." + "returnCommentTag"; return dumpedDocFile.getProperty(methodResponseKey); }
Class<?> bodyClass, Class<?> responseClass) { if (headers.getFirst(HttpHeaders.CONTENT_TYPE) == null) { if (formParams || bodyClass != null && MultivaluedMap.class.isAssignableFrom(bodyClass)) { headers.putSingle(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED); } else { String cType = ori.getConsumeTypes().isEmpty() || ori.getConsumeTypes().get(0).equals(MediaType.WILDCARD_TYPE) ? MediaType.APPLICATION_XML : JAXRSUtils.mediaTypeToString(ori.getConsumeTypes().get(0)); headers.putSingle(HttpHeaders.CONTENT_TYPE, cType); boolean produceWildcard = ori.getProduceTypes().size() == 0 || ori.getProduceTypes().get(0).equals(MediaType.WILDCARD_TYPE); if (produceWildcard) { accepts = InjectionUtils.isPrimitive(responseClass) accepts = Collections.singletonList(MediaType.WILDCARD_TYPE); } else { accepts = ori.getProduceTypes(); headers.add(HttpHeaders.ACCEPT, JAXRSUtils.mediaTypeToString(mt));
MultivaluedMap<ParameterType, Parameter> map = new MetadataMap<>(); List<Parameter> parameters = ori.getParameters(); if (parameters.isEmpty()) { return map; map.add(p.getType(), p); if (map.containsKey(ParameterType.REQUEST_BODY)) { if (requestBodyParam > 1 && requestBodyParam != multipartParam) { reportInvalidResourceMethod(ori.getMethodToInvoke(), "SINGLE_BODY_ONLY"); if (map.containsKey(ParameterType.FORM)) { reportInvalidResourceMethod(ori.getMethodToInvoke(), "ONLY_FORM_ALLOWED");
final String contentType = MediaType.WILDCARD; final MediaType acceptType = MediaType.WILDCARD_TYPE; OperationResourceInfo ori = JAXRSUtils.findTargetMethod(matchedResources, m, httpMethod, values, contentType, return null; if (ori.isSubResourceLocator()) { Class<?> cls = ori.getMethodToInvoke().getReturnType(); ClassResourceInfo subcri = ori.getClassResourceInfo().getSubResource(cls, cls); if (subcri == null) { return null; newValues.putAll(values); return findPreflightMethod(Collections.singletonMap(subcri, newValues), values.getFirst(URITemplate.FINAL_MATCH_GROUP), httpMethod, newValues,
private void pushOntoStack(OperationResourceInfo ori, Class<?> realClass, Message msg) { OperationResourceInfoStack stack = msg.get(OperationResourceInfoStack.class); if (stack == null) { stack = new OperationResourceInfoStack(); msg.put(OperationResourceInfoStack.class, stack); } @SuppressWarnings("unchecked") MultivaluedMap<String, String> params = (MultivaluedMap<String, String>)msg.get(URITemplate.TEMPLATE_PARAMETERS); List<String> values = null; if (params == null || params.size() == 1) { values = Collections.emptyList(); } else { values = new ArrayList<String>(params.size() - 1); for (Parameter pm : ori.getParameters()) { if (pm.getType() == ParameterType.PATH) { List<String> paramValues = params.get(pm.getName()); if (paramValues != null) { values.addAll(paramValues); } } } } stack.push(new MethodInvocationInfo(ori, realClass, values)); } }
if (JAXRSUtils.runContainerRequestFilters(providerFactory, message, true, null)) { return; Map<String, List<String>> protocolHeaders = CastUtils.cast((Map<?, ?>)message.get(Message.PROTOCOL_HEADERS)); if (ctHeaderValues != null && !ctHeaderValues.isEmpty()) { requestContentType = ctHeaderValues.get(0); message.put(Message.CONTENT_TYPE, requestContentType); requestContentType = (String)message.get(Message.CONTENT_TYPE); acceptContentTypes = JAXRSUtils.sortMediaTypes(acceptTypes, JAXRSUtils.MEDIA_TYPE_Q_PARAM); } catch (IllegalArgumentException ex) { throw ExceptionUtils.toNotAcceptableException(null, null); exchange.put(Message.ACCEPT_CONTENT_TYPE, acceptContentTypes); LOG.fine("Accept contentType is: " + acceptTypes); LOG.fine("Found operation: " + ori.getMethodToInvoke().getName()); if (!ori.isSubResourceLocator() && JAXRSUtils.runContainerRequestFilters(providerFactory, message, false, ori.getNameBindings())) { return;
private void doInject(final InvocationContext ic) throws Exception { final Message current = JAXRSUtils.getCurrentMessage(); if (current != null) { final OperationResourceInfoStack stack = OperationResourceInfoStack.class.cast(current.get(OperationResourceInfoStack.class.getName())); if (stack != null && !stack.isEmpty()) { final Object instance; final Object appInfo = current.getExchange().getEndpoint().get(Application.class.getName()); if (ApplicationInfo.class.isInstance(appInfo)) { application = ApplicationInfo.class.cast(appInfo).getProvider(); stack.lastElement().getMethodInfo().getClassResourceInfo(), instance, application,
public void filter(ContainerRequestContext reqC, ContainerResponseContext respC) throws IOException { Message m = JAXRSUtils.getCurrentMessage(); OperationResourceInfo ori = m.getExchange().get(OperationResourceInfo.class); String method = ori.getHttpMethod(); if ("PUT".equals(method)) { XMLStreamWriter writer = StaxUtils.createXMLStreamWriter(m.getContent(OutputStream.class)); m.setContent(XMLStreamWriter.class, new CustomXmlStreamWriter(writer)); } }
public Response handleRequest(Message m, ClassResourceInfo resourceClass) { OperationResourceInfo opResInfo = m.getExchange().get(OperationResourceInfo.class); CrossOriginResourceSharing annotation = opResInfo == null ? null : getAnnotation(opResInfo.getAnnotatedMethod(), CrossOriginResourceSharing.class); if ("OPTIONS".equals(m.get(Message.HTTP_REQUEST_METHOD))) { return preflightRequest(m, annotation, opResInfo, resourceClass); } return simpleRequest(m, annotation); }
public static void pushOntoStack(OperationResourceInfo ori, MultivaluedMap<String, String> params, Message msg) { OperationResourceInfoStack stack = msg.get(OperationResourceInfoStack.class); if (stack == null) { stack = new OperationResourceInfoStack(); msg.put(OperationResourceInfoStack.class, stack); } List<String> values = null; if (params.size() <= 1) { values = Collections.emptyList(); } else { values = new ArrayList<>(params.size() - 1); addTemplateVarValues(values, params, ori.getClassResourceInfo().getURITemplate()); addTemplateVarValues(values, params, ori.getURITemplate()); } Class<?> realClass = ori.getClassResourceInfo().getServiceClass(); stack.push(new MethodInvocationInfo(ori, realClass, values)); }
OperationResourceInfo ori) throws IOException, WebApplicationException { InputStream is = message.getContent(InputStream.class); String contentType = (String)message.get(Message.CONTENT_TYPE); new org.apache.cxf.common.i18n.Message("NO_CONTENT_TYPE_SPECIFIED", BUNDLE, ori.getHttpMethod()); LOG.fine(errorMsg.toString()); String defaultCt = (String)message.getContextualProperty(DEFAULT_CONTENT_TYPE); contentType = defaultCt == null ? MediaType.APPLICATION_OCTET_STREAM : defaultCt; return readFromMessageBody(parameterClass, parameterType, parameterAnns, is, toMediaType(contentType), ori.getConsumeTypes(), message); } else if (parameter.getType() == ParameterType.CONTEXT) { return createContextValue(message, parameterType, parameterClass); } else if (parameter.getType() == ParameterType.BEAN) { return createBeanParamValue(message, parameterClass, ori);
addNonEmptyPath(builder, ori.getClassResourceInfo().getURITemplate().getValue()); addNonEmptyPath(builder, ori.getURITemplate().getValue()); handleCookies(m, params, paramHeaders, beanParamsList, types); if (ori.isSubResourceLocator()) { ClassResourceInfo subCri = cri.getSubResource(m.getReturnType(), m.getReturnType()); if (subCri == null) { subHeaders.putAll(headers); getTemplateParametersMap(ori.getURITemplate(), pathParams)); ClientProxyImpl proxyImpl = new ClientProxyImpl(newState, proxyLoader, subCri, false, inheritHeaders); headers.putAll(paramHeaders); setRequestHeaders(headers, ori, types.containsKey(ParameterType.FORM), bodyIndex == -1 || params[bodyIndex] == null ? null : params[bodyIndex].getClass(), m.getReturnType()); getState().setTemplates(getTemplateParametersMap(ori.getURITemplate(), pathParams));
protected Object doInvokeAsync(OperationResourceInfo ori, Message outMessage, InvocationCallback<Object> asyncCallback) { outMessage.getExchange().setSynchronous(false); setAsyncMessageObserverIfNeeded(outMessage.getExchange()); JaxrsClientCallback<?> cb = newJaxrsClientCallback(asyncCallback, ori.getMethodToInvoke().getReturnType(), ori.getMethodToInvoke().getGenericReturnType()); outMessage.getExchange().put(JaxrsClientCallback.class, cb); doRunInterceptorChain(outMessage); return null; }
public RedbackAuthorization getRedbackAuthorization( Message message ) { OperationResourceInfo operationResourceInfo = message.getExchange().get( OperationResourceInfo.class ); if ( operationResourceInfo == null ) { return null; } Method method = operationResourceInfo.getAnnotatedMethod(); RedbackAuthorization redbackAuthorization = method.getAnnotation( RedbackAuthorization.class ); log.debug( "class {}, resourceClass {}, method {}, redbackAuthorization {}", // operationResourceInfo.getClassResourceInfo().getServiceClass(), // operationResourceInfo.getClassResourceInfo().getResourceClass(), // method, // redbackAuthorization ); return redbackAuthorization; } }
public static Object getResourceInstance(Message message) { final OperationResourceInfo ori = message.getExchange().get(OperationResourceInfo.class); if (ori == null) { return null; } if (!ori.getClassResourceInfo().isRoot()) { return message.getExchange().get("org.apache.cxf.service.object.last"); } final ResourceProvider resourceProvider = ori.getClassResourceInfo().getResourceProvider(); if (!resourceProvider.isSingleton()) { String error = "Service object is not a singleton, use a custom invoker to validate"; LOG.warning(error); return null; } return resourceProvider.getInstance(message); }