Author: nfilotto
Date: 2010-12-30 12:51:23 -0500 (Thu, 30 Dec 2010)
New Revision: 3759
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
Log:
EXOJCR-1133: Bug fixed by calling the method addChild(Fqn) within a PriviledgedAction
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2010-12-30
12:52:09 UTC (rev 3758)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2010-12-30
17:51:23 UTC (rev 3759)
@@ -31,8 +31,8 @@
import org.exoplatform.services.jcr.impl.storage.jdbc.DBConstants;
import org.exoplatform.services.jcr.impl.storage.jdbc.DialectDetecter;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
-import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.services.naming.InitialContextInitializer;
@@ -49,6 +49,7 @@
import java.io.Serializable;
import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
@@ -551,13 +552,20 @@
/**
* Will be created structured node in cache, like /$LOCKS
*/
- private void createStructuredNode(Fqn<String> fqn)
+ private void createStructuredNode(final Fqn<String> fqn)
{
Node<Serializable, Object> node = cache.getRoot().getChild(fqn);
if (node == null)
{
cache.getInvocationContext().getOptionOverrides().setCacheModeLocal(true);
- node = cache.getRoot().addChild(fqn);
+ PrivilegedAction<Node<Serializable, Object>> action = new
PrivilegedAction<Node<Serializable, Object>>()
+ {
+ public Node<Serializable, Object> run()
+ {
+ return cache.getRoot().addChild(fqn);
+ }
+ };
+ node = AccessController.doPrivileged(action);
}
node.setResident(true);
}
Show replies by date