From 28fec8e61734f85e4d12632f88750429b5ac2182 Mon Sep 17 00:00:00 2001 From: Richard Alam <ritzalam@gmail.com> Date: Tue, 11 Feb 2020 12:10:45 -0800 Subject: [PATCH] - display json reponse properly --- .../FreeswitchConferenceEventListener.java | 5 ++-- .../voice/IVoiceConferenceService.java | 7 +++-- .../events/FreeswitchHeartbeatEvent.java | 8 ++++-- .../events/FreeswitchStatusReplyEvent.java | 8 ++++-- .../voice/freeswitch/ESLEventListener.java | 4 +-- .../actions/CheckFreeswitchStatusCommand.java | 2 +- .../scala/org/bigbluebutton/ApiService.scala | 7 +++-- .../freeswitch/VoiceConferenceService.scala | 11 +++++--- .../service/HealthzService.scala | 28 ++++++++++--------- 9 files changed, 47 insertions(+), 33 deletions(-) diff --git a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/FreeswitchConferenceEventListener.java b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/FreeswitchConferenceEventListener.java index 40b46d8589..a55159b56e 100755 --- a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/FreeswitchConferenceEventListener.java +++ b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/FreeswitchConferenceEventListener.java @@ -26,6 +26,7 @@ import org.bigbluebutton.freeswitch.voice.events.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + public class FreeswitchConferenceEventListener implements ConferenceEventListener { private static Logger log = LoggerFactory.getLogger(FreeswitchConferenceEventListener.class); @@ -113,11 +114,11 @@ public class FreeswitchConferenceEventListener implements ConferenceEventListene } else if (event instanceof FreeswitchStatusReplyEvent) { FreeswitchStatusReplyEvent evt = (FreeswitchStatusReplyEvent) event; vcs.freeswitchStatusReplyEvent(evt.sendCommandTimestamp, - evt.jsonResponse, + evt.status, evt.receivedResponsTimestatmp); } else if (event instanceof FreeswitchHeartbeatEvent) { FreeswitchHeartbeatEvent hbearEvt = (FreeswitchHeartbeatEvent) event; - vcs.freeswitchHeartbeatEvent(hbearEvt.healthStatusJson); + vcs.freeswitchHeartbeatEvent(hbearEvt.heartbeat); } } diff --git a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/IVoiceConferenceService.java b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/IVoiceConferenceService.java index e0af1768d3..0e520e6f5f 100755 --- a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/IVoiceConferenceService.java +++ b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/IVoiceConferenceService.java @@ -3,6 +3,9 @@ package org.bigbluebutton.freeswitch.voice; import org.bigbluebutton.freeswitch.voice.events.ConfMember; import org.bigbluebutton.freeswitch.voice.events.ConfRecording; +import java.util.List; +import java.util.Map; + public interface IVoiceConferenceService { void voiceConfRecordingStarted(String voiceConfId, String recordStream, @@ -75,8 +78,8 @@ public interface IVoiceConferenceService { String origCalledDest); void freeswitchStatusReplyEvent(Long sendCommandTimestamp, - String json, + List<String> status, Long receivedResponsTimestatmp); - void freeswitchHeartbeatEvent(String json); + void freeswitchHeartbeatEvent(Map<String, String> heartbeat); } diff --git a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/events/FreeswitchHeartbeatEvent.java b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/events/FreeswitchHeartbeatEvent.java index dd94561fc4..00b203f3a7 100755 --- a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/events/FreeswitchHeartbeatEvent.java +++ b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/events/FreeswitchHeartbeatEvent.java @@ -1,11 +1,13 @@ package org.bigbluebutton.freeswitch.voice.events; +import java.util.Map; + public class FreeswitchHeartbeatEvent extends VoiceConferenceEvent { - public final String healthStatusJson; + public final Map<String, String> heartbeat; - public FreeswitchHeartbeatEvent(String healthStatusJson) { + public FreeswitchHeartbeatEvent(Map<String, String> heartbeat) { super("unused"); - this.healthStatusJson = healthStatusJson; + this.heartbeat = heartbeat; } } diff --git a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/events/FreeswitchStatusReplyEvent.java b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/events/FreeswitchStatusReplyEvent.java index f2c5706783..4870127d41 100755 --- a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/events/FreeswitchStatusReplyEvent.java +++ b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/events/FreeswitchStatusReplyEvent.java @@ -1,16 +1,18 @@ package org.bigbluebutton.freeswitch.voice.events; +import java.util.List; + public class FreeswitchStatusReplyEvent extends VoiceConferenceEvent { - public final String jsonResponse; + public final List<String> status; public Long sendCommandTimestamp; public Long receivedResponsTimestatmp; public FreeswitchStatusReplyEvent(Long sendCommandTimestamp, - String json, + List<String> status, Long receivedResponsTimestatmp) { super("unused"); - this.jsonResponse = json; + this.status = status; this.sendCommandTimestamp = sendCommandTimestamp; this.receivedResponsTimestatmp = receivedResponsTimestatmp; } diff --git a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/ESLEventListener.java b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/ESLEventListener.java index 246ce86bce..d9d66f1788 100755 --- a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/ESLEventListener.java +++ b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/ESLEventListener.java @@ -290,8 +290,8 @@ public class ESLEventListener implements IEslEventListener { if (event.getEventName().equals("HEARTBEAT")) { Gson gson = new Gson(); String json = gson.toJson(event.getEventHeaders()); - log.info(json); - FreeswitchHeartbeatEvent hbeatEvent = new FreeswitchHeartbeatEvent(json); + //log.info(json); + FreeswitchHeartbeatEvent hbeatEvent = new FreeswitchHeartbeatEvent(event.getEventHeaders()); conferenceEventListener.handleConferenceEvent(hbeatEvent); } else if (event.getEventName().equals( "CHANNEL_EXECUTE" )) { diff --git a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/actions/CheckFreeswitchStatusCommand.java b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/actions/CheckFreeswitchStatusCommand.java index 0278150286..db73f9c9df 100755 --- a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/actions/CheckFreeswitchStatusCommand.java +++ b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/actions/CheckFreeswitchStatusCommand.java @@ -36,7 +36,7 @@ public class CheckFreeswitchStatusCommand extends FreeswitchCommand { log.info(gson.toJson(response.getBodyLines())); FreeswitchStatusReplyEvent statusEvent = new FreeswitchStatusReplyEvent( sendCommandTimestamp, - gson.toJson(response.getBodyLines()), + response.getBodyLines(), receivedResponsTimestatmp); eventListener.handleConferenceEvent(statusEvent); } diff --git a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/ApiService.scala b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/ApiService.scala index dc398f49ba..2c0b32cfd6 100755 --- a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/ApiService.scala +++ b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/ApiService.scala @@ -7,7 +7,8 @@ import akka.http.scaladsl.server.Directives._ import akka.stream.Materializer import com.google.gson.Gson import org.bigbluebutton.service.{ HealthzResponse, HealthzService } - +import scala.collection.JavaConverters._ +import scala.collection.mutable import scala.util.{ Failure, Success } class ApiService(healthz: HealthzService)(implicit executor: ExecutionContext, as: ActorSystem, mat: Materializer) { @@ -18,8 +19,8 @@ class ApiService(healthz: HealthzService)(implicit executor: ExecutionContext, a onSuccess(healthz.getHealthz()) { case res => val gson = new Gson() - val response = new HealthzResponse(res.toFS, res.fromFS) - complete(StatusCodes.OK, HttpEntity(ContentTypes.`application/json`, gson.toJson(response))) + val response = Map("status" -> res.toFS, "heartbeat" -> res.fromFS.asJava) + complete(StatusCodes.OK, HttpEntity(ContentTypes.`application/json`, gson.toJson(response.asJava))) case _ => complete(StatusCodes.ServiceUnavailable) } diff --git a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/freeswitch/VoiceConferenceService.scala b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/freeswitch/VoiceConferenceService.scala index 01a16b73b2..8ca3b0fb40 100755 --- a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/freeswitch/VoiceConferenceService.scala +++ b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/freeswitch/VoiceConferenceService.scala @@ -7,6 +7,7 @@ import org.bigbluebutton.common2.util.JsonUtil import org.bigbluebutton.common2.redis.RedisPublisher import org.bigbluebutton.freeswitch.voice.events.{ConfMember, ConfRecording} import org.bigbluebutton.service.HealthzService +import scala.collection.JavaConverters._ class VoiceConferenceService(healthz: HealthzService, sender: RedisPublisher, @@ -306,7 +307,7 @@ class VoiceConferenceService(healthz: HealthzService, def freeswitchStatusReplyEvent( sendCommandTimestamp: java.lang.Long, - json: String, + status: java.util.List[String], receivedResponsTimestatmp: java.lang.Long ): Unit = { // Placeholder so we can add a /healthz check endpoint to @@ -314,13 +315,15 @@ class VoiceConferenceService(healthz: HealthzService, //println("***** >>>> " + sendCommandTimestamp) //println(json) //println("<<<< ***** " + receivedResponsTimestatmp) - healthz.setFreeswitchStatus(json) + val seq = status.asScala.toIndexedSeq.toVector + println(seq) + healthz.setFreeswitchStatus(seq) } - def freeswitchHeartbeatEvent(json: String): Unit = { + def freeswitchHeartbeatEvent(heartbeat: java.util.Map[String, String]): Unit = { //println("***** >>>> ") //println(json) //println("<<<< ***** ") - healthz.setFreeswitchHeartbeat(json) + healthz.setFreeswitchHeartbeat(heartbeat.asScala.toMap) } } diff --git a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/service/HealthzService.scala b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/service/HealthzService.scala index f7f4ea72f0..3710981a2a 100755 --- a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/service/HealthzService.scala +++ b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/service/HealthzService.scala @@ -4,15 +4,14 @@ import akka.actor.{ Actor, ActorContext, ActorLogging, Props } import akka.actor.ActorSystem import akka.pattern.ask import akka.util.Timeout +import com.google.gson.Gson import scala.concurrent.duration._ -import scala.util.Success -import scala.util.Failure -import scala.concurrent.{ Await, Future } +import scala.concurrent.{ Future } -case class HealthzResponse(toFS: String, fromFS: String) -case class ToFSStatus(status: String) -case class FromFsStatus(status: String) +case class HealthzResponse(toFS: Array[String], fromFS: Map[String, String]) +case class ToFSStatus(status: Vector[String]) +case class FromFsStatus(status: Map[String, String]) case object GetHealthStatus object HealthzService { @@ -46,11 +45,11 @@ class HealthzService(system: ActorSystem) { future } - def setFreeswitchHeartbeat(json: String): Unit = { + def setFreeswitchHeartbeat(json: Map[String, String]): Unit = { actorRef ! FromFsStatus(json) } - def setFreeswitchStatus(json: String): Unit = { + def setFreeswitchStatus(json: Vector[String]): Unit = { actorRef ! ToFSStatus(json) } } @@ -62,24 +61,27 @@ object HealthzActor { class HealthzActor extends Actor with ActorLogging { - var heartbeat = "" + var heartbeat: Map[String, String] = Map.empty var lastHeartbeatTimestamp: Long = System.currentTimeMillis() - var fsStatus = "" + var fsStatus: Vector[String] = Vector.empty var lastFsStatus: Long = System.currentTimeMillis() def receive = { case msg: ToFSStatus => - println(msg) + val gson = new Gson() + println("ToFSStatus => " + gson.toJson(msg.status.toArray)) fsStatus = msg.status lastFsStatus = System.currentTimeMillis() case msg: FromFsStatus => - println(msg) + println("FromFsStatus => " + msg) + val gson = new Gson() heartbeat = msg.status lastHeartbeatTimestamp = System.currentTimeMillis() case GetHealthStatus => println("GetHealthStatus") - sender ! HealthzResponse(fsStatus, heartbeat) + println("GetHealthStatus => " + heartbeat) + sender ! HealthzResponse(fsStatus.toArray, heartbeat) case _ => println("that was unexpected") } } -- GitLab