fixed findbugs issue: classloader must be created inside a privileged action
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/digester/trunk@1211674 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/commons/digester3/binder/BinderClassLoader.java b/src/main/java/org/apache/commons/digester3/binder/BinderClassLoader.java
index 7ff09ac..1b6d253 100644
--- a/src/main/java/org/apache/commons/digester3/binder/BinderClassLoader.java
+++ b/src/main/java/org/apache/commons/digester3/binder/BinderClassLoader.java
@@ -1,9 +1,5 @@
package org.apache.commons.digester3.binder;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -23,6 +19,14 @@
* under the License.
*/
+import static java.lang.System.getSecurityManager;
+import static java.security.AccessController.doPrivileged;
+
+import java.security.PrivilegedAction;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
final class BinderClassLoader
extends ClassLoader
{
@@ -42,9 +46,28 @@
PRIMITIVE_TYPES = Collections.unmodifiableMap( primitiveTypes );
}
+ public static BinderClassLoader createBinderClassLoader( final ClassLoader adaptedClassLoader )
+ {
+ PrivilegedAction<BinderClassLoader> action = new PrivilegedAction<BinderClassLoader>()
+ {
+
+ public BinderClassLoader run()
+ {
+ return new BinderClassLoader( adaptedClassLoader );
+ }
+
+ };
+
+ if ( getSecurityManager() != null )
+ {
+ return doPrivileged( action );
+ }
+ return action.run();
+ }
+
private final ClassLoader adaptedClassLoader;
- public BinderClassLoader( ClassLoader adaptedClassLoader )
+ private BinderClassLoader( ClassLoader adaptedClassLoader )
{
this.adaptedClassLoader = adaptedClassLoader;
}
diff --git a/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java b/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java
index 6884356..472fa81 100644
--- a/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java
+++ b/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java
@@ -19,6 +19,8 @@
* under the License.
*/
+import static org.apache.commons.digester3.binder.BinderClassLoader.createBinderClassLoader;
+
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.MalformedURLException;
@@ -196,7 +198,7 @@
throw new IllegalArgumentException( "Parameter 'classLoader' cannot be null" );
}
- this.classLoader = new BinderClassLoader( classLoader );
+ this.classLoader = createBinderClassLoader( classLoader );
return this;
}