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