Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2014-06-18 13:26:33 +0000
committerGreg Wilkins2014-06-18 13:26:33 +0000
commit9acf971cc17fc593ebfff0334a3c6f691992b95d (patch)
treef9dbc49a6bfba5f7c150c352451713baab460bb0
parentbeb5918c3cb57f8df333aa375009024f3b7159c4 (diff)
downloadorg.eclipse.jetty.project-9acf971cc17fc593ebfff0334a3c6f691992b95d.tar.gz
org.eclipse.jetty.project-9acf971cc17fc593ebfff0334a3c6f691992b95d.tar.xz
org.eclipse.jetty.project-9acf971cc17fc593ebfff0334a3c6f691992b95d.zip
cache path URI in table
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/MetaData.java7
-rw-r--r--jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java8
-rw-r--r--jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java9
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:

Back to the top