package net.sourceforge.stripes; import java.util.HashMap; import java.util.Map; import net.sourceforge.stripes.config.BootstrapPropertyResolver; import net.sourceforge.stripes.config.Configuration; import net.sourceforge.stripes.config.DefaultConfiguration; import net.sourceforge.stripes.controller.DispatcherServlet; import net.sourceforge.stripes.controller.StripesFilter; import net.sourceforge.stripes.mock.MockFilterConfig; import net.sourceforge.stripes.mock.MockServletContext; /** * Test fixture that sets up a MockServletContext in a way that it can then be * used be any test in Stripes. * * @author Tim Fennell */ public class StripesTestFixture { private static Configuration configuration; /** * Create and return a new MockServletContext. * * @return an instance of MockServletContext for testing wiith */ public static synchronized MockServletContext createServletContext() { return new MockServletContext("test") .addFilter(StripesFilter.class, "StripesFilter", getDefaultFilterParams()) .setServlet(DispatcherServlet.class, "StripesDispatcher", null); } /** Gets a reference to the default configuration, which can be used for simple testing. */ public static synchronized Configuration getDefaultConfiguration() { if (configuration == null) { Configuration configuration = new DefaultConfiguration(); MockFilterConfig filterConfig = new MockFilterConfig(); filterConfig.addAllInitParameters(getDefaultFilterParams()); MockServletContext mockServletContext = createServletContext(); try { filterConfig.setServletContext(mockServletContext); configuration.setBootstrapPropertyResolver(new BootstrapPropertyResolver(filterConfig)); configuration.init(); StripesTestFixture.configuration = configuration; } finally { mockServletContext.close(); } } return configuration; } /** Gets a map containing the default initialization parameters for StripesFilter */ public static Map<String, String> getDefaultFilterParams() { Map<String, String> map = new HashMap<String, String>(); map.put("ActionResolver.Packages", "net.sourceforge.stripes"); map.put("LocalePicker.Class", "net.sourceforge.stripes.localization.MockLocalePicker"); return map; } }