You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2015/04/23 08:31:15 UTC

[4/4] camel git commit: CAMEL-8687 Fixed the rfc5424 structured data issue in camel-syslog

CAMEL-8687 Fixed the rfc5424 structured data issue in camel-syslog


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/02b0fbd4
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/02b0fbd4
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/02b0fbd4

Branch: refs/heads/camel-2.14.x
Commit: 02b0fbd40ed0852a9093e9bbe9c8b258323d10fb
Parents: 9054cee
Author: Willem Jiang <wi...@gmail.com>
Authored: Thu Apr 23 14:29:15 2015 +0800
Committer: Willem Jiang <wi...@gmail.com>
Committed: Thu Apr 23 14:30:54 2015 +0800

----------------------------------------------------------------------
 .../camel/component/syslog/SyslogConverter.java |  9 ++++++++-
 .../component/syslog/NettyRfc5425Test.java      | 21 +++++++++++++++++++-
 2 files changed, 28 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/02b0fbd4/components/camel-syslog/src/main/java/org/apache/camel/component/syslog/SyslogConverter.java
----------------------------------------------------------------------
diff --git a/components/camel-syslog/src/main/java/org/apache/camel/component/syslog/SyslogConverter.java b/components/camel-syslog/src/main/java/org/apache/camel/component/syslog/SyslogConverter.java
index ea91800..e872498 100644
--- a/components/camel-syslog/src/main/java/org/apache/camel/component/syslog/SyslogConverter.java
+++ b/components/camel-syslog/src/main/java/org/apache/camel/component/syslog/SyslogConverter.java
@@ -228,7 +228,14 @@ public final class SyslogConverter {
             rfc5424SyslogMessage.setMsgId(msgId.toString());
 
             StringBuilder structuredData = new StringBuilder();
-            while ((charFound = (char) (byteBuffer.get() & 0xff)) != ' ') {
+            boolean inblock = false;
+            while (((charFound = (char) (byteBuffer.get() & 0xff)) != ' ') || inblock) {
+                if (charFound == '[') {
+                    inblock = true;
+                } 
+                if (charFound == ']') {
+                    inblock = false;
+                }
                 structuredData.append(charFound);
             }
             rfc5424SyslogMessage.setStructuredData(structuredData.toString());

http://git-wip-us.apache.org/repos/asf/camel/blob/02b0fbd4/components/camel-syslog/src/test/java/org/apache/camel/component/syslog/NettyRfc5425Test.java
----------------------------------------------------------------------
diff --git a/components/camel-syslog/src/test/java/org/apache/camel/component/syslog/NettyRfc5425Test.java b/components/camel-syslog/src/test/java/org/apache/camel/component/syslog/NettyRfc5425Test.java
index 81134b8..890842f 100644
--- a/components/camel-syslog/src/test/java/org/apache/camel/component/syslog/NettyRfc5425Test.java
+++ b/components/camel-syslog/src/test/java/org/apache/camel/component/syslog/NettyRfc5425Test.java
@@ -26,7 +26,6 @@ import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.jboss.netty.buffer.BigEndianHeapChannelBuffer;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -37,6 +36,8 @@ public class NettyRfc5425Test extends CamelTestSupport {
     private final String rfc3164Message = "<165>Aug  4 05:34:00 mymachine myproc[10]: %% It's\n         time to make the do-nuts.  %%  Ingredients: Mix=OK, Jelly=OK #\n"
                                           + "         Devices: Mixer=OK, Jelly_Injector=OK, Frier=OK # Transport:\n" + "         Conveyer1=OK, Conveyer2=OK # %%";
     private final String rfc5424Message = "<34>1 2003-10-11T22:14:15.003Z mymachine.example.com su - ID47 - BOM'su root' failed for lonvick on /dev/pts/8";
+    private final String rfc5424WithStructuredData = "<34>1 2003-10-11T22:14:15.003Z mymachine.example.com su - ID47 "
+        + "[exampleSDID@32473 iut=\"3\" eventSource=\"Application\" eventID=\"1011\"] BOM'su root' failed for lonvick on /dev/pts/8";
 
     @BeforeClass
     public static void initPort() {
@@ -66,6 +67,14 @@ public class NettyRfc5425Test extends CamelTestSupport {
 
         assertMockEndpointsSatisfied();
     }
+    
+    @Test
+    public void testStructuredData() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:syslogReceiver");
+        mock.expectedMessageCount(1);
+        
+        template.sendBody("direct:checkStructuredData", rfc5424WithStructuredData);
+    }
 
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
@@ -84,6 +93,16 @@ public class NettyRfc5425Test extends CamelTestSupport {
                         assertTrue(ex.getIn().getBody() instanceof SyslogMessage);
                     }
                 }).to("mock:syslogReceiver").marshal(syslogDataFormat).to("mock:syslogReceiver2");
+                
+                
+                from("direct:checkStructuredData").unmarshal(syslogDataFormat).process(new Processor() {
+                    @Override
+                    public void process(Exchange ex) {
+                        Object body = ex.getIn().getBody();
+                        assertTrue(body instanceof Rfc5424SyslogMessage);
+                        assertEquals("[exampleSDID@32473 iut=\"3\" eventSource=\"Application\" eventID=\"1011\"]", ((Rfc5424SyslogMessage)body).getStructuredData());
+                    }
+                }).to("mock:syslogReceiver");
             }
         };
     }