summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet')
-rw-r--r--openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/AuditTracker.java23
-rw-r--r--openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/CombinedTracker.java9
-rw-r--r--openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/ContextTracker.java24
-rw-r--r--openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/HttpHeader.java18
-rw-r--r--openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/RequestProcessingResult.java1
-rw-r--r--openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/ServiceNameFormatter.java1
-rw-r--r--openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/Tracker.java7
-rw-r--r--openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingRequestFilter.java12
-rw-r--r--openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingResponseFilter.java12
9 files changed, 29 insertions, 78 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/AuditTracker.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/AuditTracker.java
index 2aeacf1ad5..371aaf68b6 100644
--- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/AuditTracker.java
+++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/AuditTracker.java
@@ -13,20 +13,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.sdc.logging.servlet;
+import static org.onap.logging.ref.slf4j.ONAPLogConstants.ResponseStatus.COMPLETE;
+
import java.util.Objects;
import javax.servlet.http.HttpServletRequest;
import org.openecomp.sdc.logging.api.AuditData;
import org.openecomp.sdc.logging.api.Logger;
import org.openecomp.sdc.logging.api.LoggerFactory;
-import static org.onap.logging.ref.slf4j.ONAPLogConstants.ResponseStatus.COMPLETE;
-
/**
- * Tracks and logs audit information when a request is being processed. An instance of this class cannot be reused, and
- * the pre- and post-request methods must be called only once.
+ * Tracks and logs audit information when a request is being processed. An instance of this class cannot be reused, and the pre- and post-request
+ * methods must be called only once.
*
* @author evitaliy
* @since 31 Jul 2018
@@ -57,35 +56,27 @@ public class AuditTracker implements Tracker {
@Override
public synchronized void preRequest(HttpServletRequest request) {
-
if (this.started > 0) {
throw new IllegalStateException("Pre-request has been already called");
}
-
this.started = System.currentTimeMillis();
this.clientIpAddress = request.getRemoteAddr();
- AuditData auditData = AuditData.builder().startTime(started).endTime(started).statusCode(COMPLETE)
- .clientIpAddress(clientIpAddress)
- .build();
+ AuditData auditData = AuditData.builder().startTime(started).endTime(started).statusCode(COMPLETE).clientIpAddress(clientIpAddress).build();
logger.auditEntry(auditData);
}
@Override
public synchronized void postRequest(RequestProcessingResult result) {
-
if (this.started == 0) {
throw new IllegalStateException("Pre-request must be called first");
}
-
if (!logger.isAuditEnabled()) {
return;
}
-
long end = System.currentTimeMillis();
AuditData auditData = AuditData.builder().startTime(started).endTime(end).statusCode(result.getStatusCode())
- .responseCode(Integer.toString(result.getStatus()))
- .responseDescription(result.getStatusPhrase()).clientIpAddress(clientIpAddress)
- .build();
+ .responseCode(Integer.toString(result.getStatus())).responseDescription(result.getStatusPhrase()).clientIpAddress(clientIpAddress)
+ .build();
logger.auditExit(auditData);
}
}
diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/CombinedTracker.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/CombinedTracker.java
index 5d940aa821..513a8a0361 100644
--- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/CombinedTracker.java
+++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/CombinedTracker.java
@@ -13,15 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.sdc.logging.servlet;
import javax.servlet.http.HttpServletRequest;
/**
- * Tracker for all the elements of ONAP logging and tracing at an entry point to an application.
- * The order of invocations is important, and on {@link #preRequest(HttpServletRequest)} it respects the order of
- * trackers passed to the constructor. On {@link #postRequest(RequestProcessingResult)}, the invocation will be in the
+ * Tracker for all the elements of ONAP logging and tracing at an entry point to an application. The order of invocations is important, and on {@link
+ * #preRequest(HttpServletRequest)} it respects the order of trackers passed to the constructor. On {@link #postRequest(RequestProcessingResult)}, the
+ * invocation will be in the
* <b>reverse</b> order.
*
* @author evitaliy
@@ -38,7 +37,6 @@ public class CombinedTracker implements Tracker {
@Override
public void preRequest(HttpServletRequest request) {
-
for (Tracker t : trackers) {
t.preRequest(request);
}
@@ -46,7 +44,6 @@ public class CombinedTracker implements Tracker {
@Override
public void postRequest(RequestProcessingResult result) {
-
for (int i = trackers.length - 1; i > -1; i--) {
trackers[i].postRequest(result);
}
diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/ContextTracker.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/ContextTracker.java
index 02745f6287..51ba005521 100644
--- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/ContextTracker.java
+++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/ContextTracker.java
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.sdc.logging.servlet;
import java.util.Objects;
@@ -34,13 +33,12 @@ public class ContextTracker implements Tracker {
private final HttpHeader partnerNameHeaders;
private final HttpHeader requestIdHeaders;
-
private final Supplier<Void> loggingContextClear;
private final Consumer<ContextData> loggingContextPut;
/**
- * Constructs tracker to handle required logging context in Servlet-based applications. Refer to ONAP logging
- * guidelines for fields required to be put on logging context.
+ * Constructs tracker to handle required logging context in Servlet-based applications. Refer to ONAP logging guidelines for fields required to be
+ * put on logging context.
*
* @param partnerNameHeaders HTTP headers to check for a partner name, cannot be null
* @param requestIdHeaders HTTP headers to check for a request ID, cannot be null
@@ -56,36 +54,30 @@ public class ContextTracker implements Tracker {
}
/**
- * Package level constructor used for tests. Clean and Put are passed as functions
- * in order to avoid static mock and service loader config - LoggingServiceProvider in LoggingContext
+ * Package level constructor used for tests. Clean and Put are passed as functions in order to avoid static mock and service loader config -
+ * LoggingServiceProvider in LoggingContext
*
* @param partnerNameHeaders
* @param requestIdHeaders
* @param loggingContextClear
* @param loggingContextPut
*/
- ContextTracker(HttpHeader partnerNameHeaders,
- HttpHeader requestIdHeaders,
- Supplier<Void> loggingContextClear,
- Consumer<ContextData> loggingContextPut) {
+ ContextTracker(HttpHeader partnerNameHeaders, HttpHeader requestIdHeaders, Supplier<Void> loggingContextClear,
+ Consumer<ContextData> loggingContextPut) {
this.partnerNameHeaders = Objects.requireNonNull(partnerNameHeaders);
this.requestIdHeaders = Objects.requireNonNull(requestIdHeaders);
this.loggingContextPut = loggingContextPut;
- this.loggingContextClear =loggingContextClear;
+ this.loggingContextClear = loggingContextClear;
}
@Override
public void preRequest(HttpServletRequest request) {
-
loggingContextClear.get();
-
String serviceName = ServiceNameFormatter.format(request);
String requestId = requestIdHeaders.getAny(request::getHeader).orElse(UUID.randomUUID().toString());
- ContextData.ContextDataBuilder contextBuilder =
- ContextData.builder().serviceName(serviceName).requestId(requestId);
+ ContextData.ContextDataBuilder contextBuilder = ContextData.builder().serviceName(serviceName).requestId(requestId);
String partnerName = partnerNameHeaders.getAny(request::getHeader).orElse("UNKNOWN");
contextBuilder.partnerName(partnerName);
-
loggingContextPut.accept(contextBuilder.build());
}
diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/HttpHeader.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/HttpHeader.java
index dd5af859d4..95963b504f 100644
--- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/HttpHeader.java
+++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/HttpHeader.java
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.sdc.logging.servlet;
import java.util.ArrayList;
@@ -24,9 +23,9 @@ import java.util.Optional;
import java.util.function.Function;
/**
- * Handles any of possible header names to read a value for that header. This is useful for backward compatibility, if
- * multiple headers may have the same meaning. For instance, when requests come from multiple service, some using an old
- * header and others using a new header to pass the same information.
+ * Handles any of possible header names to read a value for that header. This is useful for backward compatibility, if multiple headers may have the
+ * same meaning. For instance, when requests come from multiple service, some using an old header and others using a new header to pass the same
+ * information.
*
* @author evitaliy
* @since 25 Mar 2018
@@ -35,7 +34,6 @@ public class HttpHeader {
private static final String NAMES_CANNOT_BE_NULL = "Names cannot be null";
private static final String AT_LEAST_ONE_NAME_REQUIRED = "At least one name required";
-
private final List<String> headerNames;
/**
@@ -44,11 +42,9 @@ public class HttpHeader {
* @param headerNames cannot be null or empty
*/
public HttpHeader(String... headerNames) {
-
if (Objects.requireNonNull(headerNames, NAMES_CANNOT_BE_NULL).length < 1) {
throw new IllegalArgumentException(AT_LEAST_ONE_NAME_REQUIRED);
}
-
this.headerNames = Arrays.asList(headerNames);
}
@@ -58,11 +54,9 @@ public class HttpHeader {
* @param headerNames cannot be null or empty
*/
public HttpHeader(List<String> headerNames) {
-
if (Objects.requireNonNull(headerNames, NAMES_CANNOT_BE_NULL).isEmpty()) {
throw new IllegalArgumentException(AT_LEAST_ONE_NAME_REQUIRED);
}
-
this.headerNames = new ArrayList<>(headerNames);
}
@@ -73,29 +67,23 @@ public class HttpHeader {
* @return value or empty if not found
*/
public Optional<String> getAny(Function<String, String> reader) {
-
for (String k : headerNames) {
-
String value = reader.apply(k);
if (value != null) {
return Optional.of(value);
}
}
-
return Optional.empty();
}
@Override
public boolean equals(Object o) {
-
if (this == o) {
return true;
}
-
if (o == null || getClass() != o.getClass()) {
return false;
}
-
HttpHeader that = (HttpHeader) o;
return Objects.equals(headerNames, that.headerNames);
}
diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/RequestProcessingResult.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/RequestProcessingResult.java
index ff77ef8a93..bf1d1e5d0f 100644
--- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/RequestProcessingResult.java
+++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/RequestProcessingResult.java
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.sdc.logging.servlet;
import org.onap.logging.ref.slf4j.ONAPLogConstants.ResponseStatus;
diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/ServiceNameFormatter.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/ServiceNameFormatter.java
index fcbd281e88..dd5c0a7153 100644
--- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/ServiceNameFormatter.java
+++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/ServiceNameFormatter.java
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.sdc.logging.servlet;
import javax.servlet.http.HttpServletRequest;
diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/Tracker.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/Tracker.java
index c0337cfb4d..98b1d71969 100644
--- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/Tracker.java
+++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/Tracker.java
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.sdc.logging.servlet;
import javax.servlet.http.HttpServletRequest;
@@ -34,9 +33,9 @@ public interface Tracker {
void preRequest(HttpServletRequest request);
/**
- * Will be executed after a request has been processed. Results may be treated differently depending on a container
- * and application. For instance, JAX-RS applications may take into account exception mappers before generating a
- * response; some applications may Swagger annotations to map a response status to a human-friendly message, etc.
+ * Will be executed after a request has been processed. Results may be treated differently depending on a container and application. For
+ * instance, JAX-RS applications may take into account exception mappers before generating a response; some applications may Swagger annotations
+ * to map a response status to a human-friendly message, etc.
*
* @param result application- and container-specific request results
*/
diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingRequestFilter.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingRequestFilter.java
index fb651495ac..71d61b0de2 100644
--- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingRequestFilter.java
+++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingRequestFilter.java
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.sdc.logging.servlet.jaxrs;
import static org.openecomp.sdc.logging.LoggingConstants.DEFAULT_PARTNER_NAME_HEADER;
@@ -35,8 +34,7 @@ import org.openecomp.sdc.logging.servlet.Tracker;
/**
* <p>Takes care of logging initialization an HTTP request hits the application. This includes populating logging
- * context and tracking the request for audit. The filter <b>works in tandem</b> with {@link LoggingResponseFilter} or
- * a similar implementation.</p>
+ * context and tracking the request for audit. The filter <b>works in tandem</b> with {@link LoggingResponseFilter} or a similar implementation.</p>
* <p>The filter requires a few HTTP header names to be configured. These HTTP headers are used for propagating logging
* and tracing information between ONAP components. Sample configuration for a Spring environment:</p>
* <pre>
@@ -59,15 +57,11 @@ import org.openecomp.sdc.logging.servlet.Tracker;
public class LoggingRequestFilter implements ContainerRequestFilter {
static final String LOGGING_TRACKER_KEY = "onap.logging.tracker";
-
private static final String MULTI_VALUE_SEPARATOR = ",";
private static final Logger LOGGER = LoggerFactory.getLogger(LoggingRequestFilter.class);
-
private HttpServletRequest httpRequest;
-
private HttpHeader requestIdHeader = new HttpHeader(DEFAULT_REQUEST_ID_HEADER);
private HttpHeader partnerNameHeader = new HttpHeader(DEFAULT_PARTNER_NAME_HEADER);
-
private ResourceInfo resource;
/**
@@ -109,9 +103,7 @@ public class LoggingRequestFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) {
Class<?> resourceClass = resource.getResourceMethod().getDeclaringClass();
- Tracker tracker = new CombinedTracker(
- new ContextTracker(partnerNameHeader, requestIdHeader),
- new AuditTracker(resourceClass));
+ Tracker tracker = new CombinedTracker(new ContextTracker(partnerNameHeader, requestIdHeader), new AuditTracker(resourceClass));
requestContext.setProperty(LOGGING_TRACKER_KEY, tracker);
tracker.preRequest(httpRequest);
}
diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingResponseFilter.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingResponseFilter.java
index b0ae88ccaa..e5bdd56534 100644
--- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingResponseFilter.java
+++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingResponseFilter.java
@@ -13,12 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.sdc.logging.servlet.jaxrs;
import static javax.ws.rs.core.Response.Status.Family.REDIRECTION;
import static javax.ws.rs.core.Response.Status.Family.SUCCESSFUL;
-import static org.onap.logging.ref.slf4j.ONAPLogConstants.ResponseStatus.*;
+import static org.onap.logging.ref.slf4j.ONAPLogConstants.ResponseStatus.COMPLETE;
+import static org.onap.logging.ref.slf4j.ONAPLogConstants.ResponseStatus.ERROR;
import static org.openecomp.sdc.logging.servlet.jaxrs.LoggingRequestFilter.LOGGING_TRACKER_KEY;
import javax.ws.rs.container.ContainerRequestContext;
@@ -26,7 +26,6 @@ import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
-
import org.onap.logging.ref.slf4j.ONAPLogConstants.ResponseStatus;
import org.openecomp.sdc.logging.api.Logger;
import org.openecomp.sdc.logging.api.LoggerFactory;
@@ -35,8 +34,7 @@ import org.openecomp.sdc.logging.servlet.Tracker;
/**
* <p>Takes care of logging when an HTTP request leaves the application. This includes writing to audit and clearing
- * logging context. This filter <b>only works properly in tandem</b> with {@link LoggingRequestFilter} or a similar
- * implementation.</p>
+ * logging context. This filter <b>only works properly in tandem</b> with {@link LoggingRequestFilter} or a similar implementation.</p>
* <p>Sample configuration for a Spring environment:</p>
* <pre>
* &lt;jaxrs:providers&gt;
@@ -57,14 +55,11 @@ public class LoggingResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) {
-
Tracker tracker = (Tracker) requestContext.getProperty(LOGGING_TRACKER_KEY);
-
if (tracker == null) {
LOGGER.debug("No logging tracker received");
return;
}
-
tracker.postRequest(new ContainerResponseResult(responseContext.getStatusInfo()));
}
@@ -93,4 +88,3 @@ public class LoggingResponseFilter implements ContainerResponseFilter {
}
}
}
-