Reduce warning messages in unit tests.

We get a warning on any attempt to use anything that may be affected by DeveloperSettings, because DeveloperSetting tries to use ConfigurationProperties to find its properties file. We could avoid this by requiring the use of a ConfigurationPropertiesStub, but it seems to make more sense to routinely create a DeveloperSettingsStub on each ServletContextStub.
This commit is contained in:
j2blake 2013-11-25 12:31:51 -05:00
parent 0b43a44097
commit 70298026ea
3 changed files with 42 additions and 2 deletions

View file

@ -179,7 +179,7 @@ public class DeveloperSettings {
// The factory // The factory
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
private static final String ATTRIBUTE_NAME = DeveloperSettings.class protected static final String ATTRIBUTE_NAME = DeveloperSettings.class
.getName(); .getName();
public static DeveloperSettings getBean(HttpServletRequest req) { public static DeveloperSettings getBean(HttpServletRequest req) {
@ -203,7 +203,7 @@ public class DeveloperSettings {
private final Map<Keys, Object> settings = new EnumMap<>(Keys.class); private final Map<Keys, Object> settings = new EnumMap<>(Keys.class);
private DeveloperSettings(ServletContext ctx) { protected DeveloperSettings(ServletContext ctx) {
updateFromFile(ctx); updateFromFile(ctx);
} }

View file

@ -0,0 +1,33 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package stubs.edu.cornell.mannlib.vitro.webapp.utils.developer;
import javax.servlet.ServletContext;
import edu.cornell.mannlib.vitro.webapp.utils.developer.DeveloperSettings;
/**
* Do everything that a standard DeveloperSettings would do, except loading from
* a properties file.
*
* That way, we don't require ConfigurationProperties to find the Vitro home
* directory, so we don't throw errors if there is no ConfigurationProperties.
*/
public class DeveloperSettingsStub extends DeveloperSettings {
/**
* Factory method. Create the stub and set it into the ServletContext.
*/
public static void set(ServletContext ctx) {
ctx.setAttribute(ATTRIBUTE_NAME, new DeveloperSettingsStub(ctx));
}
protected DeveloperSettingsStub(ServletContext ctx) {
super(ctx);
}
@Override
protected void updateFromFile(ServletContext ctx) {
// Don't bother.
}
}

View file

@ -21,6 +21,8 @@ import javax.servlet.ServletException;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import stubs.edu.cornell.mannlib.vitro.webapp.utils.developer.DeveloperSettingsStub;
/** /**
* A simple stand-in for the {@link ServletContext}, for use in unit tests. * A simple stand-in for the {@link ServletContext}, for use in unit tests.
*/ */
@ -36,6 +38,11 @@ public class ServletContextStub implements ServletContext {
private final Map<String, String> mockResources = new HashMap<String, String>(); private final Map<String, String> mockResources = new HashMap<String, String>();
private final Map<String, String> realPaths = new HashMap<String, String>(); private final Map<String, String> realPaths = new HashMap<String, String>();
public ServletContextStub() {
// Assume that unit tests won't want to use Developer mode.
DeveloperSettingsStub.set(this);
}
public void setContextPath(String contextPath) { public void setContextPath(String contextPath) {
if (contextPath == null) { if (contextPath == null) {
throw new NullPointerException("contextPath may not be null."); throw new NullPointerException("contextPath may not be null.");