You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2010/12/24 14:09:27 UTC

svn commit: r1052501 - in /activemq/trunk: activemq-core/src/main/java/org/apache/activemq/broker/jmx/ activemq-core/src/main/java/org/apache/activemq/broker/util/ activemq-web/src/main/java/org/apache/activemq/web/

Author: dejanb
Date: Fri Dec 24 13:09:27 2010
New Revision: 1052501

URL: http://svn.apache.org/viewvc?rev=1052501&view=rev
Log:
https://issues.apache.org/jira/browse/AMQ-3100 - refactoring to use ServiceLoader

Added:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/AuditLogService.java
      - copied, changed from r1052261, activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/DefaultAuditLog.java
Modified:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/AnnotatedMBean.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/DefaultAuditLog.java
    activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/AuditFilter.java

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/AnnotatedMBean.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/AnnotatedMBean.java?rev=1052501&r1=1052500&r2=1052501&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/AnnotatedMBean.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/AnnotatedMBean.java Fri Dec 24 13:09:27 2010
@@ -17,6 +17,7 @@
 package org.apache.activemq.broker.jmx;
 
 import org.apache.activemq.broker.util.AuditLog;
+import org.apache.activemq.broker.util.AuditLogService;
 import org.apache.activemq.broker.util.DefaultAuditLog;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -42,7 +43,7 @@ public class AnnotatedMBean extends Stan
   private static final Log LOG = LogFactory.getLog("org.apache.activemq.audit");
 
   private static boolean audit;
-  private static AuditLog auditLog;
+  private static AuditLogService auditLog;
 
   static {
     Class<?>[] p = { byte.class, short.class, int.class, long.class, float.class, double.class, char.class, boolean.class, };
@@ -50,7 +51,9 @@ public class AnnotatedMBean extends Stan
       primitives.put(c.getName(), c);
     }
     audit = "true".equalsIgnoreCase(System.getProperty("org.apache.activemq.audit"));
-    auditLog = DefaultAuditLog.getAuditLog();
+    if (audit) {
+        auditLog = new AuditLogService();
+    }
   }
   
   @SuppressWarnings("unchecked")

Copied: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/AuditLogService.java (from r1052261, activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/DefaultAuditLog.java)
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/AuditLogService.java?p2=activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/AuditLogService.java&p1=activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/DefaultAuditLog.java&r1=1052261&r2=1052501&rev=1052501&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/DefaultAuditLog.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/AuditLogService.java Fri Dec 24 13:09:27 2010
@@ -16,26 +16,27 @@
  */
 package org.apache.activemq.broker.util;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import java.util.ArrayList;
+import java.util.ServiceLoader;
 
-public class DefaultAuditLog implements AuditLog {
+public class AuditLogService {
 
-    private static final Log LOG = LogFactory.getLog("org.apache.activemq.audit");
+    private ArrayList<AuditLog> auditLogs = new ArrayList<AuditLog>();
 
-    public static AuditLog getAuditLog() {
-        String auditLogClass = System.getProperty("org.apache.activemq.audit.class", "org.apache.activemq.broker.util.DefaultAuditLog");
-        AuditLog log;
-        try {
-            log = (AuditLog) Class.forName(auditLogClass).newInstance();
-        } catch (Exception e) {
-            LOG.warn("Cannot instantiate audit log class '" + auditLogClass + "', using default audit log", e);
-            log = new DefaultAuditLog();
+    public AuditLogService() {
+        ServiceLoader<AuditLog> logs = ServiceLoader.load(AuditLog.class);
+        for (AuditLog log : logs) {
+            auditLogs.add(log);
+        }
+        // add default audit log if non was found
+        if (auditLogs.size() == 0) {
+            auditLogs.add(new DefaultAuditLog());
         }
-        return log;
     }
 
     public void log(String message) {
-         LOG.info(message);
+        for (AuditLog log : auditLogs) {
+            log.log(message);
+        }
     }
 }

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/DefaultAuditLog.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/DefaultAuditLog.java?rev=1052501&r1=1052500&r2=1052501&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/DefaultAuditLog.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/DefaultAuditLog.java Fri Dec 24 13:09:27 2010
@@ -23,18 +23,6 @@ public class DefaultAuditLog implements 
 
     private static final Log LOG = LogFactory.getLog("org.apache.activemq.audit");
 
-    public static AuditLog getAuditLog() {
-        String auditLogClass = System.getProperty("org.apache.activemq.audit.class", "org.apache.activemq.broker.util.DefaultAuditLog");
-        AuditLog log;
-        try {
-            log = (AuditLog) Class.forName(auditLogClass).newInstance();
-        } catch (Exception e) {
-            LOG.warn("Cannot instantiate audit log class '" + auditLogClass + "', using default audit log", e);
-            log = new DefaultAuditLog();
-        }
-        return log;
-    }
-
     public void log(String message) {
          LOG.info(message);
     }

Modified: activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/AuditFilter.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/AuditFilter.java?rev=1052501&r1=1052500&r2=1052501&view=diff
==============================================================================
--- activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/AuditFilter.java (original)
+++ activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/AuditFilter.java Fri Dec 24 13:09:27 2010
@@ -17,6 +17,7 @@
 package org.apache.activemq.web;
 
 import org.apache.activemq.broker.util.AuditLog;
+import org.apache.activemq.broker.util.AuditLogService;
 import org.apache.activemq.broker.util.DefaultAuditLog;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -31,11 +32,11 @@ public class AuditFilter implements Filt
     private static final Log LOG = LogFactory.getLog("org.apache.activemq.audit");
 
     private boolean audit;
-    private AuditLog auditLog;
+    private AuditLogService auditLog;
 
     public void init(FilterConfig filterConfig) throws ServletException {
         audit = "true".equalsIgnoreCase(System.getProperty("org.apache.activemq.audit"));
-        auditLog = DefaultAuditLog.getAuditLog();
+        auditLog = new AuditLogService();
     }
 
     public void destroy() {