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("_"));
+
+ }
+
+}