@Override public Object getAttribute(String name, int scope) { return requestContext.getProperty(name); }
@Override public void filter(final ContainerRequestContext request, final ContainerResponseContext response) throws IOException { final Long startTime = (Long) request.getProperty(RUNTIME_PROPERTY); if (startTime != null) { final float seconds = (currentTimeProvider.get() - startTime) / NANOS_IN_SECOND; response.getHeaders().putSingle(RUNTIME_HEADER, String.format(Locale.ROOT, "%.6f", seconds)); } } }
/** * Resolve resource-level span. * <p> * If open tracing is enabled and {@link GlobalTracer} is registered, resource-level span should be stored in the * {@link OpenTracingFeature#SPAN_CONTEXT_PROPERTY}. This span is resolved and returned as an {@link Optional}. * * @param context {@link ContainerRequestContext} instance, can be obtained via {@code @Context} injection * @return {@link Optional} of the resolved span, if found; empty optional if not */ public static Optional<Span> getRequestSpan(final ContainerRequestContext context) { if (context != null) { final Object spanProperty = context.getProperty(OpenTracingFeature.SPAN_CONTEXT_PROPERTY); if (spanProperty != null && spanProperty instanceof Span) { return Optional.of((Span) spanProperty); } } return Optional.empty(); }
@Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { final Timer.Context context = (Timer.Context) requestContext.getProperty("metricsTimerContext"); if (context == null) return; final long elapsedNanos = context.stop(); responseContext.getHeaders().add("X-Runtime-Microseconds", TimeUnit.NANOSECONDS.toMicros(elapsedNanos)); } }
@Override public void filter(ContainerRequestContext request) { SpanCustomizer span = (SpanCustomizer) request.getProperty(SpanCustomizer.class.getName()); if (span != null && resourceInfo != null) { parser.resourceInfo(resourceInfo, span); } } }
@Override public void resetAttributes(final ContainerRequestContext requestContext) { final AbstractRequestAttributes attributes = (AbstractRequestAttributes) requestContext.getProperty(REQUEST_ATTRIBUTES_PROPERTY); RequestContextHolder.resetRequestAttributes(); attributes.requestCompleted(); } } : EMPTY_ATTRIBUTE_CONTROLLER;
/** * Create and start ad-hoc custom span with a custom name as a child span of the request span (if available). * * @param context {@link ContainerRequestContext} instance, can be obtained via {@code @Context} injection * @param spanName name to be used for the created span * @return If parent span ("request span") instance is stored in the {@code ContainerRequestContext}, new span is created * as a child span of the found span. If no parent span found, new "root" span is created. In both cases, the returned span * is already started. In order to successfully store the tracing, {@link Span#finish()} needs to be invoked explicitly, * after the traced code finishes. */ public static Span getRequestChildSpan(final ContainerRequestContext context, final String spanName) { Tracer.SpanBuilder spanBuilder = GlobalTracer.get().buildSpan(spanName); if (context != null) { final Object spanProperty = context.getProperty(OpenTracingFeature.SPAN_CONTEXT_PROPERTY); if (spanProperty != null && spanProperty instanceof Span) { spanBuilder = spanBuilder.asChildOf((Span) spanProperty); } } return spanBuilder.startManual(); }
@Override public void filter(final ContainerRequestContext requestContext, final ContainerResponseContext responseContext) throws IOException { if (!logger.isLoggable(level)) { return; } final Object requestId = requestContext.getProperty(LOGGING_ID_PROPERTY); final long id = requestId != null ? (Long) requestId : _id.incrementAndGet(); final StringBuilder b = new StringBuilder(); printResponseLine(b, "Server responded with a response", id, responseContext.getStatus()); printPrefixedHeaders(b, id, RESPONSE_PREFIX, responseContext.getStringHeaders()); if (responseContext.hasEntity() && printEntity(verbosity, responseContext.getMediaType())) { final OutputStream stream = new LoggingStream(b, responseContext.getEntityStream()); responseContext.setEntityStream(stream); requestContext.setProperty(ENTITY_LOGGER_PROPERTY, stream); // not calling log(b) here - it will be called by the interceptor } else { log(b); } } }
@Override public void filter(final ContainerRequestContext requestContext, final ContainerResponseContext responseContext) throws IOException { if (!logger.isLoggable(level)) { return; } final Object requestId = requestContext.getProperty(LOGGING_ID_PROPERTY); final long id = requestId != null ? (Long) requestId : _id.incrementAndGet(); final StringBuilder b = new StringBuilder(); printResponseLine(b, "Server responded with a response", id, responseContext.getStatus()); printPrefixedHeaders(b, id, RESPONSE_PREFIX, responseContext.getStringHeaders()); if (responseContext.hasEntity() && printEntity(verbosity, responseContext.getMediaType())) { final OutputStream stream = new LoggingStream(b, responseContext.getEntityStream()); responseContext.setEntityStream(stream); requestContext.setProperty(ENTITY_LOGGER_PROPERTY, stream); // not calling log(b) here - it will be called by the interceptor } else { log(b); } } }
@Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { Span span = (Span) requestContext.getProperty(SPAN_PROPERTY); if (span == null) { return; // unknown state } if (responseContext.getStatus() >= 500) { Tags.ERROR.set(span, true); span.log(CollectionsHelper.mapOf( "event", "error", "status", responseContext.getStatus() )); } span.finish(); TracingContext.remove(); }
FilterContext fc = (FilterContext) requestContext.getProperty(PROP_FILTER_CONTEXT); SecurityDefinition methodSecurity = jerseySecurityContext.methodSecurity(); SecurityContext securityContext = jerseySecurityContext.securityContext(); if ((Boolean) requestContext.getProperty(SecurityPreMatchingFilter.PROP_CLOSE_PARENT_SPAN)) { finishSpan((Span) requestContext.getProperty(SecurityPreMatchingFilter.PROP_PARENT_SPAN), CollectionsHelper.listOf());
@Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { String origin = requestContext.getHeaderString(CorsHeaders.ORIGIN); if (origin == null || requestContext.getMethod().equalsIgnoreCase("OPTIONS") || requestContext.getProperty("cors.failure") != null) { // don't do anything if origin is null, its an OPTIONS request, or cors.failure is set return; } responseContext.getHeaders().putSingle(CorsHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, origin); responseContext.getHeaders().putSingle(CorsHeaders.VARY, CorsHeaders.ORIGIN); if (allowCredentials) responseContext.getHeaders().putSingle(CorsHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true"); if (exposedHeaders != null) { responseContext.getHeaders().putSingle(CorsHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, exposedHeaders); } }
KeyRepository repository = (KeyRepository) context.getProperty(KeyRepository.class.getName()); if (repository == null)
@POST @Secured @Path("/logout") public void logout(@Context ContainerRequestContext crc) { Session session = (Session) crc.getProperty("session"); if(session != null) { sessions.remove(session.getToken()); } }
@Override public void filter(ContainerRequestContext context) throws IOException { if (!"true".equals(context.getProperty("FirstPrematchingFilter")) || !"true".equals(context.getProperty("DynamicPrematchingFilter")) || !"true".equals(servletRequest.getAttribute("FirstPrematchingFilter")) || !"true".equals(servletRequest.getAttribute("DynamicPrematchingFilter"))) { throw new RuntimeException(); } context.getHeaders().add("BOOK", "12"); }
@Override public void filter(ContainerRequestContext context) throws IOException { if (!"true".equals(context.getProperty("FirstPrematchingFilter"))) { throw new RuntimeException(); } context.setProperty("DynamicPrematchingFilter", "true"); }
@SuppressWarnings("unchecked") @Override public void filter(final ContainerRequestContext requestContext, final ContainerResponseContext responseContext) throws IOException { super.stopTraceSpan(requestContext.getHeaders(), responseContext.getHeaders(), responseContext.getStatus(), (TraceScopeHolder<TraceScope>)requestContext.getProperty(TRACE_SPAN)); }
@SuppressWarnings("unchecked") @Override public void filter(final ContainerRequestContext requestContext, final ContainerResponseContext responseContext) throws IOException { super.stopTraceSpan(requestContext.getHeaders(), responseContext.getHeaders(), responseContext.getStatus(), (TraceScopeHolder<TraceScope>)requestContext.getProperty(TRACE_SPAN)); }
@Override public void filter(ContainerRequestContext reqCtx, ContainerResponseContext respCtx) throws IOException { if (Boolean.TRUE == reqCtx.getProperty(OPEN_API_PROPERTY)) { final Object entity = respCtx.getEntity(); // Right before 1.5.18, the entity was always a String but became a model object // (io.swagger.models.Swagger) after. For now, let us serialize it to JSON manually. String swaggerJson = entity instanceof String ? (String)entity : Json.pretty(entity); String openApiJson = SwaggerToOpenApiConversionUtils.getOpenApiFromSwaggerJson( createMessageContext(), swaggerJson, openApiConfig); respCtx.setEntity(openApiJson); } }
@Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { if (PropertyUtils.isTrue(requestContext.getProperty("blocked"))) { throw new BlockedException(); } }