AbsTrans.java-sonar fixes
[aaf/authz.git] / misc / env / src / main / java / org / onap / aaf / misc / env / impl / AbsTrans.java
index c0e7bde..c785f2c 100644 (file)
@@ -92,26 +92,26 @@ public abstract class AbsTrans<ENV extends Env> implements TransStore {
      * @param flag\r
      * @return\r
      */\r
-    protected abstract TimeTaken newTimeTaken(String name, int flag);\r
+    protected abstract TimeTaken newTimeTaken(String name, int flag, Object ... values);\r
     \r
-//    @Override\r
-    public final TimeTaken start(String name, int flag) {\r
-        TimeTaken tt = newTimeTaken(name,flag);\r
+    @Override\r
+    public final TimeTaken start(String name, int flag, Object ... values) {\r
+        TimeTaken tt = newTimeTaken(name,flag, values);\r
         trail.add(tt);\r
         return tt;\r
     }\r
     \r
-//    @Override\r
+    @Override\r
     public final void checkpoint(String name) {\r
         TimeTaken tt = newTimeTaken(name,CHECKPOINT);\r
         tt.done();\r
         trail.add(tt);\r
     }\r
 \r
+    @Override\r
     public final void checkpoint(String name, int additionalFlag) {\r
         TimeTaken tt = newTimeTaken(name,CHECKPOINT|additionalFlag);\r
         trail.add(tt);\r
-        tt.done();\r
     }\r
 \r
     @Override\r
@@ -122,15 +122,21 @@ public abstract class AbsTrans<ENV extends Env> implements TransStore {
     @Override\r
     public Metric auditTrail(LogTarget lt, int indent, StringBuilder sb, int ... flags) {\r
         Metric metric = new Metric();\r
-        int last = (metric.entries = trail.size()) -1;\r
+        metric.entries = trail.size();\r
+        int last = (metric.entries) -1;\r
         metric.buckets = flags.length==0?EMPTYF:new float[flags.length];\r
         if (last>=0) {\r
             TimeTaken first = trail.get(0);\r
             // If first entry is sub, then it's actually the last "end" as well\r
             // otherwise, check end\r
             //long end = (first.flag&SUB)==SUB?first.end():trail.get(last).end();\r
-            long end = trail.get(last).end();\r
+            long end = 0L;\r
+            for(int i=last;end==0L && i>=0;--i) {\r
+                end= trail.get(i).end();\r
+            }\r
             metric.total = (end - first.start) / 1000000f;\r
+        } else {\r
+            metric.total=0L;\r
         }\r
         \r
         if (sb==null) {\r
@@ -154,7 +160,7 @@ public abstract class AbsTrans<ENV extends Env> implements TransStore {
                 }\r
             }            \r
         } else {\r
-            Stack<Long> stack = new Stack<Long>();\r
+            Stack<Long> stack = new Stack<>();\r
             for (TimeTaken tt : trail) {\r
                 // Create Indentation based on SUB\r
                 while (!stack.isEmpty() && tt.end()>stack.peek()) {\r
@@ -164,6 +170,18 @@ public abstract class AbsTrans<ENV extends Env> implements TransStore {
                 for (int i=0;i<indent;++i) {\r
                     sb.append("  ");\r
                 }\r
+                if((tt.flag & CHECKPOINT)==CHECKPOINT) {\r
+                    // Checkpoint\r
+                    sb.append("  ");\r
+                } else {\r
+                    float ms=tt.millis();\r
+                    // Add time values to Metric\r
+                    for (int i=0;i<flags.length;++i) {\r
+                        if ((tt.flag & flags[i]) == flags[i]) {\r
+                            metric.buckets[i]+=ms;\r
+                        }\r
+                    }\r
+                }\r
                 tt.output(sb);\r
                 sb.append('\n');\r
                 if ((tt.flag&SUB)==SUB) {\r
@@ -171,11 +189,6 @@ public abstract class AbsTrans<ENV extends Env> implements TransStore {
                     ++indent;\r
                 }\r
                 \r
-                // Add time values to Metric\r
-                float ms = tt.millis();\r
-                for (int i=0;i<flags.length;++i) {\r
-                    if (tt.flag == flags[i]) metric.buckets[i]+=ms;\r
-                }\r
             }\r
         }\r
         return metric;\r