[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