Repository: camel
Updated Branches:
  refs/heads/master 559bdb126 -> c68c78215


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/c68c7821
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c68c7821
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c68c7821

Branch: refs/heads/master
Commit: c68c7821566f6298810eec2a2b87e1385f415587
Parents: 559bdb1
Author: Willem Jiang <willem.ji...@gmail.com>
Authored: Thu Apr 23 14:29:15 2015 +0800
Committer: Willem Jiang <willem.ji...@gmail.com>
Committed: Thu Apr 23 14:29:15 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/c68c7821/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/c68c7821/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 05eca0f..595fe28 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;
 
@@ -38,6 +37,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() {
@@ -68,6 +69,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 {
@@ -86,6 +95,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");
             }
         };
     }

Reply via email to