]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.auditlogging/src/org/simantics/audit/client/AuditLoggingClient.java
Minor NPE fix for auditlogging
[simantics/platform.git] / bundles / org.simantics.auditlogging / src / org / simantics / audit / client / AuditLoggingClient.java
index e31a6ab214531a967fee0a06d3d41cd12fb7e573..e9043187d76db1c28b5325292b4ce38a7848412c 100644 (file)
@@ -21,29 +21,36 @@ public class AuditLoggingClient {
 
     private AuditLoggingAPIClient apiClient;
 
-    private AuditLoggingClient() throws AuditLoggingException {
+    private AuditLoggingClient(String serverAddress) throws AuditLoggingException {
         // Read config from sysargs
-        System.out.println("asd");
-        String serverAddress = System.getProperty(AUDIT_SERVER_ADDRESS);
-        if (serverAddress != null && !serverAddress.isEmpty()) {
-            apiClient = new AuditLoggingAPIClient("testlog", serverAddress);
-             
-        } else {
-            LOGGER.warn("No {} system property defined so client not configured", AUDIT_SERVER_ADDRESS);
-        }
+        apiClient = new AuditLoggingAPIClient("testlog", serverAddress);
+    }
+
+    private static AuditLoggingClient fromEnv() throws AuditLoggingException {
+        return fromProps(System.getProperties());
     }
 
-    private static AuditLoggingClient instance() throws AuditLoggingException {
+    
+    public static AuditLoggingClient fromProps(Map<Object, Object> properties) throws AuditLoggingException {
         if (INSTANCE == null) {
             synchronized (AuditLoggingClient.class) {
                 if (INSTANCE == null) {
-                    INSTANCE = new AuditLoggingClient();
+                    String serverAddress = (String) properties.get(AUDIT_SERVER_ADDRESS);
+                    if (serverAddress != null && !serverAddress.isEmpty()) {
+                        INSTANCE = new AuditLoggingClient(serverAddress);
+                    } else {
+                        LOGGER.warn("No {} system property defined so client not configured", AUDIT_SERVER_ADDRESS);
+                    }
                 }
             }
         }
         return INSTANCE;
     }
 
+    public static String getUUID() throws AuditLoggingException {
+        return fromEnv().apiClient.getUuid();
+    }
+    
     public static void sendLog(List<Object> keyValues) throws AuditLoggingException {
         commit(Level.INFO, toMap(keyValues.toArray()));
     }
@@ -84,21 +91,22 @@ public class AuditLoggingClient {
 
     private static void commit(Level level, Map<String, Object> message) throws AuditLoggingException {
         try {
-            AuditLoggingAPIClient client = instance().apiClient;
-            if (client == null) {
+            AuditLoggingClient client = fromEnv();
+            if (client == null || client.apiClient == null) {
                 // No can do - at least log to file
                 LOGGER.warn("Audit logging server not configured - printing event to log");
                 LOGGER.info(message.toString());
             } else {
+                AuditLoggingAPIClient apiClient = client.apiClient;
                 switch (level) {
                 case INFO:
-                    client.log(message);
+                    apiClient.log(message);
                     break;
                 case ERROR:
-                    client.error(message);
+                    apiClient.error(message);
                     break;
                 case TRACE:
-                    client.trace(message);
+                    apiClient.trace(message);
                     break;
                 default:
                     break;