From spring 3.0.0, the whole class is getting removed, so what alternative should I use to go with a similar approach? Using ServerRequestObservationConvention is suggested, but it does not have any similar functions, so I'm confused.
I tried looking for a solution in other places, but could not find any, so if anyone knows what to do, it would be really helpful.
WebMvcTagsProvider has:
Iterable<Tag> getTags(HttpServletRequest request, HttpServletResponse response, Object handler, Throwable exception);Iterable<Tag> getLongRequestTags(HttpServletRequest request, Object handler);
which can be used like this:
@Override
public Iterable<Tag> getTags(HttpServletRequest request, HttpServletResponse response, Object handler,
Throwable exception) {
try {
Map<String, String> clientErrorData = MetricsContext.getClientErrorData();
String tenant = NONE_TAG_VALUE;
String failureReason = Optional.ofNullable(MetricsContext.getExceptionFailureReason()).orElse(NONE_TAG_VALUE);
String requestMetaData = Optional.ofNullable(MetricsContext.getReqMetaData()).orElse(NONE_TAG_VALUE);
String cardRegistrationMetaData = Optional.ofNullable(MetricsContext.getCardRegistrationMetaData()).orElse(NONE_TAG_VALUE);
String clientErrorMessage = Optional.ofNullable(clientErrorData).map((clientErrorDataMap) -> clientErrorDataMap.getOrDefault(CLIENT_ERROR_MESSAGE, NONE_TAG_VALUE)).orElse(NONE_TAG_VALUE);
String clientErrorCode = Optional.ofNullable(clientErrorData).map((clientErrorDataMap) -> clientErrorDataMap.getOrDefault(CLIENT_ERROR_CODE, NONE_TAG_VALUE)).orElse(NONE_TAG_VALUE);
if (metricsConfigProps.getDefaultMetrics().stream().noneMatch((defaultMetricsKeyword) -> request.getRequestURI().contains(defaultMetricsKeyword))) {
if (metricsConfigProps.getIgnoreTenantTag().stream().noneMatch((ignoreTenantTagUrl) -> request.getRequestURI().equals(ignoreTenantTagUrl))) {
tenant = request.getHeader("TENANT");
}
}
return Tags.of(this.delegate.getTags(request, response, handler, exception)).and(TENANT_TAG, tenant, REQ_META_DATA_TAG, requestMetaData, CARD_REG_META_DATA_TAG, cardRegistrationMetaData, FAILURE_REASON_TAG, failureReason, CLIENT_ERROR_CODE, clientErrorCode, CLIENT_ERROR_MESSAGE, clientErrorMessage);
}
catch(Exception e){
log.error("Skipping exception in metrics config while adding tags: "+e);
return Tags.of(this.delegate.getTags(request, response, handler, exception)).and(TENANT_TAG, NONE_TAG_VALUE, REQ_META_DATA_TAG, NONE_TAG_VALUE, CARD_REG_META_DATA_TAG, NONE_TAG_VALUE, FAILURE_REASON_TAG, NONE_TAG_VALUE, CLIENT_ERROR_CODE, NONE_TAG_VALUE, CLIENT_ERROR_MESSAGE, NONE_TAG_VALUE);
}
finally{
MetricsContext.clear();
}
}