Author: costin Date: Tue May 23 19:54:17 2006 New Revision: 409044 URL: http://svn.apache.org/viewvc?rev=409044&view=rev Log: Updates to match the cleaned-up stuff
Added: tomcat/sandbox/java/org/apache/coyote/servlet/Main.java tomcat/sandbox/java/org/apache/coyote/servlet/MapperAdapter.java tomcat/sandbox/java/org/apache/coyote/servlet/util/ClientAbortException.java - copied, changed from r408800, tomcat/sandbox/java/org/apache/coyote/standalone/ClientAbortException.java tomcat/sandbox/java/org/apache/coyote/servlet/util/MessageReader.java - copied, changed from r408800, tomcat/sandbox/java/org/apache/coyote/standalone/MessageReader.java tomcat/sandbox/java/org/apache/coyote/servlet/util/MessageWriter.java - copied, changed from r408800, tomcat/sandbox/java/org/apache/coyote/standalone/MessageWriter.java Modified: tomcat/sandbox/java/org/apache/coyote/servlet/CoyoteServletFacade.java tomcat/sandbox/java/org/apache/coyote/servlet/ServletContextImpl.java tomcat/sandbox/java/org/apache/coyote/servlet/ServletInputStreamImpl.java tomcat/sandbox/java/org/apache/coyote/servlet/ServletOutputStreamImpl.java tomcat/sandbox/java/org/apache/coyote/servlet/ServletReaderImpl.java tomcat/sandbox/java/org/apache/coyote/servlet/ServletRequestImpl.java tomcat/sandbox/java/org/apache/coyote/servlet/ServletResponseImpl.java tomcat/sandbox/java/org/apache/coyote/servlet/ServletWriterImpl.java Modified: tomcat/sandbox/java/org/apache/coyote/servlet/CoyoteServletFacade.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/servlet/CoyoteServletFacade.java?rev=409044&r1=409043&r2=409044&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/servlet/CoyoteServletFacade.java (original) +++ tomcat/sandbox/java/org/apache/coyote/servlet/CoyoteServletFacade.java Tue May 23 19:54:17 2006 @@ -2,7 +2,7 @@ */ package org.apache.coyote.servlet; -import java.io.IOException; +import java.io.File; import java.util.HashMap; import javax.servlet.Servlet; @@ -10,18 +10,11 @@ import javax.servlet.ServletContext; import javax.servlet.ServletException; -import org.apache.coyote.ActionCode; -import org.apache.coyote.Adapter; -import org.apache.coyote.Request; -import org.apache.coyote.Response; -import org.apache.coyote.adapters.FileAdapter; -import org.apache.coyote.http11.Http11Protocol; -import org.apache.coyote.standalone.MessageWriter; -import org.apache.tomcat.util.buf.ByteChunk; -import org.apache.tomcat.util.buf.MessageBytes; +import org.apache.tomcat.servlets.file.FileServlet; import org.apache.tomcat.util.http.mapper.Mapper; -import org.apache.tomcat.util.http.mapper.MappingData; -import org.apache.tomcat.util.res.StringManager; +import org.apache.tomcat.util.loader.Module; +import org.apache.tomcat.util.loader.Repository; +import org.apache.tomcat.util.net.http11.Http11Protocol; /** * Frontend for a minimal servlet impl for coyote. @@ -35,6 +28,14 @@ */ public class CoyoteServletFacade { static CoyoteServletFacade facade = new CoyoteServletFacade(); + + /** Simple interface to be used by manually or generated web.xml + * readers. + */ + public static interface WebappInitializer { + public void initWebapp(CoyoteServletFacade facade, ServletContext ctx) + throws ServletException; + } protected HashMap hosts = new HashMap(); protected Http11Protocol proto; @@ -43,14 +44,14 @@ String hostname = ""; // current hostname, used for settings - protected CoyoteServletProcessor mainAdapter; - FileAdapter fa = new FileAdapter(); + protected MapperAdapter mainAdapter; + //FileAdapter fa = new FileAdapter(); private CoyoteServletFacade() { proto = new Http11Protocol(); - mainAdapter = new CoyoteServletProcessor(mapper); + mainAdapter = new MapperAdapter(mapper); //Counters cnt=new Counters(); //cnt.setNext( mainAdapter ); @@ -67,14 +68,18 @@ return facade; } + public Http11Protocol getProtocol() { + return proto; + } + public void initHttp(int port) { - proto.setPort(port); + proto.getEndpoint().setPort(port); } public void start() { - if( proto.getPort() == 0 ) { //&& + if( proto.getEndpoint().getPort() == 0 ) { //&& //proto.getEndpoint().getServerSocket() == null) { - proto.setPort(8800); + proto.getEndpoint().setPort(8800); } try { @@ -97,8 +102,11 @@ * @param hostname - "" if default host, or string to be matched with Host header * @param path - context path, "/" for root, "/examples", etc * @return a servlet context + * @throws ServletException */ - public ServletContext createServletContext(String hostname, String path) { + public ServletContext createServletContext(String hostname, String path) + throws ServletException { + Host host = (Host)hosts.get(hostname); if( host == null ) { host = new Host(); @@ -106,7 +114,7 @@ hosts.put(hostname, host); mapper.addHost(hostname, new String[] {}, host); } - ServletContextImpl ctx = new ServletContextImpl(path); + ServletContextImpl ctx = new ServletContextImpl(); ctx.setParent(host); ctx.setPath(path); @@ -116,10 +124,19 @@ // mapper.addContext(hostname, path, ctx, new String[] {"index.html"}, null); - mapper.addWrapper(hostname, path, "/", fa); + host.addChild(ctx); + + // Add default mappings. + ServletConfig fileS = createServletWrapper(ctx, "file", + new FileServlet()); + addMapping("/", fileS); return ctx; } + + public void setBasePath(ServletContext ctx, String dir) { + ((ServletContextImpl)ctx).setBasePath(dir); + } // -------------- Web.xml reader will call this --------- // For specialized cases - you can call this directly @@ -144,286 +161,34 @@ public void addMapping(String path, ServletConfig wrapper) { ServletContextImpl ctx = (ServletContextImpl)wrapper.getServletContext(); Host host = (ctx).getParent(); - mapper.addWrapper(host.getName(), ctx.getPath(), path, - new CoyoteServletAdapter(wrapper)); + mapper.addWrapper(host.getName(), ctx.getPath(), path, wrapper); + //new CoyoteServletAdapter(wrapper)); } - // TODO: auth - - public static class CoyoteServletProcessor implements Adapter { - private Mapper mapper=new Mapper(); - - public CoyoteServletProcessor(Mapper mapper2) { - mapper = mapper2; - } - - public void service(Request req, final Response res) - throws Exception { - try { - - MessageBytes decodedURI = req.decodedURI(); - decodedURI.duplicate(req.requestURI()); - - if (decodedURI.getType() == MessageBytes.T_BYTES) { - // %xx decoding of the URL - try { - req.getURLDecoder().convert(decodedURI, false); - } catch (IOException ioe) { - res.setStatus(400); - res.setMessage("Invalid URI"); - throw ioe; - } - // Normalization - if (!normalize(req.decodedURI())) { - res.setStatus(400); - res.setMessage("Invalid URI"); - return; - } - // Character decoding - //convertURI(decodedURI, request); - } else { - // The URL is chars or String, and has been sent using an in-memory - // protocol handler, we have to assume the URL has been properly - // decoded already - decodedURI.toChars(); - } - - - - // TODO: per thread data - does it help ? - - MappingData mapRes = new MappingData(); - mapper.map(req.remoteHost(), req.decodedURI(), - mapRes); - - Adapter h=(Adapter)mapRes.wrapper; - if (h != null) { - h.service( req, res ); - } - - } catch( Throwable t ) { - t.printStackTrace(System.out); - } - - // Final processing - MessageWriter.getWriter(req, res, 0).flush(); - res.finish(); - - req.recycle(); - res.recycle(); - } + public void initContext(ServletContext ctx) { + // Set up class loader. + String base = ((ServletContextImpl)ctx).getBasePath(); + Repository ctxRepo = new Repository(); + ctxRepo.setParentClassLoader(this.getClass().getClassLoader()); + ctxRepo.addDir(new File(base + "/WEB-INF/classes")); + ctxRepo.addLibs(new File(base + "/WEB-INF/lib")); - /** - * Normalize URI. - * <p> - * This method normalizes "\", "//", "/./" and "/../". This method will - * return false when trying to go above the root, or if the URI contains - * a null byte. - * - * @param uriMB URI to be normalized - */ - public static boolean normalize(MessageBytes uriMB) { - - ByteChunk uriBC = uriMB.getByteChunk(); - byte[] b = uriBC.getBytes(); - int start = uriBC.getStart(); - int end = uriBC.getEnd(); - - // URL * is acceptable - if ((end - start == 1) && b[start] == (byte) '*') - return true; - - int pos = 0; - int index = 0; - - // Replace '\' with '/' - // Check for null byte - for (pos = start; pos < end; pos++) { - if (b[pos] == (byte) '\\') - b[pos] = (byte) '/'; - if (b[pos] == (byte) 0) - return false; - } - - // The URL must start with '/' - if (b[start] != (byte) '/') { - return false; - } - - // Replace "//" with "/" - for (pos = start; pos < (end - 1); pos++) { - if (b[pos] == (byte) '/') { - while ((pos + 1 < end) && (b[pos + 1] == (byte) '/')) { - copyBytes(b, pos, pos + 1, end - pos - 1); - end--; - } - } - } - - // If the URI ends with "/." or "/..", then we append an extra "/" - // Note: It is possible to extend the URI by 1 without any side effect - // as the next character is a non-significant WS. - if (((end - start) >= 2) && (b[end - 1] == (byte) '.')) { - if ((b[end - 2] == (byte) '/') - || ((b[end - 2] == (byte) '.') - && (b[end - 3] == (byte) '/'))) { - b[end] = (byte) '/'; - end++; - } - } - - uriBC.setEnd(end); - - index = 0; - - // Resolve occurrences of "/./" in the normalized path - while (true) { - index = uriBC.indexOf("/./", 0, 3, index); - if (index < 0) - break; - copyBytes(b, start + index, start + index + 2, - end - start - index - 2); - end = end - 2; - uriBC.setEnd(end); - } - - index = 0; - - // Resolve occurrences of "/../" in the normalized path - while (true) { - index = uriBC.indexOf("/../", 0, 4, index); - if (index < 0) - break; - // Prevent from going outside our context - if (index == 0) - return false; - int index2 = -1; - for (pos = start + index - 1; (pos >= 0) && (index2 < 0); pos --) { - if (b[pos] == (byte) '/') { - index2 = pos; - } - } - copyBytes(b, start + index2, start + index + 3, - end - start - index - 3); - end = end + index2 - index - 3; - uriBC.setEnd(end); - index = index2; - } - - //uriBC.setBytes(b, start, end); - uriBC.setEnd(end); - return true; - - } - + ClassLoader cl = ctxRepo.getClassLoader(); - /** - * Copy an array of bytes to a different position. Used during - * normalization. - */ - protected static void copyBytes(byte[] b, int dest, int src, int len) { - for (int pos = 0; pos < len; pos++) { - b[pos + dest] = b[pos + src]; - } - } - - public boolean event(Request req, Response res, boolean error) throws Exception { - // TODO Auto-generated method stub - return false; + // Code-based configuration - experiment with generated web.xml->class + try { + Class c = cl.loadClass("WebappInit"); + WebappInitializer webInit = (WebappInitializer)c.newInstance(); + webInit.initWebapp(this, ctx); + } catch(Throwable t) { + t.printStackTrace(); } - - } - - public static class CoyoteServletAdapter implements Adapter { - static StringManager sm = StringManager.getManager("org.apache.coyote.servlet"); - - private static org.apache.commons.logging.Log log= - org.apache.commons.logging.LogFactory.getLog( CoyoteServletAdapter.class ); - - - public static final int ADAPTER_NOTES = 1; - - ServletConfigImpl servletConfig; - public CoyoteServletAdapter( ServletConfig cfg ) { - this.servletConfig = (ServletConfigImpl)cfg; - } + // TODO: read a simpler version of web.xml + // TODO: read the real web.xml - /** Coyote / mapper adapter. Result of the mapper. - * - * This replaces the valve chain, the path is: - * 1. coyote calls mapper -> result Adapter - * 2. service is called. Additional filters are set on the wrapper. - */ - public void service(org.apache.coyote.Request req, org.apache.coyote.Response res) - throws IOException { - - ServletRequestImpl request = (ServletRequestImpl) req.getNote(ADAPTER_NOTES); - ServletResponseImpl response = (ServletResponseImpl) res.getNote(ADAPTER_NOTES); - - if (request == null) { - - // Create objects - request = new ServletRequestImpl(); - request.setCoyoteRequest(req); - response = new ServletResponseImpl(); - response.setRequest(request); - response.setCoyoteResponse(res); - - // Link objects - request.setResponse(response); - - // Set as notes - req.setNote(ADAPTER_NOTES, request); - res.setNote(ADAPTER_NOTES, response); - - // Set query string encoding -// req.getParameters().setQueryStringEncoding -// (connector.getURIEncoding()); - - } - - try { - - // Parse and set Catalina and configuration specific - // request parameters -// if ( postParseRequest(req, request, res, response) ) { -// // Calling the container -// connector.getContainer().getPipeline().getFirst().invoke(request, response); -// } - // Catalina default valves : - // Find host/context - // apply auth filters - // - - - Servlet servlet = servletConfig.allocate(); - - servlet.service(request, response); - - response.finishResponse(); - req.action( ActionCode.ACTION_POST_REQUEST , null); - - } catch (IOException e) { - ; - } catch (Throwable t) { - log.error(sm.getString("coyoteAdapter.service"), t); - } finally { - // Recycle the wrapper request and response - request.recycle(); - response.recycle(); - } - - } - - - public boolean event(Request req, Response res, boolean error) throws Exception { - // TODO Auto-generated method stub - return false; - } - } } Added: tomcat/sandbox/java/org/apache/coyote/servlet/Main.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/servlet/Main.java?rev=409044&view=auto ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/servlet/Main.java (added) +++ tomcat/sandbox/java/org/apache/coyote/servlet/Main.java Tue May 23 19:54:17 2006 @@ -0,0 +1,48 @@ +package org.apache.coyote.servlet; + +import javax.servlet.ServletContext; + + +/** + * Simple example of embeding coyote servlet. + * + */ +public class Main { + CoyoteServletFacade facade; + + public Main() { + } + + /** + */ + public void run() { + init(); + start(); + } + + public void init() { + facade = CoyoteServletFacade.getServletImpl(); + facade.initHttp(8800); + facade.getProtocol().getEndpoint().setDaemon(false); + } + + + public void start() { + try { + ServletContext ctx = facade.createServletContext("localhost", ""); + facade.setBasePath(ctx, "webapps/ROOT"); + facade.initContext(ctx); + facade.start(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + // ------------------- Main --------------------- + public static void main( String args[]) { + Main sa=new Main(); + sa.run(); + } + + +} \ No newline at end of file Added: tomcat/sandbox/java/org/apache/coyote/servlet/MapperAdapter.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/servlet/MapperAdapter.java?rev=409044&view=auto ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/servlet/MapperAdapter.java (added) +++ tomcat/sandbox/java/org/apache/coyote/servlet/MapperAdapter.java Tue May 23 19:54:17 2006 @@ -0,0 +1,279 @@ +package org.apache.coyote.servlet; + +import java.io.IOException; + +import javax.servlet.Servlet; + +import org.apache.coyote.ActionCode; +import org.apache.coyote.Adapter; +import org.apache.coyote.Request; +import org.apache.coyote.Response; +import org.apache.coyote.servlet.util.MessageWriter; +import org.apache.tomcat.util.buf.ByteChunk; +import org.apache.tomcat.util.buf.MessageBytes; +import org.apache.tomcat.util.http.mapper.Mapper; +import org.apache.tomcat.util.http.mapper.MappingData; + +/** Main adapter - mapping. + * TODO: filters + * TODO: auth + */ +public class MapperAdapter implements Adapter { + private Mapper mapper=new Mapper(); + private static org.apache.commons.logging.Log log= + org.apache.commons.logging.LogFactory.getLog( MapperAdapter.class ); + + + public MapperAdapter(Mapper mapper2) { + mapper = mapper2; + } + + public void service(Request req, final Response res) + throws Exception { + try { + + MessageBytes decodedURI = req.decodedURI(); + decodedURI.duplicate(req.requestURI()); + + if (decodedURI.getType() == MessageBytes.T_BYTES) { + // %xx decoding of the URL + try { + req.getURLDecoder().convert(decodedURI, false); + } catch (IOException ioe) { + res.setStatus(400); + res.setMessage("Invalid URI"); + throw ioe; + } + // Normalization + if (!normalize(req.decodedURI())) { + res.setStatus(400); + res.setMessage("Invalid URI"); + return; + } + // Character decoding + //convertURI(decodedURI, request); + } else { + // The URL is chars or String, and has been sent using an in-memory + // protocol handler, we have to assume the URL has been properly + // decoded already + decodedURI.toChars(); + } + + + + // TODO: per thread data - does it help ? + + MappingData mapRes = new MappingData(); + mapper.map(req.remoteHost(), req.decodedURI(), + mapRes); + + ServletConfigImpl h=(ServletConfigImpl)mapRes.wrapper; + if (h != null) { + serviceServlet( req, res, h ); + } + + } catch( Throwable t ) { + t.printStackTrace(System.out); + } + + // Final processing + MessageWriter.getWriter(req, res, 0).flush(); + res.finish(); + + req.recycle(); + res.recycle(); + + } + + public static final int ADAPTER_NOTES = 1; + + + /** Coyote / mapper adapter. Result of the mapper. + * + * This replaces the valve chain, the path is: + * 1. coyote calls mapper -> result Adapter + * 2. service is called. Additional filters are set on the wrapper. + */ + public void serviceServlet(org.apache.coyote.Request req, + org.apache.coyote.Response res, + ServletConfigImpl servletConfig) + throws IOException { + + ServletRequestImpl request = (ServletRequestImpl) req.getNote(ADAPTER_NOTES); + ServletResponseImpl response = (ServletResponseImpl) res.getNote(ADAPTER_NOTES); + + if (request == null) { + + // Create objects + request = new ServletRequestImpl(); + request.setCoyoteRequest(req); + response = new ServletResponseImpl(); + response.setRequest(request); + response.setCoyoteResponse(res); + + // Link objects + request.setResponse(response); + + // Set as notes + req.setNote(ADAPTER_NOTES, request); + res.setNote(ADAPTER_NOTES, response); + + // Set query string encoding +// req.getParameters().setQueryStringEncoding +// (connector.getURIEncoding()); + + } + + try { + + // Parse and set Catalina and configuration specific + // request parameters +// if ( postParseRequest(req, request, res, response) ) { +// // Calling the container +// connector.getContainer().getPipeline().getFirst().invoke(request, response); +// } + // Catalina default valves : + // Find host/context + // apply auth filters + // + + + Servlet servlet = servletConfig.allocate(); + + servlet.service(request, response); + + response.finishResponse(); + req.action( ActionCode.ACTION_POST_REQUEST , null); + + } catch (IOException e) { + ; + } catch (Throwable t) { + t.printStackTrace(); + } finally { + // Recycle the wrapper request and response + request.recycle(); + response.recycle(); + } + } + + + /** + * Normalize URI. + * <p> + * This method normalizes "\", "//", "/./" and "/../". This method will + * return false when trying to go above the root, or if the URI contains + * a null byte. + * + * @param uriMB URI to be normalized + */ + public static boolean normalize(MessageBytes uriMB) { + + ByteChunk uriBC = uriMB.getByteChunk(); + byte[] b = uriBC.getBytes(); + int start = uriBC.getStart(); + int end = uriBC.getEnd(); + + // URL * is acceptable + if ((end - start == 1) && b[start] == (byte) '*') + return true; + + int pos = 0; + int index = 0; + + // Replace '\' with '/' + // Check for null byte + for (pos = start; pos < end; pos++) { + if (b[pos] == (byte) '\\') + b[pos] = (byte) '/'; + if (b[pos] == (byte) 0) + return false; + } + + // The URL must start with '/' + if (b[start] != (byte) '/') { + return false; + } + + // Replace "//" with "/" + for (pos = start; pos < (end - 1); pos++) { + if (b[pos] == (byte) '/') { + while ((pos + 1 < end) && (b[pos + 1] == (byte) '/')) { + copyBytes(b, pos, pos + 1, end - pos - 1); + end--; + } + } + } + + // If the URI ends with "/." or "/..", then we append an extra "/" + // Note: It is possible to extend the URI by 1 without any side effect + // as the next character is a non-significant WS. + if (((end - start) >= 2) && (b[end - 1] == (byte) '.')) { + if ((b[end - 2] == (byte) '/') + || ((b[end - 2] == (byte) '.') + && (b[end - 3] == (byte) '/'))) { + b[end] = (byte) '/'; + end++; + } + } + + uriBC.setEnd(end); + + index = 0; + + // Resolve occurrences of "/./" in the normalized path + while (true) { + index = uriBC.indexOf("/./", 0, 3, index); + if (index < 0) + break; + copyBytes(b, start + index, start + index + 2, + end - start - index - 2); + end = end - 2; + uriBC.setEnd(end); + } + + index = 0; + + // Resolve occurrences of "/../" in the normalized path + while (true) { + index = uriBC.indexOf("/../", 0, 4, index); + if (index < 0) + break; + // Prevent from going outside our context + if (index == 0) + return false; + int index2 = -1; + for (pos = start + index - 1; (pos >= 0) && (index2 < 0); pos --) { + if (b[pos] == (byte) '/') { + index2 = pos; + } + } + copyBytes(b, start + index2, start + index + 3, + end - start - index - 3); + end = end + index2 - index - 3; + uriBC.setEnd(end); + index = index2; + } + + //uriBC.setBytes(b, start, end); + uriBC.setEnd(end); + return true; + + } + + + /** + * Copy an array of bytes to a different position. Used during + * normalization. + */ + protected static void copyBytes(byte[] b, int dest, int src, int len) { + for (int pos = 0; pos < len; pos++) { + b[pos + dest] = b[pos + src]; + } + } + + public boolean event(Request req, Response res, boolean error) throws Exception { + // TODO Auto-generated method stub + return false; + } + +} \ No newline at end of file Modified: tomcat/sandbox/java/org/apache/coyote/servlet/ServletContextImpl.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/servlet/ServletContextImpl.java?rev=409044&r1=409043&r2=409044&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/servlet/ServletContextImpl.java (original) +++ tomcat/sandbox/java/org/apache/coyote/servlet/ServletContextImpl.java Tue May 23 19:54:17 2006 @@ -66,11 +66,9 @@ // ----------------------------------------------------------- Constructors - public ServletContextImpl(String basePath) { - this.basePath = basePath; + public ServletContextImpl() { } - // ----------------------------------------------------- Instance Variables @@ -1008,6 +1006,14 @@ void setPath(String path) { this.path = path; + } + + public void setBasePath(String basePath) { + this.basePath = basePath; + } + + public String getBasePath() { + return basePath; } public SessionManager getManager() { Modified: tomcat/sandbox/java/org/apache/coyote/servlet/ServletInputStreamImpl.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/servlet/ServletInputStreamImpl.java?rev=409044&r1=409043&r2=409044&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/servlet/ServletInputStreamImpl.java (original) +++ tomcat/sandbox/java/org/apache/coyote/servlet/ServletInputStreamImpl.java Tue May 23 19:54:17 2006 @@ -21,7 +21,7 @@ import javax.servlet.ServletInputStream; -import org.apache.coyote.standalone.MessageReader; +import org.apache.coyote.servlet.util.MessageReader; /** * This class handles reading bytes. Modified: tomcat/sandbox/java/org/apache/coyote/servlet/ServletOutputStreamImpl.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/servlet/ServletOutputStreamImpl.java?rev=409044&r1=409043&r2=409044&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/servlet/ServletOutputStreamImpl.java (original) +++ tomcat/sandbox/java/org/apache/coyote/servlet/ServletOutputStreamImpl.java Tue May 23 19:54:17 2006 @@ -21,7 +21,7 @@ import javax.servlet.ServletOutputStream; -import org.apache.coyote.standalone.MessageWriter; +import org.apache.coyote.servlet.util.MessageWriter; /** * Coyote implementation of the servlet output stream. Modified: tomcat/sandbox/java/org/apache/coyote/servlet/ServletReaderImpl.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/servlet/ServletReaderImpl.java?rev=409044&r1=409043&r2=409044&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/servlet/ServletReaderImpl.java (original) +++ tomcat/sandbox/java/org/apache/coyote/servlet/ServletReaderImpl.java Tue May 23 19:54:17 2006 @@ -20,7 +20,7 @@ import java.io.BufferedReader; import java.io.IOException; -import org.apache.coyote.standalone.MessageReader; +import org.apache.coyote.servlet.util.MessageReader; /** Modified: tomcat/sandbox/java/org/apache/coyote/servlet/ServletRequestImpl.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/servlet/ServletRequestImpl.java?rev=409044&r1=409043&r2=409044&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/servlet/ServletRequestImpl.java (original) +++ tomcat/sandbox/java/org/apache/coyote/servlet/ServletRequestImpl.java Tue May 23 19:54:17 2006 @@ -53,10 +53,10 @@ import org.apache.coyote.ActionCode; import org.apache.coyote.servlet.util.Enumerator; +import org.apache.coyote.servlet.util.MessageReader; import org.apache.coyote.servlet.util.ParameterMap; import org.apache.coyote.servlet.util.RequestUtil; import org.apache.coyote.servlet.util.StringParser; -import org.apache.coyote.standalone.MessageReader; import org.apache.tomcat.util.buf.B2CConverter; import org.apache.tomcat.util.buf.MessageBytes; Modified: tomcat/sandbox/java/org/apache/coyote/servlet/ServletResponseImpl.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/servlet/ServletResponseImpl.java?rev=409044&r1=409043&r2=409044&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/servlet/ServletResponseImpl.java (original) +++ tomcat/sandbox/java/org/apache/coyote/servlet/ServletResponseImpl.java Tue May 23 19:54:17 2006 @@ -34,7 +34,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.coyote.servlet.util.CharsetMapper; -import org.apache.coyote.standalone.MessageWriter; +import org.apache.coyote.servlet.util.MessageWriter; import org.apache.tomcat.util.buf.CharChunk; import org.apache.tomcat.util.buf.UEncoder; Modified: tomcat/sandbox/java/org/apache/coyote/servlet/ServletWriterImpl.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/servlet/ServletWriterImpl.java?rev=409044&r1=409043&r2=409044&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/servlet/ServletWriterImpl.java (original) +++ tomcat/sandbox/java/org/apache/coyote/servlet/ServletWriterImpl.java Tue May 23 19:54:17 2006 @@ -20,7 +20,7 @@ import java.io.IOException; import java.io.PrintWriter; -import org.apache.coyote.standalone.MessageWriter; +import org.apache.coyote.servlet.util.MessageWriter; /** * Coyote implementation of the servlet writer. Copied: tomcat/sandbox/java/org/apache/coyote/servlet/util/ClientAbortException.java (from r408800, tomcat/sandbox/java/org/apache/coyote/standalone/ClientAbortException.java) URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/servlet/util/ClientAbortException.java?p2=tomcat/sandbox/java/org/apache/coyote/servlet/util/ClientAbortException.java&p1=tomcat/sandbox/java/org/apache/coyote/standalone/ClientAbortException.java&r1=408800&r2=409044&rev=409044&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/standalone/ClientAbortException.java (original) +++ tomcat/sandbox/java/org/apache/coyote/servlet/util/ClientAbortException.java Tue May 23 19:54:17 2006 @@ -15,7 +15,7 @@ */ -package org.apache.coyote.standalone; +package org.apache.coyote.servlet.util; import java.io.IOException; Copied: tomcat/sandbox/java/org/apache/coyote/servlet/util/MessageReader.java (from r408800, tomcat/sandbox/java/org/apache/coyote/standalone/MessageReader.java) URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/servlet/util/MessageReader.java?p2=tomcat/sandbox/java/org/apache/coyote/servlet/util/MessageReader.java&p1=tomcat/sandbox/java/org/apache/coyote/standalone/MessageReader.java&r1=408800&r2=409044&rev=409044&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/standalone/MessageReader.java (original) +++ tomcat/sandbox/java/org/apache/coyote/servlet/util/MessageReader.java Tue May 23 19:54:17 2006 @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.apache.coyote.standalone; +package org.apache.coyote.servlet.util; import java.io.IOException; import java.io.Reader; Copied: tomcat/sandbox/java/org/apache/coyote/servlet/util/MessageWriter.java (from r408800, tomcat/sandbox/java/org/apache/coyote/standalone/MessageWriter.java) URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/servlet/util/MessageWriter.java?p2=tomcat/sandbox/java/org/apache/coyote/servlet/util/MessageWriter.java&p1=tomcat/sandbox/java/org/apache/coyote/standalone/MessageWriter.java&r1=408800&r2=409044&rev=409044&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/standalone/MessageWriter.java (original) +++ tomcat/sandbox/java/org/apache/coyote/servlet/util/MessageWriter.java Tue May 23 19:54:17 2006 @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.apache.coyote.standalone; +package org.apache.coyote.servlet.util; import java.io.IOException; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]