Skip to content

Commit

Permalink
VertxHttpHeaders tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
vietj committed Jun 25, 2017
1 parent af7f484 commit a024348
Showing 1 changed file with 19 additions and 22 deletions.
41 changes: 19 additions & 22 deletions src/main/java/io/vertx/core/http/impl/headers/VertxHttpHeaders.java
Expand Up @@ -20,6 +20,7 @@
import io.vertx.core.MultiMap; import io.vertx.core.MultiMap;


import java.util.AbstractMap; import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
Expand Down Expand Up @@ -138,7 +139,7 @@ public VertxHttpHeaders remove(final String name) {
return this; return this;
} }


private void remove0(int h, int i, String name) { private void remove0(int h, int i, CharSequence name) {
VertxHttpHeaders.MapEntry e = entries[i]; VertxHttpHeaders.MapEntry e = entries[i];
if (e == null) { if (e == null) {
return; return;
Expand Down Expand Up @@ -179,7 +180,7 @@ public VertxHttpHeaders set(final String name, final String strVal) {
return set0(name, strVal); return set0(name, strVal);
} }


private VertxHttpHeaders set0(final String name, final CharSequence strVal) { private VertxHttpHeaders set0(final CharSequence name, final CharSequence strVal) {
int h = AsciiString.hashCode(name); int h = AsciiString.hashCode(name);
int i = index(h); int i = index(h);
remove0(h, i, name); remove0(h, i, name);
Expand Down Expand Up @@ -234,20 +235,7 @@ private CharSequence get0(CharSequence name) {


@Override @Override
public List<String> getAll(final String name) { public List<String> getAll(final String name) {
Objects.requireNonNull(name, "name"); return getAll((CharSequence) name);

LinkedList<String> values = new LinkedList<>();

int h = AsciiString.hashCode(name);
int i = index(h);
VertxHttpHeaders.MapEntry e = entries[i];
while (e != null) {
if (e.hash == h && AsciiString.contentEqualsIgnoreCase(name, e.key)) {
values.addFirst(e.getValue().toString());
}
e = e.next;
}
return values;
} }


@Override @Override
Expand All @@ -261,9 +249,7 @@ public void forEach(Consumer<? super Map.Entry<String, String>> action) {


@Override @Override
public List<Map.Entry<String, String>> entries() { public List<Map.Entry<String, String>> entries() {
List<Map.Entry<String, String>> all = List<Map.Entry<String, String>> all = new ArrayList<>(size());
new LinkedList<>();

VertxHttpHeaders.MapEntry e = head.after; VertxHttpHeaders.MapEntry e = head.after;
while (e != head) { while (e != head) {
all.add(new AbstractMap.SimpleEntry<>(e.key.toString(), e.value.toString())); all.add(new AbstractMap.SimpleEntry<>(e.key.toString(), e.value.toString()));
Expand All @@ -289,9 +275,7 @@ public boolean isEmpty() {


@Override @Override
public Set<String> names() { public Set<String> names() {

Set<String> names = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); Set<String> names = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);

VertxHttpHeaders.MapEntry e = head.after; VertxHttpHeaders.MapEntry e = head.after;
while (e != head) { while (e != head) {
names.add(e.getKey().toString()); names.add(e.getKey().toString());
Expand All @@ -309,7 +293,20 @@ public String get(CharSequence name) {


@Override @Override
public List<String> getAll(CharSequence name) { public List<String> getAll(CharSequence name) {
return getAll(name.toString()); Objects.requireNonNull(name, "name");

LinkedList<String> values = new LinkedList<>();

int h = AsciiString.hashCode(name);
int i = index(h);
VertxHttpHeaders.MapEntry e = entries[i];
while (e != null) {
if (e.hash == h && AsciiString.contentEqualsIgnoreCase(name, e.key)) {
values.addFirst(e.getValue().toString());
}
e = e.next;
}
return values;
} }


@Override @Override
Expand Down

0 comments on commit a024348

Please sign in to comment.