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;
     }