You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2006/05/20 04:09:31 UTC

svn commit: r407938 - in /tomcat/sandbox/java/org/apache/coyote: adapters/FileAdapter.java adapters/MapperAdapter.java standalone/Main.java standalone/MainInetd.java

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: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org