讀取 web.xml 配置

package com.ajaxjs.web; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.Vector; import java.util.function.Function; import javax.servlet.FilterConfig; import javax.servlet.ServletConfig; import org.junit.Test; public class TestWebXml { /** * 遍歷註解的配置,需要什麼類,收集起來,放到一個 hash 之中, Servlet 或 Filter 通用 * * @param emu * @param getValue * @return Map */ public static Map<String, String> emu2map(Enumeration<String> emu, Function<String, String> getValue) { Map<String, String> map = new HashMap<>(); while (emu.hasMoreElements()) { String key = emu.nextElement(); String value = getValue.apply(key); map.put(key, value); } return map; } /** * 將過濾器的配置轉換爲 Map * * @param config 過濾器配置 * @return 過濾器配置的 Map 結構 */ public static Map<String, String> initFilterConfig2Map(FilterConfig config) { return emu2map(config.getInitParameterNames(), key -> config.getInitParameter(key)); } /** * 將 Servlet 的配置轉換爲 Map * * @param config Servlet 配置 * @return Servlet 配置的 Map 結構 */ public static Map<String, String> initServletConfig2Map(ServletConfig config) { return emu2map(config.getInitParameterNames(), key -> config.getInitParameter(key)); } @Test public void testInitFilterConfig2Map() { FilterConfig config = mock(FilterConfig.class); // 模擬註解 Vector<String> v = new Vector<>(); v.addElement("urlPatterns"); when(config.getInitParameterNames()).thenReturn(v.elements()); when(config.getInitParameter("urlPatterns")).thenReturn("/service/*"); Map<String, String> map = initFilterConfig2Map(config); assertEquals("/service/*", map.get("urlPatterns")); } @Test public void testInitServletConfig2Map() { ServletConfig config = mock(ServletConfig.class); // 模擬註解 Vector<String> v = new Vector<>(); v.addElement("urlPatterns"); when(config.getInitParameterNames()).thenReturn(v.elements()); when(config.getInitParameter("urlPatterns")).thenReturn("/service/*"); Map<String, String> map = initServletConfig2Map(config); assertEquals("/service/*", map.get("urlPatterns")); } @Test public void test() { FilterConfig filterConfig = mock(FilterConfig.class); String packageName = "com.ajaxjs"; // 模擬 web.xml Vector<String> v = new Vector<>(); v.addElement("controller"); when(filterConfig.getInitParameter("controller")).thenReturn(packageName); Enumeration<String> e = v.elements(); when(filterConfig.getInitParameterNames()).thenReturn(e); Map<String, String> map = initFilterConfig2Map(filterConfig); System.out.println(map); assertNotNull(map); } }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章