Author: costin
Date: Fri Aug 29 21:28:23 2008
New Revision: 690459
URL: http://svn.apache.org/viewvc?rev=690459&view=rev
Log:
Removed jmx where not needed, added few files to make it easier to port default
servlet
Added:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteUtils.java
(with props)
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/http/HttpStatus.java
(with props)
Modified:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteMain.java
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteServer.java
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MapperAdapter.java
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MessageReader.java
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MessageWriter.java
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/ProxyAdapter.java
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/AsyncHttp.java
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/BlockingHttp.java
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/SocketPool.java
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/http/Http11Parser.java
Modified:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteMain.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteMain.java?rev=690459&r1=690458&r2=690459&view=diff
==============================================================================
---
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteMain.java
(original)
+++
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteMain.java
Fri Aug 29 21:28:23 2008
@@ -39,6 +39,13 @@
// ------------------- Main ---------------------
public static void main( String args[]) throws Exception {
+ try {
+ Class<?> c =
Class.forName("org.apache.tomcat.util.modeler.JmxObjectManager");
+ c.newInstance();
+ } catch (Throwable t) {
+ System.err.println("JMX not available");
+ }
+
CoyoteMain sa=new CoyoteMain();
IntrospectionUtils.processArgs(sa, args);
IntrospectionUtils.processArgs(fileAdapter, args);
Modified:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteServer.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteServer.java?rev=690459&r1=690458&r2=690459&view=diff
==============================================================================
---
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteServer.java
(original)
+++
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteServer.java
Fri Aug 29 21:28:23 2008
@@ -16,15 +16,13 @@
package org.apache.coyote.adapters;
import java.io.IOException;
-import java.lang.management.ManagementFactory;
import org.apache.coyote.Adapter;
import org.apache.coyote.ProtocolHandler;
-import org.apache.coyote.http11.Http11NioProtocol;
import org.apache.coyote.http11.async.AsyncProtocolHandler;
import org.apache.juli.JdkLoggerConfig;
+import org.apache.tomcat.util.ObjectManager;
import org.apache.tomcat.util.buf.BufferInfo;
-import org.apache.tomcat.util.modeler.Registry;
/**
@@ -47,9 +45,7 @@
protected ProtocolHandler proto;
- protected Registry registry;
-
- protected Adapter adapter;
+ protected Adapter adapter = new MapperAdapter();
protected int maxThreads = 20;
boolean started = false;
boolean async = false; // use old nio connector
@@ -78,20 +74,12 @@
* @param adapter
*/
public void addAdapter(String path, Adapter added) {
- if (adapter == null && "/".equals(path)) {
- adapter = added;
- } else {
- if (!(adapter instanceof MapperAdapter)) {
- Adapter oldDefault = adapter;
- adapter = new MapperAdapter();
- ((MapperAdapter) adapter).setDefaultAdapter(oldDefault);
- }
if ("/".equals(path)) {
- ((MapperAdapter) adapter).setDefaultAdapter(added);
+ ((MapperAdapter) adapter).setDefaultAdapter(added);
} else {
- ((MapperAdapter) adapter).getMapper().addWrapper(path, added);
+ ((MapperAdapter) adapter).getMapper().addWrapper(path, added);
}
- }
+ ObjectManager.get().registerObject(adapter, path, "Adapter");
}
/**
@@ -109,12 +97,10 @@
daemon = b;
}
- public void setAsync(boolean b) {
- async = b;
- }
-
public void init() {
JdkLoggerConfig.loadCustom();
+ ObjectManager.get().registerObject(this, "CoyoteServer-" + port,
+ "CoyoteServer");
}
protected void initAdapters() {
@@ -146,36 +132,20 @@
}
public void setPort(int port) {
- initJMX();
if (proto != null) {
proto.setAttribute("port", Integer.toString(port));
}
this.port = port;
}
- public void setNioConnector() {
- Http11NioProtocol proto = new Http11NioProtocol();
- proto.setCompression("on");
- proto.setCompressionMinSize(32);
- proto.setPort(port);
- proto.getEndpoint().setDaemon(daemon);
- setConnector(proto);
- }
-
- public void setAsyncConnector() {
- AsyncProtocolHandler proto = new AsyncProtocolHandler();
- proto.setPort(port);
- proto.setDaemon(daemon);
-
- setConnector(proto);
- }
-
public void setConnector(ProtocolHandler h) {
this.proto = h;
h.setAttribute("port", Integer.toString(port));
if (daemon) {
h.setAttribute("daemon", "1");
}
+
+ ObjectManager.get().registerObject(proto, "ep-" + port, null);
}
public void start() throws IOException {
@@ -184,39 +154,32 @@
return;
}
if (proto == null) {
- // Default for now.
- if (async) {
- setAsyncConnector();
- } else {
- setNioConnector();
- }
+ // Default for now - it's smallest, fewer deps. Easy to use nio
+ // or apr with setConnector.
+ AsyncProtocolHandler proto = new AsyncProtocolHandler();
+ proto.setPort(port);
+ proto.setDaemon(daemon);
+
+ setConnector(proto);
}
initAdapters();
- registry.registerComponent(adapter, ":name=adapter" + (port), null);
- registry.registerComponent(BufferInfo.get(), ":name=BufferInfo" + port,
- "BufferInfo");
+
+ ObjectManager.get().registerObject(BufferInfo.get(),
+ "BufferInfo" + port, "BufferInfo");
proto.setAdapter(adapter);
- registry.registerComponent(proto, ":name=ep-" + port, null);
proto.init();
proto.start();
started = true;
} catch (Throwable e) {
e.printStackTrace();
- throw new IOException(e);
+ throw new RuntimeException(e);
}
}
- public void initJMX() {
- ManagementFactory.getPlatformMBeanServer();
- registry = Registry.getRegistry(null, null);
-
- }
-
public boolean getStarted() {
return started;
}
-
}
\ No newline at end of file
Added:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteUtils.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteUtils.java?rev=690459&view=auto
==============================================================================
---
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteUtils.java
(added)
+++
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteUtils.java
Fri Aug 29 21:28:23 2008
@@ -0,0 +1,42 @@
+/*
+ */
+package org.apache.coyote.adapters;
+
+import org.apache.coyote.Request;
+import org.apache.tomcat.util.http.mapper.MappingData;
+
+public class CoyoteUtils {
+
+ public static String getContextPath(Request request) {
+ MappingData md = MapperAdapter.getMappingData(request);
+ String ctxPath = (md.contextPath.isNull()) ? "/" :
+ md.contextPath.toString();
+ return ctxPath;
+ }
+
+ public static String getPathInfo(Request request) {
+ MappingData md = MapperAdapter.getMappingData(request);
+ String ctxPath = (md.pathInfo.isNull()) ? "/" :
+ md.pathInfo.toString();
+ return ctxPath;
+ }
+ public static String getServletPath(Request request) {
+ MappingData md = MapperAdapter.getMappingData(request);
+ String ctxPath = (md.wrapperPath.isNull()) ? "/" :
+ md.wrapperPath.toString();
+ return ctxPath;
+ }
+
+ // TODO: collate all notes in a signle file
+ static int READER_NOTE = 5;
+
+ public static MessageReader getReader(Request req) {
+ MessageReader r = (MessageReader) req.getNote(READER_NOTE);
+ if (r == null) {
+ r = new MessageReader();
+ r.setRequest(req);
+ req.setNote(READER_NOTE, r);
+ }
+ return r;
+ }
+}
Propchange:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MapperAdapter.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MapperAdapter.java?rev=690459&r1=690458&r2=690459&view=diff
==============================================================================
---
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MapperAdapter.java
(original)
+++
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MapperAdapter.java
Fri Aug 29 21:28:23 2008
@@ -22,8 +22,8 @@
import org.apache.coyote.Response;
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;
+import org.apache.tomcat.util.http.mapper.SimpleMapper;
import org.apache.tomcat.util.net.SocketStatus;
/**
@@ -31,19 +31,29 @@
*/
public class MapperAdapter implements Adapter {
- private Mapper mapper=new Mapper();
+ private SimpleMapper mapper=new SimpleMapper();
+
+ static final int MAP_NOTE = 4;
public MapperAdapter() {
- mapper = new Mapper();
mapper.setDefaultHostName("localhost");
mapper.setContext("", new String[] {"index.html"},
null);
}
- public MapperAdapter(Mapper mapper2) {
+ public MapperAdapter(SimpleMapper mapper2) {
mapper = mapper2;
}
+ public static MappingData getMappingData(Request req) {
+ MappingData md = (MappingData) req.getNote(MAP_NOTE);
+ if (md == null) {
+ md = new MappingData();
+ req.setNote(MAP_NOTE, md);
+ }
+ return md;
+ }
+
public static void decodeRequest(Request reqB) throws IOException {
MessageBytes decodedURI = reqB.decodedURI();
decodedURI.duplicate(reqB.requestURI());
@@ -184,8 +194,9 @@
try {
// compute decodedURI - not done by connector
decodeRequest(req);
- MappingData mapRes = new MappingData();
-
+ MappingData mapRes = getMappingData(req);
+ mapRes.recycle();
+
mapper.map(req.requestURI(), mapRes);
Adapter h=(Adapter)mapRes.wrapper;
@@ -206,7 +217,11 @@
// TODO: add this note in the nio/apr connectors
// TODO: play nice with TomcatLite, other adapters that flush/close
if (res.getNote(CoyoteServer.COMET_RES_NOTE) == null) {
- MessageWriter.getWriter(req, res, 0).flush();
+ MessageWriter mw = MessageWriter.getWriter(req, res, 0);
+ mw.flush();
+ mw.recycle();
+ MessageReader reader = CoyoteUtils.getReader(req);
+ reader.recycle();
res.finish();
req.recycle();
@@ -215,7 +230,7 @@
}
}
- public Mapper getMapper() {
+ public SimpleMapper getMapper() {
return mapper;
}
Modified:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MessageReader.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MessageReader.java?rev=690459&r1=690458&r2=690459&view=diff
==============================================================================
---
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MessageReader.java
(original)
+++
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MessageReader.java
Fri Aug 29 21:28:23 2008
@@ -17,6 +17,7 @@
package org.apache.coyote.adapters;
import java.io.IOException;
+import java.io.InputStream;
import java.io.Reader;
import java.util.HashMap;
@@ -455,4 +456,64 @@
encoders.put(enc, conv);
}
}
+
+ class MRInputStream extends InputStream {
+ public long skip(long n)
+ throws IOException {
+ return MessageReader.this.skip(n);
+ }
+
+ public void mark(int readAheadLimit)
+ {
+ try {
+ MessageReader.this.mark(readAheadLimit);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ public void reset()
+ throws IOException {
+ MessageReader.this.reset();
+ }
+
+
+
+ public int read()
+ throws IOException {
+ return MessageReader.this.readByte();
+ }
+
+ public int available() throws IOException {
+ return MessageReader.this.available();
+ }
+
+ public int read(final byte[] b) throws IOException {
+ return MessageReader.this.read(b, 0, b.length);
+ }
+
+
+ public int read(final byte[] b, final int off, final int len)
+ throws IOException {
+
+ return MessageReader.this.read(b, off, len);
+ }
+
+
+ /**
+ * Close the stream
+ * Since we re-cycle, we can't allow the call to super.close()
+ * which would permantely disable us.
+ */
+ public void close() throws IOException {
+ MessageReader.this.close();
+ }
+ }
+
+ MRInputStream is = new MRInputStream();
+
+ public InputStream asInputStream() {
+ return is;
+ }
}
Modified:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MessageWriter.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MessageWriter.java?rev=690459&r1=690458&r2=690459&view=diff
==============================================================================
---
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MessageWriter.java
(original)
+++
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/MessageWriter.java
Fri Aug 29 21:28:23 2008
@@ -518,6 +518,18 @@
}
+ public void println() throws IOException {
+ write("\n");
+ }
+
+ public void println(String s) throws IOException {
+ write(s);
+ write("\n");
+ }
+
+ public void print(String s) throws IOException {
+ write(s);
+ }
public void flushChars()
throws IOException {
Modified:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/ProxyAdapter.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/ProxyAdapter.java?rev=690459&r1=690458&r2=690459&view=diff
==============================================================================
---
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/ProxyAdapter.java
(original)
+++
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/ProxyAdapter.java
Fri Aug 29 21:28:23 2008
@@ -20,8 +20,6 @@
import java.util.List;
import java.util.logging.Logger;
-import javax.servlet.ServletException;
-
import org.apache.coyote.ActionCode;
import org.apache.coyote.Adapter;
import org.apache.coyote.Request;
@@ -173,12 +171,4 @@
public void dataWritten(ByteChunk bc) {
}
}
-
- public static void main(String[] args) throws ServletException,
IOException {
- CoyoteServer server = new CoyoteServer(8901, new ProxyAdapter());
- server.setDaemon(false);
- server.setAsync(true);
- server.start();
- }
-
}
Modified:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/AsyncHttp.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/AsyncHttp.java?rev=690459&r1=690458&r2=690459&view=diff
==============================================================================
---
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/AsyncHttp.java
(original)
+++
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/AsyncHttp.java
Fri Aug 29 21:28:23 2008
@@ -28,13 +28,14 @@
import org.apache.coyote.Request;
import org.apache.coyote.Response;
import org.apache.coyote.http11.Constants;
+import org.apache.tomcat.util.ObjectManager;
import org.apache.tomcat.util.buf.ByteChunk;
import org.apache.tomcat.util.buf.HexUtils;
import org.apache.tomcat.util.buf.MessageBytes;
import org.apache.tomcat.util.http.Http11Parser;
import org.apache.tomcat.util.http.HttpMessages;
import org.apache.tomcat.util.http.MimeHeaders;
-import org.apache.tomcat.util.modeler.Registry;
+//import org.apache.tomcat.util.modeler.Registry;
import org.apache.tomcat.util.net.SelectorCallback;
import org.apache.tomcat.util.net.SelectorPool;
import org.apache.tomcat.util.net.SelectorThread;
@@ -95,7 +96,6 @@
DONE
}
static AtomicInteger serCnt = new AtomicInteger();
- static Registry registry = Registry.getRegistry(null, null);
// ---- Buffers owned by the AsyncHttp object ----
protected Logger log = Logger.getLogger("AsyncHttp");
@@ -306,12 +306,8 @@
}
selectorCallback = new AsyncHttpSelectorCallback();
ser = serCnt.incrementAndGet();
- try {
- registry.registerComponent(this, ":name=AsyncHttp-" +
- ser, "AsyncHttp");
- } catch (Exception e) {
- e.printStackTrace();
- }
+ ObjectManager.get().registerObject(this,
+ "AsyncHttp-" + ser, "AsyncHttp");
this.selector = client.getSelector();
@@ -1276,7 +1272,7 @@
serviceDone = true;
maybeRelease();
}
-
+
public void ioThreadRun(SelectorData selThread) throws IOException {
// Currently used only to set keep alive.
// If we need more, need to use state or pass a param.
@@ -1299,7 +1295,7 @@
if (!allDone) {
allDone = true;
// pipeline or keepalive
- selector.ioThreadRun(selectorData);
+ selector.runInSelectorThread(selectorData);
}
} else {
if (debug) {
Modified:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/BlockingHttp.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/BlockingHttp.java?rev=690459&r1=690458&r2=690459&view=diff
==============================================================================
---
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/BlockingHttp.java
(original)
+++
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/BlockingHttp.java
Fri Aug 29 21:28:23 2008
@@ -155,7 +155,7 @@
Condition cond,
String name) throws IOException {
if (to < 0) {
- throw new IOException(new TimeoutException());
+ throw new RuntimeException(new TimeoutException());
} else if (to == 0) {
to = timeout;
}
Modified:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/SocketPool.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/SocketPool.java?rev=690459&r1=690458&r2=690459&view=diff
==============================================================================
---
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/SocketPool.java
(original)
+++
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/client/SocketPool.java
Fri Aug 29 21:28:23 2008
@@ -10,7 +10,8 @@
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Logger;
-import org.apache.tomcat.util.modeler.Registry;
+//import org.apache.tomcat.util.modeler.Registry;
+import org.apache.tomcat.util.ObjectManager;
import org.apache.tomcat.util.net.SelectorCallback;
import org.apache.tomcat.util.net.SelectorThread.SelectorData;
@@ -79,17 +80,12 @@
AtomicInteger waitingSockets = new AtomicInteger();
AtomicInteger closedSockets = new AtomicInteger();
- static Registry registry = Registry.getRegistry(null, null);
-
// TODO: keep track of all socket pools, enforce max total sockets.
// TODO: for linux, find how many sockets we can have open, use as limit
public SocketPool(String id) {
- try {
- registry.registerComponent(this, ":name=SocketPool,id=" + id,
"SocketPool");
- } catch (Exception e) {
- e.printStackTrace();
- }
+ ObjectManager.get().registerObject(this,
+ "SocketPool,id=" + id, "SocketPool");
}
public int getTargetCount() {
Modified:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/http/Http11Parser.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/http/Http11Parser.java?rev=690459&r1=690458&r2=690459&view=diff
==============================================================================
---
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/http/Http11Parser.java
(original)
+++
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/http/Http11Parser.java
Fri Aug 29 21:28:23 2008
@@ -201,6 +201,8 @@
return pos;
}
+ // TODO: InternalNioInputBuffer now has support for HT and multiple SP
+
public final int readToDelim(MessageBytes res, byte delim) {
boolean space = false;
// Mark the current buffer position
Added:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/http/HttpStatus.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/http/HttpStatus.java?rev=690459&view=auto
==============================================================================
---
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/http/HttpStatus.java
(added)
+++
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/http/HttpStatus.java
Fri Aug 29 21:28:23 2008
@@ -0,0 +1,471 @@
+package org.apache.tomcat.util.http;
+
+import java.util.Hashtable;
+
+/**
+ *
+ * TODO: move to separate class, to adapters.
+ * Copied from HttpServletResponse
+ */
+public class HttpStatus {
+
+
+ // ----------------------------------------------------- Instance Variables
+
+
+ /**
+ * This Hashtable contains the mapping of HTTP and WebDAV
+ * status codes to descriptive text. This is a static
+ * variable.
+ */
+ protected static Hashtable mapStatusCodes = new Hashtable();
+
+
+ // ------------------------------------------------------ HTTP Status Codes
+
+ /*
+ * Server status codes; see RFC 2068.
+ */
+
+ /**
+ * Status code (100) indicating the client can continue.
+ */
+
+ public static final int SC_CONTINUE = 100;
+
+
+ /**
+ * Status code (101) indicating the server is switching protocols
+ * according to Upgrade header.
+ */
+
+ public static final int SC_SWITCHING_PROTOCOLS = 101;
+
+ /**
+ * Status code (200) indicating the request succeeded normally.
+ */
+
+ public static final int SC_OK = 200;
+
+ /**
+ * Status code (201) indicating the request succeeded and created
+ * a new resource on the server.
+ */
+
+ public static final int SC_CREATED = 201;
+
+ /**
+ * Status code (202) indicating that a request was accepted for
+ * processing, but was not completed.
+ */
+
+ public static final int SC_ACCEPTED = 202;
+
+ /**
+ * Status code (203) indicating that the meta information presented
+ * by the client did not originate from the server.
+ */
+
+ public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
+
+ /**
+ * Status code (204) indicating that the request succeeded but that
+ * there was no new information to return.
+ */
+
+ public static final int SC_NO_CONTENT = 204;
+
+ /**
+ * Status code (205) indicating that the agent <em>SHOULD</em> reset
+ * the document view which caused the request to be sent.
+ */
+
+ public static final int SC_RESET_CONTENT = 205;
+
+ /**
+ * Status code (206) indicating that the server has fulfilled
+ * the partial GET request for the resource.
+ */
+
+ public static final int SC_PARTIAL_CONTENT = 206;
+
+ /**
+ * Status code (300) indicating that the requested resource
+ * corresponds to any one of a set of representations, each with
+ * its own specific location.
+ */
+
+ public static final int SC_MULTIPLE_CHOICES = 300;
+
+ /**
+ * Status code (301) indicating that the resource has permanently
+ * moved to a new location, and that future references should use a
+ * new URI with their requests.
+ */
+
+ public static final int SC_MOVED_PERMANENTLY = 301;
+
+ /**
+ * Status code (302) indicating that the resource has temporarily
+ * moved to another location, but that future references should
+ * still use the original URI to access the resource.
+ *
+ * This definition is being retained for backwards compatibility.
+ * SC_FOUND is now the preferred definition.
+ */
+
+ public static final int SC_MOVED_TEMPORARILY = 302;
+
+ /**
+ * Status code (302) indicating that the resource reside
+ * temporarily under a different URI. Since the redirection might
+ * be altered on occasion, the client should continue to use the
+ * Request-URI for future requests.(HTTP/1.1) To represent the
+ * status code (302), it is recommended to use this variable.
+ */
+
+ public static final int SC_FOUND = 302;
+
+ /**
+ * Status code (303) indicating that the response to the request
+ * can be found under a different URI.
+ */
+
+ public static final int SC_SEE_OTHER = 303;
+
+ /**
+ * Status code (304) indicating that a conditional GET operation
+ * found that the resource was available and not modified.
+ */
+
+ public static final int SC_NOT_MODIFIED = 304;
+
+ /**
+ * Status code (305) indicating that the requested resource
+ * <em>MUST</em> be accessed through the proxy given by the
+ * <code><em>Location</em></code> field.
+ */
+
+ public static final int SC_USE_PROXY = 305;
+
+ /**
+ * Status code (307) indicating that the requested resource
+ * resides temporarily under a different URI. The temporary URI
+ * <em>SHOULD</em> be given by the <code><em>Location</em></code>
+ * field in the response.
+ */
+
+ public static final int SC_TEMPORARY_REDIRECT = 307;
+
+ /**
+ * Status code (400) indicating the request sent by the client was
+ * syntactically incorrect.
+ */
+
+ public static final int SC_BAD_REQUEST = 400;
+
+ /**
+ * Status code (401) indicating that the request requires HTTP
+ * authentication.
+ */
+
+ public static final int SC_UNAUTHORIZED = 401;
+
+ /**
+ * Status code (402) reserved for future use.
+ */
+
+ public static final int SC_PAYMENT_REQUIRED = 402;
+
+ /**
+ * Status code (403) indicating the server understood the request
+ * but refused to fulfill it.
+ */
+
+ public static final int SC_FORBIDDEN = 403;
+
+ /**
+ * Status code (404) indicating that the requested resource is not
+ * available.
+ */
+
+ public static final int SC_NOT_FOUND = 404;
+
+ /**
+ * Status code (405) indicating that the method specified in the
+ * <code><em>Request-Line</em></code> is not allowed for the resource
+ * identified by the <code><em>Request-URI</em></code>.
+ */
+
+ public static final int SC_METHOD_NOT_ALLOWED = 405;
+
+ /**
+ * Status code (406) indicating that the resource identified by the
+ * request is only capable of generating response entities which have
+ * content characteristics not acceptable according to the accept
+ * headers sent in the request.
+ */
+
+ public static final int SC_NOT_ACCEPTABLE = 406;
+
+ /**
+ * Status code (407) indicating that the client <em>MUST</em> first
+ * authenticate itself with the proxy.
+ */
+
+ public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
+
+ /**
+ * Status code (408) indicating that the client did not produce a
+ * request within the time that the server was prepared to wait.
+ */
+
+ public static final int SC_REQUEST_TIMEOUT = 408;
+
+ /**
+ * Status code (409) indicating that the request could not be
+ * completed due to a conflict with the current state of the
+ * resource.
+ */
+
+ public static final int SC_CONFLICT = 409;
+
+ /**
+ * Status code (410) indicating that the resource is no longer
+ * available at the server and no forwarding address is known.
+ * This condition <em>SHOULD</em> be considered permanent.
+ */
+
+ public static final int SC_GONE = 410;
+
+ /**
+ * Status code (411) indicating that the request cannot be handled
+ * without a defined <code><em>Content-Length</em></code>.
+ */
+
+ public static final int SC_LENGTH_REQUIRED = 411;
+
+ /**
+ * Status code (412) indicating that the precondition given in one
+ * or more of the request-header fields evaluated to false when it
+ * was tested on the server.
+ */
+
+ public static final int SC_PRECONDITION_FAILED = 412;
+
+ /**
+ * Status code (413) indicating that the server is refusing to process
+ * the request because the request entity is larger than the server is
+ * willing or able to process.
+ */
+
+ public static final int SC_REQUEST_ENTITY_TOO_LARGE = 413;
+
+ /**
+ * Status code (414) indicating that the server is refusing to service
+ * the request because the <code><em>Request-URI</em></code> is longer
+ * than the server is willing to interpret.
+ */
+
+ public static final int SC_REQUEST_URI_TOO_LONG = 414;
+
+ /**
+ * Status code (415) indicating that the server is refusing to service
+ * the request because the entity of the request is in a format not
+ * supported by the requested resource for the requested method.
+ */
+
+ public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415;
+
+ /**
+ * Status code (416) indicating that the server cannot serve the
+ * requested byte range.
+ */
+
+ public static final int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
+
+ /**
+ * Status code (417) indicating that the server could not meet the
+ * expectation given in the Expect request header.
+ */
+
+ public static final int SC_EXPECTATION_FAILED = 417;
+
+ /**
+ * Status code (500) indicating an error inside the HTTP server
+ * which prevented it from fulfilling the request.
+ */
+
+ public static final int SC_INTERNAL_SERVER_ERROR = 500;
+
+ /**
+ * Status code (501) indicating the HTTP server does not support
+ * the functionality needed to fulfill the request.
+ */
+
+ public static final int SC_NOT_IMPLEMENTED = 501;
+
+ /**
+ * Status code (502) indicating that the HTTP server received an
+ * invalid response from a server it consulted when acting as a
+ * proxy or gateway.
+ */
+
+ public static final int SC_BAD_GATEWAY = 502;
+
+ /**
+ * Status code (503) indicating that the HTTP server is
+ * temporarily overloaded, and unable to handle the request.
+ */
+
+ public static final int SC_SERVICE_UNAVAILABLE = 503;
+
+ /**
+ * Status code (504) indicating that the server did not receive
+ * a timely response from the upstream server while acting as
+ * a gateway or proxy.
+ */
+
+ public static final int SC_GATEWAY_TIMEOUT = 504;
+
+ /**
+ * Status code (505) indicating that the server does not support
+ * or refuses to support the HTTP protocol version that was used
+ * in the request message.
+ */
+
+ public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
+
+
+
+ /**
+ * Status code (413) indicating the server is refusing to
+ * process a request because the request entity is larger
+ * than the server is willing or able to process.
+ */
+ public static final int SC_REQUEST_TOO_LONG = 413;
+
+
+ // -------------------------------------------- Extended WebDav status code
+
+
+ /**
+ * Status code (207) indicating that the response requires
+ * providing status for multiple independent operations.
+ */
+ public static final int SC_MULTI_STATUS = 207;
+ // This one colides with HTTP 1.1
+ // "207 Parital Update OK"
+
+
+ /**
+ * Status code (418) indicating the entity body submitted with
+ * the PATCH method was not understood by the resource.
+ */
+ public static final int SC_UNPROCESSABLE_ENTITY = 418;
+ // This one colides with HTTP 1.1
+ // "418 Reauthentication Required"
+
+
+ /**
+ * Status code (419) indicating that the resource does not have
+ * sufficient space to record the state of the resource after the
+ * execution of this method.
+ */
+ public static final int SC_INSUFFICIENT_SPACE_ON_RESOURCE = 419;
+ // This one colides with HTTP 1.1
+ // "419 Proxy Reauthentication Required"
+
+
+ /**
+ * Status code (420) indicating the method was not executed on
+ * a particular resource within its scope because some part of
+ * the method's execution failed causing the entire method to be
+ * aborted.
+ */
+ public static final int SC_METHOD_FAILURE = 420;
+
+
+ /**
+ * Status code (423) indicating the destination resource of a
+ * method is locked, and either the request did not contain a
+ * valid Lock-Info header, or the Lock-Info header identifies
+ * a lock held by another principal.
+ */
+ public static final int SC_LOCKED = 423;
+
+
+ // ------------------------------------------------------------ Initializer
+
+
+ static {
+ // HTTP 1.0 tatus Code
+ addStatusCodeMap(SC_OK, "OK");
+ addStatusCodeMap(SC_CREATED, "Created");
+ addStatusCodeMap(SC_ACCEPTED, "Accepted");
+ addStatusCodeMap(SC_NO_CONTENT, "No Content");
+ addStatusCodeMap(SC_MOVED_PERMANENTLY, "Moved Permanently");
+ addStatusCodeMap(SC_MOVED_TEMPORARILY, "Moved Temporarily");
+ addStatusCodeMap(SC_NOT_MODIFIED, "Not Modified");
+ addStatusCodeMap(SC_BAD_REQUEST, "Bad Request");
+ addStatusCodeMap(SC_UNAUTHORIZED, "Unauthorized");
+ addStatusCodeMap(SC_FORBIDDEN, "Forbidden");
+ addStatusCodeMap(SC_NOT_FOUND, "Not Found");
+ addStatusCodeMap(SC_INTERNAL_SERVER_ERROR, "Internal Server Error");
+ addStatusCodeMap(SC_NOT_IMPLEMENTED, "Not Implemented");
+ addStatusCodeMap(SC_BAD_GATEWAY, "Bad Gateway");
+ addStatusCodeMap(SC_SERVICE_UNAVAILABLE, "Service Unavailable");
+ addStatusCodeMap(SC_CONTINUE, "Continue");
+ addStatusCodeMap(SC_METHOD_NOT_ALLOWED, "Method Not Allowed");
+ addStatusCodeMap(SC_CONFLICT, "Conflict");
+ addStatusCodeMap(SC_PRECONDITION_FAILED, "Precondition Failed");
+ addStatusCodeMap(SC_REQUEST_TOO_LONG, "Request Too Long");
+ addStatusCodeMap(SC_UNSUPPORTED_MEDIA_TYPE, "Unsupported Media Type");
+ // WebDav Status Codes
+ addStatusCodeMap(SC_MULTI_STATUS, "Multi-Status");
+ addStatusCodeMap(SC_UNPROCESSABLE_ENTITY, "Unprocessable Entity");
+ addStatusCodeMap(SC_INSUFFICIENT_SPACE_ON_RESOURCE,
+ "Insufficient Space On Resource");
+ addStatusCodeMap(SC_METHOD_FAILURE, "Method Failure");
+ addStatusCodeMap(SC_LOCKED, "Locked");
+ }
+
+
+ // --------------------------------------------------------- Public Methods
+
+
+ /**
+ * Returns the HTTP status text for the HTTP or WebDav status code
+ * specified by looking it up in the static mapping. This is a
+ * static function.
+ *
+ * @param nHttpStatusCode [IN] HTTP or WebDAV status code
+ * @return A string with a short descriptive phrase for the
+ * HTTP status code (e.g., "OK").
+ */
+ public static String getStatusText(int nHttpStatusCode) {
+ Integer intKey = new Integer(nHttpStatusCode);
+
+ if (!mapStatusCodes.containsKey(intKey)) {
+ return "";
+ } else {
+ return (String) mapStatusCodes.get(intKey);
+ }
+ }
+
+
+ // -------------------------------------------------------- protected
Methods
+
+
+ /**
+ * Adds a new status code -> status text mapping. This is a static
+ * method because the mapping is a static variable.
+ *
+ * @param nKey [IN] HTTP or WebDAV status code
+ * @param strVal [IN] HTTP status text
+ */
+ protected static void addStatusCodeMap(int nKey, String strVal) {
+ mapStatusCodes.put(new Integer(nKey), strVal);
+ }
+
+}
\ No newline at end of file
Propchange:
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/http/HttpStatus.java
------------------------------------------------------------------------------
svn:eol-style = native
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]