Cred delete fixes
[aaf/authz.git] / cadi / core / src / main / java / org / onap / aaf / cadi / PropAccess.java
index 2fe5f41..994e325 100644 (file)
@@ -28,6 +28,7 @@ import java.io.InputStream;
 import java.io.PrintStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -41,7 +42,11 @@ import org.onap.aaf.cadi.util.Split;
 
 public class PropAccess implements Access {
     // Sonar says cannot be static... it's ok.  not too many PropAccesses created.
-    private final SimpleDateFormat iso8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
+    private final SimpleDateFormat iso8601 = newISO8601();
+               
+    public static SimpleDateFormat newISO8601() {
+       return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
+    }
 
     public static final Level DEFAULT = Level.AUDIT;
     
@@ -100,10 +105,9 @@ public class PropAccess implements Access {
         init(nprops);
     }
     
-    protected void init(Properties p) {
+    protected synchronized void init(Properties p) {
         // Make sure these two are set before any changes in Logging
         name = "cadi";
-        level=DEFAULT.maskOf();
         
         props = new Properties();
         // First, load related System Properties
@@ -122,16 +126,14 @@ public class PropAccess implements Access {
         
         // Preset LogLevel
         String sLevel = props.getProperty(Config.CADI_LOGLEVEL); 
-        if (sLevel!=null) {
-            level=Level.valueOf(sLevel).maskOf(); 
-        }
-        
         // Third, load any Chained Property Files
         load(props.getProperty(Config.CADI_PROP_FILES));
         
         if(sLevel==null) { // if LogLev wasn't set before, check again after Chained Load
                sLevel = props.getProperty(Config.CADI_LOGLEVEL); 
-               if (sLevel!=null) {
+               if (sLevel==null) {
+                       level=DEFAULT.maskOf();
+               } else {
                    level=Level.valueOf(sLevel).maskOf(); 
                }
         }
@@ -149,6 +151,7 @@ public class PropAccess implements Access {
         name = props.getProperty(Config.CADI_LOGNAME, name);
         
         SecurityInfo.setHTTPProtocols(this);
+        
     }
     
    
@@ -256,31 +259,41 @@ public class PropAccess implements Access {
         }
     }
 
-    protected StringBuilder buildMsg(Level level, Object[] elements) {
+    public StringBuilder buildMsg(Level level, Object[] elements) {
         return buildMsg(name,iso8601,level,elements);
     }
-
-    public static StringBuilder buildMsg(final String name, final SimpleDateFormat sdf, Level level, Object[] elements) { 
-        StringBuilder sb = new StringBuilder(sdf.format(new Date()));
-        sb.append(' ');
-        sb.append(level.name());
-        sb.append(" [");
-        sb.append(name);
-        
+    
+    /*
+     * Need to pass in DateFormat per thread, because not marked as thread safe
+     */
+    public static StringBuilder buildMsg(final String name, final DateFormat sdf, Level level, Object[] elements) {
+       final StringBuilder sb;
         int end = elements.length;
-        if (end<=0) {
-            sb.append("] ");
-        } else {
-            int idx = 0;
-            if(elements[idx]!=null  && 
-               elements[idx] instanceof Integer) {
-                sb.append('-');
-                sb.append(elements[idx]);
-                ++idx;
-            }
-            sb.append("] ");
-            write(true,sb,elements);
-        }
+       if(sdf==null) {
+               sb = new StringBuilder();
+               write(true,sb,elements);
+       } else {
+               sb = new StringBuilder(
+                               sdf.format(new Date())
+                               );
+            sb.append(' ');
+            sb.append(level.name());
+            sb.append(" [");
+            sb.append(name);
+               if (end<=0) {
+                   sb.append("] ");
+               } else {
+                   int idx = 0;
+                   if(elements[idx]!=null  && 
+                       elements[idx] instanceof Integer) {
+                       sb.append('-');
+                       sb.append(elements[idx]);
+                       ++idx;
+                   }
+                   sb.append("] ");
+                   write(true,sb,elements);
+               }
+       }
         return sb;
     }