package org.nutz.mock.servlet; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.Enumeration; import java.util.EventListener; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.Vector; import javax.servlet.Filter; import javax.servlet.RequestDispatcher; import javax.servlet.Servlet; import javax.servlet.ServletContext; import javax.servlet.ServletException; import org.nutz.lang.Lang; import org.nutz.log.Log; import org.nutz.log.Logs; public class MockServletContext extends MockServletObject implements ServletContext { private static final Log log = Logs.get(); public int getMajorVersion() { return 2; } public String getMimeType(String arg0) { throw Lang.noImplement(); } public int getMinorVersion() { return 5; } public RequestDispatcher getNamedDispatcher(String arg0) { throw Lang.noImplement(); } public String getRealPath(String path) { if (path.startsWith("/WEB-INF/lib/")) return new File(path.substring("/WEB-INF/lib/".length())).getAbsolutePath(); if (path.startsWith("/WEB-INF/classes/")) return new File(path.substring("/WEB-INF/classes/".length())).getAbsolutePath(); if (path.startsWith("/")) return new File("." + path).getAbsolutePath(); return new File(path).getAbsolutePath(); } public RequestDispatcher getRequestDispatcher(String arg0) { throw Lang.noImplement(); } public URL getResource(String name) throws MalformedURLException { return getClass().getResource(name); } public InputStream getResourceAsStream(String name) { return getClass().getResourceAsStream(name); } public Set<String> getResourcePaths(String name) { try { HashSet<String> hashSet = new HashSet<String>(); Enumeration<URL> enumeration; enumeration = getClass().getClassLoader().getResources(name); while (enumeration.hasMoreElements()) { URL url = (URL) enumeration.nextElement(); hashSet.add(url.toString()); } return hashSet; } catch (IOException e) { log.info("IOException", e); return null; } } public String getServerInfo() { return "NutServer TestCase 1.0"; } public Servlet getServlet(String name) throws ServletException { throw Lang.noImplement(); } private String servletContextName; public String getServletContextName() { return servletContextName; } public void setServletContextName(String servletContextName) { this.servletContextName = servletContextName; } public Enumeration<String> getServletNames() { throw Lang.noImplement(); } public Enumeration<Servlet> getServlets() { throw Lang.noImplement(); } public void log(String arg0) { log.info(arg0); } public void log(Exception arg0, String arg1) { log.info(arg1, arg0); } public void log(String arg0, Throwable arg1) { log.info(arg0, arg1); } protected Map<String, Object> attributeMap = new HashMap<String, Object>(); public void removeAttribute(String key) { attributeMap.remove(key); } public void setAttribute(String key, Object value) { attributeMap.put(key, value); } public Object getAttribute(String key) { return attributeMap.get(key); } public Enumeration<String> getAttributeNames() { return new Vector<String>(attributeMap.keySet()).elements(); } public ServletContext getContext(String arg0) { throw Lang.noImplement(); } public String getContextPath() { return ""; } // =====================================================3.0 public int getEffectiveMajorVersion() { throw Lang.noImplement(); } public int getEffectiveMinorVersion() { throw Lang.noImplement(); } public boolean setInitParameter(String name, String value) { throw Lang.noImplement(); } public <T extends Servlet> T createServlet(Class<T> clazz) throws ServletException { throw Lang.noImplement(); } public <T extends Filter> T createFilter(Class<T> clazz) throws ServletException { throw Lang.noImplement(); } public void addListener(String className) { throw Lang.noImplement(); } public <T extends EventListener> void addListener(T t) { throw Lang.noImplement(); } public void addListener(Class<? extends EventListener> listenerClass) { throw Lang.noImplement(); } public <T extends EventListener> T createListener(Class<T> clazz) throws ServletException { throw Lang.noImplement(); } public ClassLoader getClassLoader() { throw Lang.noImplement(); } public void declareRoles(String... roleNames) { throw Lang.noImplement(); } }