revert httpfields
This commit is contained in:
parent
f258ff1565
commit
1666f54b50
|
@ -24,6 +24,7 @@ import java.util.Collections;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
|
@ -48,17 +49,19 @@ import org.eclipse.jetty.util.log.Logger;
|
||||||
* <p>The cookie handling provided by this class is guided by the Servlet specification and RFC6265.
|
* <p>The cookie handling provided by this class is guided by the Servlet specification and RFC6265.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class HttpFields extends ArrayList<HttpField>
|
public class HttpFields implements Iterable<HttpField>
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
private static final Logger LOG = Log.getLogger(HttpFields.class);
|
private static final Logger LOG = Log.getLogger(HttpFields.class);
|
||||||
public final static String __separators = ", \t";
|
public final static String __separators = ", \t";
|
||||||
|
|
||||||
|
final List<HttpField> _fields;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*/
|
*/
|
||||||
public HttpFields()
|
public HttpFields()
|
||||||
{
|
{
|
||||||
|
_fields=new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -66,7 +69,18 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
*/
|
*/
|
||||||
public HttpFields(int capacity)
|
public HttpFields(int capacity)
|
||||||
{
|
{
|
||||||
super(capacity);
|
_fields=new ArrayList<>(capacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int size()
|
||||||
|
{
|
||||||
|
return _fields.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Iterator<HttpField> iterator()
|
||||||
|
{
|
||||||
|
return _fields.iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,7 +88,7 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
*/
|
*/
|
||||||
public Collection<String> getFieldNamesCollection()
|
public Collection<String> getFieldNamesCollection()
|
||||||
{
|
{
|
||||||
final Set<String> list = new HashSet<>(size());
|
final Set<String> list = new HashSet<>(_fields.size());
|
||||||
for (HttpField f : this)
|
for (HttpField f : this)
|
||||||
{
|
{
|
||||||
if (f!=null)
|
if (f!=null)
|
||||||
|
@ -99,14 +113,14 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
*/
|
*/
|
||||||
public HttpField getField(int i)
|
public HttpField getField(int i)
|
||||||
{
|
{
|
||||||
return get(i);
|
return _fields.get(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
public HttpField getField(HttpHeader header)
|
public HttpField getField(HttpHeader header)
|
||||||
{
|
{
|
||||||
for (int i=0;i<size();i++)
|
for (int i=0;i<_fields.size();i++)
|
||||||
{
|
{
|
||||||
HttpField f=get(i);
|
HttpField f=_fields.get(i);
|
||||||
if (f.getHeader()==header)
|
if (f.getHeader()==header)
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
@ -115,20 +129,30 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
|
|
||||||
public HttpField getField(String name)
|
public HttpField getField(String name)
|
||||||
{
|
{
|
||||||
for (int i=0;i<size();i++)
|
for (int i=0;i<_fields.size();i++)
|
||||||
{
|
{
|
||||||
HttpField f=get(i);
|
HttpField f=_fields.get(i);
|
||||||
if (f.getName().equalsIgnoreCase(name))
|
if (f.getName().equalsIgnoreCase(name))
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean contains(HttpField field)
|
||||||
|
{
|
||||||
|
for (int i=_fields.size();i-->0;)
|
||||||
|
{
|
||||||
|
if (_fields.get(i).equals(field))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean contains(HttpHeader header, String value)
|
public boolean contains(HttpHeader header, String value)
|
||||||
{
|
{
|
||||||
for (int i=0;i<size();i++)
|
for (int i=_fields.size();i-->0;)
|
||||||
{
|
{
|
||||||
HttpField f=get(i);
|
HttpField f=_fields.get(i);
|
||||||
if (f.getHeader()==header && f.contains(value))
|
if (f.getHeader()==header && f.contains(value))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -137,9 +161,9 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
|
|
||||||
public boolean contains(String name, String value)
|
public boolean contains(String name, String value)
|
||||||
{
|
{
|
||||||
for (int i=0;i<size();i++)
|
for (int i=_fields.size();i-->0;)
|
||||||
{
|
{
|
||||||
HttpField f=get(i);
|
HttpField f=_fields.get(i);
|
||||||
if (f.getName().equalsIgnoreCase(name) && f.contains(value))
|
if (f.getName().equalsIgnoreCase(name) && f.contains(value))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -149,9 +173,9 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
|
|
||||||
public boolean containsKey(String name)
|
public boolean containsKey(String name)
|
||||||
{
|
{
|
||||||
for (int i=0;i<size();i++)
|
for (int i=_fields.size();i-->0;)
|
||||||
{
|
{
|
||||||
HttpField f=get(i);
|
HttpField f=_fields.get(i);
|
||||||
if (f.getName().equalsIgnoreCase(name))
|
if (f.getName().equalsIgnoreCase(name))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -207,9 +231,9 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
*/
|
*/
|
||||||
public Enumeration<String> getValues(final String name)
|
public Enumeration<String> getValues(final String name)
|
||||||
{
|
{
|
||||||
for (int i=0;i<size();i++)
|
for (int i=0;i<_fields.size();i++)
|
||||||
{
|
{
|
||||||
final HttpField f = get(i);
|
final HttpField f = _fields.get(i);
|
||||||
|
|
||||||
if (f.getName().equalsIgnoreCase(name) && f.getValue()!=null)
|
if (f.getName().equalsIgnoreCase(name) && f.getValue()!=null)
|
||||||
{
|
{
|
||||||
|
@ -224,9 +248,9 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
{
|
{
|
||||||
if (field==null)
|
if (field==null)
|
||||||
{
|
{
|
||||||
while (i<size())
|
while (i<_fields.size())
|
||||||
{
|
{
|
||||||
field=get(i++);
|
field=_fields.get(i++);
|
||||||
if (field.getName().equalsIgnoreCase(name) && field.getValue()!=null)
|
if (field.getName().equalsIgnoreCase(name) && field.getValue()!=null)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -305,22 +329,22 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
public void put(HttpField field)
|
public void put(HttpField field)
|
||||||
{
|
{
|
||||||
boolean put=false;
|
boolean put=false;
|
||||||
for (int i=size();i-->0;)
|
for (int i=_fields.size();i-->0;)
|
||||||
{
|
{
|
||||||
HttpField f=get(i);
|
HttpField f=_fields.get(i);
|
||||||
if (f.isSameName(field))
|
if (f.isSameName(field))
|
||||||
{
|
{
|
||||||
if (put)
|
if (put)
|
||||||
remove(i);
|
_fields.remove(i);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
set(i,field);
|
_fields.set(i,field);
|
||||||
put=true;
|
put=true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!put)
|
if (!put)
|
||||||
add(field);
|
_fields.add(field);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -385,7 +409,7 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
return;
|
return;
|
||||||
|
|
||||||
HttpField field = new HttpField(name, value);
|
HttpField field = new HttpField(name, value);
|
||||||
add(field);
|
_fields.add(field);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void add(HttpHeader header, HttpHeaderValue value) throws IllegalArgumentException
|
public void add(HttpHeader header, HttpHeaderValue value) throws IllegalArgumentException
|
||||||
|
@ -406,7 +430,7 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
if (value == null) throw new IllegalArgumentException("null value");
|
if (value == null) throw new IllegalArgumentException("null value");
|
||||||
|
|
||||||
HttpField field = new HttpField(header, value);
|
HttpField field = new HttpField(header, value);
|
||||||
add(field);
|
_fields.add(field);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -416,11 +440,11 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
*/
|
*/
|
||||||
public HttpField remove(HttpHeader name)
|
public HttpField remove(HttpHeader name)
|
||||||
{
|
{
|
||||||
for (int i=size();i-->0;)
|
for (int i=_fields.size();i-->0;)
|
||||||
{
|
{
|
||||||
HttpField f=get(i);
|
HttpField f=_fields.get(i);
|
||||||
if (f.getHeader()==name)
|
if (f.getHeader()==name)
|
||||||
return remove(i);
|
return _fields.remove(i);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -432,11 +456,11 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
*/
|
*/
|
||||||
public HttpField remove(String name)
|
public HttpField remove(String name)
|
||||||
{
|
{
|
||||||
for (int i=size();i-->0;)
|
for (int i=_fields.size();i-->0;)
|
||||||
{
|
{
|
||||||
HttpField f=get(i);
|
HttpField f=_fields.get(i);
|
||||||
if (f.getName().equalsIgnoreCase(name))
|
if (f.getName().equalsIgnoreCase(name))
|
||||||
return remove(i);
|
return _fields.remove(i);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -566,6 +590,16 @@ public class HttpFields extends ArrayList<HttpField>
|
||||||
return e.toString();
|
return e.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clear()
|
||||||
|
{
|
||||||
|
_fields.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(HttpField field)
|
||||||
|
{
|
||||||
|
_fields.add(field);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add fields from another HttpFields instance. Single valued fields are replaced, while all
|
* Add fields from another HttpFields instance. Single valued fields are replaced, while all
|
||||||
|
|
|
@ -67,7 +67,7 @@ public class MetaData implements Iterable<HttpField>
|
||||||
return false;
|
return false;
|
||||||
MetaData m = (MetaData)o;
|
MetaData m = (MetaData)o;
|
||||||
|
|
||||||
List<HttpField> lm=m.getFields();
|
HttpFields lm=m.getFields();
|
||||||
int s=0;
|
int s=0;
|
||||||
for (HttpField field: this)
|
for (HttpField field: this)
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,6 +22,7 @@ import java.nio.ByteBuffer;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.jetty.http.HttpField;
|
import org.eclipse.jetty.http.HttpField;
|
||||||
|
import org.eclipse.jetty.http.HttpFields;
|
||||||
import org.eclipse.jetty.http.HttpScheme;
|
import org.eclipse.jetty.http.HttpScheme;
|
||||||
import org.eclipse.jetty.http.HttpURI;
|
import org.eclipse.jetty.http.HttpURI;
|
||||||
import org.eclipse.jetty.http.HttpVersion;
|
import org.eclipse.jetty.http.HttpVersion;
|
||||||
|
@ -77,10 +78,10 @@ public class HttpChannelOverHTTP2 extends HttpChannel<ByteBufferCallback>
|
||||||
|
|
||||||
parsedHostHeader(requestMetaData.getHost(), requestMetaData.getPort());
|
parsedHostHeader(requestMetaData.getHost(), requestMetaData.getPort());
|
||||||
|
|
||||||
List<HttpField> fields = requestMetaData.getFields();
|
HttpFields fields = requestMetaData.getFields();
|
||||||
for (int i = 0; i < fields.size(); ++i)
|
for (int i = 0; i < fields.size(); ++i)
|
||||||
{
|
{
|
||||||
HttpField field = fields.get(i);
|
HttpField field = fields.getField(i);
|
||||||
parsedHeader(field);
|
parsedHeader(field);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue