javax.ws.rs.container.ContainerRequestContext#setEntityStream ( )源码实例Demo

下面列出了javax.ws.rs.container.ContainerRequestContext#setEntityStream ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: krazo   文件: DefaultFormEntityProvider.java
@Override
public Form getForm(ContainerRequestContext context) throws IOException {
    final InputStream is = context.getEntityStream();

    // Ensure stream can be restored for next interceptor
    InputStream bufferedStream;
    if (is.markSupported()) {
        bufferedStream = is;
    } else {
        bufferedStream = new BufferedInputStream(is);
    }
    bufferedStream.mark(Integer.MAX_VALUE);

    final MediaType contentType = context.getMediaType();

    final String charset = contentType.getParameters().get("charset");
    final String entity = toString(bufferedStream, charset != null ? charset : DEFAULT_CHARSET);

    final Form form = parseForm(entity);

    bufferedStream.reset();
    context.setEntityStream(bufferedStream);

    return form;

}
 
源代码2 项目: onos   文件: AuditFilter.java
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
    if (auditService() != null) {
        String requestBody = (requestContext.hasEntity() ?
                (readTreeFromStream(mapper, requestContext.getEntityStream()).toString()) : "");
        requestContext.setProperty("requestBody", requestBody);
        // FIXME: audit message should be better structured
        requestContext.setProperty("auditMessage", "{\"Path" + logCompSeperator
                + requestContext.getUriInfo().getPath() + separator + "Method"
                + logCompSeperator + requestContext.getMethod() + separator
                + (requestContext.getMethod().equals("PUT") ?
                // FIXME: is there really a need to differentiate based on method?
                ("Path_Parameters" + logCompSeperator + requestContext.getUriInfo().getPathParameters().toString()
                        + separator + "Query_Parameters" + logCompSeperator
                        + requestContext.getUriInfo().getQueryParameters().toString()
                        + separator + "Request_Body" + logCompSeperator + requestBody) : ""));
        requestContext.setEntityStream(IOUtils.toInputStream(requestBody));
    }
}
 
源代码3 项目: pnc   文件: RequestLoggingFilter.java
private String getEntityBody(ContainerRequestContext requestContext) {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    InputStream in = requestContext.getEntityStream();

    final StringBuilder b = new StringBuilder();
    try {
        IOUtils.copy(in, out);

        byte[] requestEntity = out.toByteArray();
        if (requestEntity.length == 0) {
            b.append("\n");
        } else {
            b.append(new String(requestEntity)).append("\n");
        }
        requestContext.setEntityStream(new ByteArrayInputStream(requestEntity));

    } catch (IOException e) {
        logger.error("Error logging REST request.", e);
    }
    return b.toString();
}
 
源代码4 项目: container   文件: LogFilter.java
@Override
public void filter(final ContainerRequestContext request) throws IOException {
    if (logger.isDebugEnabled()) {
        logger.debug("=== LogFilter BEGIN ===");
        logger.debug("Method: {}", request.getMethod());
        logger.debug("URL: {}", UriUtil.encode(request.getUriInfo().getAbsolutePath()));
        for (final String key : request.getHeaders().keySet()) {
            logger.debug(key + " : " + request.getHeaders().get(key));
        }
        final List<MediaType> mediaTypes =
            Lists.newArrayList(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_XML_TYPE,
                MediaType.TEXT_PLAIN_TYPE, MediaType.TEXT_XML_TYPE, MediaType.TEXT_HTML_TYPE);
        if (request.getMediaType() != null && mediaTypes.contains(request.getMediaType())) {
            if (request.hasEntity()) {
                final String body = IOUtils.toString(request.getEntityStream());
                request.setEntityStream(IOUtils.toInputStream(body));
                logger.debug("Body: {}", body);
            }
        }
        logger.debug("=== LogFilter END ===");
    }
}
 
源代码5 项目: helix   文件: AuditLogFilter.java
@Override
public void filter(ContainerRequestContext request) throws IOException {
  AuditLog.Builder auditLogBuilder = new AuditLog.Builder();

  auditLogBuilder.namespace(getNamespace())
      .requestPath(request.getUriInfo().getPath())
      .httpMethod(request.getMethod())
      .startTime(new Date())
      .requestHeaders(getHeaders(request.getHeaders()))
      .principal(_servletRequest.getUserPrincipal())
      .clientIP(_servletRequest.getRemoteAddr())
      .clientHostPort(_servletRequest.getRemoteHost() + ":" + _servletRequest.getRemotePort());

  String entity = getEntity(request.getEntityStream());
  auditLogBuilder.requestEntity(entity);

  InputStream stream = new ByteArrayInputStream(entity.getBytes(StandardCharsets.UTF_8));
  request.setEntityStream(stream);

  request.setProperty(AuditLog.ATTRIBUTE_NAME, auditLogBuilder);
}
 
源代码6 项目: cxf   文件: JweContainerRequestFilter.java
@Override
public void filter(ContainerRequestContext context) throws IOException {
    if (isMethodWithNoContent(context.getMethod())
        || isCheckEmptyStream() && !context.hasEntity()) {
        return;
    }
    final byte[] encryptedContent = IOUtils.readBytesFromStream(context.getEntityStream());
    if (encryptedContent.length == 0) {
        return;
    }
    JweDecryptionOutput out = decrypt(encryptedContent);
    byte[] bytes = out.getContent();
    context.setEntityStream(new ByteArrayInputStream(bytes));
    context.getHeaders().putSingle("Content-Length", Integer.toString(bytes.length));
    String ct = JoseUtils.checkContentType(out.getHeaders().getContentType(), getDefaultMediaType());
    if (ct != null) {
        context.getHeaders().putSingle("Content-Type", ct);
    }
    if (super.isValidateHttpHeaders()) {
        super.validateHttpHeadersIfNeeded(context.getHeaders(), out.getHeaders());
    }
}
 
@Override
public void filter(final ContainerRequestContext requestCtx) {
    // Simulate an ill-behaved filter that consumes the all request content beforehand
    // instead of modifying it in a streaming fashion (as done in super)
    try {
        Collection<byte[]> collection = fromInputStream(new UpperCaseInputStream(
                requestCtx.getEntityStream())).toFuture().get();
        requestCtx.setEntityStream(fromIterable(collection).toInputStream(identity()));
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
 
源代码8 项目: cxf   文件: OidcRpAuthenticationFilter.java
private MultivaluedMap<String, String> toRequestState(ContainerRequestContext rc) {
    MultivaluedMap<String, String> requestState = new MetadataMap<>();
    requestState.putAll(rc.getUriInfo().getQueryParameters(true));
    if (MediaType.APPLICATION_FORM_URLENCODED_TYPE.isCompatible(rc.getMediaType())) {
        String body = FormUtils.readBody(rc.getEntityStream(), StandardCharsets.UTF_8.name());
        FormUtils.populateMapFromString(requestState, JAXRSUtils.getCurrentMessage(), body,
                                        StandardCharsets.UTF_8.name(), true);
        rc.setEntityStream(new ByteArrayInputStream(StringUtils.toBytesUTF8(body)));

    }
    return requestState;
}
 
源代码9 项目: logbook   文件: RemoteRequest.java
@Override
public State buffer(
        final ContainerRequestContext context) throws IOException {

    final byte[] body = toByteArray(context.getEntityStream());
    context.setEntityStream(new ByteArrayInputStream(body));
    return new Buffering(body);
}
 
源代码10 项目: docker-java   文件: LoggingFilter.java
@Override
public void filter(final ContainerRequestContext context) throws IOException {
    final long id = aid.incrementAndGet();
    final StringBuilder b = new StringBuilder();

    printRequestLine(b, "Server has received a request", id, context.getMethod(), context.getUriInfo()
            .getRequestUri());
    printPrefixedHeaders(b, id, REQUEST_PREFIX, context.getHeaders());

    if (printEntity && context.hasEntity()) {
        context.setEntityStream(logInboundEntity(b, context.getEntityStream()));
    }

    log(b);
}
 
源代码11 项目: cxf   文件: JwsContainerRequestFilter.java
@Override
public void filter(ContainerRequestContext context) throws IOException {
    if (isMethodWithNoContent(context.getMethod())
        || isCheckEmptyStream() && !context.hasEntity()) {
        return;
    }
    final String content = IOUtils.readStringFromStream(context.getEntityStream());
    if (StringUtils.isEmpty(content)) {
        return;
    }
    JwsCompactConsumer p = new JwsCompactConsumer(content);
    JwsSignatureVerifier theSigVerifier = getInitializedSigVerifier(p.getJwsHeaders());
    if (!p.verifySignatureWith(theSigVerifier)) {
        context.abortWith(JAXRSUtils.toResponse(400));
        return;
    }
    JoseUtils.validateRequestContextProperty(p.getJwsHeaders());
    
    byte[] bytes = p.getDecodedJwsPayloadBytes();
    context.setEntityStream(new ByteArrayInputStream(bytes));
    context.getHeaders().putSingle("Content-Length", Integer.toString(bytes.length));

    String ct = JoseUtils.checkContentType(p.getJwsHeaders().getContentType(), getDefaultMediaType());
    if (ct != null) {
        context.getHeaders().putSingle("Content-Type", ct);
    }

    if (super.isValidateHttpHeaders()) {
        super.validateHttpHeadersIfNeeded(context.getHeaders(), p.getJwsHeaders());
    }
    
    Principal currentPrincipal = context.getSecurityContext().getUserPrincipal();
    if (currentPrincipal == null || currentPrincipal.getName() == null) {
        SecurityContext securityContext = configureSecurityContext(theSigVerifier);
        if (securityContext != null) {
            JAXRSUtils.getCurrentMessage().put(SecurityContext.class, securityContext);
        }
    }
}
 
源代码12 项目: cxf   文件: JwsJsonContainerRequestFilter.java
@Override
public void filter(ContainerRequestContext context) throws IOException {
    if (isMethodWithNoContent(context.getMethod())
        || isCheckEmptyStream() && !context.hasEntity()) {
        return;
    }
    final String content = IOUtils.readStringFromStream(context.getEntityStream());
    if (StringUtils.isEmpty(content)) {
        return;
    }
    JwsSignatureVerifier theSigVerifier = getInitializedSigVerifier();
    JwsJsonConsumer c = new JwsJsonConsumer(content);
    try {
        validate(c, theSigVerifier);
    } catch (JwsException ex) {
        context.abortWith(JAXRSUtils.toResponse(400));
        return;
    }

    byte[] bytes = c.getDecodedJwsPayloadBytes();
    context.setEntityStream(new ByteArrayInputStream(bytes));
    context.getHeaders().putSingle("Content-Length", Integer.toString(bytes.length));

    // the list is guaranteed to be non-empty
    JwsJsonSignatureEntry sigEntry = c.getSignatureEntries().get(0);
    String ct = JoseUtils.checkContentType(sigEntry.getUnionHeader().getContentType(), getDefaultMediaType());
    if (ct != null) {
        context.getHeaders().putSingle("Content-Type", ct);
    }
    if (super.isValidateHttpHeaders()) {
        super.validateHttpHeadersIfNeeded(context.getHeaders(), sigEntry.getProtectedHeader());
    }
}
 
源代码13 项目: cxf   文件: JweJsonContainerRequestFilter.java
@Override
public void filter(ContainerRequestContext context) throws IOException {
    if (isMethodWithNoContent(context.getMethod())
        || isCheckEmptyStream() && !context.hasEntity()) {
        return;
    }
    final byte[] encryptedContent = IOUtils.readBytesFromStream(context.getEntityStream());
    if (encryptedContent.length == 0) {
        return;
    }
    try {
        JweDecryptionOutput out = decrypt(encryptedContent);
        byte[] bytes = out.getContent();
        context.setEntityStream(new ByteArrayInputStream(bytes));
        context.getHeaders().putSingle("Content-Length", Integer.toString(bytes.length));
        String ct = JoseUtils.checkContentType(out.getHeaders().getContentType(), getDefaultMediaType());
        if (ct != null) {
            context.getHeaders().putSingle("Content-Type", ct);
        }
        if (super.isValidateHttpHeaders()) {
            super.validateHttpHeadersIfNeeded(context.getHeaders(), out.getHeaders());
        }
    } catch (JweException ex) {
        context.abortWith(JAXRSUtils.toResponse(400));
        return;
    }
}
 
源代码14 项目: cxf   文件: VerifySignatureFilter.java
@Override
public void filter(ContainerRequestContext requestCtx) {
    byte[] messageBody = verifyDigest(requestCtx.getHeaders(), requestCtx.getEntityStream());
    if (messageBody != null) {
        requestCtx.setEntityStream(new ByteArrayInputStream(messageBody));
    }

    verifySignature(requestCtx.getHeaders(),
                    requestCtx.getUriInfo().getAbsolutePath().getPath(),
                    requestCtx.getMethod());
}
 
源代码15 项目: servicetalk   文件: FilterStreamingJsonTest.java
@Override
public void filter(final ContainerRequestContext requestCtx) {
    requestCtx.setEntityStream(new UpperCaseInputStream(requestCtx.getEntityStream()));
}
 
@Override
public void filter(final ContainerRequestContext requestCtx) {
    requestCtx.setEntityStream(new UpperCaseInputStream(requestCtx.getEntityStream()));
}
 
源代码17 项目: azeroth   文件: RequestUtils.java
/**
 *  获取请求参数
 * @param request
 * @param inputStream
 * @return
 * @throws IOException
 */
public static Map<String, Object> getParametersMap(ContainerRequestContext requestContext,
                                                   HttpServletRequest request) throws IOException {

    if (isMultipartContent(request)) {
        return buildQueryParamsMap(request);
    }

    Map<String, Object> parameters = buildQueryParamsMap(request);

    if (RestConst.GET_METHOD.equals(request.getMethod())) {
        return parameters;
    } else if (RestConst.POST_METHOD.equals(request.getMethod())) {

        byte[] byteArray = IOUtils.toByteArray(request.getInputStream());
        //reset InputStream
        requestContext.setEntityStream(new ByteArrayInputStream(byteArray));

        if (byteArray == null || byteArray.length == 0)
            return parameters;
        String content = new String(byteArray);
        //JSON 
        //			try {
        //				return JsonUtils.toObject(content, Map.class);
        //			} catch (Exception e) {}
        if (content.contains("{")) {
            content = StringUtils.left(content, 2048).trim();
            if (!content.endsWith("}"))
                content = content + "...\n}";
            parameters.put("data", content);
            return parameters;
        }

        String[] split = content.split("\\&");
        for (String s : split) {
            String[] split2 = s.split("=");
            if (split2.length == 2 && StringUtils.isNotBlank(split2[1])) {
                parameters.put(split2[0], split2[1]);
            }
        }
        return parameters;

    }
    return null;
}
 
源代码18 项目: jeesuite-libs   文件: RequestUtils.java
/**
	 *  获取请求参数
	 * @param request
	 * @param inputStream
	 * @return
	 * @throws IOException
	 */
	public static Map<String, Object> getParametersMap(ContainerRequestContext requestContext,HttpServletRequest request)
			throws IOException {
		
		if(isMultipartContent(request)){
			return buildQueryParamsMap(request);
		}
		
		Map<String, Object> parameters = buildQueryParamsMap(request);
		
		if (RestConst.GET_METHOD.equals(request.getMethod())) {
			return parameters;
		}else if (RestConst.POST_METHOD.equals(request.getMethod())) {
			
			byte[] byteArray = IOUtils.toByteArray(requestContext.getEntityStream());
			//reset InputStream
			requestContext.setEntityStream(new ByteArrayInputStream(byteArray));
			
			if(byteArray == null || byteArray.length == 0)return parameters;
			String content = new String(byteArray);
			//JSON 
//			try {
//				return JsonUtils.toObject(content, Map.class);
//			} catch (Exception e) {}
			if(content.contains("{")){
				content = StringUtils.left(content, 2048).trim();
				if(!content.endsWith("}"))content = content + "...\n}";
				parameters.put("data", content);
				return parameters;
			}
			
			String[] split = content.split("\\&");
			for (String s : split) {
				String[] split2 = s.split("=");
				if (split2.length == 2 && StringUtils.isNotBlank(split2[1])) {
					parameters.put(split2[0], split2[1]);
				}
			}
			return parameters;
		
		}
		return null;
	}
 
源代码19 项目: cxf   文件: BookServer20.java
@Override
public void filter(ContainerRequestContext context) throws IOException {
    UriInfo ui = context.getUriInfo();
    String path = ui.getPath(false);

    if ("POST".equals(context.getMethod())
        && "bookstore/bookheaders/simple".equals(path) && !context.hasEntity()) {
        byte[] bytes = StringUtils.toBytesUTF8("<Book><name>Book</name><id>126</id></Book>");
        context.getHeaders().putSingle(HttpHeaders.CONTENT_LENGTH, Integer.toString(bytes.length));
        context.getHeaders().putSingle("Content-Type", "application/xml");
        context.getHeaders().putSingle("EmptyRequestStreamDetected", "true");
        context.setEntityStream(new ByteArrayInputStream(bytes));
    }
    if ("true".equals(context.getProperty("DynamicPrematchingFilter"))) {
        throw new RuntimeException();
    }
    context.setProperty("FirstPrematchingFilter", "true");

    if ("wrongpath".equals(path)) {
        context.setRequestUri(URI.create("/bookstore/bookheaders/simple"));
    } else if ("throwException".equals(path)) {
        context.setProperty("filterexception", "prematch");
        throw new InternalServerErrorException(
            Response.status(500).type("text/plain")
                .entity("Prematch filter error").build());
    } else if ("throwExceptionIO".equals(path)) {
        context.setProperty("filterexception", "prematch");
        throw new IOException();
    }

    MediaType mt = context.getMediaType();
    if (mt != null && "text/xml".equals(mt.toString())) {
        String method = context.getMethod();
        if ("PUT".equals(method)) {
            context.setMethod("POST");
        }
        context.getHeaders().putSingle("Content-Type", "application/xml");
    } else {
        String newMt = context.getHeaderString("newmediatype");
        if (newMt != null) {
            context.getHeaders().putSingle("Content-Type", newMt);
        }
    }
    List<MediaType> acceptTypes = context.getAcceptableMediaTypes();
    if (acceptTypes.size() == 1 && "text/mistypedxml".equals(acceptTypes.get(0).toString())) {
        context.getHeaders().putSingle("Accept", "text/xml");
    }
}
 
源代码20 项目: cxf   文件: BookServer20.java
private void replaceStream(ContainerRequestContext context) {
    InputStream is = new ByteArrayInputStream("123".getBytes());
    context.setEntityStream(is);
}