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