Author: costin Date: Fri May 19 19:09:31 2006 New Revision: 407938 URL: http://svn.apache.org/viewvc?rev=407938&view=rev Log: Few fixes - probably most of it can be removed, but until then it better work.
Modified: tomcat/sandbox/java/org/apache/coyote/adapters/FileAdapter.java tomcat/sandbox/java/org/apache/coyote/adapters/MapperAdapter.java tomcat/sandbox/java/org/apache/coyote/standalone/Main.java tomcat/sandbox/java/org/apache/coyote/standalone/MainInetd.java Modified: tomcat/sandbox/java/org/apache/coyote/adapters/FileAdapter.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/adapters/FileAdapter.java?rev=407938&r1=407937&r2=407938&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/adapters/FileAdapter.java (original) +++ tomcat/sandbox/java/org/apache/coyote/adapters/FileAdapter.java Fri May 19 19:09:31 2006 @@ -10,7 +10,9 @@ import org.apache.coyote.Adapter; import org.apache.coyote.Request; import org.apache.coyote.Response; +import org.apache.coyote.standalone.MessageWriter; import org.apache.tomcat.util.buf.ByteChunk; +import org.apache.tomcat.util.buf.C2BConverter; /** * Serve a static file. This is the traditional method, a separate adapter could @@ -113,8 +115,10 @@ initContentTypes(); } static void initContentTypes() { + contentTypes.put("xhtml", "text/html"); contentTypes.put("html", "text/html"); contentTypes.put("txt", "text/plain"); + contentTypes.put("css", "text/css"); contentTypes.put("xul", "application/vnd.mozilla.xul+xml"); } Modified: tomcat/sandbox/java/org/apache/coyote/adapters/MapperAdapter.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/adapters/MapperAdapter.java?rev=407938&r1=407937&r2=407938&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/adapters/MapperAdapter.java (original) +++ tomcat/sandbox/java/org/apache/coyote/adapters/MapperAdapter.java Fri May 19 19:09:31 2006 @@ -7,6 +7,7 @@ import org.apache.coyote.Response; import org.apache.coyote.standalone.MessageWriter; import org.apache.tomcat.util.http.mapper.Mapper; +import org.apache.tomcat.util.http.mapper.MappingData; /** * @@ -14,45 +15,32 @@ public class MapperAdapter implements Adapter { public Mapper mapper=new Mapper(); + private Adapter defaultAdapter; - // TODO: add extension mappings - // Key = prefix, one level only, value= class name of Adapter - // key starts with a / and has no other / ( /foo - but not /foo/bar ) - Hashtable prefixMap=new Hashtable(); - - String fileAdapterCN="org.apache.coyote.adapters.FileAdapter"; - Adapter defaultAdapter=new FileAdapter(); - public MapperAdapter() { + mapper = new Mapper(); + } + + public MapperAdapter(Mapper mapper2) { + mapper = mapper2; } public void service(Request req, final Response res) - throws Exception { - try { - String uri=req.requestURI().toString(); - if( uri.equals("/") ) uri="index.html"; - String ctx=""; - String local=uri; - if( uri.length() > 1 ) { - int idx=uri.indexOf('/', 1); - if( idx > 0 ) { - ctx=uri.substring(0, idx); - local=uri.substring( idx ); - } - } - Adapter h=(Adapter)prefixMap.get( ctx ); - if( h != null ) { + throws Exception { + try { + MappingData mapRes = new MappingData(); + mapper.map(req.remoteHost(), req.decodedURI(), mapRes); + + Adapter h=(Adapter)mapRes.wrapper; + if (h != null) { h.service( req, res ); - } else { - defaultAdapter.service( req, res ); } + } catch( Throwable t ) { t.printStackTrace(); } - //out.flushBuffer(); - //out.getByteChunk().flushBuffer(); - part of res.finish() - // final processing + // Final processing MessageWriter.getWriter(req, res, 0).flush(); res.finish(); @@ -62,14 +50,15 @@ } - public void addAdapter( String prefix, Adapter adapter ) { - prefixMap.put(prefix, adapter); + public void addAdapter( String path, Adapter adapter ) { + mapper.addWrapper(path, adapter); } public void setDefaultAdapter(Adapter adapter) { - defaultAdapter=adapter; + mapper.addWrapper("*", adapter); + defaultAdapter = adapter; } - + public Adapter getDefaultAdapter() { return defaultAdapter; } Modified: tomcat/sandbox/java/org/apache/coyote/standalone/Main.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/standalone/Main.java?rev=407938&r1=407937&r2=407938&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/standalone/Main.java (original) +++ tomcat/sandbox/java/org/apache/coyote/standalone/Main.java Fri May 19 19:09:31 2006 @@ -5,7 +5,7 @@ import org.apache.coyote.Adapter; import org.apache.coyote.adapters.MapperAdapter; -import org.apache.coyote.http11.Http11BaseProtocol; +import org.apache.coyote.http11.Http11Protocol; import org.apache.tomcat.util.loader.Loader; import org.apache.tomcat.util.loader.Repository; @@ -16,13 +16,13 @@ */ public class Main { - protected Http11BaseProtocol proto; + protected Http11Protocol proto; protected MapperAdapter mainAdapter; public Main() { } - public Http11BaseProtocol getProtocol() { + public Http11Protocol getProtocol() { return proto; } @@ -34,10 +34,9 @@ } public void init() { - proto = new Http11BaseProtocol(); + proto = new Http11Protocol(); mainAdapter = new MapperAdapter(); - proto.setAdapter(mainAdapter); } @@ -46,8 +45,8 @@ } public void start() { - if( proto.getPort() == 0 && - proto.getEndpoint().getServerSocket() == null) { + if( proto.getPort() == 0 ) { //&& + //proto.getEndpoint().getServerSocket() == null) { proto.setPort(8800); } Modified: tomcat/sandbox/java/org/apache/coyote/standalone/MainInetd.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/java/org/apache/coyote/standalone/MainInetd.java?rev=407938&r1=407937&r2=407938&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/standalone/MainInetd.java (original) +++ tomcat/sandbox/java/org/apache/coyote/standalone/MainInetd.java Fri May 19 19:09:31 2006 @@ -1,12 +1,17 @@ package org.apache.coyote.standalone; import java.io.IOException; +import java.net.InetAddress; +import java.net.ServerSocket; +import java.net.Socket; import java.nio.channels.Channel; import java.nio.channels.ServerSocketChannel; import java.nio.channels.spi.SelectorProvider; import java.util.Timer; import java.util.TimerTask; +import org.apache.tomcat.util.net.ServerSocketFactory; + /** * Used to run tomcat or coyote on demand or on port 80 ( no JNI code needed, @@ -40,7 +45,7 @@ if(ch!=null ) { System.err.println("Inherited: " + ch.getClass().getName()); ServerSocketChannel ssc=(ServerSocketChannel)ch; - proto.getEndpoint().setServerSocket( ssc.socket() ); + //proto.getEndpoint().setServerSocketFactory(new InetdServerSocketFactory(ssc.socket())); } } catch (IOException e) { e.printStackTrace(); @@ -64,6 +69,42 @@ MainInetd sa=new MainInetd(); sa.run(); } + + class InetdServerSocketFactory extends ServerSocketFactory { + ServerSocket inetd; + + InetdServerSocketFactory (ServerSocket inetd) { + /* NOTHING */ + } + + public ServerSocket createSocket (int port) + throws IOException { + return inetd; + } + + public ServerSocket createSocket (int port, int backlog) + throws IOException { + return inetd; + } + + public ServerSocket createSocket (int port, int backlog, + InetAddress ifAddress) + throws IOException { + return inetd; + } + + public Socket acceptSocket(ServerSocket socket) + throws IOException { + return socket.accept(); + } + + public void handshake(Socket sock) + throws IOException { + ; // NOOP + } + + + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]