Author: costin Date: Sat Nov 12 23:24:41 2005 New Revision: 332933 URL: http://svn.apache.org/viewcvs?rev=332933&view=rev Log: Use the real mapper.
Added: tomcat/sandbox/java/org/apache/coyote/adapters/MapperAdapter.java Added: tomcat/sandbox/java/org/apache/coyote/adapters/MapperAdapter.java URL: http://svn.apache.org/viewcvs/tomcat/sandbox/java/org/apache/coyote/adapters/MapperAdapter.java?rev=332933&view=auto ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/adapters/MapperAdapter.java (added) +++ tomcat/sandbox/java/org/apache/coyote/adapters/MapperAdapter.java Sat Nov 12 23:24:41 2005 @@ -0,0 +1,81 @@ +package org.apache.coyote.adapters; + +import java.util.Enumeration; +import java.util.Hashtable; + +import org.apache.coyote.Adapter; +import org.apache.coyote.Request; +import org.apache.coyote.Response; +import org.apache.coyote.http11.Http11BaseProtocol; +import org.apache.coyote.standalone.MessageWriter; +import org.apache.tomcat.util.http.mapper.Mapper; +import org.apache.tomcat.util.loader.Loader; +import org.apache.tomcat.util.loader.Repository; + +/** + * + */ +public class MapperAdapter implements Adapter { + + public Mapper mapper=new Mapper(); + + // 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() { + } + + 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 ) { + 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 + MessageWriter.getWriter(req, res, 0).flush(); + res.finish(); + + req.recycle(); + res.recycle(); + + } + + + public void addAdapter( String prefix, Adapter adapter ) { + prefixMap.put(prefix, adapter); + } + + public void setDefaultAdapter(Adapter adapter) { + defaultAdapter=adapter; + } + + public Adapter getDefaultAdapter() { + return defaultAdapter; + } + +} \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]