@@ -106,7 +106,7 @@ public void installAuthorizables(
106106 final Session session , InstallationLogger installLog )
107107 throws RepositoryException , AuthorizableCreatorException , LoginException , IOException , GeneralSecurityException {
108108
109- UserManager userManager = new PrefetchedAuthorizablesUserManager (AccessControlUtils .getUserManagerAutoSaveDisabled (session ), installLog );
109+ PrefetchingUserManager userManager = new PrefetchingUserManager (AccessControlUtils .getUserManagerAutoSaveDisabled (session ), session . getValueFactory ( ), installLog );
110110
111111 Set <String > authorizablesFromConfigurations = authorizablesConfigBeans .getAuthorizableIds ();
112112 for (AuthorizableConfigBean authorizableConfigBean : authorizablesConfigBeans ) {
@@ -120,7 +120,7 @@ public void installAuthorizables(
120120 }
121121
122122 private void installAuthorizableConfigurationBean (final Session session ,
123- UserManager userManager ,
123+ PrefetchingUserManager userManager ,
124124 AcConfiguration acConfiguration ,
125125 AuthorizableConfigBean authorizableConfigBean ,
126126 InstallationLogger installLog , Set <String > authorizablesFromConfigurations )
@@ -250,16 +250,14 @@ private String getPassword(final AuthorizableConfigBean authorizableConfigBean)
250250 * regular relationships between groups contained in config are kept in isMemberOf */
251251 @ SuppressWarnings ("unchecked" )
252252 void applyGroupMembershipConfigMembers (AcConfiguration acConfiguration , AuthorizableConfigBean authorizableConfigBean , InstallationLogger installLog ,
253- String authorizableId , UserManager userManager , Set <String > authorizablesFromConfigurations ) throws RepositoryException {
253+ String authorizableId , PrefetchingUserManager userManager , Set <String > authorizablesFromConfigurations ) throws RepositoryException {
254254 if (authorizableConfigBean .isGroup ()) {
255255
256- Group installedGroup = (Group ) userManager .getAuthorizable (authorizableId );
257-
258256 String [] membersInConfigArr = authorizableConfigBean .getMembers ();
259257 Set <String > membersInConfig = membersInConfigArr != null ? new HashSet <String >(Arrays .asList (membersInConfigArr )) : new HashSet <String >();
260258
261259 // initial set without regular users (those are never removed because that relationship is typically managed in AEM UI or LDAP/SAML/SSO/etc. )
262- Set <String > relevantMembersInRepo = getDeclaredMembersWithoutRegularUsers (installedGroup );
260+ Set <String > relevantMembersInRepo = userManager . getDeclaredMembersWithoutRegularUsers (authorizableId );
263261
264262 // ensure authorizables from config itself that are added via isMemberOf are not deleted
265263 relevantMembersInRepo = new HashSet <String >(CollectionUtils .subtract (relevantMembersInRepo , authorizablesFromConfigurations ));
@@ -271,6 +269,7 @@ void applyGroupMembershipConfigMembers(AcConfiguration acConfiguration, Authoriz
271269 Set <String > membersToAdd = new HashSet <String >(CollectionUtils .subtract (membersInConfig , relevantMembersInRepo ));
272270 Set <String > membersToRemove = new HashSet <String >(CollectionUtils .subtract (relevantMembersInRepo , membersInConfig ));
273271
272+ Group installedGroup = (Group ) userManager .getAuthorizable (authorizableId );
274273 if (!membersToAdd .isEmpty ()) {
275274 installLog .addVerboseMessage (LOG ,
276275 "Adding " + membersToAdd .size () + " external members to group " + authorizableConfigBean .getAuthorizableId ());
@@ -301,24 +300,6 @@ void applyGroupMembershipConfigMembers(AcConfiguration acConfiguration, Authoriz
301300 }
302301 }
303302
304- private Set <String > getDeclaredMembersWithoutRegularUsers (Group installedGroup ) throws RepositoryException {
305- Set <String > membersInRepo = new HashSet <String >();
306- Iterator <Authorizable > currentMemberInRepo = installedGroup .getDeclaredMembers ();
307- while (currentMemberInRepo .hasNext ()) {
308- Authorizable member = currentMemberInRepo .next ();
309- if (!isRegularUser (member )) {
310- membersInRepo .add (member .getID ());
311- }
312- }
313- return membersInRepo ;
314- }
315-
316- private boolean isRegularUser (Authorizable member ) throws RepositoryException {
317- return member != null && !member .isGroup () // if user
318- && !member .getPath ().startsWith (Constants .USERS_ROOT + "/system/" ) // but not system user
319- && !member .getID ().equals (Constants .USER_ANONYMOUS ); // and not anonymous
320- }
321-
322303 private Set <String > removeExternalMembersUnmanagedByConfiguration (AcConfiguration acConfiguration , AuthorizableConfigBean authorizableConfigBean ,
323304 Set <String > relevantMembersInRepo , InstallationLogger installLog ) {
324305 Set <String > relevantMembers = new HashSet <String >(relevantMembersInRepo );
@@ -504,13 +485,12 @@ private void deleteOldIntermediatePath(final Session session,
504485
505486 private void applyGroupMembershipConfigIsMemberOf (InstallationLogger installLog ,
506487 AcConfiguration acConfiguration ,
507- AuthorizableConfigBean authorizableConfigBean , UserManager userManager , Session session ,
488+ AuthorizableConfigBean authorizableConfigBean , PrefetchingUserManager userManager , Session session ,
508489 Set <String > authorizablesFromConfigurations ) throws RepositoryException , AuthorizableCreatorException {
509- String [] memberOf = authorizableConfigBean .getIsMemberOf ();
510490
511- Authorizable currentGroupFromRepository = userManager . getAuthorizable ( authorizableConfigBean .getAuthorizableId () );
512- Set <String > membershipGroupsFromConfig = getMembershipGroupsFromConfig (memberOf );
513- Set <String > membershipGroupsFromRepository = getMembershipGroupsFromRepository ( currentGroupFromRepository );
491+ String authId = authorizableConfigBean .getAuthorizableId ();
492+ Set <String > membershipGroupsFromConfig = getMembershipGroupsFromConfig (authorizableConfigBean . getIsMemberOf () );
493+ Set <String > membershipGroupsFromRepository = userManager . getDeclaredIsMemberOf ( authId );
514494
515495 applyGroupMembershipConfigIsMemberOf (authorizableConfigBean , acConfiguration , installLog , userManager , session ,
516496 membershipGroupsFromConfig ,
@@ -547,19 +527,6 @@ private Authorizable createNewAuthorizable(
547527 return newAuthorizable ;
548528 }
549529
550- private Set <String > getMembershipGroupsFromRepository (Authorizable currentGroupFromRepository ) throws RepositoryException {
551- Set <String > membershipGroupsFromRepository = new HashSet <String >();
552- Iterator <Group > memberOfGroupsIterator = currentGroupFromRepository .declaredMemberOf ();
553-
554- // build Set which contains the all Groups of which the existingGroup is
555- // a member of
556- while (memberOfGroupsIterator .hasNext ()) {
557- Authorizable memberOfGroup = memberOfGroupsIterator .next ();
558- membershipGroupsFromRepository .add (memberOfGroup .getID ());
559- }
560- return membershipGroupsFromRepository ;
561- }
562-
563530 private Set <String > getMembershipGroupsFromConfig (String [] memberOf ) {
564531 // Set which holds all other groups which the current Group from config
565532 // is a member of
0 commit comments