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();
}