You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by an...@apache.org on 2017/06/08 16:02:59 UTC

karaf-decanter git commit: [KARAF-5186] - [DECANTER] - Fails work in case the event topic contains arbitrary characters like %

Repository: karaf-decanter
Updated Branches:
  refs/heads/master 8333068f0 -> 2f031fb54


[KARAF-5186] - [DECANTER] - Fails work in case the event topic contains
arbitrary characters like %

Project: http://git-wip-us.apache.org/repos/asf/karaf-decanter/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf-decanter/commit/2f031fb5
Tree: http://git-wip-us.apache.org/repos/asf/karaf-decanter/tree/2f031fb5
Diff: http://git-wip-us.apache.org/repos/asf/karaf-decanter/diff/2f031fb5

Branch: refs/heads/master
Commit: 2f031fb54b50b612fae610303540936cceb49b64
Parents: 8333068
Author: anierbeck <bc...@googlemail.com>
Authored: Thu Jun 8 18:02:33 2017 +0200
Committer: anierbeck <bc...@googlemail.com>
Committed: Thu Jun 8 18:02:33 2017 +0200

----------------------------------------------------------------------
 .../decanter/collector/log/LogAppender.java     | 18 +++++++++++++-
 .../decanter/collector/log/LogAppenderTest.java | 26 ++++++++++++++++++++
 2 files changed, 43 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/2f031fb5/collector/log/src/main/java/org/apache/karaf/decanter/collector/log/LogAppender.java
----------------------------------------------------------------------
diff --git a/collector/log/src/main/java/org/apache/karaf/decanter/collector/log/LogAppender.java b/collector/log/src/main/java/org/apache/karaf/decanter/collector/log/LogAppender.java
index c359d11..068b62a 100644
--- a/collector/log/src/main/java/org/apache/karaf/decanter/collector/log/LogAppender.java
+++ b/collector/log/src/main/java/org/apache/karaf/decanter/collector/log/LogAppender.java
@@ -21,6 +21,8 @@ import java.util.Dictionary;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import org.apache.log4j.MDC;
 import org.ops4j.pax.logging.spi.PaxAppender;
@@ -49,6 +51,7 @@ public class LogAppender implements PaxAppender {
     private static final String MDC_IN_LOG_APPENDER = "inLogAppender";
     private final static String[] ignoredCategories = {"org.apache.karaf.decanter.collector.log"};
     private final static Logger LOGGER = LoggerFactory.getLogger(LogAppender.class);
+    private final static Pattern PATTERN = Pattern.compile("[^A-Za-z0-9]");
 
     private Dictionary<String, Object> properties;
 
@@ -118,9 +121,22 @@ public class LogAppender implements PaxAppender {
         if (loggerName == null || loggerName.isEmpty()) {
             loggerName = "default";
         }
-        String topic = "decanter/collect/log/" + loggerName.replace(".", "/").replace(" ", "_").replace("{", "_").replace("}", "_").replace("$", "_");
+        String topic = "decanter/collect/log/" + cleanLoggerName(loggerName);
         this.dispatcher.postEvent(new Event(topic, data));
     }
+    
+    /*
+     * only protected for testing. 
+     */
+    protected final String cleanLoggerName(String loggerName) {
+        Matcher matcher = PATTERN.matcher(loggerName);
+        
+        if (matcher.find()) {
+            return matcher.replaceAll("_");
+        } else {
+            return loggerName;
+        }
+    }
 
     private void putLocation(Map<String, Object> data, PaxLocationInfo loc) {
         data.put("loc.class", loc.getClassName());

http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/2f031fb5/collector/log/src/test/java/org/apache/karaf/decanter/collector/log/LogAppenderTest.java
----------------------------------------------------------------------
diff --git a/collector/log/src/test/java/org/apache/karaf/decanter/collector/log/LogAppenderTest.java b/collector/log/src/test/java/org/apache/karaf/decanter/collector/log/LogAppenderTest.java
new file mode 100644
index 0000000..8c728b6
--- /dev/null
+++ b/collector/log/src/test/java/org/apache/karaf/decanter/collector/log/LogAppenderTest.java
@@ -0,0 +1,26 @@
+package org.apache.karaf.decanter.collector.log;
+
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertThat;
+
+import org.junit.Test;
+
+public class LogAppenderTest {
+
+    @Test
+    public void testCleanLoggerName() {
+        LogAppender appender = new LogAppender();
+        
+        String loggerName = "wrong$Pattern%For&event!Name";
+        String cleanedLoggerName = appender.cleanLoggerName(loggerName);
+
+        assertThat(cleanedLoggerName, not(containsString("%")));
+        assertThat(cleanedLoggerName, not(containsString("$")));
+        assertThat(cleanedLoggerName, not(containsString("&")));
+        assertThat(cleanedLoggerName, not(containsString("!")));
+        assertThat(cleanedLoggerName, containsString("_"));
+        
+    }
+
+}