⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mockservletcontext.java

📁 Wicket一个开发Java Web应用程序框架。它使得开发web应用程序变得容易而轻松。 Wicket利用一个POJO data beans组件使得它可以与任何持久层技术相结合。
💻 JAVA
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.wicket.protocol.http;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.net.MalformedURLException;import java.net.URL;import java.util.Collections;import java.util.Enumeration;import java.util.HashSet;import java.util.Set;import javax.servlet.RequestDispatcher;import javax.servlet.Servlet;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import org.apache.wicket.Application;import org.apache.wicket.util.value.ValueMap;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * Mock implementation of the servlet context for testing purposes. This implementation supports all * of the standard context methods except that request dispatching just indicates what is being * dispatched to, rather than doing the actual dispatch. * <p> * The context can be configured with a path parameter that should point to an absolute directory * location that represents the place where the contents of the WAR bundle are located. Setting this * value allows all of the resource location functionality to work as in a fully functioning web * application. This value is not set then not resource location functionality will work and instead * null will always be returned. *  * @author Chris Turner */public class MockServletContext implements ServletContext{	private static final Logger log = LoggerFactory.getLogger(MockServletContext.class);	private final Application application;	private final ValueMap attributes = new ValueMap();	private final ValueMap initParameters = new ValueMap();	/** Map of mime types */	private final ValueMap mimeTypes = new ValueMap();	private File webappRoot;	/**	 * Create the mock object. As part of the creation, the context sets the root directory where	 * web application content is stored. This must be an ABSOLUTE directory relative to where the	 * tests are being executed. For example: <code>System.getProperty("user.dir") +	 * "/src/webapp"</code>	 * 	 * @param application	 *            The application that this context is for	 * @param path	 *            The path to the root of the web application	 */	public MockServletContext(final Application application, final String path)	{		this.application = application;		webappRoot = null;		if (path != null)		{			webappRoot = new File(path);			if (!webappRoot.exists() || !webappRoot.isDirectory())			{				log.warn("WARNING: The webapp root directory is invalid: " + path);				webappRoot = null;			}		}		// assume we're running in maven or an eclipse project created by maven,		// so the sessions directory will be created inside the target directory,		// and will be cleaned up with a mvn clean		File file = new File("target/work/");		file.mkdirs();		attributes.put("javax.servlet.context.tempdir", file);		mimeTypes.put("html", "text/html");		mimeTypes.put("htm", "text/html");		mimeTypes.put("css", "text/css");		mimeTypes.put("xml", "text/xml");		mimeTypes.put("js", "text/plain");		mimeTypes.put("gif", "image/gif");		mimeTypes.put("jpg", "image/jpeg");		mimeTypes.put("png", "image/png");	}	/**	 * Add an init parameter.	 * 	 * @param name	 *            The parameter name	 * @param value	 *            The parameter value	 */	public void addInitParameter(final String name, final String value)	{		initParameters.put(name, value);	}	// Configuration methods	/**	 * Add a new recognized mime type.	 * 	 * @param fileExtension	 *            The file extension (e.g. "jpg")	 * @param mimeType	 *            The mime type (e.g. "image/jpeg")	 */	public void addMimeType(final String fileExtension, final String mimeType)	{		mimeTypes.put(fileExtension, mimeType);	}	/**	 * Get an attribute with the given name.	 * 	 * @param name	 *            The attribute name	 * @return The value, or null	 */	public Object getAttribute(final String name)	{		return attributes.get(name);	}	/**	 * Get all of the attribute names.	 * 	 * @return The attribute names	 */	public Enumeration getAttributeNames()	{		return Collections.enumeration(attributes.keySet());	}	// ServletContext interface methods	/**	 * Get the context for the given URL path	 * 	 * @param name	 *            The url path	 * @return Always returns this	 */	public ServletContext getContext(String name)	{		return this;	}	/**	 * Get the init parameter with the given name.	 * 	 * @param name	 *            The name	 * @return The parameter, or null if no such parameter	 */	public String getInitParameter(final String name)	{		return initParameters.getString(name);	}	/**	 * Get the name of all of the init parameters.	 * 	 * @return The init parameter names	 */	public Enumeration getInitParameterNames()	{		return Collections.enumeration(initParameters.keySet());	}	/**	 * @return Always 2	 */	public int getMajorVersion()	{		return 2;	}	/**	 * Get the mime type for the given file. Uses a hardcoded map of mime types set at	 * Initialization time.	 * 	 * @param name	 *            The name to get the mime type for	 * @return The mime type	 */	public String getMimeType(final String name)	{		int index = name.lastIndexOf('.');		if (index == -1 || index == (name.length() - 1))		{			return null;		}		else		{			return mimeTypes.getString(name.substring(index + 1));		}	}	/**	 * @return Always 3	 */	public int getMinorVersion()	{		return 3;	}	/**	 * Wicket does not use the RequestDispatcher, so this implementation just returns a dummy value.	 * 	 * @param name	 *            The name of the servlet or JSP	 * @return The dispatcher	 */	public RequestDispatcher getNamedDispatcher(final String name)	{		return getRequestDispatcher(name);	}	/**	 * Get the real file path of the given resource name.	 * 	 * @param name	 *            The name	 * @return The real path or null	 */	public String getRealPath(String name)	{		if (webappRoot == null)		{			return null;		}		if (name.startsWith("/"))		{			name = name.substring(1);		}		File f = new File(webappRoot, name);		if (!f.exists())		{			return null;		}		else		{			return f.getPath();		}	}	/**	 * Wicket does not use the RequestDispatcher, so this implementation just returns a dummy value.	 * 	 * @param name	 *            The name of the resource to get the dispatcher for	 * @return The dispatcher	 */	public RequestDispatcher getRequestDispatcher(final String name)	{		return new RequestDispatcher()		{			public void forward(ServletRequest servletRequest, ServletResponse servletResponse)					throws IOException			{				servletResponse.getWriter().write("FORWARD TO RESOURCE: " + name);			}			public void include(ServletRequest servletRequest, ServletResponse servletResponse)					throws IOException			{				servletResponse.getWriter().write("INCLUDE OF RESOURCE: " + name);			}		};	}	/**	 * Get the URL for a particular resource that is relative to the web app root directory.	 * 	 * @param name	 *            The name of the resource to get	 * @return The resource, or null if resource not found	 * @throws MalformedURLException	 *             If the URL is invalid	 */	public URL getResource(String name) throws MalformedURLException	{		if (webappRoot == null)		{			return null;		}		if (name.startsWith("/"))		{			name = name.substring(1);		}		File f = new File(webappRoot, name);		if (!f.exists())		{			return null;		}		else		{			return f.toURI().toURL();		}	}	/**	 * Get an input stream for a particular resource that is relative to the web app root directory.	 * 	 * @param name	 *            The name of the resource to get	 * @return The input stream for the resource, or null of resource is not found	 */	public InputStream getResourceAsStream(String name)	{		if (webappRoot == null)		{			return null;		}		if (name.startsWith("/"))		{			name = name.substring(1);		}		File f = new File(webappRoot, name);		if (!f.exists())		{			return null;		}		else		{			try			{				return new FileInputStream(f);			}			catch (FileNotFoundException e)			{				e.printStackTrace();				return null;			}		}	}	/**	 * Get the resource paths starting from the web app root directory and then relative to the the	 * given name.	 * 	 * @param name	 *            The starting name	 * @return The set of resource paths at this location	 */	public Set getResourcePaths(String name)	{		if (webappRoot == null)		{			return new HashSet();		}		if (name.startsWith("/"))		{			name = name.substring(1);		}		if (name.endsWith("/"))		{			name = name.substring(0, name.length() - 1);		}		String[] elements = null;		if (name.trim().length() == 0)		{			elements = new String[0];		}		else		{			elements = name.split("/");		}		File current = webappRoot;		for (int i = 0; i < elements.length; i++)		{			File[] files = current.listFiles();			boolean match = false;			for (int f = 0; f < files.length; f++)			{				if (files[f].getName().equals(elements[i]) && files[f].isDirectory())				{					current = files[f];					match = true;					break;				}			}			if (!match)			{				return null;			}		}		File[] files = current.listFiles();		Set result = new HashSet();		int stripLength = webappRoot.getPath().length();		for (int f = 0; f < files.length; f++)		{			String s = files[f].getPath().substring(stripLength).replace('\\', '/');			if (files[f].isDirectory())			{				s = s + "/";			}			result.add(s);		}		return result;	}	/**	 * Get the server info.	 * 	 * @return The server info	 */	public String getServerInfo()	{		return "Wicket Mock Test Environment v1.0";	}	/**	 * NOT USED - Servlet Spec requires that this always returns null.	 * 	 * @param name	 *            Not used	 * @return null	 * @throws ServletException	 *             Not used	 */	public Servlet getServlet(String name) throws ServletException	{		return null;	}	/**	 * Return the name of the servlet context.	 * 	 * @return The name	 */	public String getServletContextName()	{		return application.getName();	}	/**	 * NOT USED - Servlet spec requires that this always returns null.	 * 	 * @return null	 */	public Enumeration getServletNames()	{		return null;	}	/**	 * NOT USED - Servlet spec requires that this always returns null.	 * 	 * @return null	 */	public Enumeration getServlets()	{		return null;	}	/**	 * As part of testing we always log to the console.	 * 	 * @param e	 *            The exception to log	 * @param msg	 *            The message to log	 */	public void log(Exception e, String msg)	{		log.error(msg, e);	}	/**	 * As part of testing we always log to the console.	 * 	 * @param msg	 *            The message to log	 */	public void log(String msg)	{		log.info(msg);	}	/**	 * As part of testing we always log to the console.	 * 	 * @param msg	 *            The message to log	 * @param cause	 *            The cause exception	 */	public void log(String msg, Throwable cause)	{		log.error(msg, cause);	}	/**	 * Remove an attribute with the given name.	 * 	 * @param name	 *            The name	 */	public void removeAttribute(final String name)	{		attributes.remove(name);	}	/**	 * Set an attribute.	 * 	 * @param name	 *            The name of the attribute	 * @param o	 *            The value	 */	public void setAttribute(final String name, final Object o)	{		attributes.put(name, o);	}	public String getContextPath()	{		return "";	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -