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

cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git


The following commit(s) were added to refs/heads/master by this push:
     new f506e907d5 FELIX-6717 : Include status info about Preprocessors
f506e907d5 is described below

commit f506e907d5ee3d68869ad01227b4f905d8495d0c
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Sat Jul 6 16:34:09 2024 +0200

    FELIX-6717 : Include status info about Preprocessors
---
 .../impl/HttpInventoryPrinter.java                 |  23 +++++
 .../webconsoleplugin/impl/HttpServicePlugin.java   | 110 ++++++++++++++++++---
 2 files changed, 119 insertions(+), 14 deletions(-)

diff --git 
a/http/inventoryprinter/src/main/java/org/apache/felix/http/inventoryprinter/impl/HttpInventoryPrinter.java
 
b/http/inventoryprinter/src/main/java/org/apache/felix/http/inventoryprinter/impl/HttpInventoryPrinter.java
index a17a500a0d..2d52a04fb9 100644
--- 
a/http/inventoryprinter/src/main/java/org/apache/felix/http/inventoryprinter/impl/HttpInventoryPrinter.java
+++ 
b/http/inventoryprinter/src/main/java/org/apache/felix/http/inventoryprinter/impl/HttpInventoryPrinter.java
@@ -38,11 +38,13 @@ import org.osgi.service.servlet.runtime.dto.ErrorPageDTO;
 import org.osgi.service.servlet.runtime.dto.FailedErrorPageDTO;
 import org.osgi.service.servlet.runtime.dto.FailedFilterDTO;
 import org.osgi.service.servlet.runtime.dto.FailedListenerDTO;
+import org.osgi.service.servlet.runtime.dto.FailedPreprocessorDTO;
 import org.osgi.service.servlet.runtime.dto.FailedResourceDTO;
 import org.osgi.service.servlet.runtime.dto.FailedServletContextDTO;
 import org.osgi.service.servlet.runtime.dto.FailedServletDTO;
 import org.osgi.service.servlet.runtime.dto.FilterDTO;
 import org.osgi.service.servlet.runtime.dto.ListenerDTO;
+import org.osgi.service.servlet.runtime.dto.PreprocessorDTO;
 import org.osgi.service.servlet.runtime.dto.ResourceDTO;
 import org.osgi.service.servlet.runtime.dto.RuntimeDTO;
 import org.osgi.service.servlet.runtime.dto.ServletContextDTO;
@@ -168,6 +170,15 @@ public class HttpInventoryPrinter implements 
InventoryPrinter {
             pw.println(getValueAsString(prop.getValue()));
         }
         pw.println();
+        if (dto.preprocessorDTOs.length > 0) {
+            pw.println("Preprocessors");
+            pw.println("-------------");
+            for(final PreprocessorDTO pp : dto.preprocessorDTOs) {
+                printServiceIdAndRanking(pw, 
this.getServiceReference(pp.serviceId), pp.serviceId);
+                pw.println();
+            }
+            pw.println();
+        }
         for(final ServletContextDTO ctxDto : dto.servletContextDTOs ) {
             pw.print("Servlet Context ");
             pw.println(ctxDto.name);
@@ -264,6 +275,18 @@ public class HttpInventoryPrinter implements 
InventoryPrinter {
             pw.println();
         }
 
+        if (dto.failedPreprocessorDTOs.length > 0) {
+            pw.println("Failed Preprocessors");
+            pw.println("--------------------");
+            for(final FailedPreprocessorDTO pp : dto.failedPreprocessorDTOs) {
+                printServiceIdAndRanking(pw, 
this.getServiceReference(pp.serviceId), pp.serviceId);
+                pw.print("Reason : ");
+                pw.println(getErrorText(pp.failureReason));
+                pw.println();
+            }
+            pw.println();
+        }
+
         if ( dto.failedServletContextDTOs.length > 0 ) {
             for(final FailedServletContextDTO ctxDto : 
dto.failedServletContextDTOs ) {
                 pw.print("Failed Servlet Context ");
diff --git 
a/http/webconsoleplugin/src/main/java/org/apache/felix/http/webconsoleplugin/impl/HttpServicePlugin.java
 
b/http/webconsoleplugin/src/main/java/org/apache/felix/http/webconsoleplugin/impl/HttpServicePlugin.java
index 10ba2fc0e8..fa3d7fef02 100644
--- 
a/http/webconsoleplugin/src/main/java/org/apache/felix/http/webconsoleplugin/impl/HttpServicePlugin.java
+++ 
b/http/webconsoleplugin/src/main/java/org/apache/felix/http/webconsoleplugin/impl/HttpServicePlugin.java
@@ -44,11 +44,13 @@ import org.osgi.service.servlet.runtime.dto.ErrorPageDTO;
 import org.osgi.service.servlet.runtime.dto.FailedErrorPageDTO;
 import org.osgi.service.servlet.runtime.dto.FailedFilterDTO;
 import org.osgi.service.servlet.runtime.dto.FailedListenerDTO;
+import org.osgi.service.servlet.runtime.dto.FailedPreprocessorDTO;
 import org.osgi.service.servlet.runtime.dto.FailedResourceDTO;
 import org.osgi.service.servlet.runtime.dto.FailedServletContextDTO;
 import org.osgi.service.servlet.runtime.dto.FailedServletDTO;
 import org.osgi.service.servlet.runtime.dto.FilterDTO;
 import org.osgi.service.servlet.runtime.dto.ListenerDTO;
+import org.osgi.service.servlet.runtime.dto.PreprocessorDTO;
 import org.osgi.service.servlet.runtime.dto.RequestInfoDTO;
 import org.osgi.service.servlet.runtime.dto.ResourceDTO;
 import org.osgi.service.servlet.runtime.dto.RuntimeDTO;
@@ -98,7 +100,7 @@ public class HttpServicePlugin extends HttpServlet {
                     } else {
                         sb.append(", ");
                     }
-                    sb.append(f.serviceId);
+                    sb.append(String.valueOf(f.serviceId));
                 }
                 sb.append("]");
             } else if ( dto.resourceDTO != null ) {
@@ -115,7 +117,7 @@ public class HttpServicePlugin extends HttpServlet {
                     } else {
                         sb.append(", ");
                     }
-                    sb.append(f.serviceId);
+                    sb.append(String.valueOf(f.serviceId));
                 }
                 sb.append("]");
             } else {
@@ -160,9 +162,12 @@ public class HttpServicePlugin extends HttpServlet {
 
         printRuntimeDetails(pw, dto.serviceDTO);
 
+        printPreprocessorDetails(pw, dto.preprocessorDTOs);
+    
         for(final ServletContextDTO ctxDto : dto.servletContextDTOs ) {
             printContextDetails(pw, ctxDto);
         }
+        printFailedPreprocessorDetails(pw, dto);
         for(final FailedServletContextDTO ctxDto : 
dto.failedServletContextDTOs ) {
             printFailedContextDetails(pw, ctxDto);
         }
@@ -274,6 +279,42 @@ public class HttpServicePlugin extends HttpServlet {
         pw.println("<br/>");
     }
 
+    private String getServiceLink(final long serviceId) {
+        if (serviceId < 0) {
+            return String.valueOf(serviceId);
+        }
+        return "${#slink:" + serviceId + "}" + serviceId + "${slink#}";
+    }
+
+    private void printPreprocessorDetails(final PrintWriter pw, final 
PreprocessorDTO[] dtos) {
+        if (dtos.length == 0) {
+            return;
+        }
+        pw.println("<p class=\"statline ui-state-highlight\">${Preprocessor 
Services}</p>");
+        pw.println("<table class=\"nicetable\">");
+        pw.println("<thead><tr>");
+        pw.println("<th class=\"header\">${Preprocessor}</th>");
+        pw.println("</tr></thead>");
+        boolean odd = true;
+        for(final PreprocessorDTO pp : dtos) {
+            final StringBuilder sb = new StringBuilder();
+            final ServiceReference<?> ref = 
this.getServiceReference(pp.serviceId);
+            sb.append("${service.id} : 
").append(getServiceLink(pp.serviceId)).append("\n");
+            appendServiceRanking(sb, ref);
+            if ( ref != null ) {
+                sb.append("${bundle} : ");
+                sb.append("${#link:");
+                sb.append(ref.getBundle().getBundleId());
+                sb.append("}");
+                sb.append(ref.getBundle().getSymbolicName());
+                sb.append("${link#}\n");
+            }
+            odd = printRow(pw, odd, sb.toString());
+        }
+        pw.println("</table>");
+        pw.println("<br/>");
+    }
+
     private boolean printRow(final PrintWriter pw, final boolean odd, final 
String...columns) {
         pw.print("<tr class=\"");
         if ( odd ) pw.print("odd"); else pw.print("even");
@@ -292,6 +333,14 @@ public class HttpServicePlugin extends HttpServlet {
                     text = text.substring(0, pos) + "<a 
href=\"${appRoot}/bundles/" + String.valueOf(bundleId) + "\">" +
                            text.substring(endPos + 1, tokenEndPos) + "</a>" + 
text.substring(tokenEndPos + 8);
                 }
+                while ( (pos = text.indexOf("${#slink:")) != -1) {
+                    final int endPos = text.indexOf("}", pos);
+                    final int serviceId = Integer.valueOf(text.substring(pos + 
9, endPos));
+                    final int tokenEndPos = text.indexOf("${slink#}", pos);
+
+                    text = text.substring(0, pos) + "<a 
href=\"${appRoot}/services/" + String.valueOf(serviceId) + "\">" +
+                           text.substring(endPos + 1, tokenEndPos) + "</a>" + 
text.substring(tokenEndPos + 9);
+                }
                 pw.print(text);
             }
             pw.println("</td>");
@@ -334,7 +383,7 @@ public class HttpServicePlugin extends HttpServlet {
         pw.println("<th class=\"header\">${Value)}</th>");
         pw.println("</tr></thead>");
         odd = printRow(pw, odd, "${Path}", getContextPath(dto.contextPath));
-        odd = printRow(pw, odd, "${service.id}", 
String.valueOf(dto.serviceId));
+        odd = printRow(pw, odd, "${service.id}", 
getServiceLink(dto.serviceId));
         odd = printServiceRankingRow(pw, dto.serviceId, odd);
         pw.println("</table>");
 
@@ -362,7 +411,7 @@ public class HttpServicePlugin extends HttpServlet {
         odd = printRow(pw, odd, "${Path}",
                 dto.contextPath == null ? dto.contextPath : 
getContextPath(dto.contextPath));
         odd = printRow(pw, odd, "${reason}", getErrorText(dto.failureReason));
-        odd = printRow(pw, odd, "${service.id}", 
String.valueOf(dto.serviceId));
+        odd = printRow(pw, odd, "${service.id}", 
getServiceLink(dto.serviceId));
         pw.println("</table>");
     }
 
@@ -396,7 +445,7 @@ public class HttpServicePlugin extends HttpServlet {
         for (final FilterDTO filter : dto.filterDTOs) {
             final ServiceReference<?> ref = 
this.getServiceReference(filter.serviceId);
             final StringBuilder sb = new StringBuilder();
-            sb.append("${service.id} : 
").append(String.valueOf(filter.serviceId)).append("\n");
+            sb.append("${service.id} : 
").append(getServiceLink(filter.serviceId)).append("\n");
             appendServiceRanking(sb, ref);
             sb.append("${async} : 
").append(String.valueOf(filter.asyncSupported)).append("\n");
             sb.append("${dispatcher} : 
").append(getValueAsString(filter.dispatcher)).append("\n");
@@ -437,6 +486,39 @@ public class HttpServicePlugin extends HttpServlet {
         default: return "unknown";
         }
     }
+
+    private void printFailedPreprocessorDetails(final PrintWriter pw, final 
RuntimeDTO dto) {
+        if ( dto.failedPreprocessorDTOs.length == 0 ) {
+            return;
+        }
+        pw.print("<p class=\"statline ui-state-highlight\">${Failed 
Preprocessor Services}</p>");
+
+        pw.println("<table class=\"nicetable\">");
+        pw.println("<thead><tr>");
+        pw.println("<th class=\"header\">${Preprocessor}</th>");
+        pw.println("<th class=\"header\">${Info}</th>");
+        pw.println("</tr></thead>");
+
+        boolean odd = true;
+        for (final FailedPreprocessorDTO pp : dto.failedPreprocessorDTOs) {
+            final String reason = getErrorText(pp.failureReason);
+            final StringBuilder sb = new StringBuilder();
+            final ServiceReference<?> ref = 
this.getServiceReference(pp.serviceId);
+            sb.append("${service.id} : 
").append(getServiceLink(pp.serviceId)).append("\n");
+            appendServiceRanking(sb, ref);
+            if ( ref != null ) {
+                sb.append("${bundle} : ");
+                sb.append("${#link:");
+                sb.append(ref.getBundle().getBundleId());
+                sb.append("}");
+                sb.append(ref.getBundle().getSymbolicName());
+                sb.append("${link#}\n");
+            }
+            odd = printRow(pw, odd, sb.toString(), reason);
+        }
+        pw.println("</table>");
+    }
+
     private void printFailedFilterDetails(final PrintWriter pw, final 
RuntimeDTO dto) {
         if ( dto.failedFilterDTOs.length == 0 ) {
             return;
@@ -455,7 +537,7 @@ public class HttpServicePlugin extends HttpServlet {
             final StringBuilder sb = new StringBuilder();
             sb.append("${reason} : 
").append(getErrorText(filter.failureReason)).append("\n");
             final ServiceReference<?> ref = 
this.getServiceReference(filter.serviceId);
-            sb.append("${service.id} : 
").append(String.valueOf(filter.serviceId)).append("\n");
+            sb.append("${service.id} : 
").append(getServiceLink(filter.serviceId)).append("\n");
             appendServiceRanking(sb, ref);
             sb.append("${async} : 
").append(String.valueOf(filter.asyncSupported)).append("\n");
             sb.append("${dispatcher} : 
").append(getValueAsString(filter.dispatcher)).append("\n");
@@ -517,7 +599,7 @@ public class HttpServicePlugin extends HttpServlet {
         for (final ServletDTO servlet : dto.servletDTOs) {
             final StringBuilder sb = new StringBuilder();
             final ServiceReference<?> ref = 
this.getServiceReference(servlet.serviceId);
-            sb.append("${service.id} : 
").append(String.valueOf(servlet.serviceId)).append("\n");
+            sb.append("${service.id} : 
").append(getServiceLink(servlet.serviceId)).append("\n");
             appendServiceRanking(sb, ref);
             sb.append("${async} : 
").append(String.valueOf(servlet.asyncSupported)).append("\n");
             if ( ref != null ) {
@@ -556,7 +638,7 @@ public class HttpServicePlugin extends HttpServlet {
             final StringBuilder sb = new StringBuilder();
             sb.append("${reason} : 
").append(getErrorText(servlet.failureReason)).append("\n");
             final ServiceReference<?> ref = 
this.getServiceReference(servlet.serviceId);
-            sb.append("${service.id} : 
").append(String.valueOf(servlet.serviceId)).append("\n");
+            sb.append("${service.id} : 
").append(getServiceLink(servlet.serviceId)).append("\n");
             appendServiceRanking(sb, ref);
             sb.append("${async} : 
").append(String.valueOf(servlet.asyncSupported)).append("\n");
             if ( ref != null ) {
@@ -596,7 +678,7 @@ public class HttpServicePlugin extends HttpServlet {
         for (final ResourceDTO rsrc : dto.resourceDTOs) {
             final StringBuilder sb = new StringBuilder();
             final ServiceReference<?> ref = 
this.getServiceReference(rsrc.serviceId);
-            sb.append("${service.id} : 
").append(String.valueOf(rsrc.serviceId)).append("\n");
+            sb.append("${service.id} : 
").append(getServiceLink(rsrc.serviceId)).append("\n");
             appendServiceRanking(sb, ref);
             if ( ref != null ) {
                 sb.append("${bundle} : ");
@@ -634,7 +716,7 @@ public class HttpServicePlugin extends HttpServlet {
             final StringBuilder sb = new StringBuilder();
             sb.append("${reason} : 
").append(getErrorText(rsrc.failureReason)).append("\n");
             final ServiceReference<?> ref = 
this.getServiceReference(rsrc.serviceId);
-            sb.append("${service.id} : 
").append(String.valueOf(rsrc.serviceId)).append("\n");
+            sb.append("${service.id} : 
").append(getServiceLink(rsrc.serviceId)).append("\n");
             appendServiceRanking(sb, ref);
             if ( ref != null ) {
                 sb.append("${bundle} : ");
@@ -673,7 +755,7 @@ public class HttpServicePlugin extends HttpServlet {
         for (final ErrorPageDTO ep : dto.errorPageDTOs) {
             final StringBuilder sb = new StringBuilder();
             final ServiceReference<?> ref = 
this.getServiceReference(ep.serviceId);
-            sb.append("${service.id} : 
").append(String.valueOf(ep.serviceId)).append("\n");
+            sb.append("${service.id} : 
").append(getServiceLink(ep.serviceId)).append("\n");
             appendServiceRanking(sb, ref);
             sb.append("${async} : 
").append(String.valueOf(ep.asyncSupported)).append("\n");
             if ( ref != null ) {
@@ -715,7 +797,7 @@ public class HttpServicePlugin extends HttpServlet {
             final StringBuilder sb = new StringBuilder();
             sb.append("${reason} : 
").append(getErrorText(ep.failureReason)).append("\n");
             final ServiceReference<?> ref = 
this.getServiceReference(ep.serviceId);
-            sb.append("${service.id} : 
").append(String.valueOf(ep.serviceId)).append("\n");
+            sb.append("${service.id} : 
").append(getServiceLink(ep.serviceId)).append("\n");
             appendServiceRanking(sb, ref);
             sb.append("${async} : 
").append(String.valueOf(ep.asyncSupported)).append("\n");
             if ( ref != null ) {
@@ -757,7 +839,7 @@ public class HttpServicePlugin extends HttpServlet {
         for (final ListenerDTO ep : dto.listenerDTOs) {
             final StringBuilder sb = new StringBuilder();
             final ServiceReference<?> ref = 
this.getServiceReference(ep.serviceId);
-            sb.append("${service.id} : 
").append(String.valueOf(ep.serviceId)).append("\n");
+            sb.append("${service.id} : 
").append(getServiceLink(ep.serviceId)).append("\n");
             appendServiceRanking(sb, ref);
             if ( ref != null ) {
                 sb.append("${bundle} : ");
@@ -793,7 +875,7 @@ public class HttpServicePlugin extends HttpServlet {
             final StringBuilder sb = new StringBuilder();
             sb.append("${reason} : 
").append(getErrorText(ep.failureReason)).append("\n");
             final ServiceReference<?> ref = 
this.getServiceReference(ep.serviceId);
-            sb.append("${service.id} : 
").append(String.valueOf(ep.serviceId)).append("\n");
+            sb.append("${service.id} : 
").append(getServiceLink(ep.serviceId)).append("\n");
             appendServiceRanking(sb, ref);
             if ( ref != null ) {
                 sb.append("${bundle} : ");

Reply via email to