You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2012/08/03 15:44:06 UTC

svn commit: r1368954 - /myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/view/facelets/util/Classpath.java

Author: lu4242
Date: Fri Aug  3 13:44:06 2012
New Revision: 1368954

URL: http://svn.apache.org/viewvc?rev=1368954&view=rev
Log:
MYFACES-3590 AccessControlException occurs in Classpath._searchDir (Thanks to Paul Nicolucci for provide this patch)

Modified:
    myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/view/facelets/util/Classpath.java

Modified: myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/view/facelets/util/Classpath.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/view/facelets/util/Classpath.java?rev=1368954&r1=1368953&r2=1368954&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/view/facelets/util/Classpath.java (original)
+++ myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/view/facelets/util/Classpath.java Fri Aug  3 13:44:06 2012
@@ -38,6 +38,8 @@ import java.util.zip.ZipInputStream;
 import org.apache.myfaces.shared.util.ClassUtils;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 /**
  * @author Jacob Hookom
  * @author Roland Huss
@@ -120,7 +122,23 @@ public final class Classpath
 
     private static boolean _searchDir(Set<URL> result, File dir, String suffix) throws IOException
     {
-        if (dir.exists() && dir.isDirectory())
+        boolean dirExists = false;
+        if (System.getSecurityManager() != null)
+        {
+            final File finalDir = dir;
+            dirExists = (Boolean) AccessController.doPrivileged(new PrivilegedAction()
+            {
+                public Object run() 
+                {
+                    return finalDir.exists();
+                }
+            });
+        }  
+        else
+        {
+            dirExists = dir.exists();
+        }
+        if (dirExists && dir.isDirectory())
         {
             for (File file : dir.listFiles())
             {