[jboss-svn-commits] JBoss Common SVN: r4188 - in common-logging-logmanager/trunk: src/main/java/org/jboss/logging/logmanager and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Mar 23 16:07:40 EDT 2010


Author: david.lloyd at jboss.com
Date: 2010-03-23 16:07:40 -0400 (Tue, 23 Mar 2010)
New Revision: 4188

Modified:
   common-logging-logmanager/trunk/pom.xml
   common-logging-logmanager/trunk/src/main/java/org/jboss/logging/logmanager/LoggerPluginImpl.java
Log:
JBLOGGING-41: Privileged block

Modified: common-logging-logmanager/trunk/pom.xml
===================================================================
--- common-logging-logmanager/trunk/pom.xml	2010-03-19 10:18:45 UTC (rev 4187)
+++ common-logging-logmanager/trunk/pom.xml	2010-03-23 20:07:40 UTC (rev 4188)
@@ -28,6 +28,7 @@
 
     <groupId>org.jboss.logging</groupId>
     <artifactId>jboss-logging-logmanager</artifactId>
+    <name>JBoss Logging: JBoss Log Manager</name>
     <version>2.2.0.CR2-SNAPSHOT</version>
     <packaging>jar</packaging>
     <url>http://www.jboss.org</url>
@@ -41,7 +42,7 @@
         <dependency>
             <groupId>org.jboss.logmanager</groupId>
             <artifactId>jboss-logmanager</artifactId>
-            <version>1.1.0.CR5-SNAPSHOT</version>
+            <version>1.2.0.CR1-SNAPSHOT</version>
         </dependency>
     </dependencies>
     <build>

Modified: common-logging-logmanager/trunk/src/main/java/org/jboss/logging/logmanager/LoggerPluginImpl.java
===================================================================
--- common-logging-logmanager/trunk/src/main/java/org/jboss/logging/logmanager/LoggerPluginImpl.java	2010-03-19 10:18:45 UTC (rev 4187)
+++ common-logging-logmanager/trunk/src/main/java/org/jboss/logging/logmanager/LoggerPluginImpl.java	2010-03-23 20:07:40 UTC (rev 4188)
@@ -22,6 +22,8 @@
 
 package org.jboss.logging.logmanager;
 
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import org.jboss.logging.LoggerPlugin;
 import org.jboss.logging.LoggerPluginInstance;
 import org.jboss.logging.MDCProvider;
@@ -47,10 +49,12 @@
         Logger logger = resourceBundleName == null ? Logger.getLogger(name) : Logger.getLogger(name, resourceBundleName);
         LoggerPluginInstance lpi = logger.getAttachment(KEY);
         if (lpi == null) {
+            final SecurityManager sm = System.getSecurityManager();
             lpi = new LoggerPluginInstanceImpl(name, resourceBundleName, logger, this);
-            LoggerPluginInstance appeared = logger.attachIfAbsent(KEY, lpi);
-            if (appeared != null) {
-                return appeared;
+            if (sm != null) {
+                return AccessController.doPrivileged(new AttachAction(logger, lpi));
+            } else {
+                return doAttach(logger, lpi);
             }
         }
         return lpi;
@@ -63,4 +67,28 @@
     public NDCProvider getNDCProvider() {
         return ndcProvider;
     }
+
+    private static final class AttachAction implements PrivilegedAction<LoggerPluginInstance> {
+        private final Logger logger;
+        private final LoggerPluginInstance attachment;
+
+        private AttachAction(final Logger logger, final LoggerPluginInstance attachment) {
+            this.logger = logger;
+            this.attachment = attachment;
+        }
+
+        public LoggerPluginInstance run() {
+            final Logger logger = this.logger;
+            final LoggerPluginInstance attachment = this.attachment;
+            return doAttach(logger, attachment);
+        }
+    }
+
+    private static LoggerPluginInstance doAttach(final Logger logger, final LoggerPluginInstance attachment) {
+        LoggerPluginInstance appeared = logger.attachIfAbsent(KEY, attachment);
+        if (appeared != null) {
+            return appeared;
+        }
+        return attachment;
+    }
 }



More information about the jboss-svn-commits mailing list