AbsTrans.java-sonar fixes
[aaf/authz.git] / misc / env / src / main / java / org / onap / aaf / misc / env / impl / AbsTrans.java
index a04b63e..c785f2c 100644 (file)
-/**
- * ============LICENSE_START====================================================
- * org.onap.aaf
- * ===========================================================================
- * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
- * ===========================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END====================================================
- *
- */
-
-package org.onap.aaf.misc.env.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Stack;
-
-import org.onap.aaf.misc.env.Env;
-import org.onap.aaf.misc.env.LogTarget;
-import org.onap.aaf.misc.env.Slot;
-import org.onap.aaf.misc.env.StoreImpl;
-import org.onap.aaf.misc.env.TimeTaken;
-import org.onap.aaf.misc.env.TransStore;
-
-public abstract class AbsTrans<ENV extends Env> implements TransStore {
-       private static final float[] EMPTYF = new float[0];
-       private static final Object[] EMPTYO = new Object[0];
-       
-       protected ENV delegate;
-       protected List<TimeTaken> trail = new ArrayList<TimeTaken>(30);
-       private Object[] state;
-       
-       
-    public AbsTrans(ENV delegate) {
-               this.delegate = delegate;
-               state = delegate instanceof StoreImpl?((StoreImpl) delegate).newTransState():EMPTYO;
-       }
-
-       //      @Override
-       public LogTarget fatal() {
-               return delegate.fatal();
-       }
-
-//     @Override
-       public LogTarget error() {
-               return delegate.error();
-       }
-
-//     @Override
-       public LogTarget audit() {
-               return delegate.audit();
-       }
-
-//     @Override
-       public LogTarget init() {
-               return delegate.init();
-       }
-
-//     @Override
-       public LogTarget warn() {
-               return delegate.warn();
-       }
-
-//     @Override
-       public LogTarget info() {
-               return delegate.info();
-       }
-
-//     @Override
-       public LogTarget debug() {
-               return delegate.debug();
-       }
-
-//     @Override
-       public LogTarget trace() {
-               return delegate.trace();
-       }
-
-       /**
-        * Let the final Trans Implementation choose the exact kind of TimeTaken to use
-        * @param name
-        * @param flag
-        * @return
-        */
-       protected abstract TimeTaken newTimeTaken(String name, int flag);
-       
-//     @Override
-       public final TimeTaken start(String name, int flag) {
-               TimeTaken tt = newTimeTaken(name,flag);
-               trail.add(tt);
-               return tt;
-       }
-       
-//     @Override
-       public final void checkpoint(String name) {
-               TimeTaken tt = newTimeTaken(name,CHECKPOINT);
-               tt.done();
-               trail.add(tt);
-       }
-
-       public final void checkpoint(String name, int additionalFlag) {
-               TimeTaken tt = newTimeTaken(name,CHECKPOINT|additionalFlag);
-               trail.add(tt);
-               tt.done();
-       }
-
-       @Override
-       public Metric auditTrail(int indent, StringBuilder sb, int ... flags) {
-               return auditTrail(info(),indent,sb,flags);
-       }
-       
-       @Override
-       public Metric auditTrail(LogTarget lt, int indent, StringBuilder sb, int ... flags) {
-               Metric metric = new Metric();
-               int last = (metric.entries = trail.size()) -1;
-               metric.buckets = flags.length==0?EMPTYF:new float[flags.length];
-               if(last>=0) {
-                       TimeTaken first = trail.get(0);
-                       // If first entry is sub, then it's actually the last "end" as well
-                       // otherwise, check end
-                       //long end = (first.flag&SUB)==SUB?first.end():trail.get(last).end();
-                       long end = trail.get(last).end();
-                       metric.total = (end - first.start) / 1000000f;
-               }
-               
-               if(sb==null) {
-                       for(TimeTaken tt : trail) {
-                               float ms = tt.millis();
-                               for(int i=0;i<flags.length;++i) {
-                                       if(tt.flag == flags[i]) metric.buckets[i]+=ms;
-                               }
-                       }
-               } else if(!lt.isLoggable()) {
-                       boolean first = true;
-                       for(TimeTaken tt : trail) {
-                               float ms = tt.millis();
-                               for(int i=0;i<flags.length;++i) {
-                                       if(tt.flag == flags[i]) metric.buckets[i]+=ms;
-                               }
-                               if((tt.flag&ALWAYS)==ALWAYS) {
-                                       if(first) first = false;
-                                       else sb.append('/');
-                                       sb.append(tt.name);
-                               }
-                       }                       
-               } else {
-                       Stack<Long> stack = new Stack<Long>();
-                       for(TimeTaken tt : trail) {
-                               // Create Indentation based on SUB
-                               while(!stack.isEmpty() && tt.end()>stack.peek()) {
-                                       --indent;
-                                       stack.pop();
-                               }
-                               for(int i=0;i<indent;++i) {
-                                       sb.append("  ");
-                               }
-                               tt.output(sb);
-                               sb.append('\n');
-                               if((tt.flag&SUB)==SUB) {
-                                       stack.push(tt.end());
-                                       ++indent;
-                               }
-                               
-                               // Add time values to Metric
-                               float ms = tt.millis();
-                               for(int i=0;i<flags.length;++i) {
-                                       if(tt.flag == flags[i]) metric.buckets[i]+=ms;
-                               }
-                       }
-               }
-               return metric;
-       }
-
-       /**
-        * Put data into the Trans State at the right slot 
-        */
-//     @Override
-       public void put(Slot slot, Object value) {
-               slot.put(state, value);
-       }
-
-       /**
-        *  Get data from the Trans State from the right slot
-        *  
-        *  This will do a cast to the expected type derived from Default
-        */
-//     @Override
-       @SuppressWarnings("unchecked")
-       public<T> T get(Slot slot, T deflt) {
-               Object o;
-               try {
-                       o = slot.get(state);
-               } catch(ArrayIndexOutOfBoundsException e) {
-                       // Env State Size has changed because of dynamic Object creation... Rare event, but needs to be covered
-                       Object[] temp = ((StoreImpl) delegate).newTransState();
-                       System.arraycopy(state, 0, temp, 0, state.length);
-                       state = temp;
-                       o=null;
-               }
-               return o==null?deflt:(T)o;
-       }
-
-
-}
+/**\r
+ * ============LICENSE_START====================================================\r
+ * org.onap.aaf\r
+ * ===========================================================================\r
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.\r
+ * ===========================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END====================================================\r
+ *\r
+ */\r
+\r
+package org.onap.aaf.misc.env.impl;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.Stack;\r
+\r
+import org.onap.aaf.misc.env.Env;\r
+import org.onap.aaf.misc.env.LogTarget;\r
+import org.onap.aaf.misc.env.Slot;\r
+import org.onap.aaf.misc.env.StoreImpl;\r
+import org.onap.aaf.misc.env.TimeTaken;\r
+import org.onap.aaf.misc.env.TransStore;\r
+\r
+public abstract class AbsTrans<ENV extends Env> implements TransStore {\r
+    private static final float[] EMPTYF = new float[0];\r
+    private static final Object[] EMPTYO = new Object[0];\r
+    \r
+    protected ENV delegate;\r
+    protected List<TimeTaken> trail = new ArrayList<>(30);\r
+    private Object[] state;\r
+    \r
+    \r
+    public AbsTrans(ENV delegate) {\r
+            this.delegate = delegate;\r
+            state = delegate instanceof StoreImpl?((StoreImpl) delegate).newTransState():EMPTYO;\r
+    }\r
+\r
+    //    @Override\r
+    public LogTarget fatal() {\r
+        return delegate.fatal();\r
+    }\r
+\r
+//    @Override\r
+    public LogTarget error() {\r
+        return delegate.error();\r
+    }\r
+\r
+//    @Override\r
+    public LogTarget audit() {\r
+        return delegate.audit();\r
+    }\r
+\r
+//    @Override\r
+    public LogTarget init() {\r
+        return delegate.init();\r
+    }\r
+\r
+//    @Override\r
+    public LogTarget warn() {\r
+        return delegate.warn();\r
+    }\r
+\r
+//    @Override\r
+    public LogTarget info() {\r
+        return delegate.info();\r
+    }\r
+\r
+//    @Override\r
+    public LogTarget debug() {\r
+        return delegate.debug();\r
+    }\r
+\r
+//    @Override\r
+    public LogTarget trace() {\r
+        return delegate.trace();\r
+    }\r
+\r
+    /**\r
+     * Let the final Trans Implementation choose the exact kind of TimeTaken to use\r
+     * @param name\r
+     * @param flag\r
+     * @return\r
+     */\r
+    protected abstract TimeTaken newTimeTaken(String name, int flag, Object ... values);\r
+    \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
+    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
+    }\r
+\r
+    @Override\r
+    public Metric auditTrail(int indent, StringBuilder sb, int ... flags) {\r
+        return auditTrail(info(),indent,sb,flags);\r
+    }\r
+    \r
+    @Override\r
+    public Metric auditTrail(LogTarget lt, int indent, StringBuilder sb, int ... flags) {\r
+        Metric metric = new Metric();\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 = 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
+                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
+        } else if (!lt.isLoggable()) {\r
+            boolean first = true;\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
+                }\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<>();\r
+            for (TimeTaken tt : trail) {\r
+                // Create Indentation based on SUB\r
+                while (!stack.isEmpty() && tt.end()>stack.peek()) {\r
+                    --indent;\r
+                    stack.pop();\r
+                }\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
+                    stack.push(tt.end());\r
+                    ++indent;\r
+                }\r
+                \r
+            }\r
+        }\r
+        return metric;\r
+    }\r
+\r
+    /**\r
+     * Put data into the Trans State at the right slot \r
+     */\r
+//    @Override\r
+    public void put(Slot slot, Object value) {\r
+        slot.put(state, value);\r
+    }\r
+\r
+    /**\r
+     *  Get data from the Trans State from the right slot\r
+     *  \r
+     *  This will do a cast to the expected type derived from Default\r
+     */\r
+//    @Override\r
+    @SuppressWarnings("unchecked")\r
+    public<T> T get(Slot slot, T deflt) {\r
+        Object o;\r
+        try {\r
+            o = slot.get(state);\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
+            state = temp;\r
+            o=null;\r
+        }\r
+        return o==null?deflt:(T)o;\r
+    }\r
+\r
+\r
+}\r