Author: angela
Date: Tue May 28 12:33:12 2019
New Revision: 1860254

URL: http://svn.apache.org/viewvc?rev=1860254&view=rev
Log:
OAK-8355 : AuthorizableImpl.isEveryone should not throw RepositoryException

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java?rev=1860254&r1=1860253&r2=1860254&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java
 Tue May 28 12:33:12 2019
@@ -33,6 +33,7 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.user.AuthorizableType;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -183,17 +184,13 @@ abstract class AuthorizableImpl implemen
 
     @NotNull
     String getPrincipalName() throws RepositoryException {
-        if (principalName == null) {
-            PropertyState pNameProp = tree.getProperty(REP_PRINCIPAL_NAME);
-            if (pNameProp != null) {
-                principalName = pNameProp.getValue(STRING);
-            } else {
-                String msg = "Authorizable without principal name " + id;
-                log.warn(msg);
-                throw new RepositoryException(msg);
-            }
+        String pName = internalGetPrincipalName();
+        if (pName == null) {
+            String msg = "Authorizable without principal name " + id;
+            log.warn(msg);
+            throw new RepositoryException(msg);
         }
-        return principalName;
+        return pName;
     }
 
     /**
@@ -217,10 +214,20 @@ abstract class AuthorizableImpl implemen
      *
      * @return {@code true} if this authorizable represents the group everyone
      * is member of; {@code false} otherwise.
-     * @throws RepositoryException If an error occurs.
      */
-    boolean isEveryone() throws RepositoryException {
-        return isGroup() && EveryonePrincipal.NAME.equals(getPrincipalName());
+    boolean isEveryone() {
+        return isGroup() && 
EveryonePrincipal.NAME.equals(internalGetPrincipalName());
+    }
+
+    @Nullable
+    private String internalGetPrincipalName() {
+        if (principalName == null) {
+            PropertyState pNameProp = tree.getProperty(REP_PRINCIPAL_NAME);
+            if (pNameProp != null) {
+                principalName = pNameProp.getValue(STRING);
+            }
+        }
+        return principalName;
     }
 
     /**

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java?rev=1860254&r1=1860253&r2=1860254&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
 Tue May 28 12:33:12 2019
@@ -23,7 +23,7 @@ import java.util.Set;
 import javax.jcr.RepositoryException;
 import javax.jcr.nodetype.ConstraintViolationException;
 
-import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
 import com.google.common.base.Strings;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Maps;
@@ -37,7 +37,6 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.user.util.UserUtil;
 import org.apache.jackrabbit.oak.spi.xml.ImportBehavior;
 import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -174,23 +173,13 @@ class GroupImpl extends AuthorizableImpl
         UserManagerImpl userMgr = getUserManager();
         if (isEveryone()) {
             String propName = 
getUserManager().getNamePathMapper().getJcrName((REP_PRINCIPAL_NAME));
-            return Iterators.filter(
-                    userMgr.findAuthorizables(propName, null, 
UserManager.SEARCH_TYPE_AUTHORIZABLE),
-                    new Predicate<Authorizable>() {
-                        @Override
-                        public boolean apply(@Nullable Authorizable 
authorizable) {
-                            if (authorizable == null) {
-                                return false;
-                            }
-                            if (authorizable.isGroup()) {
-                                try {
-                                    return !((GroupImpl) 
authorizable).isEveryone();
-                                } catch (RepositoryException e) {
-                                    log.warn("Unable to evaluate if 
authorizable is the 'everyone' group.", e);
-                                }
-                            }
-                            return true;
+            Iterator<Authorizable> result = 
Iterators.filter(userMgr.findAuthorizables(propName, null, 
UserManager.SEARCH_TYPE_AUTHORIZABLE), Predicates.notNull());
+            return Iterators.filter(result,
+                    authorizable -> {
+                        if (authorizable instanceof AuthorizableImpl) {
+                            return !((AuthorizableImpl) 
authorizable).isEveryone();
                         }
+                        return true;
                     }
             );
         } else {
@@ -335,7 +324,7 @@ class GroupImpl extends AuthorizableImpl
         }
 
         @Override
-        boolean isEveryone() throws RepositoryException {
+        boolean isEveryone() {
             return GroupImpl.this.isEveryone();
         }
 


Reply via email to