/** * Get the {@link Subject} from somewhere. * * <p>If per-request subject caching is enabled, the request is checked first. If no subject is * present there, DeadboltHandler#getSubject is called. The resulting subject, if any, is cached * in the request. * * <p>If per-request subject caching is not enabled, DeadboltHandler#getSubject is called. * * @param deadboltHandler * @param ctx * @return */ public static Subject getSubject(DeadboltHandler deadboltHandler, Http.Context ctx) { Object cachedUser = ctx.args.get(PluginConfigKeys.CACHE_DEADBOLT_USER); Subject subject = null; try { if (PluginUtils.isUserCacheEnabled()) { if (cachedUser != null) { subject = (Subject) cachedUser; } else { subject = deadboltHandler.getSubject(ctx); ctx.args.put(PluginConfigKeys.CACHE_DEADBOLT_USER, subject); } } else { subject = deadboltHandler.getSubject(ctx); } } catch (Exception e) { Logger.error("Error getting subject: " + e.getMessage(), e); } return subject; }