Return-Path: X-Original-To: apmail-incubator-bval-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-bval-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B1F4F9336 for ; Wed, 1 Feb 2012 19:24:11 +0000 (UTC) Received: (qmail 58525 invoked by uid 500); 1 Feb 2012 19:24:11 -0000 Delivered-To: apmail-incubator-bval-commits-archive@incubator.apache.org Received: (qmail 58222 invoked by uid 500); 1 Feb 2012 19:24:10 -0000 Mailing-List: contact bval-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: bval-dev@incubator.apache.org Delivered-To: mailing list bval-commits@incubator.apache.org Received: (qmail 58042 invoked by uid 99); 1 Feb 2012 19:24:10 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Feb 2012 19:24:10 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Feb 2012 19:24:08 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 45137238890D; Wed, 1 Feb 2012 19:23:47 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1239279 - /incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/DefaultTraversableResolver.java Date: Wed, 01 Feb 2012 19:23:47 -0000 To: bval-commits@incubator.apache.org From: allee8285@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120201192347.45137238890D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: allee8285 Date: Wed Feb 1 19:23:46 2012 New Revision: 1239279 URL: http://svn.apache.org/viewvc?rev=1239279&view=rev Log: BVAL-100 Guard lang3.ClassUtil.getClass with doPriv() Modified: incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/DefaultTraversableResolver.java Modified: incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/DefaultTraversableResolver.java URL: http://svn.apache.org/viewvc/incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/DefaultTraversableResolver.java?rev=1239279&r1=1239278&r2=1239279&view=diff ============================================================================== --- incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/DefaultTraversableResolver.java (original) +++ incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/DefaultTraversableResolver.java Wed Feb 1 19:23:46 2012 @@ -19,6 +19,7 @@ package org.apache.bval.jsr303.resolver; import java.lang.annotation.ElementType; import java.security.AccessController; import java.security.PrivilegedAction; +import java.security.PrivilegedExceptionAction; import javax.validation.Path; import javax.validation.TraversableResolver; @@ -75,7 +76,7 @@ public class DefaultTraversableResolver private void initJpa() { final ClassLoader classLoader = getClassLoader(); try { - ClassUtils.getClass(classLoader, PERSISTENCE_UTIL_CLASSNAME, true); + getUtilClass(classLoader); log.debug("Found {} on classpath.", PERSISTENCE_UTIL_CLASSNAME); } catch (Exception e) { log.debug("Cannot find {} on classpath. All properties will per default be traversable.", PERSISTENCE_UTIL_CLASSNAME); @@ -102,8 +103,6 @@ public class DefaultTraversableResolver return jpaTR != null && CachingTraversableResolver.needsCaching(jpaTR); } - - private static ClassLoader getClassLoader() { return (System.getSecurityManager() == null) @@ -121,5 +120,17 @@ public class DefaultTraversableResolver return (loader != null) ? loader : ClassHelper.class.getClassLoader(); } + private static Class getUtilClass(final ClassLoader classLoader) throws Exception { + return (System.getSecurityManager() == null) + ? getUtilClass0(classLoader) + : AccessController.doPrivileged(new PrivilegedExceptionAction>() { + public Class run() throws Exception { + return getUtilClass0(classLoader); + } + }); + } + private static Class getUtilClass0(ClassLoader classLoader) throws Exception { + return ClassUtils.getClass(classLoader, PERSISTENCE_UTIL_CLASSNAME, true); + } }