From 4a1b5e3058d8795a9d9b4fe5bfa2e97b05deaf4a Mon Sep 17 00:00:00 2001
From: Gabriel Landais <glandais@kereval.com>
Date: Tue, 14 Feb 2012 16:18:37 +0000
Subject: [PATCH] Detailed syslog message view

git-svn-id: https://scm.gforge.inria.fr/authscm/ycadoret/svn/gazelle/Maven/gazelle-proxy/trunk@26335 356b4b1a-1d2b-0410-8bf1-ffa24008f01e
---
 .../src/main/webapp/messages/syslog.xhtml     | 20 +++++++++++
 .../proxy/model/message/SyslogMessage.java    | 13 +++++++-
 .../netty/protocols/syslog/SyslogData.java    | 33 ++++++++++++-------
 .../protocols/syslog/SyslogFrameDecoder.java  |  3 +-
 4 files changed, 55 insertions(+), 14 deletions(-)

diff --git a/gazelle-proxy-common-war/src/main/webapp/messages/syslog.xhtml b/gazelle-proxy-common-war/src/main/webapp/messages/syslog.xhtml
index 8f5955cd..a9cda94a 100644
--- a/gazelle-proxy-common-war/src/main/webapp/messages/syslog.xhtml
+++ b/gazelle-proxy-common-war/src/main/webapp/messages/syslog.xhtml
@@ -13,6 +13,26 @@
 	        <h:form>
 			<h:panelGrid columns="2">
 				<ui:include src="commonProperties.xhtml" />
+
+				<h:outputText value="Facility :" />
+				<h:outputText value="#{messageBean.message.facility}" />
+				<h:outputText value="Hostname :" />
+				<h:outputText value="#{messageBean.message.hostName}" />
+				<h:outputText value="Severity :" />
+				<h:outputText value="#{messageBean.message.severity}" />
+				<h:outputText value="Timestamp :" />
+				<h:outputText value="#{messageBean.message.timestamp}" />
+				<h:outputText value="Tag :" />
+				<h:outputText value="#{messageBean.message.tag}" />
+				<h:outputText value="Application name :" />
+				<h:outputText value="#{messageBean.message.appName}" />
+				<h:outputText value="Message id :" />
+				<h:outputText value="#{messageBean.message.messageId}" />
+				<h:outputText value="Proc id :" />
+				<h:outputText value="#{messageBean.message.procId}" />
+				<h:outputText value="Payload :" />
+				<h:outputText value="#{messageBean.message.payLoad}" />
+
 			</h:panelGrid>
 			<ui:include src="commonDownload.xhtml" />
 		</h:form>
diff --git a/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/model/message/SyslogMessage.java b/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/model/message/SyslogMessage.java
index 069b5bbe..393edda6 100644
--- a/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/model/message/SyslogMessage.java
+++ b/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/model/message/SyslogMessage.java
@@ -45,6 +45,8 @@ public class SyslogMessage extends AbstractMessage implements java.io.Serializab
 
 	private String procId;
 
+	private String payLoad;
+
 	public SyslogMessage() {
 		super();
 		setProxySide(ProxySide.REQUEST);
@@ -61,7 +63,8 @@ public class SyslogMessage extends AbstractMessage implements java.io.Serializab
 		this.appName = request.getAppName();
 		this.messageId = request.getMessageId();
 		this.procId = request.getProcId();
-		setMessageReceivedAsString(request.getMessage());
+		this.payLoad = request.getPayload();
+		setMessageReceivedAsString(request.getRawMessage());
 	}
 
 	public ChannelType getChannelType() {
@@ -132,4 +135,12 @@ public class SyslogMessage extends AbstractMessage implements java.io.Serializab
 		this.procId = procId;
 	}
 
+	public String getPayLoad() {
+		return payLoad;
+	}
+
+	public void setPayLoad(String payLoad) {
+		this.payLoad = payLoad;
+	}
+
 }
diff --git a/gazelle-proxy-netty/src/main/java/net/ihe/gazelle/proxy/netty/protocols/syslog/SyslogData.java b/gazelle-proxy-netty/src/main/java/net/ihe/gazelle/proxy/netty/protocols/syslog/SyslogData.java
index c6392f39..d80e7b5a 100644
--- a/gazelle-proxy-netty/src/main/java/net/ihe/gazelle/proxy/netty/protocols/syslog/SyslogData.java
+++ b/gazelle-proxy-netty/src/main/java/net/ihe/gazelle/proxy/netty/protocols/syslog/SyslogData.java
@@ -14,34 +14,37 @@ public class SyslogData {
 	private String hostName;
 	private int severity;
 	private String timestamp;
-	private String message;
+	private String payload;
 	private String tag;
 	private String appName;
 	private String messageId;
 	private String procId;
+	private String rawMessage;
 
-	public SyslogData(SyslogMessage<?> syslogMessage) {
+	public SyslogData(SyslogMessage<?> syslogMessage, String rawMessage) {
 		super();
 
+		this.rawMessage = rawMessage;
+
 		facility = syslogMessage.getFacility();
 		hostName = syslogMessage.getHostName();
 		severity = syslogMessage.getSeverity();
 		timestamp = syslogMessage.getTimestamp();
 
 		LogMessage<?> logMessage = syslogMessage.getMessage();
-		message = null;
+		payload = null;
 		if (logMessage != null) {
 			Object messageObject = logMessage.getMessageObject();
 
 			if (messageObject instanceof String) {
-				message = (String) messageObject;
+				payload = (String) messageObject;
 			} else {
 				ByteArrayOutputStream bos = new ByteArrayOutputStream();
 				try {
 					logMessage.write(bos);
-					message = new String(bos.toByteArray());
+					payload = new String(bos.toByteArray());
 				} catch (SyslogException e) {
-					message = null;
+					payload = null;
 				}
 			}
 		}
@@ -79,10 +82,6 @@ public class SyslogData {
 		return timestamp;
 	}
 
-	public String getMessage() {
-		return message;
-	}
-
 	public String getTag() {
 		return tag;
 	}
@@ -99,6 +98,14 @@ public class SyslogData {
 		return procId;
 	}
 
+	public String getPayload() {
+		return payload;
+	}
+
+	public String getRawMessage() {
+		return rawMessage;
+	}
+
 	@Override
 	public String toString() {
 		StringBuilder builder = new StringBuilder();
@@ -110,8 +117,8 @@ public class SyslogData {
 		builder.append(severity);
 		builder.append(", timestamp=");
 		builder.append(timestamp);
-		builder.append(", message=");
-		builder.append(message);
+		builder.append(", payload=");
+		builder.append(payload);
 		builder.append(", tag=");
 		builder.append(tag);
 		builder.append(", appName=");
@@ -120,6 +127,8 @@ public class SyslogData {
 		builder.append(messageId);
 		builder.append(", procId=");
 		builder.append(procId);
+		builder.append(", rawMessage=");
+		builder.append(rawMessage);
 		builder.append("]");
 		return builder.toString();
 	}
diff --git a/gazelle-proxy-netty/src/main/java/net/ihe/gazelle/proxy/netty/protocols/syslog/SyslogFrameDecoder.java b/gazelle-proxy-netty/src/main/java/net/ihe/gazelle/proxy/netty/protocols/syslog/SyslogFrameDecoder.java
index d952089d..213f5225 100644
--- a/gazelle-proxy-netty/src/main/java/net/ihe/gazelle/proxy/netty/protocols/syslog/SyslogFrameDecoder.java
+++ b/gazelle-proxy-netty/src/main/java/net/ihe/gazelle/proxy/netty/protocols/syslog/SyslogFrameDecoder.java
@@ -40,9 +40,10 @@ class SyslogFrameDecoder extends FrameDecoder {
 				if (currentFrame.size() == messageSize) {
 					status = STATUS_END;
 					byte[] bytes = currentFrame.toByteArray();
+					String rawMessage = new String(bytes, "UTF-8");
 					SyslogMessage<?> syslogMessage = SyslogMessageFactory.getFactory().read(
 							new ByteArrayInputStream(bytes));
-					return new SyslogData(syslogMessage);
+					return new SyslogData(syslogMessage, rawMessage);
 				}
 				currentFrame.write(readByte);
 				break;
-- 
GitLab