diff options
author | Greg Wilkins | 2012-12-07 03:01:18 +0000 |
---|---|---|
committer | Greg Wilkins | 2012-12-07 14:41:01 +0000 |
commit | 3e151901bf5dcace25b6f207fefdd20ea8ee81f0 (patch) | |
tree | e667f362e075c00e12e8616c1a5ed75c83df7999 | |
parent | a20d984d3018d0ed727b9fdd495b4ef80d02714f (diff) | |
download | org.eclipse.jetty.project-3e151901bf5dcace25b6f207fefdd20ea8ee81f0.tar.gz org.eclipse.jetty.project-3e151901bf5dcace25b6f207fefdd20ea8ee81f0.tar.xz org.eclipse.jetty.project-3e151901bf5dcace25b6f207fefdd20ea8ee81f0.zip |
jetty-9 Use public HttpField
10 files changed, 52 insertions, 40 deletions
diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpReceiver.java b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpReceiver.java index 1f2b8c6a3b..2fd12f1160 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpReceiver.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpReceiver.java @@ -33,6 +33,7 @@ import org.eclipse.jetty.client.api.CookieStore; import org.eclipse.jetty.client.api.Response; import org.eclipse.jetty.client.api.Result; import org.eclipse.jetty.http.HttpCookie; +import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpParser; import org.eclipse.jetty.http.HttpVersion; @@ -183,7 +184,7 @@ public class HttpReceiver implements HttpParser.ResponseHandler<ByteBuffer> } @Override - public boolean parsedHeader(HttpHeader header, String name, String value) + public boolean parsedHeader(HttpField field) { if (updateState(State.RECEIVE, State.RECEIVE)) { @@ -191,15 +192,16 @@ public class HttpReceiver implements HttpParser.ResponseHandler<ByteBuffer> // The exchange may be null if it failed concurrently if (exchange != null) { - exchange.getResponse().getHeaders().add(name, value); - switch (name.toLowerCase(Locale.ENGLISH)) + exchange.getResponse().getHeaders().add(field); + if (field.getHeader()!=null) + switch (field.getHeader()) { - case "set-cookie": - case "set-cookie2": + case SET_COOKIE: + case SET_COOKIE2: { CookieStore cookieStore = connection.getHttpClient().getCookieStore(); HttpDestination destination = connection.getDestination(); - List<HttpCookie> cookies = HttpCookieParser.parseCookies(value); + List<HttpCookie> cookies = HttpCookieParser.parseCookies(field.getValue()); for (HttpCookie cookie : cookies) cookieStore.addCookie(destination, cookie); break; diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpFields.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpFields.java index e061378736..665ac0a8fa 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpFields.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpFields.java @@ -928,6 +928,11 @@ public class HttpFields implements Iterable<HttpField> _fields.clear(); } + public void add(HttpField field) + { + _fields.add(field); + } + /** * Add fields from another HttpFields instance. Single valued fields are replaced, while all * others are added. diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java index 22d8ec5c87..d36bc793bd 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java @@ -63,6 +63,7 @@ public class HttpParser private final RequestHandler<ByteBuffer> _requestHandler; private final ResponseHandler<ByteBuffer> _responseHandler; private final int _maxHeaderBytes; + private HttpField _field; private HttpHeader _header; private String _headerString; private HttpHeaderValue _value; @@ -646,7 +647,8 @@ public class HttpParser if (_header!=null && handleKnownHeaders(buffer)) return true; - return_from_parse|=_handler.parsedHeader(_header, _headerString, _valueString); + return_from_parse|=_handler.parsedHeader(_field!=null?_field:new HttpField(_header,_headerString,_valueString)); + _field=null; } _headerString=_valueString=null; _header=null; @@ -717,18 +719,19 @@ public class HttpParser if (buffer.remaining()>6 && buffer.hasArray()) { // Try a look ahead for the known header name and value. - HttpField field=HttpField.CACHE.getBest(buffer.array(),buffer.arrayOffset()+buffer.position()-1,buffer.remaining()+1); - if (field!=null) + _field=HttpField.CACHE.getBest(buffer.array(),buffer.arrayOffset()+buffer.position()-1,buffer.remaining()+1); + if (_field!=null) { - _header=field.getHeader(); - _headerString=field.getName(); - _valueString=field.getValue(); + _header=_field.getHeader(); + _headerString=_field.getName(); + _valueString=_field.getValue(); if (_valueString==null) { setState(State.HEADER_VALUE); buffer.position(buffer.position()+_headerString.length()+1); _string.setLength(0); _length=0; + _field=null; } else { @@ -915,6 +918,7 @@ public class HttpParser _string.append(_valueString); _length=_valueString.length(); _valueString=null; + _field=null; } _string.append((char)ch); setState(State.HEADER_VALUE); @@ -926,6 +930,7 @@ public class HttpParser _string.append(_valueString); _length=_valueString.length(); _valueString=null; + _field=null; } _string.append((char)ch); _length++; @@ -1312,12 +1317,10 @@ public class HttpParser /** * This is the method called by parser when a HTTP Header name and value is found - * @param header The HttpHeader value if there is a match - * @param name The String value of the header name - * @param value The String value of the header + * @param field TODO * @return */ - public boolean parsedHeader(HttpHeader header, String name, String value); + public boolean parsedHeader(HttpField field); public boolean earlyEOF(); @@ -1333,7 +1336,7 @@ public class HttpParser /** * This is the method called by the parser after it has parsed the host header (and checked it's format). This is - * called after the {@link HttpHandler#parsedHeader(HttpHeader, String, String) methods and before + * called after the {@link HttpHandler#parsedHeader(HttpField) methods and before * HttpHandler#headerComplete(); */ public abstract boolean parsedHostHeader(String host,int port); diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpTester.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpTester.java index 004c4b3113..c038ebe429 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpTester.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpTester.java @@ -118,9 +118,9 @@ public class HttpTester } } @Override - public boolean parsedHeader(HttpHeader header, String name, String value) + public boolean parsedHeader(HttpField field) { - put(name,value); + put(field.getName(),field.getValue()); return false; } diff --git a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpGeneratorServerTest.java b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpGeneratorServerTest.java index c0cfacdf08..63708df93c 100644 --- a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpGeneratorServerTest.java +++ b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpGeneratorServerTest.java @@ -70,10 +70,10 @@ public class HttpGeneratorServerTest } @Override - public boolean parsedHeader(HttpHeader header, String name, String value) + public boolean parsedHeader(HttpField field) { - _hdr.add(name); - _val.add(value); + _hdr.add(field.getName()); + _val.add(field.getValue()); return false; } diff --git a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java index 2abf6a5e6b..951ee4898a 100644 --- a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java +++ b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java @@ -759,11 +759,11 @@ public class HttpParserTest } @Override - public boolean parsedHeader(HttpHeader header, String name, String value) + public boolean parsedHeader(HttpField field) { //System.err.println("header "+name+": "+value); - _hdr[++_h]= name; - _val[_h]= value; + _hdr[++_h]= field.getName(); + _val[_h]= field.getValue(); return false; } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java index 315e59cacf..855aad1288 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java @@ -27,6 +27,7 @@ import java.util.concurrent.atomic.AtomicInteger; import javax.servlet.DispatcherType; import javax.servlet.RequestDispatcher; +import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpFields; import org.eclipse.jetty.http.HttpGenerator; import org.eclipse.jetty.http.HttpGenerator.ResponseInfo; @@ -411,8 +412,10 @@ public class HttpChannel<T> implements HttpParser.RequestHandler<T>, Runnable } @Override - public boolean parsedHeader(HttpHeader header, String name, String value) + public boolean parsedHeader(HttpField field) { + HttpHeader header=field.getHeader(); + String value=field.getValue(); if (value == null) value = ""; if (header != null) @@ -467,8 +470,9 @@ public class HttpChannel<T> implements HttpParser.RequestHandler<T>, Runnable break; } } - if (name != null) - _request.getHttpFields().add(name, value); + + if (field.getName()!=null) + _request.getHttpFields().add(field); return false; } diff --git a/jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/http/HttpChannelOverSPDY.java b/jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/http/HttpChannelOverSPDY.java index 062fc2fdba..2e0673b77c 100644 --- a/jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/http/HttpChannelOverSPDY.java +++ b/jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/http/HttpChannelOverSPDY.java @@ -22,6 +22,7 @@ import java.nio.ByteBuffer; import java.util.LinkedList; import java.util.Queue; +import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpVersion; @@ -213,7 +214,7 @@ public class HttpChannelOverSPDY extends HttpChannel<DataInfo> // Spec says headers must be single valued String value = header.value(); LOG.debug("HTTP > {}: {}", name, value); - parsedHeader(httpHeader, name, value); + parsedHeader(new HttpField(name,value)); break; } } diff --git a/jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/proxy/ProxyHTTPSPDYConnection.java b/jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/proxy/ProxyHTTPSPDYConnection.java index 0dc6e77d91..26e798fd1c 100644 --- a/jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/proxy/ProxyHTTPSPDYConnection.java +++ b/jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/proxy/ProxyHTTPSPDYConnection.java @@ -25,6 +25,7 @@ import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpFields; import org.eclipse.jetty.http.HttpGenerator; import org.eclipse.jetty.http.HttpHeader; @@ -92,17 +93,12 @@ public class ProxyHTTPSPDYConnection extends HttpConnection implements HttpParse } @Override - public boolean parsedHeader(HttpHeader header, String headerName, String headerValue) + public boolean parsedHeader(HttpField field) { - switch (headerName.toLowerCase(Locale.ENGLISH)) - { - case "host": - headers.put(HTTPSPDYHeader.HOST.name(version), headerValue); - break; - default: - headers.put(headerName, headerValue); - break; - } + if (field.getHeader()==HttpHeader.HOST) + headers.put(HTTPSPDYHeader.HOST.name(version), field.getValue()); + else + headers.put(field.getName(), field.getValue()); return false; } diff --git a/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/mux/MuxAddHandler.java b/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/mux/MuxAddHandler.java index 99aed4e497..306531cd0d 100644 --- a/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/mux/MuxAddHandler.java +++ b/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/mux/MuxAddHandler.java @@ -20,6 +20,7 @@ package org.eclipse.jetty.websocket.server.mux; import java.io.IOException; +import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpVersion; @@ -95,7 +96,7 @@ public class MuxAddHandler implements MuxAddServer HttpHeader header = HttpHeader.CACHE.getBest(headerName.getBytes(),0,headerName.length()); for (String value : request.getHeaders().get(headerName)) { - httpChannel.parsedHeader(header,headerName,value); + httpChannel.parsedHeader(new HttpField(header,value)); } } |