OPENJPA-1470 Java 2 Security permission violation on getClassLoader caused JEE container unable to enhance entities on the fly.

git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@900905 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Albert Lee 2010-01-19 18:53:16 +00:00
parent 3bff964503
commit 968634a738
1 changed files with 6 additions and 5 deletions

View File

@ -495,23 +495,24 @@ public class PCEnhancer {
* @return <code>ENHANCE_*</code> constant
*/
public int run() {
Class<?> type = _managedType.getType();
try {
// if managed interface, skip
if (_pc.isInterface())
return ENHANCE_INTERFACE;
// check if already enhanced
ClassLoader loader = _managedType.getType().getClassLoader();
ClassLoader loader = AccessController.doPrivileged(J2DoPrivHelper.getClassLoaderAction(type));
for (Class<?> iface : _managedType.getDeclaredInterfaceTypes()) {
if (iface.getName().equals(PCTYPE.getName())) {
if (_log.isTraceEnabled()) {
_log.trace(_loc.get("pc-type", _managedType.getType(), loader));
_log.trace(_loc.get("pc-type", type, loader));
}
return ENHANCE_NONE;
}
}
if (_log.isTraceEnabled()) {
_log.trace(_loc.get("enhance-start", _managedType.getType(), loader));
_log.trace(_loc.get("enhance-start", type, loader));
}
@ -541,13 +542,13 @@ public class PCEnhancer {
}
if (_log.isWarnEnabled())
_log.warn(_loc.get("pers-aware", _managedType.getType(), loader));
_log.warn(_loc.get("pers-aware", type, loader));
return ENHANCE_AWARE;
} catch (OpenJPAException ke) {
throw ke;
} catch (Exception e) {
throw new GeneralException(_loc.get("enhance-error",
_managedType.getType().getName(), e.getMessage()), e);
type.getName(), e.getMessage()), e);
}
}