Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2012-12-07 03:01:18 +0000
committerGreg Wilkins2012-12-07 14:41:01 +0000
commit3e151901bf5dcace25b6f207fefdd20ea8ee81f0 (patch)
treee667f362e075c00e12e8616c1a5ed75c83df7999
parenta20d984d3018d0ed727b9fdd495b4ef80d02714f (diff)
downloadorg.eclipse.jetty.project-3e151901bf5dcace25b6f207fefdd20ea8ee81f0.tar.gz
org.eclipse.jetty.project-3e151901bf5dcace25b6f207fefdd20ea8ee81f0.tar.xz
org.eclipse.jetty.project-3e151901bf5dcace25b6f207fefdd20ea8ee81f0.zip
jetty-9 Use public HttpField
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/HttpReceiver.java14
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpFields.java5
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java25
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpTester.java4
-rw-r--r--jetty-http/src/test/java/org/eclipse/jetty/http/HttpGeneratorServerTest.java6
-rw-r--r--jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java6
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java10
-rw-r--r--jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/http/HttpChannelOverSPDY.java3
-rw-r--r--jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/proxy/ProxyHTTPSPDYConnection.java16
-rw-r--r--jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/mux/MuxAddHandler.java3
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));
}
}

Back to the top