Fix the sonar detected error
[holmes/common.git] / holmes-actions / src / main / java / org / openo / holmes / common / producer / MQProducer.java
index e9c38b9..8cb3d2b 100644 (file)
@@ -15,6 +15,7 @@
  */\r
 package org.openo.holmes.common.producer;\r
 \r
+import java.io.Serializable;\r
 import javax.inject.Inject;\r
 import javax.jms.Connection;\r
 import javax.jms.ConnectionFactory;\r
@@ -41,22 +42,33 @@ public class MQProducer {
     private ConnectionFactory connectionFactory;\r
 \r
     public void sendAlarmMQTopicMsg(Alarm alarm) {\r
+        sendMQTopicMsg(alarm);\r
+    }\r
+\r
+    public void sendCorrelationMQTopicMsg(String ruleId, long createTimeL, Alarm parentAlarm,\r
+            Alarm childAlarm) {\r
+        CorrelationResult correlationResult = getCorrelationResult(ruleId, createTimeL, parentAlarm, childAlarm);\r
+        sendMQTopicMsg(correlationResult);\r
+    }\r
 \r
+    private <T> void sendMQTopicMsg(T t) {\r
+        Serializable msgEntity = (Serializable) t;\r
         Connection connection = null;\r
         Session session;\r
         Destination destination;\r
         MessageProducer messageProducer;\r
+\r
         try {\r
             connection = connectionFactory.createConnection();\r
             connection.start();\r
             session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);\r
-            destination = session.createTopic(AlarmConst.MQ_TOPIC_NAME_ALARM);\r
+            destination = session.createTopic(AlarmConst.MQ_TOPIC_NAME_ALARMS_CORRELATION);\r
             messageProducer = session.createProducer(destination);\r
-            ObjectMessage message = session.createObjectMessage(alarm);\r
+            ObjectMessage message = session.createObjectMessage(msgEntity);\r
             messageProducer.send(message);\r
             session.commit();\r
         } catch (Exception e) {\r
-            log.error("Failed send alarm." + e.getMessage(), e);\r
+            log.error("Failed send correlation." + e.getMessage(), e);\r
         } finally {\r
             if (connection != null) {\r
                 try {\r
@@ -68,39 +80,13 @@ public class MQProducer {
         }\r
     }\r
 \r
-    public void sendCorrelationMQTopicMsg(String ruleId, long createTimeL, Alarm parentAlarm,\r
+    private CorrelationResult getCorrelationResult(String ruleId, long createTimeL, Alarm parentAlarm,\r
             Alarm childAlarm) {\r
-\r
         CorrelationResult correlationResult = new CorrelationResult();\r
         correlationResult.setRuleId(ruleId);\r
         correlationResult.setCreateTimeL(createTimeL);\r
         correlationResult.setResultType(AplusResult.APLUS_CORRELATION);\r
         correlationResult.setAffectedAlarms(new Alarm[]{parentAlarm, childAlarm});\r
-\r
-        Connection connection = null;\r
-        Session session;\r
-        Destination destination;\r
-        MessageProducer messageProducer;\r
-\r
-        try {\r
-            connection = connectionFactory.createConnection();\r
-            connection.start();\r
-            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);\r
-            destination = session.createTopic(AlarmConst.MQ_TOPIC_NAME_ALARMS_CORRELATION);\r
-            messageProducer = session.createProducer(destination);\r
-            ObjectMessage message = session.createObjectMessage(correlationResult);\r
-            messageProducer.send(message);\r
-            session.commit();\r
-        } catch (Exception e) {\r
-            log.error("Failed send correlation." + e.getMessage(), e);\r
-        } finally {\r
-            if (connection != null) {\r
-                try {\r
-                    connection.close();\r
-                } catch (JMSException e) {\r
-                    log.error("Failed close connection." + e.getMessage(), e);\r
-                }\r
-            }\r
-        }\r
+        return correlationResult;\r
     }\r
 }\r