NIHVIVO-1399 make the contructor and the setBean() protected, so we can subclass this bean for faking external authentication.

This commit is contained in:
jeb228 2010-11-28 22:34:15 +00:00
parent bd69387ba9
commit 7ac8b0c811

View file

@ -5,6 +5,7 @@ package edu.cornell.mannlib.vitro.webapp.controller.authenticate;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import javax.servlet.ServletContext;
import javax.servlet.ServletRequest; import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; 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 * Get the bean from the servlet context. If there is no bean, create one.
* bean, create one.
* *
* Never returns null. * Never returns null.
*/ */
@ -57,8 +57,10 @@ public class ExternalAuthHelper {
log.trace("No session; no need to create one."); log.trace("No session; no need to create one.");
return DUMMY_HELPER; return DUMMY_HELPER;
} }
ServletContext context = session.getServletContext();
Object attr = session.getAttribute(BEAN_ATTRIBUTE); Object attr = context.getAttribute(BEAN_ATTRIBUTE);
if (attr instanceof ExternalAuthHelper) { if (attr instanceof ExternalAuthHelper) {
log.trace("Found a bean: " + attr); log.trace("Found a bean: " + attr);
return (ExternalAuthHelper) attr; return (ExternalAuthHelper) attr;
@ -66,10 +68,15 @@ public class ExternalAuthHelper {
ExternalAuthHelper bean = buildBean(); ExternalAuthHelper bean = buildBean();
log.debug("Created a bean: " + bean); log.debug("Created a bean: " + bean);
session.setAttribute(BEAN_ATTRIBUTE, bean); setBean(context, bean);
return 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() { private static ExternalAuthHelper buildBean() {
String externalAuthServerUrl = ConfigurationProperties String externalAuthServerUrl = ConfigurationProperties
.getProperty(PROPERTY_EXTERNAL_AUTH_SERVER_URL); .getProperty(PROPERTY_EXTERNAL_AUTH_SERVER_URL);
@ -87,7 +94,8 @@ public class ExternalAuthHelper {
private final String externalAuthServerUrl; private final String externalAuthServerUrl;
private final String externalAuthHeaderName; 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) { String externalAuthHeaderName) {
this.externalAuthServerUrl = trimThis(externalAuthServerUrl); this.externalAuthServerUrl = trimThis(externalAuthServerUrl);
this.externalAuthHeaderName = trimThis(externalAuthHeaderName); this.externalAuthHeaderName = trimThis(externalAuthHeaderName);