From 7ac8b0c811ed9a1071b822bde600abd3ace7228a Mon Sep 17 00:00:00 2001 From: jeb228 Date: Sun, 28 Nov 2010 22:34:15 +0000 Subject: [PATCH] NIHVIVO-1399 make the contructor and the setBean() protected, so we can subclass this bean for faking external authentication. --- .../authenticate/ExternalAuthHelper.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/authenticate/ExternalAuthHelper.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/authenticate/ExternalAuthHelper.java index b97056aca..0023506bb 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/authenticate/ExternalAuthHelper.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/authenticate/ExternalAuthHelper.java @@ -5,6 +5,7 @@ package edu.cornell.mannlib.vitro.webapp.controller.authenticate; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import javax.servlet.ServletContext; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @@ -41,8 +42,7 @@ public class ExternalAuthHelper { // ---------------------------------------------------------------------- /** - * If there is no session, there is no bean. If there is a session and no - * bean, create one. + * Get the bean from the servlet context. If there is no bean, create one. * * Never returns null. */ @@ -57,8 +57,10 @@ public class ExternalAuthHelper { log.trace("No session; no need to create one."); return DUMMY_HELPER; } + + ServletContext context = session.getServletContext(); - Object attr = session.getAttribute(BEAN_ATTRIBUTE); + Object attr = context.getAttribute(BEAN_ATTRIBUTE); if (attr instanceof ExternalAuthHelper) { log.trace("Found a bean: " + attr); return (ExternalAuthHelper) attr; @@ -66,10 +68,15 @@ public class ExternalAuthHelper { ExternalAuthHelper bean = buildBean(); log.debug("Created a bean: " + bean); - session.setAttribute(BEAN_ATTRIBUTE, bean); + setBean(context, bean); return bean; } + /** It would be private, but we want to allow calls for faking. */ + protected static void setBean(ServletContext context, ExternalAuthHelper bean) { + context.setAttribute(BEAN_ATTRIBUTE, bean); + } + private static ExternalAuthHelper buildBean() { String externalAuthServerUrl = ConfigurationProperties .getProperty(PROPERTY_EXTERNAL_AUTH_SERVER_URL); @@ -87,7 +94,8 @@ public class ExternalAuthHelper { private final String externalAuthServerUrl; private final String externalAuthHeaderName; - private ExternalAuthHelper(String externalAuthServerUrl, + /** It would be private, but we want to allow subclasses for faking. */ + protected ExternalAuthHelper(String externalAuthServerUrl, String externalAuthHeaderName) { this.externalAuthServerUrl = trimThis(externalAuthServerUrl); this.externalAuthHeaderName = trimThis(externalAuthHeaderName);