All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opentripplanner.standalone.server.RequestTraceParameter Maven / Gradle / Ivy

The newest version!
package org.opentripplanner.standalone.server;

import org.opentripplanner.utils.lang.StringUtils;

/**
 * OTP supports tracing user requests across log events and "outside" services. It does so by
 * allowing http-request-header parameters to be included in log events and in the http response.
 * OTP can also generate a unique value to insert in the logs and in the response, if the value is
 * missing in the request.
 * 

* Correlation-ID example *

* A common use-case in a service oriented environment is to use a correlation id to identify * all log messages across multiple services the serve the same user initiated request. This * can be done by setting the "X-Correlation-ID" http header in the http facade/gateway. Then * all services must add this to all log messages for this request and also set the header in * the response. To configure OTP to do this, add a parameter like this: *

 * {
 *   "httpRequestHeader" : "X-Correlation-ID",
 *   "httpResponseHeader" : "X-Correlation-ID",
 *   "logKey" : "correlationId",
 *   "generateIdIfMissing" : true
 * }
 * 
* * @param httpRequestHeader The HTTP request header to look for. * @param httpResponseHeader The HTTP response header to set. If not set the value is not included * in the response. * @param logKey The key used to store the value in the log events using the logging * framework(Mapped Diagnostic Context). * @param generateIdIfMissing If {@code true}, OTP will generate a value if no value is passed in. */ public record RequestTraceParameter( String httpRequestHeader, String httpResponseHeader, String logKey, boolean generateIdIfMissing ) { public RequestTraceParameter { if (!(StringUtils.hasValue(httpRequestHeader) || generateIdIfMissing)) { throw new IllegalArgumentException( "At least one source is required: 'httpRequestHeader' and/or 'generateIdIfMissing'" ); } if (!(StringUtils.hasValue(httpResponseHeader) || StringUtils.hasValue(logKey))) { throw new IllegalArgumentException( "At least one target is required: 'httpResponseHeader' and/or 'logKey'" ); } } public boolean hasHttpRequestHeader() { return StringUtils.hasValue(httpRequestHeader); } public boolean hasHttpResponseHeader() { return StringUtils.hasValue(httpResponseHeader); } public boolean hasLogKey() { return StringUtils.hasValue(logKey); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy