类javax.ws.rs.container.ContainerResponseContext源码实例Demo

下面列出了怎么用javax.ws.rs.container.ContainerResponseContext的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: jrestless   文件: CorsFilterTest.java
@Test
public void corsResponseFilter_AnyOriginAndDisallowCredentialsGiven_AddsAnyOriginAndNoVaryHeader() throws IOException {
	CorsFilter filter = new CorsFilter.Builder()
			.disallowCredentials()
			.build();

	ContainerRequestContext request = createActualRequestMock(DEFAULT_HOST, DEFAULT_ORIGIN, HttpMethod.GET);
	ContainerResponseContext response = mock(ContainerResponseContext.class);
	MultivaluedMap<String, Object> headers = new MultivaluedHashMap<>();
	when(response.getHeaders()).thenReturn(headers);
	filter.filter(request, response);

	assertEquals("*", headers.getFirst(CorsHeaders.ACCESS_CONTROL_ALLOW_ORIGIN));
	assertNull(headers.getFirst(HttpHeaders.VARY));

	verify(response).getHeaders();
	verifyZeroInteractions(response);
}
 
源代码2 项目: jrestless   文件: CorsFilterTest.java
@Test
public void corsResponseFilter_OriginAndAllowCredentialsGiven_AddsPassedOriginAndVaryHeader() throws IOException {
	CorsFilter filter = new CorsFilter.Builder()
			.allowOrigin(DEFAULT_ORIGIN)
			.allowCredentials()
			.build();

	ContainerRequestContext request = createActualRequestMock(DEFAULT_HOST, DEFAULT_ORIGIN, HttpMethod.GET);
	ContainerResponseContext response = mock(ContainerResponseContext.class);
	MultivaluedMap<String, Object> headers = new MultivaluedHashMap<>();
	when(response.getHeaders()).thenReturn(headers);
	filter.filter(request, response);

	assertEquals(DEFAULT_ORIGIN, headers.getFirst(CorsHeaders.ACCESS_CONTROL_ALLOW_ORIGIN));
	assertEquals(CorsHeaders.ORIGIN, headers.getFirst(HttpHeaders.VARY));

	verify(response).getHeaders();
	verifyZeroInteractions(response);
}
 
源代码3 项目: azeroth   文件: ResponseWrapperHandler.java
@Override
public void processResponse(ContainerRequestContext requestContext,
                            ContainerResponseContext responseContext,
                            ResourceInfo resourceInfo) {
    MediaType mediaType = responseContext.getMediaType();
    if (mediaType != null && MediaType.APPLICATION_JSON_TYPE.equals(mediaType)) {
        Object responseData = responseContext.getEntity();
        WrapperResponseEntity jsonResponse;

        if (responseData instanceof WrapperResponseEntity) {
            jsonResponse = (WrapperResponseEntity) responseData;
        } else {
            jsonResponse = new WrapperResponseEntity(ResponseCode.OK);
            jsonResponse.setData(responseData);
        }
        responseContext.setStatus(ResponseCode.OK.getCode());

        responseContext.setEntity(jsonResponse);

    }
}
 
源代码4 项目: brooklyn-server   文件: LoggingResourceFilter.java
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
    Long requestTime = requestTimestamps.remove(servletRequest);
    Duration requestDuration = null;
    if (requestTime != null) {
        long responseTime = System.nanoTime();
        requestDuration = Duration.nanos(responseTime - requestTime);
    }
    
    String method = requestContext.getMethod();
    boolean isInteresting = !UNINTERESTING_METHODS.contains(method.toUpperCase())
            || (requestDuration != null && requestDuration.isLongerThan(REQUEST_DURATION_LOG_POINT));
    LogLevel logLevel = isInteresting ? LogLevel.DEBUG : LogLevel.TRACE;

    logResponse(requestContext, responseContext, requestDuration, logLevel);
}
 
源代码5 项目: attic-rave   文件: JsonWrapperResponseFilter.java
@Override
public void filter(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) throws IOException {
    if (containerResponseContext.getStatus() == Response.Status.OK.getStatusCode()) {

        Object o = containerResponseContext.getEntity();
        JsonResponseWrapper wrapper;

        Class clazz = o.getClass();
        if (List.class.isAssignableFrom(clazz)) {
            wrapper = new JsonResponseWrapper((List) o);
        } else if (SearchResult.class.isAssignableFrom(clazz)) {
            wrapper = new JsonResponseWrapper((SearchResult) o);
        } else {
            wrapper = new JsonResponseWrapper(o);
        }

        containerResponseContext.setEntity(wrapper, containerResponseContext.getEntityAnnotations(), containerResponseContext.getMediaType());
    }
}
 
源代码6 项目: tessera   文件: CorsDomainResponseFilter.java
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
        throws IOException {

    final String origin = requestContext.getHeaderString("Origin");

    if (originMatchUtil.matches(origin)) {

        MultivaluedMap<String, Object> headers = responseContext.getHeaders();

        headers.add("Access-Control-Allow-Origin", origin);
        headers.add("Access-Control-Allow-Credentials", String.valueOf(corsConfig.getAllowCredentials()));
        headers.add("Access-Control-Allow-Methods", String.join(",", corsConfig.getAllowedMethods()));

        final String allowedHeaders;
        if (corsConfig.getAllowedHeaders() != null) {
            allowedHeaders = String.join(",", corsConfig.getAllowedHeaders());
        } else {
            allowedHeaders = requestContext.getHeaderString("Access-Control-Request-Headers");
        }

        headers.add("Access-Control-Allow-Headers", allowedHeaders);
    }
}
 
源代码7 项目: keycloak-metrics-spi   文件: MetricsFilter.java
@Override
public void filter(ContainerRequestContext req, ContainerResponseContext res) {
    int status = res.getStatus();

    // We are only interested in recording the response status if it was an error
    // (either a 4xx or 5xx). No point in counting  the successful responses
    if (status >= 400) {
        PrometheusExporter.instance().recordResponseError(status, req.getMethod());
    }

    // Record request duration if timestamp property is present
    // and only if it is relevant (skip pictures)
    if (req.getProperty(METRICS_REQUEST_TIMESTAMP) != null &&
        contentTypeIsRelevant(res)) {
        long time = (long) req.getProperty(METRICS_REQUEST_TIMESTAMP);
        long dur = System.currentTimeMillis() - time;
        LOG.trace("Duration is calculated as " + dur + " ms.");
        PrometheusExporter.instance().recordRequestDuration(dur, req.getMethod());
    }
}
 
源代码8 项目: jrestless   文件: CorsFilterTest.java
@Test
public void corsResponseFilter_ExposedHeadersGiven_AddsExposeHeadersHeader() throws IOException {
	CorsFilter filter = new CorsFilter.Builder()
			.exposeHeader("h1")
			.exposeHeader("h2")
			.build();

	ContainerRequestContext request = createActualRequestMock(DEFAULT_HOST, DEFAULT_ORIGIN, HttpMethod.GET);
	ContainerResponseContext response = mock(ContainerResponseContext.class);
	MultivaluedMap<String, Object> headers = new MultivaluedHashMap<>();
	when(response.getHeaders()).thenReturn(headers);
	filter.filter(request, response);

	assertEquals("h1,h2", headers.getFirst(CorsHeaders.ACCESS_CONTROL_EXPOSE_HEADERS));

	verify(response).getHeaders();
	verifyZeroInteractions(response);
}
 
/**
 * Clean up after the request
 */
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
        throws IOException {
    _LOG.debug("Cleaning up the Shiro Security Context");
    Subject subject = ThreadContext.getSubject();
    ThreadContext.unbindSecurityManager();
    ThreadContext.unbindSubject();
    
    if(subject != null && !subject.isAuthenticated()) {
        // Not authenticated. Check for incoming session cookie
        Cookie cookie = requestContext.getCookies().get(SESSION_COOKIE_NAME);
        
        // If we have a session cookie then it should be deleted
        if(cookie != null) {
            _LOG.debug("The subject associated with this request is not authenticated, removing the session cookie");
            responseContext.getHeaders().add(SET_COOKIE, getDeletionCookie(requestContext));
        }
    }
    
}
 
源代码10 项目: Cheddar   文件: CharsetResponseFilterTest.java
@Test
public void shouldNotSetContentTypeOnResponseWithoutMediaType_onFilter() throws Exception {
    // Given
    final ContainerRequestContext mockContainerRequestContext = mock(ContainerRequestContext.class);
    final ContainerResponseContext mockContainerResponseContext = mock(ContainerResponseContext.class);
    when(mockContainerResponseContext.getMediaType()).thenReturn(null);
    final MultivaluedMap<String, Object> mockHeadersMap = mock(MultivaluedMap.class);
    when(mockContainerResponseContext.getHeaders()).thenReturn(mockHeadersMap);
    final CharsetResponseFilter charsetResponseFilter = new CharsetResponseFilter();

    // When
    charsetResponseFilter.filter(mockContainerRequestContext, mockContainerResponseContext);

    // Then
    verifyZeroInteractions(mockHeadersMap);
}
 
源代码11 项目: redpipe   文件: TemplateResponseFilter.java
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
		throws IOException {
	if(responseContext.getEntityClass() == Template.class) {
		SuspendableContainerResponseContext ctx = (SuspendableContainerResponseContext) responseContext;
		ctx.suspend();
		Template template = (Template) responseContext.getEntity();
		try {
			template.render(requestContext.getRequest())
			.subscribe(resp -> {
				// make sure we avoid setting a null media type because that causes
				// an NPE further down
				if(resp.getMediaType() != null)
					ctx.setEntity(resp.getEntity(), null, resp.getMediaType());
				else
					ctx.setEntity(resp.getEntity());
				ctx.setStatus(resp.getStatus());
				ctx.resume();
			}, err -> {
				ctx.resume(err);
			});
		}catch(Throwable t) {
			ctx.resume(t);
		}
	}
}
 
源代码12 项目: jrestless   文件: CorsFilterTest.java
@Test
public void corsResponseFilter_AnyOriginAndAllowCredentialsGiven_AddsPassedOriginAndVaryHeader() throws IOException {
	CorsFilter filter = new CorsFilter.Builder()
			.allowCredentials()
			.build();

	ContainerRequestContext request = createActualRequestMock(DEFAULT_HOST, DEFAULT_ORIGIN, HttpMethod.GET);
	ContainerResponseContext response = mock(ContainerResponseContext.class);
	MultivaluedMap<String, Object> headers = new MultivaluedHashMap<>();
	when(response.getHeaders()).thenReturn(headers);
	filter.filter(request, response);

	assertEquals(DEFAULT_ORIGIN, headers.getFirst(CorsHeaders.ACCESS_CONTROL_ALLOW_ORIGIN));
	assertEquals(CorsHeaders.ORIGIN, headers.getFirst(HttpHeaders.VARY));

	verify(response).getHeaders();
	verifyZeroInteractions(response);
}
 
源代码13 项目: clouditor   文件: CORSResponseFilter.java
@Override
public void filter(
    ContainerRequestContext requestContext, ContainerResponseContext responseContext) {

  MultivaluedMap<String, Object> headers = responseContext.getHeaders();

  // allow AJAX from everywhere
  headers.add("Access-Control-Allow-Origin", component.getAPIAllowedOrigin());
  headers.add("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE");
  headers.add("Access-Control-Allow-Headers", "Authorization,Content-Type");
}
 
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
		throws IOException {
	Object entity = responseContext.getEntity();
	if (entity instanceof AsyncResponse) {
		AsyncResponse asyncResponse = (AsyncResponse) entity;
		Class<?> returnType = asyncResponse.returnType;
		MultivaluedMap<String, Object> httpHeaders = responseContext.getHeaders();
		if (AsyncUtil.isOSGIAsync(registration.getReference()) && AsyncReturnUtil.isAsyncType(returnType)) {
			httpHeaders.add(JaxRSConstants.JAXRS_RESPHEADER_ASYNC_TYPE, returnType.getName());
		}
		responseContext.setEntity(asyncResponse.response);
	}
}
 
源代码15 项目: trellis   文件: CacheControlFilter.java
@Override
public void filter(final ContainerRequestContext req, final ContainerResponseContext res) {
    if ((GET.equals(req.getMethod()) || HEAD.equals(req.getMethod()))
            && SUCCESSFUL.equals(res.getStatusInfo().getFamily()) && maxAge > 0) {
        final CacheControl cc = new CacheControl();
        cc.setMaxAge(maxAge);
        cc.setMustRevalidate(mustRevalidate);
        cc.setNoCache(noCache);
        res.getHeaders().add(CACHE_CONTROL, cc);
    }
}
 
源代码16 项目: fido2   文件: CrossOriginResourceSharingFilter.java
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
    String origin = requestContext.getHeaderString("Origin");
    if (ALLOWEDHOSTSLIST != null) {
        if (ALLOWEDHOSTSLIST.contains(origin)) {
            responseContext.getHeaders().putSingle("Access-Control-Allow-Origin", origin);
            responseContext.getHeaders().putSingle("Access-Control-Allow-Methods", ALLOWEDMETHODS);
            responseContext.getHeaders().putSingle("Access-Control-Allow-Headers", ALLOWEDHEADERS);
            responseContext.getHeaders().putSingle("Vary", "Origin");
        }
    }
}
 
源代码17 项目: fido2   文件: CrossOriginResourceSharingFilter.java
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
    String origin = requestContext.getHeaderString("Origin");
    if (ALLOWEDHOSTSLIST != null) {
        if (ALLOWEDHOSTSLIST.contains(origin)) {
            responseContext.getHeaders().putSingle("Access-Control-Allow-Origin", origin);
            responseContext.getHeaders().putSingle("Access-Control-Allow-Methods", ALLOWEDMETHODS);
            responseContext.getHeaders().putSingle("Access-Control-Allow-Headers", ALLOWEDHEADERS);
            responseContext.getHeaders().putSingle("Vary", "Origin");
        }
    }
}
 
源代码18 项目: cxf   文件: ApiOriginFilter.java
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
    throws IOException {
    MultivaluedMap<String, Object> headers = responseContext.getHeaders();
    headers.add("Access-Control-Allow-Origin", "*");
    headers.add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
    headers.add("Access-Control-Allow-Headers", "Content-Type");
}
 
源代码19 项目: minnal   文件: CorsFilterTest.java
@Test
public void shouldCopyAccessControleHeadersToResponse() {
	CorsFilter filter = new CorsFilter();
	ContainerRequestContext reqContext = mock(ContainerRequestContext.class);
	when(reqContext.getHeaderString("Access-Control-Request-Headers")).thenReturn("*");
	ContainerResponseContext resContext = mock(ContainerResponseContext.class);
	MultivaluedMap<String, Object> resHeaders = mock(MultivaluedMap.class);
	when(resContext.getHeaders()).thenReturn(resHeaders);
	filter.filter(reqContext, resContext);
	verify(resHeaders).add("Access-Control-Allow-Headers", "*");
}
 
源代码20 项目: hadoop-ozone   文件: TracingFilter.java
@Override
public void filter(ContainerRequestContext requestContext,
    ContainerResponseContext responseContext) {
  Scope scope = (Scope)requestContext.getProperty(TRACING_SCOPE);
  if (scope != null) {
    scope.close();
  }
  Span span = (Span) requestContext.getProperty(TRACING_SPAN);
  if (span != null) {
    span.finish();
  }

  finishAndCloseActiveSpan();
}
 
/**
 * Post-processes all the REST requests. Remove tenant's information from thread
 */
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
	logger.debug("IN");
	TenantManager.unset();
	logger.debug("OUT");
}
 
源代码22 项目: presto   文件: ResourceSecurityDynamicFeature.java
@Override
public void filter(ContainerRequestContext request, ContainerResponseContext response)
{
    // destroy identity if identity is still attached to the request
    Optional.ofNullable(request.getProperty(AUTHENTICATED_IDENTITY))
            .map(Identity.class::cast)
            .ifPresent(Identity::destroy);
}
 
源代码23 项目: jrestless   文件: CorsFilterTest.java
@Test
public void responseFilter_NoOriginGiven_NoCorsHeadersAdded() throws IOException {
	CorsFilter filter = new CorsFilter.Builder().build();
	ContainerRequestContext request = mock(ContainerRequestContext.class);
	ContainerResponseContext response = mock(ContainerResponseContext.class);
	filter.filter(request, response);
	verifyZeroInteractions(response);
}
 
源代码24 项目: athenz   文件: ETagFilterTest.java
@Test
public void testFilterContainerETagSet() {
    
    ContainerResponseContext containerResponse = getContext("etag");
    
    ETagFilter eTagFilter = new ETagFilter();
    eTagFilter.filter(null, containerResponse);
    EntityTag eTag = (EntityTag) containerResponse.getHeaders().getFirst(HttpHeaders.ETAG);
    assertNotNull(eTag);
    assertEquals(eTag.getValue(), "etag");
}
 
源代码25 项目: ameba   文件: NotFoundForward.java
/**
 * {@inheritDoc}
 */
@Override
public void filter(ContainerRequestContext requestContext,
                   ContainerResponseContext responseContext) throws IOException {
    int status = responseContext.getStatus();
    if (status == 404 || status == UnprocessableEntityException.STATUS) {
        String path = mappedViewPath();
        if (path != null) {
            responseContext.setEntity(Viewables.newDefaultViewable(path),
                    new Annotation[0], MediaType.TEXT_HTML_TYPE);
            responseContext.setStatus(Response.Status.OK.getStatusCode());
        }
    }
}
 
源代码26 项目: cxf   文件: FormatResponseHandler.java
@Override
public void filter(ContainerRequestContext reqC, ContainerResponseContext respC)
    throws IOException {
    if (mc.getUriInfo().getQueryParameters().containsKey("_format")) {
        mc.put(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
    }

}
 
源代码27 项目: jax-rs-pac4j   文件: AbstractFilter.java
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
        throws IOException {
    // in case the filter aborts the request, we never arrive here, but if it is not aborted
    // there is case when pac4j sets things on the response, this is the role of this method.
    // unfortunately, if skipResponse is used, we can't do that because pac4j considers
    // its abort response in the same way as the normal response
    if (skipResponse == null || !skipResponse) {
        new RequestJaxRsContext(providers, requestContext).contextOrNew().getResponseHolder()
                .populateResponse(responseContext);
    }
}
 
源代码28 项目: genesis   文件: CorsResponseFilter.java
/**
 * Allows the request to go through as an exception
 *
 * @param requestContext the request context
 * @param responseContext the response context
 * @param origin the request's origin
 */
private void allowExceptionCors(ContainerRequestContext requestContext, ContainerResponseContext responseContext, String origin) {
    //Gets the method header
    String methodHeader = requestContext.getHeaderString("Access-Control-Request-Method");
    //Gets the request headers
    String requestHeaders = requestContext.getHeaderString("Access-Control-Request-Headers");

    //Get the headers from the response context
    MultivaluedMap<String, Object> headers = responseContext.getHeaders();
    //Set multiple fields in the header
    headers.putSingle("Access-Control-Allow-Origin", origin);
    headers.putSingle("Access-Control-Allow-Credentials", "true");
    headers.putSingle("Access-Control-Allow-Methods", methodHeader);
    headers.putSingle("Access-Control-Allow-Headers", "x-requested-with," + (requestHeaders == null ? "" : requestHeaders));
}
 
源代码29 项目: cxf   文件: ApiOriginFilter.java
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
    throws IOException {
    MultivaluedMap<String, Object> headers = responseContext.getHeaders();
    headers.add("Access-Control-Allow-Origin", "*");
    headers.add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
    headers.add("Access-Control-Allow-Headers", "Content-Type");
}
 
源代码30 项目: tool.accelerate.core   文件: CORSFilter.java
@Override
public void filter(ContainerRequestContext req, ContainerResponseContext res) throws IOException {
    MultivaluedMap<String, Object> headers = res.getHeaders();
    headers.add("Access-Control-Allow-Origin", "*");
    headers.add("Access-Control-Allow-Methods", "GET, POST");
    headers.add("Access-Control-Max-Age", "86400");
    headers.add("Access-Control-Allow-Credentials", "true");
    headers.add("Access-Control-Allow-Headers", "Content-Type");
}
 
 类所在包
 同包方法