From 8a646968d215afed52d52defb780e233300d5205 Mon Sep 17 00:00:00 2001 From: Felix Schumacher Date: Wed, 14 Mar 2018 09:08:12 +0100 Subject: [PATCH 3/5] Further simplify swapIn by extracting code to load session from store into private method --- .../catalina/session/PersistentManagerBase.java | 29 +++++++++++++--------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/java/org/apache/catalina/session/PersistentManagerBase.java b/java/org/apache/catalina/session/PersistentManagerBase.java index a235636deb..8f525384e7 100644 --- a/java/org/apache/catalina/session/PersistentManagerBase.java +++ b/java/org/apache/catalina/session/PersistentManagerBase.java @@ -707,18 +707,7 @@ public abstract class PersistentManagerBase extends ManagerBase session = sessions.get(id); if (session == null) { - try { - if (SecurityUtil.isPackageProtectionEnabled()){ - session = securedStoreLoad(id); - } else { - session = store.load(id); - } - } catch (ClassNotFoundException e) { - String msg = sm.getString( - "persistentManager.deserializeError", id); - log.error(msg, e); - throw new IllegalStateException(msg, e); - } + session = loadSessionFromStore(id); if (session != null && !session.isValid()) { log.error(sm.getString( @@ -756,6 +745,22 @@ public abstract class PersistentManagerBase extends ManagerBase } + private Session loadSessionFromStore(String id) throws IOException { + try { + if (SecurityUtil.isPackageProtectionEnabled()){ + return securedStoreLoad(id); + } else { + return store.load(id); + } + } catch (ClassNotFoundException e) { + String msg = sm.getString( + "persistentManager.deserializeError", id); + log.error(msg, e); + throw new IllegalStateException(msg, e); + } + } + + private Session securedStoreLoad(String id) throws IOException, ClassNotFoundException { try { return AccessController.doPrivileged( -- 2.13.6