AbsTrans.java-sonar fixes
[aaf/authz.git] / misc / env / src / main / java / org / onap / aaf / misc / env / impl / AbsTrans.java
index b86b4fb..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,60 +122,73 @@ 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
+        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
-            for(TimeTaken tt : trail) {\r
+        if (sb==null) {\r
+            for (TimeTaken tt : trail) {\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
+                for (int i=0;i<flags.length;++i) {\r
+                    if (tt.flag == flags[i]) metric.buckets[i]+=ms;\r
                 }\r
             }\r
-        } else if(!lt.isLoggable()) {\r
+        } else if (!lt.isLoggable()) {\r
             boolean first = true;\r
-            for(TimeTaken tt : trail) {\r
+            for (TimeTaken tt : trail) {\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
+                for (int i=0;i<flags.length;++i) {\r
+                    if (tt.flag == flags[i]) metric.buckets[i]+=ms;\r
                 }\r
-                if((tt.flag&ALWAYS)==ALWAYS) {\r
-                    if(first) first = false;\r
+                if ((tt.flag&ALWAYS)==ALWAYS) {\r
+                    if (first) first = false;\r
                     else sb.append('/');\r
                     sb.append(tt.name);\r
                 }\r
             }            \r
         } else {\r
-            Stack<Long> stack = new Stack<Long>();\r
-            for(TimeTaken tt : trail) {\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
+                while (!stack.isEmpty() && tt.end()>stack.peek()) {\r
                     --indent;\r
                     stack.pop();\r
                 }\r
-                for(int i=0;i<indent;++i) {\r
+                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
+                if ((tt.flag&SUB)==SUB) {\r
                     stack.push(tt.end());\r
                     ++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
@@ -200,7 +213,7 @@ public abstract class AbsTrans<ENV extends Env> implements TransStore {
         Object o;\r
         try {\r
             o = slot.get(state);\r
-        } catch(ArrayIndexOutOfBoundsException e) {\r
+        } catch (ArrayIndexOutOfBoundsException e) {\r
             // Env State Size has changed because of dynamic Object creation... Rare event, but needs to be covered\r
             Object[] temp = ((StoreImpl) delegate).newTransState();\r
             System.arraycopy(state, 0, temp, 0, state.length);\r