Skip to content

Commit 54f6e8f

Browse files
authored
Merge pull request #590 from Netcentric/bugfix/554-improve-performance-of-unmanagedAcePathsRegex
Improve Performance of unmanagedAcePathsRegex
2 parents ad9b75a + b7cd281 commit 54f6e8f

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

Diff for: accesscontroltool-bundle/src/main/java/biz/netcentric/cq/tools/actool/configmodel/AuthorizablesConfig.java

+12-10
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88
*/
99
package biz.netcentric.cq.tools.actool.configmodel;
1010

11+
import java.util.HashMap;
1112
import java.util.HashSet;
1213
import java.util.LinkedHashSet;
14+
import java.util.Map;
1315
import java.util.Set;
1416

1517
import org.apache.commons.lang3.StringUtils;
@@ -18,18 +20,18 @@
1820
public class AuthorizablesConfig extends LinkedHashSet<AuthorizableConfigBean> {
1921
private static final long serialVersionUID = -253685832563496002L;
2022

21-
public AuthorizableConfigBean getAuthorizableConfig(String authorizableId) {
22-
for (AuthorizableConfigBean authorizableConfigBean : this) {
23-
if (StringUtils.equals(authorizableConfigBean.getAuthorizableId(), authorizableId)) {
24-
return authorizableConfigBean;
25-
}
26-
}
27-
return null;
23+
private Map<String, AuthorizableConfigBean> configBeansByPrincipalId = new HashMap<>();
24+
25+
@Override
26+
public boolean add(AuthorizableConfigBean configBean) {
27+
AuthorizableConfigBean previous = configBeansByPrincipalId.put(configBean.getPrincipalName(), configBean);
28+
assert previous == null;
29+
return super.add(configBean);
2830
}
2931

30-
public AuthorizableConfigBean getAuthorizableConfigByPrincipalName(String principalName) {
32+
public AuthorizableConfigBean getAuthorizableConfig(String authorizableId) {
3133
for (AuthorizableConfigBean authorizableConfigBean : this) {
32-
if (StringUtils.equals(authorizableConfigBean.getPrincipalName(), principalName)) {
34+
if (StringUtils.equals(authorizableConfigBean.getAuthorizableId(), authorizableId)) {
3335
return authorizableConfigBean;
3436
}
3537
}
@@ -67,7 +69,7 @@ public Set<String> removeUnmanagedPrincipalNamesAtPath(String path, Set<String>
6769

6870
Set<String> filteredPrincipals = new HashSet<String>();
6971
for (String principal : principals) {
70-
AuthorizableConfigBean authorizableConfig = getAuthorizableConfigByPrincipalName(principal);
72+
AuthorizableConfigBean authorizableConfig = configBeansByPrincipalId.get(principal);
7173
if (authorizableConfig == null /* happens if migrateFrom is used, #290 */
7274
|| authorizableConfig.managesPath(path, defaultUnmanagedAcePathsRegex)) {
7375
filteredPrincipals.add(principal);

0 commit comments

Comments
 (0)