KARAF-5915 Improve the API Parser adding key data as parameter 53/head
authorFrancois Papon <fpapon@apache.org>
Fri, 14 Sep 2018 14:16:37 +0000 (18:16 +0400)
committerFrancois Papon <fpapon@apache.org>
Fri, 14 Sep 2018 14:42:53 +0000 (18:42 +0400)
api/src/main/java/org/apache/karaf/decanter/api/parser/Parser.java
api/src/main/java/org/apache/karaf/decanter/impl/parser/IdentityParser.java
api/src/test/java/org/apache/karaf/decanter/impl/parser/TestIdentityParser.java
collector/file/src/main/java/org/apache/karaf/decanter/collector/file/DecanterTailerListener.java

index c5567c3..dc24ddc 100644 (file)
@@ -22,5 +22,5 @@ public interface Parser {
 
     String SERVICE_KEY_ID = "parserId";
 
-    Map<String, Object> parse(String line);
+    Map<String, Object> parse(String key, String line);
 }
index f088d9a..2abef04 100644 (file)
@@ -26,24 +26,29 @@ import java.util.Map;
 public class IdentityParser implements Parser {
 
     @Override
-    public Map<String, Object> parse(String line) {
+    public Map<String, Object> parse(String key, String line) {
         Map<String, Object> data = new HashMap<>();
 
+        String datakey = "line";
+        if (key != null) {
+            datakey = key.trim();
+        }
+
         try {
-            data.put("line", Integer.parseInt(line));
+            data.put(datakey, Integer.parseInt(line));
             return data;
         } catch (Exception e) {
             // nothing to do
         }
 
         try {
-            data.put("line", Long.parseLong(line));
+            data.put(datakey, Long.parseLong(line));
             return data;
         } catch (Exception e) {
             // nothing to do
         }
 
-        data.put("line", line);
+        data.put(datakey, line);
         return data;
     }
 }
index fae39ed..a3d05a1 100644 (file)
@@ -38,30 +38,30 @@ public class TestIdentityParser {
                 "uuid=e75146c3-f73c-46e3-878b-1b88e58d76cf] for service with service.id [16]";
 
         System.out.println("line String :: " + lineString);
-        data = parser.parse(lineString);
+        data = parser.parse("line_string", lineString);
         Assert.assertNotNull("parser result is null", data);
         Assert.assertEquals("parser size result is incorrect",1, data.size());
 
-        Assert.assertTrue("parser value is not a string",data.get("line") instanceof String);
+        Assert.assertTrue("parser value is not a string",data.get("line_string") instanceof String);
 
         // Integer type test
         String lineInteger = "512";
 
         System.out.println("line Integer :: " + lineInteger);
-        data = parser.parse(lineInteger);
+        data = parser.parse("line_integer", lineInteger);
         Assert.assertNotNull("parser result is null", data);
         Assert.assertEquals("parser size result is incorrect", 1, data.size());
 
-        Assert.assertTrue("parser value is not an integer",data.get("line") instanceof Integer);
+        Assert.assertTrue("parser value is not an integer",data.get("line_integer") instanceof Integer);
 
         // Long type test
         String lineLong = "9223372036854775806";
 
         System.out.println("line Long :: " + lineLong);
-        data = parser.parse(lineLong);
+        data = parser.parse("line_long", lineLong);
         Assert.assertNotNull("parser result is null", data);
         Assert.assertEquals("parser size result is incorrect", 1, data.size());
 
-        Assert.assertTrue("parser value is not a long",data.get("line") instanceof Long);
+        Assert.assertTrue("parser value is not a long",data.get("line_long") instanceof Long);
     }
 }
index 040953d..f07bce1 100644 (file)
@@ -103,12 +103,12 @@ public class DecanterTailerListener extends TailerListenerAdapter {
             Pattern pattern = Pattern.compile(regex);
             Matcher matcher = pattern.matcher(line);
             if (matcher.matches()) {
-                data.putAll(this.parser.parse(line));
+                data.putAll(this.parser.parse("line_" + type, line));
             } else {
                 return;
             }
         } else {
-            data.putAll(this.parser.parse(line));
+            data.putAll(this.parser.parse("line_" + type, line));
         }
 
         try {