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/08/13 16:53:58 UTC

svn commit: r1513523 - in /jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr: SessionContext.java SessionImpl.java security/AccessManager.java

Author: mduerig
Date: Tue Aug 13 14:53:57 2013
New Revision: 1513523

URL: http://svn.apache.org/r1513523
Log:
OAK-958: Session related entities do not honour session refresh settings
Wrap AccessManager

Modified:
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/AccessManager.java

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java?rev=1513523&r1=1513522&r2=1513523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java Tue Aug 13 14:53:57 2013
@@ -309,7 +309,7 @@ public class SessionContext implements N
 
     @Nonnull
     public AccessManager getAccessManager() throws RepositoryException {
-        return new AccessManager(delegate.getPermissionProvider());
+        return new AccessManager(delegate);
     }
 
     @Nonnull

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java?rev=1513523&r1=1513522&r2=1513523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java Tue Aug 13 14:53:57 2013
@@ -401,7 +401,7 @@ public class SessionImpl implements Jack
     public void refresh(final boolean keepChanges) throws RepositoryException {
         perform(new WriteOperation<Void>() {
             @Override
-            public Void perform() throws RepositoryException {
+            public Void perform() {
                 sd.refresh(keepChanges);
                 return null;
             }

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/AccessManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/AccessManager.java?rev=1513523&r1=1513522&r2=1513523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/AccessManager.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/AccessManager.java Tue Aug 13 14:53:57 2013
@@ -23,25 +23,38 @@ import javax.jcr.RepositoryException;
 
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
+import org.apache.jackrabbit.oak.jcr.operation.SessionOperation;
 import org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionProvider;
 
 /**
  * AccessManager
  */
 public class AccessManager {
-
+    private final SessionDelegate delegate;
     private final PermissionProvider permissionProvider;
 
-    public AccessManager(@Nonnull PermissionProvider permissionProvider) {
-        this.permissionProvider = permissionProvider;
+    public AccessManager(SessionDelegate delegate) {
+        this.delegate = delegate;
+        this.permissionProvider = delegate.getPermissionProvider();
     }
 
-    public boolean hasPermissions(@Nonnull String oakPath, @Nonnull String actions) {
-        return permissionProvider.isGranted(oakPath, actions);
+    public boolean hasPermissions(@Nonnull final String oakPath, @Nonnull final String actions) {
+        return delegate.safePerform(new SessionOperation<Boolean>() {
+            @Override
+            public Boolean perform() {
+                return permissionProvider.isGranted(oakPath, actions);
+            }
+        });
     }
 
-    public boolean hasPermissions(@Nonnull Tree tree, @Nullable PropertyState property, long permissions) throws RepositoryException {
-        return permissionProvider.isGranted(tree, property, permissions);
+    public boolean hasPermissions(@Nonnull final Tree tree, @Nullable final PropertyState property, final long permissions) throws RepositoryException {
+        return delegate.safePerform(new SessionOperation<Boolean>() {
+            @Override
+            public Boolean perform() {
+                return permissionProvider.isGranted(tree, property, permissions);
+            }
+        });
     }
 
     public void checkPermissions(@Nonnull String oakPath, @Nonnull String actions) throws RepositoryException {