You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2014/01/04 01:46:30 UTC

[2/3] git commit: Extracting the event message from CEP message in delegator(with no prperties)

Extracting the event message from CEP message in delegator(with no prperties)


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/89d4fd8c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/89d4fd8c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/89d4fd8c

Branch: refs/heads/master
Commit: 89d4fd8cb414ad39730cede522c11c881f28ec8c
Parents: b7c8f86
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Sat Jan 4 06:16:29 2014 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Sat Jan 4 06:16:29 2014 +0530

----------------------------------------------------------------------
 .../stat/HealthStatEventMessageDelegator.java   | 74 +++++++++++++++++---
 1 file changed, 65 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/89d4fd8c/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/health/stat/HealthStatEventMessageDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/health/stat/HealthStatEventMessageDelegator.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/health/stat/HealthStatEventMessageDelegator.java
index 9938331..f2a9bc8 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/health/stat/HealthStatEventMessageDelegator.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/health/stat/HealthStatEventMessageDelegator.java
@@ -23,9 +23,6 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.messaging.message.processor.MessageProcessorChain;
 import org.apache.stratos.messaging.message.processor.health.stat.HealthStatMessageProcessorChain;
-import org.apache.stratos.messaging.message.processor.instance.notifier.InstanceNotifierMessageProcessorChain;
-import org.apache.stratos.messaging.message.receiver.instance.notifier.InstanceNotifierEventMessageQueue;
-import org.apache.stratos.messaging.util.Constants;
 
 import javax.jms.TextMessage;
 
@@ -59,13 +56,18 @@ public class HealthStatEventMessageDelegator implements Runnable {
                 try {
                     TextMessage message = HealthStatEventMessageQueue.getInstance().take();
 
-                    // Retrieve the header
-                    //TODO get the type from json since this is sent by CEP
-                    String type = message.getStringProperty(Constants.EVENT_CLASS_NAME);
+                    String messageText = message.getText();
+                    if (log.isDebugEnabled()) {
+                        log.debug("Health event message received: [message] " + messageText);
+                    }
+                    EventMessage eventMessage = jsonToEventMessage(messageText);
+                    if(eventMessage == null){
+                        log.error("Error occurred while extracting message");
+                        continue;
+                    }
+                    String type = eventMessage.getEventName();
+                    String json = eventMessage.getMessage();
 
-                    // Retrieve the actual message
-                    //TODO get the 'message' from full json message
-                    String json = message.getText();
                     if (log.isDebugEnabled()) {
                         log.debug(String.format("Instance notifier event message received from queue: %s", type));
                     }
@@ -92,4 +94,58 @@ public class HealthStatEventMessageDelegator implements Runnable {
     public void terminate() {
         terminated = true;
     }
+
+
+    public EventMessage jsonToEventMessage(String json) {
+
+        EventMessage event = new EventMessage();
+        String message;
+
+        //split the message to 3 parts using ':' first is class name, second contains the text 'message' and the third contains
+        //message
+        String[] MessageParts = json.split(":", 3);
+
+        String eventType = MessageParts[0].trim();
+        eventType = eventType.substring(eventType.indexOf("\"") + 1, eventType.lastIndexOf("\""));
+
+        event.setEventName(eventType);
+        String messageTag = MessageParts[1];
+        messageTag = messageTag.substring(messageTag.indexOf("\"") + 1, messageTag.lastIndexOf("\""));
+
+        if("message".equals(messageTag)){
+            message = MessageParts[2].trim();
+            //Remove trailing bracket twice to get the message
+            message = message.substring(0, message.lastIndexOf("}")).trim();
+            message = message.substring(0, message.lastIndexOf("}")).trim();
+            if(message.indexOf('{') == 0 && message.indexOf('}') == message.length() - 1){
+                if(log.isDebugEnabled()) {
+                    log.debug(String.format("[Extracted message] %s ", message));
+                }
+                event.setMessage(message);
+                return event;
+            }
+        }
+        return null;
+    }
+
+    private class EventMessage {
+        private String eventName;
+        private String message;
+
+        private String getEventName() {
+            return eventName;
+        }
+
+        private void setEventName(String eventName) {
+            this.eventName = eventName;
+        }
+
+        public String getMessage() {
+            return message;
+        }
+
+        public void setMessage(String message) {
+            this.message = message;
+        }
+    }
 }