[Idrs-commit] CVS: Idrs/dev/src/net/sourceforge/idrs/test IDRSTester.java,NONE,1.1 TestRequest.java,
Brought to you by:
bigman921
|
From: Marc B. <big...@us...> - 2002-10-13 15:05:02
|
Update of /cvsroot/idrs/Idrs/dev/src/net/sourceforge/idrs/test In directory usw-pr-cvs1:/tmp/cvs-serv2348/net/sourceforge/idrs/test Added Files: IDRSTester.java TestRequest.java TestResponse.java TestSession.java Log Message: added unit testing capabilities --- NEW FILE: IDRSTester.java --- package net.sourceforge.idrs.test; import java.io.*; import java.util.*; import net.sourceforge.idrs.utils.*; import net.sourceforge.idrs.deploy.compile.*; import net.sourceforge.idrs.core.report.*; import net.sourceforge.idrs.script.embedable.*; import net.sourceforge.idrs.script.*; import java.sql.*; import javax.servlet.http.*; import javax.servlet.*; public class IDRSTester { TestSession session; TestRequest request; TestResponse response; Application app; String xmlParser, schemaSrc, rmlNS; IDRSRep rep; String compilerLog; HashMap conns; UserInfo user; String docName; int docID; IDRSScriptLanguage script; String digest; public IDRSTester(String xmlParser, String schemaSrc, String rmlNS,String scriptClass,String digest) throws Exception { this.xmlParser = xmlParser; this.schemaSrc = schemaSrc; this.rmlNS = rmlNS; session = new TestSession(); request = new TestRequest(); response = new TestResponse(); app = new Application(); conns = new HashMap(); script = (IDRSScriptLanguage) Class.forName(scriptClass).newInstance(); this.digest = digest; } public String loadPage(String rmlPath,String docName, int docID) throws Exception { StringWriter out = new StringWriter(); RmlCompiler compiler = new RmlCompiler(new PrintWriter(out),rmlPath,xmlParser,schemaSrc,true,rmlNS); rep = compiler.getReport(); compilerLog = out.getBuffer().toString(); this.docName = docName; this.docID = docID; return compilerLog; } public Application getApplication() { return app; } public TestSession getSession() { return session; } public TestRequest getRequest() { return request; } public TestResponse getResponse() { return response; } public void addCon(String name, Connection con) { conns.put(name,con); } public void createUserInfo(int id, String user, String groups) { this.user = new UserInfo(groups,id,user); } public void executeHead() throws Exception { rep.getHead().init(conns,user.getUserID(),docID,request.getRequestURL().toString(),(HttpSession) session,(HttpServletRequest) request,(HttpServletResponse) response,app,script,user,digest); } public String executeBody() { return rep.buildReport(); } public IDRSScript getScripter() { return rep.getHead(); } public IDRSHead getHead() { return rep.getHead(); } } --- NEW FILE: TestRequest.java --- /* * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact ap...@ap.... * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * [Additional notices, if required by prior licensing conditions] * */ package net.sourceforge.idrs.test; import java.io.IOException; import java.util.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; /** * Wrapper around a <code>javax.servlet.http.HttpServletRequest</code> * that transforms an application request object (which might be the original * one passed to a servlet, or might be based on the 2.3 * <code>javax.servlet.http.HttpServletRequestWrapper</code> class) * back into an internal <code>org.apache.catalina.HttpRequest</code>. * <p> * <strong>WARNING</strong>: Due to Java's lack of support for multiple * inheritance, all of the logic in <code>ApplicationRequest</code> is * duplicated in <code>ApplicationHttpRequest</code>. Make sure that you * keep these two classes in synchronization when making changes! * * @author Craig R. McClanahan * @version $Revision: 1.1 $ $Date: 2002/10/13 15:04:59 $ */ public final class TestRequest implements HttpServletRequest { // ------------------------------------------------------- Static Variables // ----------------------------------------------------------- Constructors public TestRequest() { //super(null); } /** * Construct a new wrapped request around the specified servlet request. * * @param request The servlet request being wrapped */ public TestRequest(HttpServletRequest request) { //super(null); //super(request); //setRequest(request); } // ----------------------------------------------------- Instance Variables /** * The request attributes for this request. This is initialized from the * wrapped request, but updates are allowed. */ protected HashMap attributes = new HashMap(); /** * The context path for this request. */ protected String contextPath = null; /** * Descriptive information about this implementation. */ protected static final String info = "org.apache.catalina.core.ApplicationHttpRequest/1.0"; /** * The request parameters for this request. This is initialized from the * wrapped request, but updates are allowed. */ protected Map parameters = new HashMap(); /** * The path information for this request. */ protected String pathInfo = null; /** * The query string for this request. */ protected String queryString = null; /** * The request URI for this request. */ protected String requestURI = null; /** * The servlet path for this request. */ protected String servletPath = null; // ------------------------------------------------- ServletRequest Methods public void setParameter(String name,String value) throws Exception { parameters.put(name,value); } /** * Override the <code>getAttribute()</code> method of the wrapped request. * * @param name Name of the attribute to retrieve */ public Object getAttribute(String name) { return attributes.get(name); } /** * Override the <code>getAttributeNames()</code> method of the wrapped * request. */ public Enumeration getAttributeNames() { return null; // return ((java.util.Enumeration) new Enumeration(attributes.keySet())); } /** * Override the <code>removeAttribute()</code> method of the * wrapped request. * * @param name Name of the attribute to remove */ public void removeAttribute(String name) { attributes.remove(name); } /** * Override the <code>setAttribute()</code> method of the * wrapped request. * * @param name Name of the attribute to set * @param value Value of the attribute to set */ public void setAttribute(String name, Object value) { attributes.put(name, value); } // --------------------------------------------- HttpServletRequest Methods /** * Override the <code>getContextPath()</code> method of the wrapped * request. */ public String getContextPath() { return (this.contextPath); } /** * Override the <code>getParameter()</code> method of the wrapped request. * * @param name Name of the requested parameter */ public String getParameter(String name) { Object value = parameters.get(name); if (value == null) return (null); else if (value instanceof String[]) return (((String[]) value)[0]); else if (value instanceof String) return ((String) value); else return (value.toString()); } /** * Override the <code>getParameterMap()</code> method of the * wrapped request. */ public Map getParameterMap() { return (parameters); } /** * Override the <code>getParameterNames()</code> method of the * wrapped request. */ public Enumeration getParameterNames() { return null; //return (new Enumerator(parameters.keySet())); } /** * Override the <code>getParameterValues()</code> method of the * wrapped request. * * @param name Name of the requested parameter */ public String[] getParameterValues(String name) { Object value = parameters.get(name); if (value == null) return ((String[]) null); else if (value instanceof String[]) return ((String[]) value); else if (value instanceof String) { String values[] = new String[1]; values[0] = (String) value; return (values); } else { String values[] = new String[1]; values[0] = value.toString(); return (values); } } /** * Override the <code>getPathInfo()</code> method of the wrapped request. */ public String getPathInfo() { return (this.pathInfo); } /** * Override the <code>getQueryString()</code> method of the wrapped * request. */ public String getQueryString() { return (this.queryString); } /** * Override the <code>getRequestURI()</code> method of the wrapped * request. */ public String getRequestURI() { return (this.requestURI); } /** * Override the <code>getServletPath()</code> method of the wrapped * request. */ public String getServletPath() { return (this.servletPath); } // -------------------------------------------------------- Package Methods /** * Return descriptive information about this implementation. */ public String getInfo() { return (this.info); } /** * Perform a shallow copy of the specified Map, and return the result. * * @param orig Origin Map to be copied */ Map copyMap(Map orig) { if (orig == null) return (new HashMap()); HashMap dest = new HashMap(); Iterator keys = orig.keySet().iterator(); while (keys.hasNext()) { String key = (String) keys.next(); dest.put(key, orig.get(key)); } return (dest); } /** * Merge the parameters from the specified query string (if any), and * the parameters already present on this request (if any), such that * the parameter values from the query string show up first if there are * duplicate parameter names. * * @param queryString The query string containing parameters to be merged */ void mergeParameters(String queryString) { //not needed } /** * Set the context path for this request. * * @param contextPath The new context path */ void setContextPath(String contextPath) { this.contextPath = contextPath; } /** * Set the path information for this request. * * @param pathInfo The new path info */ void setPathInfo(String pathInfo) { this.pathInfo = pathInfo; } /** * Set the query string for this request. * * @param queryString The new query string */ void setQueryString(String queryString) { this.queryString = queryString; } /** * Set the request that we are wrapping. * * @param request The new wrapped request */ void setRequest(HttpServletRequest request) { //not needed } /** * Set the request URI for this request. * * @param requestURI The new request URI */ void setRequestURI(String requestURI) { this.requestURI = requestURI; } /** * Set the servlet path for this request. * * @param servletPath The new servlet path */ void setServletPath(String servletPath) { this.servletPath = servletPath; } // ------------------------------------------------------ Protected Methods /** * Merge the two sets of parameter values into a single String array. * * @param values1 First set of values * @param values2 Second set of values */ protected String[] mergeValues(Object values1, Object values2) { return new String[0]; } public java.lang.String getAuthType() {return "";} public javax.servlet.http.Cookie[] getCookies() {return null;} public long getDateHeader(java.lang.String x) {return 0;} public java.lang.String getHeader(java.lang.String x) {return ""; } public java.util.Enumeration getHeaders(java.lang.String x) {return null;} public java.util.Enumeration getHeaderNames() {return null;} public int getIntHeader(java.lang.String x) {return 0;} public java.lang.String getMethod() {return "";} public java.lang.String getPathTranslated() {return "";} public java.lang.String getRemoteUser() {return "";} public javax.servlet.http.HttpSession getSession() {return null;} public boolean isRequestedSessionIdFromUrl() {return false;} public java.lang.String getRemoteHost() {return "";} public boolean isUserInRole(java.lang.String x) {return false;} public java.security.Principal getUserPrincipal() {return null;} public java.lang.String getRequestedSessionId() {return "";} public java.lang.StringBuffer getRequestURL() {return null;} public javax.servlet.http.HttpSession getSession(boolean x) {return null;} public boolean isRequestedSessionIdValid() {return true;} public boolean isRequestedSessionIdFromCookie() {return true;} public boolean isRequestedSessionIdFromURL() {return true;} public java.lang.String getCharacterEncoding() {return "";} public void setCharacterEncoding(java.lang.String x) {} public int getContentLength() {return 0;} public java.lang.String getContentType() {return "";} public javax.servlet.ServletInputStream getInputStream() {return null;} public java.lang.String getProtocol() {return "";} public java.lang.String getScheme() {return "";} public java.lang.String getServerName() {return "";} public int getServerPort() {return 0;} public java.io.BufferedReader getReader() {return null;} public java.lang.String getRemoteAddr() {return "";} public java.util.Locale getLocale() {return null;} public java.util.Enumeration getLocales() {return null;} public boolean isSecure() {return true;} public javax.servlet.RequestDispatcher getRequestDispatcher(java.lang.String x) {return null;} public java.lang.String getRealPath(java.lang.String x) {return "";} } --- NEW FILE: TestResponse.java --- /* * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact ap...@ap.... * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * [Additional notices, if required by prior licensing conditions] * */ package net.sourceforge.idrs.test; import java.io.IOException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; /** * Wrapper around a <code>javax.servlet.http.HttpServletResponse</code> * that transforms an application response object (which might be the original * one passed to a servlet, or might be based on the 2.3 * <code>javax.servlet.http.HttpServletResponseWrapper</code> class) * back into an internal <code>org.apache.catalina.HttpResponse</code>. * <p> * <strong>WARNING</strong>: Due to Java's lack of support for multiple * inheritance, all of the logic in <code>ApplicationResponse</code> is * duplicated in <code>ApplicationHttpResponse</code>. Make sure that you * keep these two classes in synchronization when making changes! * * @author Craig R. McClanahan * @version $Revision: 1.1 $ $Date: 2002/10/13 15:04:59 $ */ public final class TestResponse implements HttpServletResponse { // ----------------------------------------------------------- Constructors public TestResponse() { this(null,false); } /** * Construct a new wrapped response around the specified servlet response. * * @param response The servlet response being wrapped */ public TestResponse(HttpServletResponse response) { this(null, false); } /** * Construct a new wrapped response around the specified servlet response. * * @param response The servlet response being wrapped * @param included <code>true</code> if this response is being processed * by a <code>RequestDispatcher.include()</code> call */ public TestResponse(HttpServletResponse response, boolean included) { setIncluded(included); } // ----------------------------------------------------- Instance Variables /** * Is this wrapped response the subject of an <code>include()</code> * call? */ protected boolean included = false; /** * Descriptive information about this implementation. */ protected static final String info = "org.apache.catalina.core.ApplicationHttpResponse/1.0"; // ------------------------------------------------ ServletResponse Methods /** * Disallow <code>reset()</code> calls on a included response. * * @exception IllegalStateException if the response has already * been committed */ public void reset() { } /** * Disallow <code>setContentLength()</code> calls on an included response. * * @param len The new content length */ public void setContentLength(int len) { } /** * Disallow <code>setContentType()</code> calls on an included response. * * @param type The new content type */ public void setContentType(String type) { } // -------------------------------------------- HttpServletResponse Methods /** * Disallow <code>addCookie()</code> calls on an included response. * * @param cookie The new cookie */ public void addCookie(Cookie cookie) { } /** * Disallow <code>addDateHeader()</code> calls on an included response. * * @param name The new header name * @param value The new header value */ public void addDateHeader(String name, long value) { } /** * Disallow <code>addHeader()</code> calls on an included response. * * @param name The new header name * @param value The new header value */ public void addHeader(String name, String value) { } /** * Disallow <code>addIntHeader()</code> calls on an included response. * * @param name The new header name * @param value The new header value */ public void addIntHeader(String name, int value) { } /** * Disallow <code>sendError()</code> calls on an included response. * * @param sc The new status code * * @exception IOException if an input/output error occurs */ public void sendError(int sc) throws IOException { } /** * Disallow <code>sendError()</code> calls on an included response. * * @param sc The new status code * @param msg The new message * * @exception IOException if an input/output error occurs */ public void sendError(int sc, String msg) throws IOException { } /** * Disallow <code>sendRedirect()</code> calls on an included response. * * @param location The new location * * @exception IOException if an input/output error occurs */ public void sendRedirect(String location) throws IOException { } /** * Disallow <code>setDateHeader()</code> calls on an included response. * * @param name The new header name * @param value The new header value */ public void setDateHeader(String name, long value) { } /** * Disallow <code>setHeader()</code> calls on an included response. * * @param name The new header name * @param value The new header value */ public void setHeader(String name, String value) { } /** * Disallow <code>setIntHeader()</code> calls on an included response. * * @param name The new header name * @param value The new header value */ public void setIntHeader(String name, int value) { } /** * Disallow <code>setStatus()</code> calls on an included response. * * @param sc The new status code */ public void setStatus(int sc) { } /** * Disallow <code>setStatus()</code> calls on an included response. * * @param sc The new status code * @param msg The new message */ public void setStatus(int sc, String msg) { } // -------------------------------------------------------- Package Methods /** * Return descriptive information about this implementation. */ public String getInfo() { return (this.info); } /** * Return the included flag for this response. */ boolean isIncluded() { return (this.included); } /** * Set the included flag for this response. * * @param included The new included flag */ void setIncluded(boolean included) { this.included = included; } /** * Set the response that we are wrapping. * * @param response The new wrapped response */ void setResponse(HttpServletResponse response) { } public boolean containsHeader(java.lang.String x) { return false; } public java.lang.String encodeURL(java.lang.String x){ return ""; } public java.lang.String encodeRedirectURL(java.lang.String x) { return ""; } public java.lang.String encodeUrl(java.lang.String x){ return ""; } public java.lang.String encodeRedirectUrl(java.lang.String x) { return ""; } public java.lang.String getCharacterEncoding() { return ""; } public javax.servlet.ServletOutputStream getOutputStream() { return null; } public java.io.PrintWriter getWriter() { return null; } public void setBufferSize(int x){ } public int getBufferSize() { return 0; } public void flushBuffer(){} public void resetBuffer() {} public boolean isCommitted() {return false;} public void setLocale(java.util.Locale x){} public java.util.Locale getLocale() {return null;} } --- NEW FILE: TestSession.java --- /* * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the [...1039 lines suppressed...] /** * Return the <code>HttpSession</code> associated with the * specified session identifier. * * @param id Session identifier for which to look up a session * * @deprecated As of Java Servlet API 2.1 with no replacement. * This method must return null and will be removed in a * future version of the API. */ public HttpSession getSession(String id) { return (null); } } |