diff options
author | Greg Wilkins | 2014-06-18 13:26:33 +0000 |
---|---|---|
committer | Greg Wilkins | 2014-06-18 13:26:33 +0000 |
commit | 9acf971cc17fc593ebfff0334a3c6f691992b95d (patch) | |
tree | f9dbc49a6bfba5f7c150c352451713baab460bb0 | |
parent | beb5918c3cb57f8df333aa375009024f3b7159c4 (diff) | |
download | org.eclipse.jetty.project-9acf971cc17fc593ebfff0334a3c6f691992b95d.tar.gz org.eclipse.jetty.project-9acf971cc17fc593ebfff0334a3c6f691992b95d.tar.xz org.eclipse.jetty.project-9acf971cc17fc593ebfff0334a3c6f691992b95d.zip |
cache path URI in table
3 files changed, 21 insertions, 3 deletions
diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/MetaData.java b/jetty-http/src/main/java/org/eclipse/jetty/http/MetaData.java index 8267ee0db4..680d1c4371 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/MetaData.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/MetaData.java @@ -117,9 +117,14 @@ public class MetaData implements Iterable<HttpField> public Request(HttpVersion version, HttpScheme scheme, String method, HostPortHttpField authority, String path, HttpFields fields) { + this(version,scheme,method,authority,new HttpURI(path),fields); + } + + public Request(HttpVersion version, HttpScheme scheme, String method, HostPortHttpField authority, HttpURI path, HttpFields fields) + { super(version,fields); _method=method; - _uri=new HttpURI(path); // TODO - this is not so efficient! + _uri=path; _hostPort = authority; _scheme=scheme; } diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java index ca2c440a56..136bb8541d 100644 --- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java +++ b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java @@ -27,6 +27,7 @@ import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpScheme; import org.eclipse.jetty.http.HttpStatus; +import org.eclipse.jetty.http.HttpURI; import org.eclipse.jetty.http.MetaData; import org.eclipse.jetty.http2.hpack.HpackContext.Entry; import org.eclipse.jetty.util.TypeUtil; @@ -185,6 +186,13 @@ public class HpackDecoder field = new AuthorityHttpField(value); break; + case ":path": + if (indexed) + field = new StaticValueHttpField(header,name,value,new HttpURI(value)); + else + field = new HttpField(header,name,value); + break; + default: field = new HttpField(header,name,value); break; diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java index 2ff9510b32..b130ee86ba 100644 --- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java +++ b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java @@ -26,6 +26,7 @@ import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpFields; import org.eclipse.jetty.http.HttpScheme; import org.eclipse.jetty.http.HttpStatus; +import org.eclipse.jetty.http.HttpURI; import org.eclipse.jetty.http.HttpVersion; import org.eclipse.jetty.http.MetaData; @@ -40,7 +41,7 @@ public class MetaDataBuilder private String _method; private HttpScheme _scheme; private HostPortHttpField _authority; - private String _path; + private HttpURI _path; private HttpFields _fields = new HttpFields(10); @@ -89,6 +90,10 @@ public class MetaDataBuilder _scheme = (HttpScheme)value.getStaticValue(); break; + case ":path": + _path = (HttpURI)value.getStaticValue(); + break; + default: throw new IllegalArgumentException(); } @@ -114,7 +119,7 @@ public class MetaDataBuilder break; case ":path": - _path=field.getValue(); + _path=new HttpURI(field.getValue()); break; default: |