You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2013/09/09 17:04:08 UTC

svn commit: r1521151 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak: core/AbstractRoot.java util/LazyValue.java

Author: mduerig
Date: Mon Sep  9 15:04:08 2013
New Revision: 1521151

URL: http://svn.apache.org/r1521151
Log:
OAK-929: Permission changes not visible on root after refresh
Avoid refreshing the permission provider too eagerly

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/LazyValue.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java?rev=1521151&r1=1521150&r2=1521151&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java Mon Sep  9 15:04:08 2013
@@ -117,7 +117,7 @@ public abstract class AbstractRoot imple
      */
     private long modCount;
 
-    private LazyValue<PermissionProvider> permissionProvider = new LazyValue<PermissionProvider>() {
+    private final LazyValue<PermissionProvider> permissionProvider = new LazyValue<PermissionProvider>() {
         @Override
         protected PermissionProvider createValue() {
             return getAcConfig().getPermissionProvider(AbstractRoot.this, subject.getPrincipals());
@@ -218,7 +218,7 @@ public abstract class AbstractRoot imple
             purgePendingChanges();
             branch.rebase();
             reset();
-            if (permissionProvider != null) {
+            if (permissionProvider.hasValue()) {
                 permissionProvider.get().refresh();
             }
         }
@@ -230,7 +230,7 @@ public abstract class AbstractRoot imple
         branch = store.branch();
         reset();
         modCount = 0;
-        if (permissionProvider != null) {
+        if (permissionProvider.hasValue()) {
             permissionProvider.get().refresh();
         }
     }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/LazyValue.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/LazyValue.java?rev=1521151&r1=1521150&r2=1521151&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/LazyValue.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/LazyValue.java Mon Sep  9 15:04:08 2013
@@ -34,6 +34,13 @@ public abstract class LazyValue<T> {
     protected abstract T createValue();
 
     /**
+     * @return  {@code true} iff {@link #get()} has been called at least once.
+     */
+    public boolean hasValue() {
+        return value != null;
+    }
+
+    /**
      * Get value. Calls {@link #createValue()} if called for the first time.
      * @return  the value
      */