This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new c2bdac8  camel-jbang - Add health check status
c2bdac8 is described below

commit c2bdac83c19c04c827f60f6a262fc8be696226f6
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Fri Jan 28 13:42:32 2022 +0100

    camel-jbang - Add health check status
---
 .../org/apache/camel/main/VertxHttpServer.java     | 43 +++++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)

diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java
 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java
index 144ee95..d93dfc7 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java
@@ -18,7 +18,10 @@ package org.apache.camel.main;
 
 import java.util.Collection;
 import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Optional;
 import java.util.Set;
+import java.util.TreeSet;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import io.vertx.core.Handler;
@@ -216,7 +219,45 @@ public final class VertxHttpServer {
                 if (up) {
                     sb.append("    \"status\": \"UP\"\n");
                 } else {
-                    sb.append("    \"status\": \"DOWN\"\n");
+                    Optional<HealthCheck.Result> down
+                            = res.stream().filter(r -> 
r.getState().equals(HealthCheck.State.DOWN)).findFirst();
+                    sb.append("    \"status\": \"DOWN\"");
+                    if (down.isPresent()) {
+                        sb.append(",\n");
+                        HealthCheck.Result d = down.get();
+                        sb.append("    \"checks\": [\n");
+                        sb.append("        {\n");
+                        sb.append("            \"name\": 
\"").append(d.getCheck().getId()).append("\",\n");
+                        sb.append("            \"status\": 
\"").append(d.getState()).append("\",\n");
+                        if (d.getError().isPresent()) {
+                            String msg = d.getError().get().getMessage();
+                            sb.append("            \"error-message\": 
\"").append(msg)
+                                    .append("\",\n");
+                        }
+                        if (d.getMessage().isPresent()) {
+                            sb.append("            \"message\": 
\"").append(d.getMessage().get()).append("\",\n");
+                        }
+                        if (d.getDetails() != null && 
!d.getDetails().isEmpty()) {
+                            // lets use sorted keys
+                            Iterator<String> it = new 
TreeSet<>(d.getDetails().keySet()).iterator();
+                            sb.append("            \"data\": {\n");
+                            while (it.hasNext()) {
+                                String k = it.next();
+                                Object v = d.getDetails().get(k);
+                                boolean last = !it.hasNext();
+                                sb.append("                 
\"").append(k).append("\": \"").append(v).append("\"");
+                                if (!last) {
+                                    sb.append(",");
+                                }
+                                sb.append("\n");
+                            }
+                            sb.append("            }\n");
+                        }
+                        sb.append("        }\n");
+                        sb.append("    ]\n");
+                    } else {
+                        sb.append("\n");
+                    }
                 }
                 sb.append("}\n");
 

Reply via email to