Author: timothyjward
Date: Fri Feb 11 14:38:43 2011
New Revision: 1069818
URL: http://svn.apache.org/viewvc?rev=1069818&view=rev
Log:
ARIES-573: doPriv protection for geting persistence bundle bundle contexts
Modified:
aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/ManagedPersistenceContextFactory.java
Modified:
aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/ManagedPersistenceContextFactory.java
URL:
http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/ManagedPersistenceContextFactory.java?rev=1069818&r1=1069817&r2=1069818&view=diff
==============================================================================
---
aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/ManagedPersistenceContextFactory.java
(original)
+++
aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/ManagedPersistenceContextFactory.java
Fri Feb 11 14:38:43 2011
@@ -18,6 +18,8 @@
*/
package org.apache.aries.jpa.container.context.impl;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -77,7 +79,14 @@ public class ManagedPersistenceContextFa
_logger.debug("Creating a container managed entity manager for the
perstence unit {} with the following properties {}",
new Object[] {emf, properties});
}
- EntityManagerFactory factory = (EntityManagerFactory)
emf.getBundle().getBundleContext().getService(emf);
+ //Getting the BundleContext is a privileged operation that the
+ //client might not be able to do.
+ EntityManagerFactory factory = AccessController.doPrivileged(
+ new PrivilegedAction<EntityManagerFactory>() {
+ public EntityManagerFactory run() {
+ return (EntityManagerFactory)
emf.getBundle().getBundleContext().getService(emf);
+ }
+ });
if(type == PersistenceContextType.TRANSACTION || type == null)
return new JTAEntityManager(factory, properties, registry, activeCount,
this);