From 638e639073d5a166b753a6623f9527170d7997d4 Mon Sep 17 00:00:00 2001 From: "Thomas M. DuBuisson" Date: Mon, 17 Aug 2020 16:09:04 -0700 Subject: [PATCH] Fix inefficient iterators Iterating over a map then looking up a key guarentees 2x the hashmap lookups than what is necessary. --- .../shiro/realm/text/TextConfigurationRealm.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/apache/shiro/realm/text/TextConfigurationRealm.java b/core/src/main/java/org/apache/shiro/realm/text/TextConfigurationRealm.java index 84c74b62bd..0439f93bb1 100644 --- a/core/src/main/java/org/apache/shiro/realm/text/TextConfigurationRealm.java +++ b/core/src/main/java/org/apache/shiro/realm/text/TextConfigurationRealm.java @@ -148,8 +148,9 @@ protected void processRoleDefinitions(Map roleDefs) { if (roleDefs == null || roleDefs.isEmpty()) { return; } - for (String rolename : roleDefs.keySet()) { - String value = roleDefs.get(rolename); + for (Map.Entry entry : roleDefs.entrySet()) { + String rolename = entry.getKey(); + String value = entry.getValue(); SimpleRole role = getRole(rolename); if (role == null) { @@ -177,9 +178,9 @@ protected void processUserDefinitions(Map userDefs) { if (userDefs == null || userDefs.isEmpty()) { return; } - for (String username : userDefs.keySet()) { - - String value = userDefs.get(username); + for (Map.Entry entry : userDefs.entrySet()) { + String username = entry.getKey(); + String value = entry.getValue(); String[] passwordAndRolesArray = StringUtils.split(value);