Skip to content

Commit 54fe26e

Browse files
committed
[SHIRO-778] onInit method on AuthenticatingRealm is called twice
1 parent 2e29785 commit 54fe26e

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

config/ogdl/src/main/java/org/apache/shiro/config/ogdl/ReflectionBuilder.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,6 @@ private String parseBeanId(String lhs) {
271271
public Map<String, ?> buildObjects(Map<String, String> kvPairs) {
272272

273273
if (kvPairs != null && !kvPairs.isEmpty()) {
274-
275274
BeanConfigurationProcessor processor = new BeanConfigurationProcessor();
276275

277276
for (Map.Entry<String, String> entry : kvPairs.entrySet()) {
@@ -287,10 +286,15 @@ private String parseBeanId(String lhs) {
287286
}
288287

289288
processor.execute();
290-
}
291289

292-
//SHIRO-413: init method must be called for constructed objects that are Initializable
293-
LifecycleUtils.init(objects.values());
290+
//SHIRO-778: onInit method on AuthenticatingRealm is called twice
291+
objects.keySet().stream()
292+
.filter(key -> !kvPairs.keySet().contains(key))
293+
.forEach(key -> LifecycleUtils.init(objects.get(key)));
294+
} else {
295+
//SHIRO-413: init method must be called for constructed objects that are Initializable
296+
LifecycleUtils.init(objects.values());
297+
}
294298

295299
return objects;
296300
}

0 commit comments

Comments
 (0)