This is an automated email from the ASF dual-hosted git repository.

ashakirin pushed a commit to branch 
feature/CXF-8099_mask_sensitive_logging_elements
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to 
refs/heads/feature/CXF-8099_mask_sensitive_logging_elements by this push:
     new 132a28c  CXF-8099: improved null check
132a28c is described below

commit 132a28c581dae7866c6e800d586d8b5d7fabff2c
Author: ashakirin <[email protected]>
AuthorDate: Fri Jul 17 00:40:36 2020 +0200

    CXF-8099: improved null check
---
 .../cxf/ext/logging/MaskSensitiveHelper.java       | 35 ++++++++--------------
 1 file changed, 13 insertions(+), 22 deletions(-)

diff --git 
a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/MaskSensitiveHelper.java
 
b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/MaskSensitiveHelper.java
index bf13883..78a6d39 100644
--- 
a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/MaskSensitiveHelper.java
+++ 
b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/MaskSensitiveHelper.java
@@ -19,23 +19,22 @@
 package org.apache.cxf.ext.logging;
 
 import java.util.HashSet;
-import java.util.Optional;
 import java.util.Set;
 
 import org.apache.cxf.message.Message;
 
 public class MaskSensitiveHelper {
     private static final String ELEMENT_NAME_TEMPLATE = "-ELEMENT_NAME-";
-    private static final String MATCH_PATTERN_XML = 
"<-ELEMENT_NAME->(.*?)</-ELEMENT_NAME->";
-    private static final String MATCH_PATTERN_JSON = "\"-ELEMENT_NAME-\"[ 
\\t]*:[ \\t]*\"(.*?)\"";
-    private static final String REPLACEMENT_PATTERN_XML = 
"<-ELEMENT_NAME->XXX</-ELEMENT_NAME->";
-    private static final String REPLACEMENT_PATTERN_JSON = 
"\"-ELEMENT_NAME-\": \"XXX\"";
+    private static final String MATCH_PATTERN_XML_TEMPLATE = 
"<-ELEMENT_NAME->(.*?)</-ELEMENT_NAME->";
+    private static final String MATCH_PATTERN_JSON_TEMPLATE = 
"\"-ELEMENT_NAME-\"[ \\t]*:[ \\t]*\"(.*?)\"";
+    private static final String REPLACEMENT_PATTERN_XML_TEMPLATE = 
"<-ELEMENT_NAME->XXX</-ELEMENT_NAME->";
+    private static final String REPLACEMENT_PATTERN_JSON_TEMPLATE = 
"\"-ELEMENT_NAME-\": \"XXX\"";
 
     private static final String XML_CONTENT = "xml";
     private static final String HTML_CONTENT = "html";
     private static final String JSON_CONTENT = "json";
 
-    final Set<String> sensitiveElementNames = new HashSet<>();
+    private final Set<String> sensitiveElementNames = new HashSet<>();
 
     public void addSensitiveElementNames(final Set<String> 
inSensitiveElementNames) {
         this.sensitiveElementNames.addAll(inSensitiveElementNames);
@@ -44,34 +43,26 @@ public class MaskSensitiveHelper {
     public String maskSensitiveElements(
             final Message message,
             final String originalLogString) {
-        if (sensitiveElementNames.isEmpty() || message == null) {
+        if (sensitiveElementNames.isEmpty()
+                || message == null
+                || (originalLogString == null)) {
             return originalLogString;
         }
         final String contentType = (String) message.get(Message.CONTENT_TYPE);
         if (contentType.toLowerCase().contains(XML_CONTENT)
                 || contentType.toLowerCase().contains(HTML_CONTENT)) {
-            return applyMasks(originalLogString, MATCH_PATTERN_XML, 
REPLACEMENT_PATTERN_XML);
+            return applyMasks(originalLogString, MATCH_PATTERN_XML_TEMPLATE, 
REPLACEMENT_PATTERN_XML_TEMPLATE);
         } else if (contentType.toLowerCase().contains(JSON_CONTENT)) {
-            return applyMasks(originalLogString, MATCH_PATTERN_JSON, 
REPLACEMENT_PATTERN_JSON);
+            return applyMasks(originalLogString, MATCH_PATTERN_JSON_TEMPLATE, 
REPLACEMENT_PATTERN_JSON_TEMPLATE);
         }
         return originalLogString;
     }
 
     private String applyMasks(String originalLogString, String 
matchElementPattern, String replacementElementPattern) {
-        return Optional.ofNullable(originalLogString)
-                .map(s -> applyExpression(s, matchElementPattern, 
replacementElementPattern, sensitiveElementNames))
-                .orElse(originalLogString);
-    }
-
-    private String applyExpression(
-            final String originalLogString,
-            final String matchPatternTemplate,
-            final String replacementTemplate,
-            final Set<String> sensitiveNames) {
         String resultString = originalLogString;
-        for (final String sensitiveName : sensitiveNames) {
-            final String matchPattern = 
matchPatternTemplate.replaceAll(ELEMENT_NAME_TEMPLATE, sensitiveName);
-            final String replacement = 
replacementTemplate.replaceAll(ELEMENT_NAME_TEMPLATE, sensitiveName);
+        for (final String sensitiveName : sensitiveElementNames) {
+            final String matchPattern = 
matchElementPattern.replaceAll(ELEMENT_NAME_TEMPLATE, sensitiveName);
+            final String replacement = 
replacementElementPattern.replaceAll(ELEMENT_NAME_TEMPLATE, sensitiveName);
             resultString = resultString.replaceAll(matchPattern, replacement);
         }
         return resultString;

Reply via email to