nit0906 commented on a change in pull request #372:
URL: https://github.com/apache/jackrabbit-oak/pull/372#discussion_r711989590



##########
File path: 
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexPrinter.java
##########
@@ -66,97 +68,190 @@ public IndexPrinter(IndexInfoService indexInfoService, 
AsyncIndexInfoService asy
 
     @Override
     public void print(PrintWriter pw, Format format, boolean isZip) {
-        //TODO Highlight if failing
-        printAsyncIndexInfo(pw);
-        printIndexInfo(pw);
+
+        if (format == Format.JSON) {
+            JsopBuilder json = new JsopBuilder();
+            startJsonObject(json);
+            printAsyncIndexInfo(pw, json, format);
+            printIndexInfo(pw, json, format);
+            endJsonObject(json);
+            pw.print(JsopBuilder.prettyPrint(json.toString()));
+        } else {
+            //TODO Highlight if failing
+            printAsyncIndexInfo(pw, null, format);
+            printIndexInfo(pw, null, format);
+        }
     }
 
-    private void printAsyncIndexInfo(PrintWriter pw) {
+    private void printAsyncIndexInfo(PrintWriter pw, JsopBuilder json, Format 
format) {
         List<String> asyncLanes = 
ImmutableList.copyOf(asyncIndexInfoService.getAsyncLanes());
         String title = "Async Indexers State";
-        printTitle(pw, title);
-        pw.printf("Number of async indexer lanes : %d%n", asyncLanes.size());
-        pw.println();
+        printTitle(pw, title, format);
+        addJsonKey(json, title);
+        startJsonObject(json);
+        keyValue("Number of async indexer lanes ", asyncLanes.size(), pw, 
json, format);
+        printWithNewLine(pw, "", format);
+
         for (String lane : asyncLanes) {
-            pw.println(lane);
+            printWithNewLine(pw, lane, format);
+            addJsonKey(json, lane);
             AsyncIndexInfo info = asyncIndexInfoService.getInfo(lane);
+            startJsonObject(json);
             if (info != null) {
-                        pw.printf("    Last indexed to      : %s%n", 
formatTime(info.getLastIndexedTo()));
+                keyValue("    Last indexed to      ", 
formatTime(info.getLastIndexedTo()), pw, json, format);
                 IndexStatsMBean stats = info.getStatsMBean();
                 if (stats != null) {
-                        pw.printf("    Status              : %s%n", 
stats.getStatus());
-                        pw.printf("    Failing             : %s%n", 
stats.isFailing());
-                        pw.printf("    Paused              : %s%n", 
stats.isPaused());
+                    keyValue("    Status              ", stats.getStatus(), 
pw, json, format);
+                    keyValue("    Failing             ", stats.isFailing(), 
pw, json, format);
+                    keyValue("    Paused              ", stats.isPaused(), pw, 
json, format);
                     if (stats.isFailing()) {
-                        pw.printf("    Failing since       : %s%n", 
stats.getFailingSince());
-                        pw.printf("    Latest error        : %s%n", 
stats.getLatestError());
+                        keyValue("    Failing since       ", 
stats.getFailingSince(), pw, json, format);
+                        keyValue("    Latest error        ", 
stats.getLatestError(), pw, json, format);
                     }
                 }
-                pw.println();
+                printWithNewLine(pw, "", format);
             }
+            endJsonObject(json);
         }
+        endJsonObject(json);
     }
 
-    private static void printTitle(PrintWriter pw, String title) {
-        pw.println(title);
-        pw.println(Strings.repeat("=", title.length()));
+    private static void printTitle(PrintWriter pw, String title, Format 
format) {
+        if (format == Format.TEXT) {
+            pw.println(title);
+            pw.println(Strings.repeat("=", title.length()));
+            pw.println();
+        }
     }
 
-    private void printIndexInfo(PrintWriter pw) {
+    private static void printWithNewLine(PrintWriter pw, String printLine, 
Format format) {
+        if (format == Format.TEXT) {
+            pw.println(printLine);
+        }
+    }
+
+    private void printIndexInfo(PrintWriter pw, JsopBuilder json, Format 
format) {
         ListMultimap<String, IndexInfo> infos = ArrayListMultimap.create();
         for (IndexInfo info : indexInfoService.getAllIndexInfo()) {
             infos.put(info.getType(), info);
         }
 
-        pw.printf("Total number of indexes : %d%n", infos.size());
+        keyValue("Total number of indexes ", infos.size(), pw, json, format);
+
         for (String type : infos.keySet()){
             List<IndexInfo> typedInfo = infos.get(type);
             String title = String.format("%s(%d)", type, typedInfo.size());
-            printTitle(pw, title);
-            pw.println();
+            printTitle(pw, title, format);
+            addJsonKey(json, type);
+            startJsonObject(json);
             for (IndexInfo info : typedInfo){
-                printIndexInfo(pw, info);
+                printIndexInfo(pw, json, info, format);
+                if (format == Format.TEXT) {
+                    if (info.hasIndexDefinitionChangedWithoutReindexing()) {

Review comment:
       yes - I was thinking that this diff was also in json, and might cause 
formatting issues - but it's not in json. I have modified for the json stats 
also to include this




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to