Author: baedke Date: Thu Oct 13 14:45:15 2016 New Revision: 1764700 URL: http://svn.apache.org/viewvc?rev=1764700&view=rev Log: OAK-4930: External Principal Management: DynamicSyncContext makes redundant calls to IdentityProvider.getIdentity()
Added: jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalGroupRef.java - copied, changed from r1764678, jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalGroupRef.java Modified: jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DynamicSyncContext.java jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/package-info.java Copied: jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalGroupRef.java (from r1764678, jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalGroupRef.java) URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalGroupRef.java?p2=jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalGroupRef.java&p1=jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalGroupRef.java&r1=1764678&r2=1764700&rev=1764700&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalGroupRef.java (original) +++ jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalGroupRef.java Thu Oct 13 14:45:15 2016 @@ -21,8 +21,7 @@ import javax.annotation.Nonnull; public class ExternalGroupRef extends ExternalIdentityRef { - /**svn st - * + /** * Creates a new external group ref with the given id and provider name * @param id the id of the identity. * @param providerName the name of the identity provider Modified: jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DynamicSyncContext.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DynamicSyncContext.java?rev=1764700&r1=1764699&r2=1764700&view=diff ============================================================================== --- jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DynamicSyncContext.java (original) +++ jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DynamicSyncContext.java Thu Oct 13 14:45:15 2016 @@ -27,6 +27,7 @@ import org.apache.jackrabbit.api.securit import org.apache.jackrabbit.api.security.user.Group; import org.apache.jackrabbit.api.security.user.UserManager; import org.apache.jackrabbit.oak.spi.security.authentication.external.ExternalGroup; +import org.apache.jackrabbit.oak.spi.security.authentication.external.ExternalGroupRef; import org.apache.jackrabbit.oak.spi.security.authentication.external.ExternalIdentity; import org.apache.jackrabbit.oak.spi.security.authentication.external.ExternalIdentityException; import org.apache.jackrabbit.oak.spi.security.authentication.external.ExternalIdentityProvider; @@ -151,16 +152,22 @@ public class DynamicSyncContext extends */ private void collectPrincipalNames(@Nonnull Set<String> principalNames, @Nonnull Iterable<ExternalIdentityRef> declaredGroupIdRefs, long depth) throws ExternalIdentityException { for (ExternalIdentityRef ref : declaredGroupIdRefs) { - // get group - ExternalIdentity extId = idp.getIdentity(ref); - if (extId instanceof ExternalGroup) { - principalNames.add(extId.getPrincipalName()); - // recursively apply further membership until the configured depth is reached - if (depth > 1) { - collectPrincipalNames(principalNames, extId.getDeclaredGroups(), depth - 1); + if (ref instanceof ExternalGroupRef && depth < 2) { + //in this case we can avoid calling idp.getIdentity(), saving a roundtrip + principalNames.add(ref.getId()); + } + else { + ExternalIdentity extId = idp.getIdentity(ref); + if (extId instanceof ExternalGroup) { + principalNames.add(ref.getId()); + // recursively apply further membership until the configured depth is reached + if (depth > 1) { + collectPrincipalNames(principalNames, extId.getDeclaredGroups(), depth - 1); + } + } + else { + log.debug("Not an external group ({}) => ignore.", ref); } - } else { - log.debug("Not an external group ({}) => ignore.", extId); } } } Modified: jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/package-info.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/package-info.java?rev=1764700&r1=1764699&r2=1764700&view=diff ============================================================================== --- jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/package-info.java (original) +++ jackrabbit/oak/branches/1.4/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/package-info.java Thu Oct 13 14:45:15 2016 @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -@Version("2.1.0") +@Version("2.2.0") @Export package org.apache.jackrabbit.oak.spi.security.authentication.external;