Remove 'get' prefix from all HTTP/SPDY messages
Motivation: Persuit for the consistency in method naming Modifications: - Remove the 'get' prefix from all HTTP/SPDY message classes - Fix some inspector warnings Result: Consistency Fixes #2594
This commit is contained in:
parent
30e22f5da3
commit
4a13f66e13
@ -15,13 +15,11 @@
|
|||||||
*/
|
*/
|
||||||
package io.netty.buffer;
|
package io.netty.buffer;
|
||||||
|
|
||||||
import static io.netty.buffer.Unpooled.LITTLE_ENDIAN;
|
import org.junit.Test;
|
||||||
import static io.netty.util.ReferenceCountUtil.releaseLater;
|
|
||||||
import static org.junit.Assert.*;
|
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import org.junit.Test;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests sliced channel buffers
|
* Tests sliced channel buffers
|
||||||
|
@ -80,27 +80,27 @@ public final class ClientCookieEncoder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void encode(StringBuilder buf, Cookie c) {
|
private static void encode(StringBuilder buf, Cookie c) {
|
||||||
if (c.getVersion() >= 1) {
|
if (c.version() >= 1) {
|
||||||
add(buf, '$' + CookieHeaderNames.VERSION, 1);
|
add(buf, '$' + CookieHeaderNames.VERSION, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
add(buf, c.getName(), c.getValue());
|
add(buf, c.name(), c.value());
|
||||||
|
|
||||||
if (c.getPath() != null) {
|
if (c.path() != null) {
|
||||||
add(buf, '$' + CookieHeaderNames.PATH, c.getPath());
|
add(buf, '$' + CookieHeaderNames.PATH, c.path());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c.getDomain() != null) {
|
if (c.domain() != null) {
|
||||||
add(buf, '$' + CookieHeaderNames.DOMAIN, c.getDomain());
|
add(buf, '$' + CookieHeaderNames.DOMAIN, c.domain());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c.getVersion() >= 1) {
|
if (c.version() >= 1) {
|
||||||
if (!c.getPorts().isEmpty()) {
|
if (!c.ports().isEmpty()) {
|
||||||
buf.append('$');
|
buf.append('$');
|
||||||
buf.append(CookieHeaderNames.PORT);
|
buf.append(CookieHeaderNames.PORT);
|
||||||
buf.append((char) HttpConstants.EQUALS);
|
buf.append((char) HttpConstants.EQUALS);
|
||||||
buf.append((char) HttpConstants.DOUBLE_QUOTE);
|
buf.append((char) HttpConstants.DOUBLE_QUOTE);
|
||||||
for (int port: c.getPorts()) {
|
for (int port: c.ports()) {
|
||||||
buf.append(port);
|
buf.append(port);
|
||||||
buf.append((char) HttpConstants.COMMA);
|
buf.append((char) HttpConstants.COMMA);
|
||||||
}
|
}
|
||||||
|
@ -60,10 +60,16 @@ final class ComposedLastHttpContent implements LastHttpContent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DecoderResult getDecoderResult() {
|
public DecoderResult decoderResult() {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Deprecated
|
||||||
|
public DecoderResult getDecoderResult() {
|
||||||
|
return decoderResult();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setDecoderResult(DecoderResult result) {
|
public void setDecoderResult(DecoderResult result) {
|
||||||
this.result = result;
|
this.result = result;
|
||||||
|
@ -23,19 +23,31 @@ import java.util.Set;
|
|||||||
*/
|
*/
|
||||||
public interface Cookie extends Comparable<Cookie> {
|
public interface Cookie extends Comparable<Cookie> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #name()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
String getName();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the name of this {@link Cookie}.
|
* Returns the name of this {@link Cookie}.
|
||||||
*
|
*
|
||||||
* @return The name of this {@link Cookie}
|
* @return The name of this {@link Cookie}
|
||||||
*/
|
*/
|
||||||
String getName();
|
String name();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #value()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
String getValue();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the value of this {@link Cookie}.
|
* Returns the value of this {@link Cookie}.
|
||||||
*
|
*
|
||||||
* @return The value of this {@link Cookie}
|
* @return The value of this {@link Cookie}
|
||||||
*/
|
*/
|
||||||
String getValue();
|
String value();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of this {@link Cookie}.
|
* Sets the value of this {@link Cookie}.
|
||||||
@ -44,12 +56,18 @@ public interface Cookie extends Comparable<Cookie> {
|
|||||||
*/
|
*/
|
||||||
void setValue(String value);
|
void setValue(String value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #domain()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
String getDomain();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the domain of this {@link Cookie}.
|
* Returns the domain of this {@link Cookie}.
|
||||||
*
|
*
|
||||||
* @return The domain of this {@link Cookie}
|
* @return The domain of this {@link Cookie}
|
||||||
*/
|
*/
|
||||||
String getDomain();
|
String domain();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the domain of this {@link Cookie}.
|
* Sets the domain of this {@link Cookie}.
|
||||||
@ -58,12 +76,18 @@ public interface Cookie extends Comparable<Cookie> {
|
|||||||
*/
|
*/
|
||||||
void setDomain(String domain);
|
void setDomain(String domain);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #path()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
String getPath();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the path of this {@link Cookie}.
|
* Returns the path of this {@link Cookie}.
|
||||||
*
|
*
|
||||||
* @return The {@link Cookie}'s path
|
* @return The {@link Cookie}'s path
|
||||||
*/
|
*/
|
||||||
String getPath();
|
String path();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the path of this {@link Cookie}.
|
* Sets the path of this {@link Cookie}.
|
||||||
@ -72,12 +96,18 @@ public interface Cookie extends Comparable<Cookie> {
|
|||||||
*/
|
*/
|
||||||
void setPath(String path);
|
void setPath(String path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #comment()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
String getComment();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the comment of this {@link Cookie}.
|
* Returns the comment of this {@link Cookie}.
|
||||||
*
|
*
|
||||||
* @return The comment of this {@link Cookie}
|
* @return The comment of this {@link Cookie}
|
||||||
*/
|
*/
|
||||||
String getComment();
|
String comment();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the comment of this {@link Cookie}.
|
* Sets the comment of this {@link Cookie}.
|
||||||
@ -86,12 +116,18 @@ public interface Cookie extends Comparable<Cookie> {
|
|||||||
*/
|
*/
|
||||||
void setComment(String comment);
|
void setComment(String comment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #maxAge()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
long getMaxAge();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the maximum age of this {@link Cookie} in seconds or {@link Long#MIN_VALUE} if unspecified
|
* Returns the maximum age of this {@link Cookie} in seconds or {@link Long#MIN_VALUE} if unspecified
|
||||||
*
|
*
|
||||||
* @return The maximum age of this {@link Cookie}
|
* @return The maximum age of this {@link Cookie}
|
||||||
*/
|
*/
|
||||||
long getMaxAge();
|
long maxAge();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the maximum age of this {@link Cookie} in seconds.
|
* Sets the maximum age of this {@link Cookie} in seconds.
|
||||||
@ -104,12 +140,18 @@ public interface Cookie extends Comparable<Cookie> {
|
|||||||
*/
|
*/
|
||||||
void setMaxAge(long maxAge);
|
void setMaxAge(long maxAge);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #version()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
int getVersion();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the version of this {@link Cookie}.
|
* Returns the version of this {@link Cookie}.
|
||||||
*
|
*
|
||||||
* @return The version of this {@link Cookie}
|
* @return The version of this {@link Cookie}
|
||||||
*/
|
*/
|
||||||
int getVersion();
|
int version();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the version of this {@link Cookie}.
|
* Sets the version of this {@link Cookie}.
|
||||||
@ -153,12 +195,18 @@ public interface Cookie extends Comparable<Cookie> {
|
|||||||
*/
|
*/
|
||||||
void setHttpOnly(boolean httpOnly);
|
void setHttpOnly(boolean httpOnly);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #commentUrl()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
String getCommentUrl();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the comment URL of this {@link Cookie}.
|
* Returns the comment URL of this {@link Cookie}.
|
||||||
*
|
*
|
||||||
* @return The comment URL of this {@link Cookie}
|
* @return The comment URL of this {@link Cookie}
|
||||||
*/
|
*/
|
||||||
String getCommentUrl();
|
String commentUrl();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the comment URL of this {@link Cookie}.
|
* Sets the comment URL of this {@link Cookie}.
|
||||||
@ -184,12 +232,18 @@ public interface Cookie extends Comparable<Cookie> {
|
|||||||
*/
|
*/
|
||||||
void setDiscard(boolean discard);
|
void setDiscard(boolean discard);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #ports()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
Set<Integer> getPorts();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the ports that this {@link Cookie} can be accessed on.
|
* Returns the ports that this {@link Cookie} can be accessed on.
|
||||||
*
|
*
|
||||||
* @return The {@link Set} of ports that this {@link Cookie} can use
|
* @return The {@link Set} of ports that this {@link Cookie} can use
|
||||||
*/
|
*/
|
||||||
Set<Integer> getPorts();
|
Set<Integer> ports();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the ports that this {@link Cookie} can be accessed on.
|
* Sets the ports that this {@link Cookie} can be accessed on.
|
||||||
|
@ -78,12 +78,24 @@ public class DefaultCookie implements Cookie {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
return name();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String name() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public String getValue() {
|
public String getValue() {
|
||||||
|
return value();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String value() {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,7 +108,13 @@ public class DefaultCookie implements Cookie {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public String getDomain() {
|
public String getDomain() {
|
||||||
|
return domain();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String domain() {
|
||||||
return domain;
|
return domain;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,7 +124,13 @@ public class DefaultCookie implements Cookie {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public String getPath() {
|
public String getPath() {
|
||||||
|
return path();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String path() {
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,7 +140,13 @@ public class DefaultCookie implements Cookie {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public String getComment() {
|
public String getComment() {
|
||||||
|
return comment();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String comment() {
|
||||||
return comment;
|
return comment;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,7 +156,13 @@ public class DefaultCookie implements Cookie {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public String getCommentUrl() {
|
public String getCommentUrl() {
|
||||||
|
return commentUrl();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String commentUrl() {
|
||||||
return commentUrl;
|
return commentUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,7 +182,13 @@ public class DefaultCookie implements Cookie {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public Set<Integer> getPorts() {
|
public Set<Integer> getPorts() {
|
||||||
|
return ports();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<Integer> ports() {
|
||||||
if (unmodifiablePorts == null) {
|
if (unmodifiablePorts == null) {
|
||||||
unmodifiablePorts = Collections.unmodifiableSet(ports);
|
unmodifiablePorts = Collections.unmodifiableSet(ports);
|
||||||
}
|
}
|
||||||
@ -193,7 +235,13 @@ public class DefaultCookie implements Cookie {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public long getMaxAge() {
|
public long getMaxAge() {
|
||||||
|
return maxAge();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long maxAge() {
|
||||||
return maxAge;
|
return maxAge;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,7 +251,13 @@ public class DefaultCookie implements Cookie {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public int getVersion() {
|
public int getVersion() {
|
||||||
|
return version();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int version() {
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,7 +288,7 @@ public class DefaultCookie implements Cookie {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return getName().hashCode();
|
return name().hashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -244,28 +298,28 @@ public class DefaultCookie implements Cookie {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Cookie that = (Cookie) o;
|
Cookie that = (Cookie) o;
|
||||||
if (!getName().equalsIgnoreCase(that.getName())) {
|
if (!name().equalsIgnoreCase(that.name())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getPath() == null) {
|
if (path() == null) {
|
||||||
if (that.getPath() != null) {
|
if (that.path() != null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (that.getPath() == null) {
|
} else if (that.path() == null) {
|
||||||
return false;
|
return false;
|
||||||
} else if (!getPath().equals(that.getPath())) {
|
} else if (!path().equals(that.path())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getDomain() == null) {
|
if (domain() == null) {
|
||||||
if (that.getDomain() != null) {
|
if (that.domain() != null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (that.getDomain() == null) {
|
} else if (that.domain() == null) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return getDomain().equalsIgnoreCase(that.getDomain());
|
return domain().equalsIgnoreCase(that.domain());
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -274,32 +328,32 @@ public class DefaultCookie implements Cookie {
|
|||||||
@Override
|
@Override
|
||||||
public int compareTo(Cookie c) {
|
public int compareTo(Cookie c) {
|
||||||
int v;
|
int v;
|
||||||
v = getName().compareToIgnoreCase(c.getName());
|
v = name().compareToIgnoreCase(c.name());
|
||||||
if (v != 0) {
|
if (v != 0) {
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getPath() == null) {
|
if (path() == null) {
|
||||||
if (c.getPath() != null) {
|
if (c.path() != null) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else if (c.getPath() == null) {
|
} else if (c.path() == null) {
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
v = getPath().compareTo(c.getPath());
|
v = path().compareTo(c.path());
|
||||||
if (v != 0) {
|
if (v != 0) {
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getDomain() == null) {
|
if (domain() == null) {
|
||||||
if (c.getDomain() != null) {
|
if (c.domain() != null) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else if (c.getDomain() == null) {
|
} else if (c.domain() == null) {
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
v = getDomain().compareToIgnoreCase(c.getDomain());
|
v = domain().compareToIgnoreCase(c.domain());
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,24 +363,24 @@ public class DefaultCookie implements Cookie {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder buf = new StringBuilder();
|
StringBuilder buf = new StringBuilder();
|
||||||
buf.append(getName());
|
buf.append(name());
|
||||||
buf.append('=');
|
buf.append('=');
|
||||||
buf.append(getValue());
|
buf.append(value());
|
||||||
if (getDomain() != null) {
|
if (domain() != null) {
|
||||||
buf.append(", domain=");
|
buf.append(", domain=");
|
||||||
buf.append(getDomain());
|
buf.append(domain());
|
||||||
}
|
}
|
||||||
if (getPath() != null) {
|
if (path() != null) {
|
||||||
buf.append(", path=");
|
buf.append(", path=");
|
||||||
buf.append(getPath());
|
buf.append(path());
|
||||||
}
|
}
|
||||||
if (getComment() != null) {
|
if (comment() != null) {
|
||||||
buf.append(", comment=");
|
buf.append(", comment=");
|
||||||
buf.append(getComment());
|
buf.append(comment());
|
||||||
}
|
}
|
||||||
if (getMaxAge() >= 0) {
|
if (maxAge() >= 0) {
|
||||||
buf.append(", maxAge=");
|
buf.append(", maxAge=");
|
||||||
buf.append(getMaxAge());
|
buf.append(maxAge());
|
||||||
buf.append('s');
|
buf.append('s');
|
||||||
}
|
}
|
||||||
if (isSecure()) {
|
if (isSecure()) {
|
||||||
|
@ -103,7 +103,7 @@ public class DefaultFullHttpRequest extends DefaultHttpRequest implements FullHt
|
|||||||
@Override
|
@Override
|
||||||
public FullHttpRequest copy() {
|
public FullHttpRequest copy() {
|
||||||
DefaultFullHttpRequest copy = new DefaultFullHttpRequest(
|
DefaultFullHttpRequest copy = new DefaultFullHttpRequest(
|
||||||
getProtocolVersion(), getMethod(), getUri(), content().copy(), validateHeaders);
|
protocolVersion(), method(), uri(), content().copy(), validateHeaders);
|
||||||
copy.headers().set(headers());
|
copy.headers().set(headers());
|
||||||
copy.trailingHeaders().set(trailingHeaders());
|
copy.trailingHeaders().set(trailingHeaders());
|
||||||
return copy;
|
return copy;
|
||||||
@ -112,7 +112,7 @@ public class DefaultFullHttpRequest extends DefaultHttpRequest implements FullHt
|
|||||||
@Override
|
@Override
|
||||||
public FullHttpRequest duplicate() {
|
public FullHttpRequest duplicate() {
|
||||||
DefaultFullHttpRequest duplicate = new DefaultFullHttpRequest(
|
DefaultFullHttpRequest duplicate = new DefaultFullHttpRequest(
|
||||||
getProtocolVersion(), getMethod(), getUri(), content().duplicate(), validateHeaders);
|
protocolVersion(), method(), uri(), content().duplicate(), validateHeaders);
|
||||||
duplicate.headers().set(headers());
|
duplicate.headers().set(headers());
|
||||||
duplicate.trailingHeaders().set(trailingHeaders());
|
duplicate.trailingHeaders().set(trailingHeaders());
|
||||||
return duplicate;
|
return duplicate;
|
||||||
|
@ -99,7 +99,7 @@ public class DefaultFullHttpResponse extends DefaultHttpResponse implements Full
|
|||||||
@Override
|
@Override
|
||||||
public FullHttpResponse copy() {
|
public FullHttpResponse copy() {
|
||||||
DefaultFullHttpResponse copy = new DefaultFullHttpResponse(
|
DefaultFullHttpResponse copy = new DefaultFullHttpResponse(
|
||||||
getProtocolVersion(), getStatus(), content().copy(), validateHeaders);
|
protocolVersion(), status(), content().copy(), validateHeaders);
|
||||||
copy.headers().set(headers());
|
copy.headers().set(headers());
|
||||||
copy.trailingHeaders().set(trailingHeaders());
|
copy.trailingHeaders().set(trailingHeaders());
|
||||||
return copy;
|
return copy;
|
||||||
@ -107,7 +107,7 @@ public class DefaultFullHttpResponse extends DefaultHttpResponse implements Full
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FullHttpResponse duplicate() {
|
public FullHttpResponse duplicate() {
|
||||||
DefaultFullHttpResponse duplicate = new DefaultFullHttpResponse(getProtocolVersion(), getStatus(),
|
DefaultFullHttpResponse duplicate = new DefaultFullHttpResponse(protocolVersion(), status(),
|
||||||
content().duplicate(), validateHeaders);
|
content().duplicate(), validateHeaders);
|
||||||
duplicate.headers().set(headers());
|
duplicate.headers().set(headers());
|
||||||
duplicate.trailingHeaders().set(trailingHeaders());
|
duplicate.trailingHeaders().set(trailingHeaders());
|
||||||
|
@ -80,6 +80,6 @@ public class DefaultHttpContent extends DefaultHttpObject implements HttpContent
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return StringUtil.simpleClassName(this) +
|
return StringUtil.simpleClassName(this) +
|
||||||
"(data: " + content() + ", getDecoderResult: " + getDecoderResult() + ')';
|
"(data: " + content() + ", decoderResult: " + decoderResult() + ')';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,13 @@ public abstract class DefaultHttpMessage extends DefaultHttpObject implements Ht
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public HttpVersion getProtocolVersion() {
|
public HttpVersion getProtocolVersion() {
|
||||||
|
return protocolVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HttpVersion protocolVersion() {
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,7 +63,7 @@ public abstract class DefaultHttpMessage extends DefaultHttpObject implements Ht
|
|||||||
StringBuilder buf = new StringBuilder();
|
StringBuilder buf = new StringBuilder();
|
||||||
buf.append(StringUtil.simpleClassName(this));
|
buf.append(StringUtil.simpleClassName(this));
|
||||||
buf.append("(version: ");
|
buf.append("(version: ");
|
||||||
buf.append(getProtocolVersion().text());
|
buf.append(protocolVersion().text());
|
||||||
buf.append(", keepAlive: ");
|
buf.append(", keepAlive: ");
|
||||||
buf.append(HttpHeaders.isKeepAlive(this));
|
buf.append(HttpHeaders.isKeepAlive(this));
|
||||||
buf.append(')');
|
buf.append(')');
|
||||||
|
@ -26,6 +26,12 @@ public class DefaultHttpObject implements HttpObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
public DecoderResult decoderResult() {
|
||||||
|
return decoderResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Deprecated
|
||||||
public DecoderResult getDecoderResult() {
|
public DecoderResult getDecoderResult() {
|
||||||
return decoderResult;
|
return decoderResult;
|
||||||
}
|
}
|
||||||
|
@ -57,12 +57,24 @@ public class DefaultHttpRequest extends DefaultHttpMessage implements HttpReques
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public HttpMethod getMethod() {
|
public HttpMethod getMethod() {
|
||||||
|
return method();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HttpMethod method() {
|
||||||
return method;
|
return method;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public String getUri() {
|
public String getUri() {
|
||||||
|
return uri();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String uri() {
|
||||||
return uri;
|
return uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,14 +107,14 @@ public class DefaultHttpRequest extends DefaultHttpMessage implements HttpReques
|
|||||||
StringBuilder buf = new StringBuilder();
|
StringBuilder buf = new StringBuilder();
|
||||||
buf.append(StringUtil.simpleClassName(this));
|
buf.append(StringUtil.simpleClassName(this));
|
||||||
buf.append("(decodeResult: ");
|
buf.append("(decodeResult: ");
|
||||||
buf.append(getDecoderResult());
|
buf.append(decoderResult());
|
||||||
buf.append(')');
|
buf.append(')');
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append(getMethod().toString());
|
buf.append(method());
|
||||||
buf.append(' ');
|
buf.append(' ');
|
||||||
buf.append(getUri());
|
buf.append(uri());
|
||||||
buf.append(' ');
|
buf.append(' ');
|
||||||
buf.append(getProtocolVersion().text());
|
buf.append(protocolVersion().text());
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
appendHeaders(buf);
|
appendHeaders(buf);
|
||||||
|
|
||||||
|
@ -50,7 +50,13 @@ public class DefaultHttpResponse extends DefaultHttpMessage implements HttpRespo
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public HttpResponseStatus getStatus() {
|
public HttpResponseStatus getStatus() {
|
||||||
|
return status();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HttpResponseStatus status() {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,12 +80,12 @@ public class DefaultHttpResponse extends DefaultHttpMessage implements HttpRespo
|
|||||||
StringBuilder buf = new StringBuilder();
|
StringBuilder buf = new StringBuilder();
|
||||||
buf.append(StringUtil.simpleClassName(this));
|
buf.append(StringUtil.simpleClassName(this));
|
||||||
buf.append("(decodeResult: ");
|
buf.append("(decodeResult: ");
|
||||||
buf.append(getDecoderResult());
|
buf.append(decoderResult());
|
||||||
buf.append(')');
|
buf.append(')');
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append(getProtocolVersion().text());
|
buf.append(protocolVersion().text());
|
||||||
buf.append(' ');
|
buf.append(' ');
|
||||||
buf.append(getStatus().toString());
|
buf.append(status());
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
appendHeaders(buf);
|
appendHeaders(buf);
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ public final class HttpClientCodec
|
|||||||
protected void encode(
|
protected void encode(
|
||||||
ChannelHandlerContext ctx, Object msg, List<Object> out) throws Exception {
|
ChannelHandlerContext ctx, Object msg, List<Object> out) throws Exception {
|
||||||
if (msg instanceof HttpRequest && !done) {
|
if (msg instanceof HttpRequest && !done) {
|
||||||
queue.offer(((HttpRequest) msg).getMethod());
|
queue.offer(((HttpRequest) msg).method());
|
||||||
}
|
}
|
||||||
|
|
||||||
super.encode(ctx, msg, out);
|
super.encode(ctx, msg, out);
|
||||||
@ -156,7 +156,7 @@ public final class HttpClientCodec
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean isContentAlwaysEmpty(HttpMessage msg) {
|
protected boolean isContentAlwaysEmpty(HttpMessage msg) {
|
||||||
final int statusCode = ((HttpResponse) msg).getStatus().code();
|
final int statusCode = ((HttpResponse) msg).status().code();
|
||||||
if (statusCode == 100) {
|
if (statusCode == 100) {
|
||||||
// 100-continue response should be excluded from paired comparison.
|
// 100-continue response should be excluded from paired comparison.
|
||||||
return true;
|
return true;
|
||||||
|
@ -51,7 +51,7 @@ public abstract class HttpContentDecoder extends MessageToMessageDecoder<HttpObj
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void decode(ChannelHandlerContext ctx, HttpObject msg, List<Object> out) throws Exception {
|
protected void decode(ChannelHandlerContext ctx, HttpObject msg, List<Object> out) throws Exception {
|
||||||
if (msg instanceof HttpResponse && ((HttpResponse) msg).getStatus().code() == 100) {
|
if (msg instanceof HttpResponse && ((HttpResponse) msg).status().code() == 100) {
|
||||||
|
|
||||||
if (!(msg instanceof LastHttpContent)) {
|
if (!(msg instanceof LastHttpContent)) {
|
||||||
continueResponse = true;
|
continueResponse = true;
|
||||||
@ -184,8 +184,8 @@ public abstract class HttpContentDecoder extends MessageToMessageDecoder<HttpObj
|
|||||||
* @param contentEncoding the value of the {@code "Content-Encoding"} header
|
* @param contentEncoding the value of the {@code "Content-Encoding"} header
|
||||||
* @return the expected content encoding of the new content
|
* @return the expected content encoding of the new content
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
protected String getTargetContentEncoding(
|
||||||
protected String getTargetContentEncoding(String contentEncoding) throws Exception {
|
@SuppressWarnings("UnusedParameters") String contentEncoding) throws Exception {
|
||||||
return HttpHeaders.Values.IDENTITY;
|
return HttpHeaders.Values.IDENTITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ public abstract class HttpContentEncoder extends MessageToMessageCodec<HttpReque
|
|||||||
|
|
||||||
final HttpResponse res = (HttpResponse) msg;
|
final HttpResponse res = (HttpResponse) msg;
|
||||||
|
|
||||||
if (res.getStatus().code() == 100) {
|
if (res.status().code() == 100) {
|
||||||
if (isFull) {
|
if (isFull) {
|
||||||
out.add(ReferenceCountUtil.retain(res));
|
out.add(ReferenceCountUtil.retain(res));
|
||||||
} else {
|
} else {
|
||||||
@ -142,7 +142,7 @@ public abstract class HttpContentEncoder extends MessageToMessageCodec<HttpReque
|
|||||||
// Output the rewritten response.
|
// Output the rewritten response.
|
||||||
if (isFull) {
|
if (isFull) {
|
||||||
// Convert full message into unfull one.
|
// Convert full message into unfull one.
|
||||||
HttpResponse newRes = new DefaultHttpResponse(res.getProtocolVersion(), res.getStatus());
|
HttpResponse newRes = new DefaultHttpResponse(res.protocolVersion(), res.status());
|
||||||
newRes.headers().set(res.headers());
|
newRes.headers().set(res.headers());
|
||||||
out.add(newRes);
|
out.add(newRes);
|
||||||
// Fall through to encode the content of the full response.
|
// Fall through to encode the content of the full response.
|
||||||
|
@ -570,7 +570,7 @@ public abstract class HttpHeaders implements Iterable<Map.Entry<String, String>>
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.getProtocolVersion().isKeepAliveDefault()) {
|
if (message.protocolVersion().isKeepAliveDefault()) {
|
||||||
return !equalsIgnoreCase(CLOSE_ENTITY, connection);
|
return !equalsIgnoreCase(CLOSE_ENTITY, connection);
|
||||||
} else {
|
} else {
|
||||||
return equalsIgnoreCase(KEEP_ALIVE_ENTITY, connection);
|
return equalsIgnoreCase(KEEP_ALIVE_ENTITY, connection);
|
||||||
@ -598,7 +598,7 @@ public abstract class HttpHeaders implements Iterable<Map.Entry<String, String>>
|
|||||||
*/
|
*/
|
||||||
public static void setKeepAlive(HttpMessage message, boolean keepAlive) {
|
public static void setKeepAlive(HttpMessage message, boolean keepAlive) {
|
||||||
HttpHeaders h = message.headers();
|
HttpHeaders h = message.headers();
|
||||||
if (message.getProtocolVersion().isKeepAliveDefault()) {
|
if (message.protocolVersion().isKeepAliveDefault()) {
|
||||||
if (keepAlive) {
|
if (keepAlive) {
|
||||||
h.remove(CONNECTION_ENTITY);
|
h.remove(CONNECTION_ENTITY);
|
||||||
} else {
|
} else {
|
||||||
@ -1010,14 +1010,14 @@ public abstract class HttpHeaders implements Iterable<Map.Entry<String, String>>
|
|||||||
HttpHeaders h = message.headers();
|
HttpHeaders h = message.headers();
|
||||||
if (message instanceof HttpRequest) {
|
if (message instanceof HttpRequest) {
|
||||||
HttpRequest req = (HttpRequest) message;
|
HttpRequest req = (HttpRequest) message;
|
||||||
if (HttpMethod.GET.equals(req.getMethod()) &&
|
if (HttpMethod.GET.equals(req.method()) &&
|
||||||
h.contains(SEC_WEBSOCKET_KEY1_ENTITY) &&
|
h.contains(SEC_WEBSOCKET_KEY1_ENTITY) &&
|
||||||
h.contains(SEC_WEBSOCKET_KEY2_ENTITY)) {
|
h.contains(SEC_WEBSOCKET_KEY2_ENTITY)) {
|
||||||
return 8;
|
return 8;
|
||||||
}
|
}
|
||||||
} else if (message instanceof HttpResponse) {
|
} else if (message instanceof HttpResponse) {
|
||||||
HttpResponse res = (HttpResponse) message;
|
HttpResponse res = (HttpResponse) message;
|
||||||
if (res.getStatus().code() == 101 &&
|
if (res.status().code() == 101 &&
|
||||||
h.contains(SEC_WEBSOCKET_ORIGIN_ENTITY) &&
|
h.contains(SEC_WEBSOCKET_ORIGIN_ENTITY) &&
|
||||||
h.contains(SEC_WEBSOCKET_LOCATION_ENTITY)) {
|
h.contains(SEC_WEBSOCKET_LOCATION_ENTITY)) {
|
||||||
return 16;
|
return 16;
|
||||||
@ -1105,7 +1105,7 @@ public abstract class HttpHeaders implements Iterable<Map.Entry<String, String>>
|
|||||||
}
|
}
|
||||||
|
|
||||||
// It works only on HTTP/1.1 or later.
|
// It works only on HTTP/1.1 or later.
|
||||||
if (message.getProtocolVersion().compareTo(HttpVersion.HTTP_1_1) < 0) {
|
if (message.protocolVersion().compareTo(HttpVersion.HTTP_1_1) < 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,12 +27,16 @@ package io.netty.handler.codec.http;
|
|||||||
public interface HttpMessage extends HttpObject {
|
public interface HttpMessage extends HttpObject {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the protocol version of this {@link HttpMessage}
|
* @deprecated Use {@link #protocolVersion()} instead.
|
||||||
*
|
|
||||||
* @return The protocol version
|
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
HttpVersion getProtocolVersion();
|
HttpVersion getProtocolVersion();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the protocol version of this {@link HttpMessage}
|
||||||
|
*/
|
||||||
|
HttpVersion protocolVersion();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the protocol version of this {@link HttpMessage}
|
* Set the protocol version of this {@link HttpMessage}
|
||||||
*/
|
*/
|
||||||
|
@ -18,10 +18,17 @@ package io.netty.handler.codec.http;
|
|||||||
import io.netty.handler.codec.DecoderResult;
|
import io.netty.handler.codec.DecoderResult;
|
||||||
|
|
||||||
public interface HttpObject {
|
public interface HttpObject {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #getDecoderResult()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
DecoderResult getDecoderResult();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the result of decoding this message.
|
* Returns the result of decoding this message.
|
||||||
*/
|
*/
|
||||||
DecoderResult getDecoderResult();
|
DecoderResult decoderResult();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the result of decoding this message. This method is supposed to be invoked by {@link HttpObjectDecoder}.
|
* Updates the result of decoding this message. This method is supposed to be invoked by {@link HttpObjectDecoder}.
|
||||||
|
@ -136,7 +136,7 @@ public class HttpObjectAggregator extends MessageToMessageDecoder<HttpObject> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m.getDecoderResult().isSuccess()) {
|
if (!m.decoderResult().isSuccess()) {
|
||||||
removeTransferEncodingChunked(m);
|
removeTransferEncodingChunked(m);
|
||||||
out.add(toFullMessage(m));
|
out.add(toFullMessage(m));
|
||||||
this.currentMessage = null;
|
this.currentMessage = null;
|
||||||
@ -144,12 +144,12 @@ public class HttpObjectAggregator extends MessageToMessageDecoder<HttpObject> {
|
|||||||
}
|
}
|
||||||
if (msg instanceof HttpRequest) {
|
if (msg instanceof HttpRequest) {
|
||||||
HttpRequest header = (HttpRequest) msg;
|
HttpRequest header = (HttpRequest) msg;
|
||||||
this.currentMessage = currentMessage = new DefaultFullHttpRequest(header.getProtocolVersion(),
|
this.currentMessage = currentMessage = new DefaultFullHttpRequest(header.protocolVersion(),
|
||||||
header.getMethod(), header.getUri(), Unpooled.compositeBuffer(maxCumulationBufferComponents));
|
header.method(), header.uri(), Unpooled.compositeBuffer(maxCumulationBufferComponents));
|
||||||
} else if (msg instanceof HttpResponse) {
|
} else if (msg instanceof HttpResponse) {
|
||||||
HttpResponse header = (HttpResponse) msg;
|
HttpResponse header = (HttpResponse) msg;
|
||||||
this.currentMessage = currentMessage = new DefaultFullHttpResponse(
|
this.currentMessage = currentMessage = new DefaultFullHttpResponse(
|
||||||
header.getProtocolVersion(), header.getStatus(),
|
header.protocolVersion(), header.status(),
|
||||||
Unpooled.compositeBuffer(maxCumulationBufferComponents));
|
Unpooled.compositeBuffer(maxCumulationBufferComponents));
|
||||||
} else {
|
} else {
|
||||||
throw new Error();
|
throw new Error();
|
||||||
@ -193,9 +193,9 @@ public class HttpObjectAggregator extends MessageToMessageDecoder<HttpObject> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final boolean last;
|
final boolean last;
|
||||||
if (!chunk.getDecoderResult().isSuccess()) {
|
if (!chunk.decoderResult().isSuccess()) {
|
||||||
currentMessage.setDecoderResult(
|
currentMessage.setDecoderResult(
|
||||||
DecoderResult.failure(chunk.getDecoderResult().cause()));
|
DecoderResult.failure(chunk.decoderResult().cause()));
|
||||||
last = true;
|
last = true;
|
||||||
} else {
|
} else {
|
||||||
last = chunk instanceof LastHttpContent;
|
last = chunk instanceof LastHttpContent;
|
||||||
@ -259,11 +259,11 @@ public class HttpObjectAggregator extends MessageToMessageDecoder<HttpObject> {
|
|||||||
if (msg instanceof HttpRequest) {
|
if (msg instanceof HttpRequest) {
|
||||||
HttpRequest req = (HttpRequest) msg;
|
HttpRequest req = (HttpRequest) msg;
|
||||||
fullMsg = new DefaultFullHttpRequest(
|
fullMsg = new DefaultFullHttpRequest(
|
||||||
req.getProtocolVersion(), req.getMethod(), req.getUri(), Unpooled.EMPTY_BUFFER, false);
|
req.protocolVersion(), req.method(), req.uri(), Unpooled.EMPTY_BUFFER, false);
|
||||||
} else if (msg instanceof HttpResponse) {
|
} else if (msg instanceof HttpResponse) {
|
||||||
HttpResponse res = (HttpResponse) msg;
|
HttpResponse res = (HttpResponse) msg;
|
||||||
fullMsg = new DefaultFullHttpResponse(
|
fullMsg = new DefaultFullHttpResponse(
|
||||||
res.getProtocolVersion(), res.getStatus(), Unpooled.EMPTY_BUFFER, false);
|
res.protocolVersion(), res.status(), Unpooled.EMPTY_BUFFER, false);
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
|
@ -404,7 +404,7 @@ public abstract class HttpObjectDecoder extends ReplayingDecoder<HttpObjectDecod
|
|||||||
protected boolean isContentAlwaysEmpty(HttpMessage msg) {
|
protected boolean isContentAlwaysEmpty(HttpMessage msg) {
|
||||||
if (msg instanceof HttpResponse) {
|
if (msg instanceof HttpResponse) {
|
||||||
HttpResponse res = (HttpResponse) msg;
|
HttpResponse res = (HttpResponse) msg;
|
||||||
int code = res.getStatus().code();
|
int code = res.status().code();
|
||||||
|
|
||||||
// Correctly handle return codes of 1xx.
|
// Correctly handle return codes of 1xx.
|
||||||
//
|
//
|
||||||
@ -430,7 +430,7 @@ public abstract class HttpObjectDecoder extends ReplayingDecoder<HttpObjectDecod
|
|||||||
contentLength = Long.MIN_VALUE;
|
contentLength = Long.MIN_VALUE;
|
||||||
if (!isDecodingRequest()) {
|
if (!isDecodingRequest()) {
|
||||||
HttpResponse res = (HttpResponse) message;
|
HttpResponse res = (HttpResponse) message;
|
||||||
if (res != null && res.getStatus().code() == 101) {
|
if (res != null && res.status().code() == 101) {
|
||||||
checkpoint(State.UPGRADED);
|
checkpoint(State.UPGRADED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -33,24 +33,36 @@ package io.netty.handler.codec.http;
|
|||||||
*/
|
*/
|
||||||
public interface HttpRequest extends HttpMessage {
|
public interface HttpRequest extends HttpMessage {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #method()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
HttpMethod getMethod();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the {@link HttpMethod} of this {@link HttpRequest}.
|
* Returns the {@link HttpMethod} of this {@link HttpRequest}.
|
||||||
*
|
*
|
||||||
* @return The {@link HttpMethod} of this {@link HttpRequest}
|
* @return The {@link HttpMethod} of this {@link HttpRequest}
|
||||||
*/
|
*/
|
||||||
HttpMethod getMethod();
|
HttpMethod method();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the {@link HttpMethod} of this {@link HttpRequest}.
|
* Set the {@link HttpMethod} of this {@link HttpRequest}.
|
||||||
*/
|
*/
|
||||||
HttpRequest setMethod(HttpMethod method);
|
HttpRequest setMethod(HttpMethod method);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #uri()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
String getUri();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the requested URI (or alternatively, path)
|
* Returns the requested URI (or alternatively, path)
|
||||||
*
|
*
|
||||||
* @return The URI being requested
|
* @return The URI being requested
|
||||||
*/
|
*/
|
||||||
String getUri();
|
String uri();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the requested URI (or alternatively, path)
|
* Set the requested URI (or alternatively, path)
|
||||||
|
@ -35,12 +35,12 @@ public class HttpRequestEncoder extends HttpObjectEncoder<HttpRequest> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void encodeInitialLine(ByteBuf buf, HttpRequest request) throws Exception {
|
protected void encodeInitialLine(ByteBuf buf, HttpRequest request) throws Exception {
|
||||||
request.getMethod().encode(buf);
|
request.method().encode(buf);
|
||||||
buf.writeByte(SP);
|
buf.writeByte(SP);
|
||||||
|
|
||||||
// Add / as absolute path if no is present.
|
// Add / as absolute path if no is present.
|
||||||
// See http://tools.ietf.org/html/rfc2616#section-5.1.2
|
// See http://tools.ietf.org/html/rfc2616#section-5.1.2
|
||||||
String uri = request.getUri();
|
String uri = request.uri();
|
||||||
|
|
||||||
if (uri.length() == 0) {
|
if (uri.length() == 0) {
|
||||||
uri += SLASH;
|
uri += SLASH;
|
||||||
@ -57,7 +57,7 @@ public class HttpRequestEncoder extends HttpObjectEncoder<HttpRequest> {
|
|||||||
buf.writeBytes(uri.getBytes(CharsetUtil.UTF_8));
|
buf.writeBytes(uri.getBytes(CharsetUtil.UTF_8));
|
||||||
|
|
||||||
buf.writeByte(SP);
|
buf.writeByte(SP);
|
||||||
request.getProtocolVersion().encode(buf);
|
request.protocolVersion().encode(buf);
|
||||||
buf.writeBytes(CRLF);
|
buf.writeBytes(CRLF);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,12 +31,18 @@ package io.netty.handler.codec.http;
|
|||||||
*/
|
*/
|
||||||
public interface HttpResponse extends HttpMessage {
|
public interface HttpResponse extends HttpMessage {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #status()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
HttpResponseStatus getStatus();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the status of this {@link HttpResponse}.
|
* Returns the status of this {@link HttpResponse}.
|
||||||
*
|
*
|
||||||
* @return The {@link HttpResponseStatus} of this {@link HttpResponse}
|
* @return The {@link HttpResponseStatus} of this {@link HttpResponse}
|
||||||
*/
|
*/
|
||||||
HttpResponseStatus getStatus();
|
HttpResponseStatus status();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the status of this {@link HttpResponse}.
|
* Set the status of this {@link HttpResponse}.
|
||||||
|
@ -33,9 +33,9 @@ public class HttpResponseEncoder extends HttpObjectEncoder<HttpResponse> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void encodeInitialLine(ByteBuf buf, HttpResponse response) throws Exception {
|
protected void encodeInitialLine(ByteBuf buf, HttpResponse response) throws Exception {
|
||||||
response.getProtocolVersion().encode(buf);
|
response.protocolVersion().encode(buf);
|
||||||
buf.writeByte(SP);
|
buf.writeByte(SP);
|
||||||
response.getStatus().encode(buf);
|
response.status().encode(buf);
|
||||||
buf.writeBytes(CRLF);
|
buf.writeBytes(CRLF);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,12 @@ public interface LastHttpContent extends HttpContent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
public DecoderResult decoderResult() {
|
||||||
|
return DecoderResult.SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Deprecated
|
||||||
public DecoderResult getDecoderResult() {
|
public DecoderResult getDecoderResult() {
|
||||||
return DecoderResult.SUCCESS;
|
return DecoderResult.SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -301,9 +301,7 @@ public class QueryStringDecoder {
|
|||||||
* @throws IllegalArgumentException if the string contains a malformed
|
* @throws IllegalArgumentException if the string contains a malformed
|
||||||
* escape sequence.
|
* escape sequence.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("fallthrough")
|
public static String decodeComponent(final String s, final Charset charset) {
|
||||||
public static String decodeComponent(final String s,
|
|
||||||
final Charset charset) {
|
|
||||||
if (s == null) {
|
if (s == null) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@ -114,7 +114,7 @@ public class QueryStringEncoder {
|
|||||||
// TODO: Optimize me.
|
// TODO: Optimize me.
|
||||||
try {
|
try {
|
||||||
return URLEncoder.encode(s, charset.name()).replace("+", "%20");
|
return URLEncoder.encode(s, charset.name()).replace("+", "%20");
|
||||||
} catch (UnsupportedEncodingException e) {
|
} catch (UnsupportedEncodingException ignored) {
|
||||||
throw new UnsupportedCharsetException(charset.name());
|
throw new UnsupportedCharsetException(charset.name());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,32 +49,32 @@ public final class ServerCookieEncoder {
|
|||||||
|
|
||||||
StringBuilder buf = stringBuilder();
|
StringBuilder buf = stringBuilder();
|
||||||
|
|
||||||
add(buf, cookie.getName(), cookie.getValue());
|
add(buf, cookie.name(), cookie.value());
|
||||||
|
|
||||||
if (cookie.getMaxAge() != Long.MIN_VALUE) {
|
if (cookie.maxAge() != Long.MIN_VALUE) {
|
||||||
if (cookie.getVersion() == 0) {
|
if (cookie.version() == 0) {
|
||||||
addUnquoted(buf, CookieHeaderNames.EXPIRES,
|
addUnquoted(buf, CookieHeaderNames.EXPIRES,
|
||||||
HttpHeaderDateFormat.get().format(
|
HttpHeaderDateFormat.get().format(
|
||||||
new Date(System.currentTimeMillis() +
|
new Date(System.currentTimeMillis() +
|
||||||
cookie.getMaxAge() * 1000L)));
|
cookie.maxAge() * 1000L)));
|
||||||
} else {
|
} else {
|
||||||
add(buf, CookieHeaderNames.MAX_AGE, cookie.getMaxAge());
|
add(buf, CookieHeaderNames.MAX_AGE, cookie.maxAge());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cookie.getPath() != null) {
|
if (cookie.path() != null) {
|
||||||
if (cookie.getVersion() > 0) {
|
if (cookie.version() > 0) {
|
||||||
add(buf, CookieHeaderNames.PATH, cookie.getPath());
|
add(buf, CookieHeaderNames.PATH, cookie.path());
|
||||||
} else {
|
} else {
|
||||||
addUnquoted(buf, CookieHeaderNames.PATH, cookie.getPath());
|
addUnquoted(buf, CookieHeaderNames.PATH, cookie.path());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cookie.getDomain() != null) {
|
if (cookie.domain() != null) {
|
||||||
if (cookie.getVersion() > 0) {
|
if (cookie.version() > 0) {
|
||||||
add(buf, CookieHeaderNames.DOMAIN, cookie.getDomain());
|
add(buf, CookieHeaderNames.DOMAIN, cookie.domain());
|
||||||
} else {
|
} else {
|
||||||
addUnquoted(buf, CookieHeaderNames.DOMAIN, cookie.getDomain());
|
addUnquoted(buf, CookieHeaderNames.DOMAIN, cookie.domain());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (cookie.isSecure()) {
|
if (cookie.isSecure()) {
|
||||||
@ -87,22 +87,22 @@ public final class ServerCookieEncoder {
|
|||||||
buf.append((char) HttpConstants.SEMICOLON);
|
buf.append((char) HttpConstants.SEMICOLON);
|
||||||
buf.append((char) HttpConstants.SP);
|
buf.append((char) HttpConstants.SP);
|
||||||
}
|
}
|
||||||
if (cookie.getVersion() >= 1) {
|
if (cookie.version() >= 1) {
|
||||||
if (cookie.getComment() != null) {
|
if (cookie.comment() != null) {
|
||||||
add(buf, CookieHeaderNames.COMMENT, cookie.getComment());
|
add(buf, CookieHeaderNames.COMMENT, cookie.comment());
|
||||||
}
|
}
|
||||||
|
|
||||||
add(buf, CookieHeaderNames.VERSION, 1);
|
add(buf, CookieHeaderNames.VERSION, 1);
|
||||||
|
|
||||||
if (cookie.getCommentUrl() != null) {
|
if (cookie.commentUrl() != null) {
|
||||||
addQuoted(buf, CookieHeaderNames.COMMENTURL, cookie.getCommentUrl());
|
addQuoted(buf, CookieHeaderNames.COMMENTURL, cookie.commentUrl());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cookie.getPorts().isEmpty()) {
|
if (!cookie.ports().isEmpty()) {
|
||||||
buf.append(CookieHeaderNames.PORT);
|
buf.append(CookieHeaderNames.PORT);
|
||||||
buf.append((char) HttpConstants.EQUALS);
|
buf.append((char) HttpConstants.EQUALS);
|
||||||
buf.append((char) HttpConstants.DOUBLE_QUOTE);
|
buf.append((char) HttpConstants.DOUBLE_QUOTE);
|
||||||
for (int port: cookie.getPorts()) {
|
for (int port: cookie.ports()) {
|
||||||
buf.append(port);
|
buf.append(port);
|
||||||
buf.append((char) HttpConstants.COMMA);
|
buf.append((char) HttpConstants.COMMA);
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ public class CorsHandler extends ChannelDuplexHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void handlePreflight(final ChannelHandlerContext ctx, final HttpRequest request) {
|
private void handlePreflight(final ChannelHandlerContext ctx, final HttpRequest request) {
|
||||||
final HttpResponse response = new DefaultFullHttpResponse(request.getProtocolVersion(), OK);
|
final HttpResponse response = new DefaultFullHttpResponse(request.protocolVersion(), OK);
|
||||||
if (setOrigin(response)) {
|
if (setOrigin(response)) {
|
||||||
setAllowMethods(response);
|
setAllowMethods(response);
|
||||||
setAllowHeaders(response);
|
setAllowHeaders(response);
|
||||||
@ -153,7 +153,7 @@ public class CorsHandler extends ChannelDuplexHandler {
|
|||||||
|
|
||||||
private static boolean isPreflightRequest(final HttpRequest request) {
|
private static boolean isPreflightRequest(final HttpRequest request) {
|
||||||
final HttpHeaders headers = request.headers();
|
final HttpHeaders headers = request.headers();
|
||||||
return request.getMethod().equals(OPTIONS) &&
|
return request.method().equals(OPTIONS) &&
|
||||||
headers.contains(ORIGIN) &&
|
headers.contains(ORIGIN) &&
|
||||||
headers.contains(ACCESS_CONTROL_REQUEST_METHOD);
|
headers.contains(ACCESS_CONTROL_REQUEST_METHOD);
|
||||||
}
|
}
|
||||||
@ -197,7 +197,7 @@ public class CorsHandler extends ChannelDuplexHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void forbidden(final ChannelHandlerContext ctx, final HttpRequest request) {
|
private static void forbidden(final ChannelHandlerContext ctx, final HttpRequest request) {
|
||||||
ctx.writeAndFlush(new DefaultFullHttpResponse(request.getProtocolVersion(), FORBIDDEN))
|
ctx.writeAndFlush(new DefaultFullHttpResponse(request.protocolVersion(), FORBIDDEN))
|
||||||
.addListener(ChannelFutureListener.CLOSE);
|
.addListener(ChannelFutureListener.CLOSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,6 @@ final class CaseIgnoringComparator implements Comparator<String>, Serializable {
|
|||||||
return o1.compareToIgnoreCase(o2);
|
return o1.compareToIgnoreCase(o2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("MethodMayBeStatic")
|
|
||||||
private Object readResolve() {
|
private Object readResolve() {
|
||||||
return INSTANCE;
|
return INSTANCE;
|
||||||
}
|
}
|
||||||
|
@ -188,7 +188,7 @@ public class HttpPostRequestEncoder implements ChunkedInput<HttpContent> {
|
|||||||
if (charset == null) {
|
if (charset == null) {
|
||||||
throw new NullPointerException("charset");
|
throw new NullPointerException("charset");
|
||||||
}
|
}
|
||||||
if (request.getMethod() != HttpMethod.POST) {
|
if (request.method() != HttpMethod.POST) {
|
||||||
throw new ErrorDataEncoderException("Cannot create a Encoder if not a POST");
|
throw new ErrorDataEncoderException("Cannot create a Encoder if not a POST");
|
||||||
}
|
}
|
||||||
this.request = request;
|
this.request = request;
|
||||||
@ -1116,17 +1116,32 @@ public class HttpPostRequestEncoder implements ChunkedInput<HttpContent> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HttpMethod getMethod() {
|
public HttpMethod getMethod() {
|
||||||
return request.getMethod();
|
return request.method();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HttpMethod method() {
|
||||||
|
return request.method();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUri() {
|
public String getUri() {
|
||||||
return request.getUri();
|
return request.uri();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String uri() {
|
||||||
|
return request.uri();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HttpVersion getProtocolVersion() {
|
public HttpVersion getProtocolVersion() {
|
||||||
return request.getProtocolVersion();
|
return request.protocolVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HttpVersion protocolVersion() {
|
||||||
|
return request.protocolVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1135,8 +1150,14 @@ public class HttpPostRequestEncoder implements ChunkedInput<HttpContent> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
public DecoderResult decoderResult() {
|
||||||
|
return request.decoderResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Deprecated
|
||||||
public DecoderResult getDecoderResult() {
|
public DecoderResult getDecoderResult() {
|
||||||
return request.getDecoderResult();
|
return request.decoderResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -331,7 +331,7 @@ public class WebSocket08FrameDecoder extends ReplayingDecoder<WebSocket08FrameDe
|
|||||||
|
|
||||||
// Check text for UTF8 correctness
|
// Check text for UTF8 correctness
|
||||||
if (frameOpcode == OPCODE_TEXT ||
|
if (frameOpcode == OPCODE_TEXT ||
|
||||||
(utf8Validator != null && utf8Validator.isChecking())) {
|
utf8Validator != null && utf8Validator.isChecking()) {
|
||||||
// Check UTF-8 correctness for this payload
|
// Check UTF-8 correctness for this payload
|
||||||
checkUTF8String(ctx, framePayload);
|
checkUTF8String(ctx, framePayload);
|
||||||
|
|
||||||
|
@ -191,8 +191,8 @@ public class WebSocketClientHandshaker00 extends WebSocketClientHandshaker {
|
|||||||
protected void verify(FullHttpResponse response) {
|
protected void verify(FullHttpResponse response) {
|
||||||
final HttpResponseStatus status = new HttpResponseStatus(101, "WebSocket Protocol Handshake");
|
final HttpResponseStatus status = new HttpResponseStatus(101, "WebSocket Protocol Handshake");
|
||||||
|
|
||||||
if (!response.getStatus().equals(status)) {
|
if (!response.status().equals(status)) {
|
||||||
throw new WebSocketHandshakeException("Invalid handshake response getStatus: " + response.getStatus());
|
throw new WebSocketHandshakeException("Invalid handshake response getStatus: " + response.status());
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpHeaders headers = response.headers();
|
HttpHeaders headers = response.headers();
|
||||||
|
@ -168,8 +168,8 @@ public class WebSocketClientHandshaker07 extends WebSocketClientHandshaker {
|
|||||||
final HttpResponseStatus status = HttpResponseStatus.SWITCHING_PROTOCOLS;
|
final HttpResponseStatus status = HttpResponseStatus.SWITCHING_PROTOCOLS;
|
||||||
final HttpHeaders headers = response.headers();
|
final HttpHeaders headers = response.headers();
|
||||||
|
|
||||||
if (!response.getStatus().equals(status)) {
|
if (!response.status().equals(status)) {
|
||||||
throw new WebSocketHandshakeException("Invalid handshake response getStatus: " + response.getStatus());
|
throw new WebSocketHandshakeException("Invalid handshake response getStatus: " + response.status());
|
||||||
}
|
}
|
||||||
|
|
||||||
String upgrade = headers.get(Names.UPGRADE);
|
String upgrade = headers.get(Names.UPGRADE);
|
||||||
|
@ -168,8 +168,8 @@ public class WebSocketClientHandshaker08 extends WebSocketClientHandshaker {
|
|||||||
final HttpResponseStatus status = HttpResponseStatus.SWITCHING_PROTOCOLS;
|
final HttpResponseStatus status = HttpResponseStatus.SWITCHING_PROTOCOLS;
|
||||||
final HttpHeaders headers = response.headers();
|
final HttpHeaders headers = response.headers();
|
||||||
|
|
||||||
if (!response.getStatus().equals(status)) {
|
if (!response.status().equals(status)) {
|
||||||
throw new WebSocketHandshakeException("Invalid handshake response getStatus: " + response.getStatus());
|
throw new WebSocketHandshakeException("Invalid handshake response getStatus: " + response.status());
|
||||||
}
|
}
|
||||||
|
|
||||||
String upgrade = headers.get(Names.UPGRADE);
|
String upgrade = headers.get(Names.UPGRADE);
|
||||||
|
@ -178,8 +178,8 @@ public class WebSocketClientHandshaker13 extends WebSocketClientHandshaker {
|
|||||||
final HttpResponseStatus status = HttpResponseStatus.SWITCHING_PROTOCOLS;
|
final HttpResponseStatus status = HttpResponseStatus.SWITCHING_PROTOCOLS;
|
||||||
final HttpHeaders headers = response.headers();
|
final HttpHeaders headers = response.headers();
|
||||||
|
|
||||||
if (!response.getStatus().equals(status)) {
|
if (!response.status().equals(status)) {
|
||||||
throw new WebSocketHandshakeException("Invalid handshake response getStatus: " + response.getStatus());
|
throw new WebSocketHandshakeException("Invalid handshake response getStatus: " + response.status());
|
||||||
}
|
}
|
||||||
|
|
||||||
String upgrade = headers.get(Names.UPGRADE);
|
String upgrade = headers.get(Names.UPGRADE);
|
||||||
|
@ -91,6 +91,6 @@ public final class WebSocketClientHandshakerFactory {
|
|||||||
webSocketURL, V00, subprotocol, customHeaders, maxFramePayloadLength);
|
webSocketURL, V00, subprotocol, customHeaders, maxFramePayloadLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new WebSocketHandshakeException("Protocol version " + version.toString() + " not supported.");
|
throw new WebSocketHandshakeException("Protocol version " + version + " not supported.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ import io.netty.handler.codec.http.FullHttpResponse;
|
|||||||
class WebSocketClientProtocolHandshakeHandler extends ChannelInboundHandlerAdapter {
|
class WebSocketClientProtocolHandshakeHandler extends ChannelInboundHandlerAdapter {
|
||||||
private final WebSocketClientHandshaker handshaker;
|
private final WebSocketClientHandshaker handshaker;
|
||||||
|
|
||||||
public WebSocketClientProtocolHandshakeHandler(WebSocketClientHandshaker handshaker) {
|
WebSocketClientProtocolHandshakeHandler(WebSocketClientHandshaker handshaker) {
|
||||||
this.handshaker = handshaker;
|
this.handshaker = handshaker;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ public class WebSocketServerProtocolHandler extends WebSocketProtocolHandler {
|
|||||||
this.websocketPath = websocketPath;
|
this.websocketPath = websocketPath;
|
||||||
this.subprotocols = subprotocols;
|
this.subprotocols = subprotocols;
|
||||||
this.allowExtensions = allowExtensions;
|
this.allowExtensions = allowExtensions;
|
||||||
this.maxFramePayloadLength = maxFrameSize;
|
maxFramePayloadLength = maxFrameSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -48,14 +48,14 @@ class WebSocketServerProtocolHandshakeHandler
|
|||||||
this.websocketPath = websocketPath;
|
this.websocketPath = websocketPath;
|
||||||
this.subprotocols = subprotocols;
|
this.subprotocols = subprotocols;
|
||||||
this.allowExtensions = allowExtensions;
|
this.allowExtensions = allowExtensions;
|
||||||
this.maxFramePayloadSize = maxFrameSize;
|
maxFramePayloadSize = maxFrameSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void channelRead(final ChannelHandlerContext ctx, Object msg) throws Exception {
|
public void channelRead(final ChannelHandlerContext ctx, Object msg) throws Exception {
|
||||||
FullHttpRequest req = (FullHttpRequest) msg;
|
FullHttpRequest req = (FullHttpRequest) msg;
|
||||||
try {
|
try {
|
||||||
if (req.getMethod() != GET) {
|
if (req.method() != GET) {
|
||||||
sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, FORBIDDEN));
|
sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, FORBIDDEN));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -90,7 +90,7 @@ class WebSocketServerProtocolHandshakeHandler
|
|||||||
|
|
||||||
private static void sendHttpResponse(ChannelHandlerContext ctx, HttpRequest req, HttpResponse res) {
|
private static void sendHttpResponse(ChannelHandlerContext ctx, HttpRequest req, HttpResponse res) {
|
||||||
ChannelFuture f = ctx.channel().writeAndFlush(res);
|
ChannelFuture f = ctx.channel().writeAndFlush(res);
|
||||||
if (!isKeepAlive(req) || res.getStatus().code() != 200) {
|
if (!isKeepAlive(req) || res.status().code() != 200) {
|
||||||
f.addListener(ChannelFutureListener.CLOSE);
|
f.addListener(ChannelFutureListener.CLOSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,11 +38,11 @@ public class RtspRequestEncoder extends RtspObjectEncoder<HttpRequest> {
|
|||||||
@Override
|
@Override
|
||||||
protected void encodeInitialLine(ByteBuf buf, HttpRequest request)
|
protected void encodeInitialLine(ByteBuf buf, HttpRequest request)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
encodeAscii(request.getMethod().toString(), buf);
|
encodeAscii(request.method().toString(), buf);
|
||||||
buf.writeByte(SP);
|
buf.writeByte(SP);
|
||||||
buf.writeBytes(request.getUri().getBytes(CharsetUtil.UTF_8));
|
buf.writeBytes(request.uri().getBytes(CharsetUtil.UTF_8));
|
||||||
buf.writeByte(SP);
|
buf.writeByte(SP);
|
||||||
encodeAscii(request.getProtocolVersion().toString(), buf);
|
encodeAscii(request.protocolVersion().toString(), buf);
|
||||||
buf.writeBytes(CRLF);
|
buf.writeBytes(CRLF);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,11 +38,11 @@ public class RtspResponseEncoder extends RtspObjectEncoder<HttpResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected void encodeInitialLine(ByteBuf buf, HttpResponse response)
|
protected void encodeInitialLine(ByteBuf buf, HttpResponse response)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
encodeAscii(response.getProtocolVersion().toString(), buf);
|
encodeAscii(response.protocolVersion().toString(), buf);
|
||||||
buf.writeByte(SP);
|
buf.writeByte(SP);
|
||||||
buf.writeBytes(String.valueOf(response.getStatus().code()).getBytes(CharsetUtil.US_ASCII));
|
buf.writeBytes(String.valueOf(response.status().code()).getBytes(CharsetUtil.US_ASCII));
|
||||||
buf.writeByte(SP);
|
buf.writeByte(SP);
|
||||||
encodeAscii(String.valueOf(response.getStatus().reasonPhrase()), buf);
|
encodeAscii(String.valueOf(response.status().reasonPhrase()), buf);
|
||||||
buf.writeBytes(CRLF);
|
buf.writeBytes(CRLF);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,14 +80,14 @@ public class DefaultSpdyDataFrame extends DefaultSpdyStreamFrame implements Spdy
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SpdyDataFrame copy() {
|
public SpdyDataFrame copy() {
|
||||||
SpdyDataFrame frame = new DefaultSpdyDataFrame(getStreamId(), content().copy());
|
SpdyDataFrame frame = new DefaultSpdyDataFrame(streamId(), content().copy());
|
||||||
frame.setLast(isLast());
|
frame.setLast(isLast());
|
||||||
return frame;
|
return frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SpdyDataFrame duplicate() {
|
public SpdyDataFrame duplicate() {
|
||||||
SpdyDataFrame frame = new DefaultSpdyDataFrame(getStreamId(), content().duplicate());
|
SpdyDataFrame frame = new DefaultSpdyDataFrame(streamId(), content().duplicate());
|
||||||
frame.setLast(isLast());
|
frame.setLast(isLast());
|
||||||
return frame;
|
return frame;
|
||||||
}
|
}
|
||||||
@ -128,7 +128,7 @@ public class DefaultSpdyDataFrame extends DefaultSpdyStreamFrame implements Spdy
|
|||||||
buf.append(')');
|
buf.append(')');
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Stream-ID = ");
|
buf.append("--> Stream-ID = ");
|
||||||
buf.append(getStreamId());
|
buf.append(streamId());
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Size = ");
|
buf.append("--> Size = ");
|
||||||
if (refCnt() == 0) {
|
if (refCnt() == 0) {
|
||||||
|
@ -56,7 +56,13 @@ public class DefaultSpdyGoAwayFrame implements SpdyGoAwayFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public int getLastGoodStreamId() {
|
public int getLastGoodStreamId() {
|
||||||
|
return lastGoodStreamId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int lastGoodStreamId() {
|
||||||
return lastGoodStreamId;
|
return lastGoodStreamId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,7 +77,13 @@ public class DefaultSpdyGoAwayFrame implements SpdyGoAwayFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public SpdySessionStatus getStatus() {
|
public SpdySessionStatus getStatus() {
|
||||||
|
return status();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SpdySessionStatus status() {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,10 +99,10 @@ public class DefaultSpdyGoAwayFrame implements SpdyGoAwayFrame {
|
|||||||
buf.append(StringUtil.simpleClassName(this));
|
buf.append(StringUtil.simpleClassName(this));
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Last-good-stream-ID = ");
|
buf.append("--> Last-good-stream-ID = ");
|
||||||
buf.append(getLastGoodStreamId());
|
buf.append(lastGoodStreamId());
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Status: ");
|
buf.append("--> Status: ");
|
||||||
buf.append(getStatus().toString());
|
buf.append(status());
|
||||||
return buf.toString();
|
return buf.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,7 @@ public class DefaultSpdyHeadersFrame extends DefaultSpdyStreamFrame
|
|||||||
buf.append(')');
|
buf.append(')');
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Stream-ID = ");
|
buf.append("--> Stream-ID = ");
|
||||||
buf.append(getStreamId());
|
buf.append(streamId());
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Headers:");
|
buf.append("--> Headers:");
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
|
@ -34,7 +34,13 @@ public class DefaultSpdyPingFrame implements SpdyPingFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public int getId() {
|
public int getId() {
|
||||||
|
return id();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int id() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,7 +56,7 @@ public class DefaultSpdyPingFrame implements SpdyPingFrame {
|
|||||||
buf.append(StringUtil.simpleClassName(this));
|
buf.append(StringUtil.simpleClassName(this));
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> ID = ");
|
buf.append("--> ID = ");
|
||||||
buf.append(getId());
|
buf.append(id());
|
||||||
return buf.toString();
|
return buf.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,13 @@ public class DefaultSpdyRstStreamFrame extends DefaultSpdyStreamFrame
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public SpdyStreamStatus getStatus() {
|
public SpdyStreamStatus getStatus() {
|
||||||
|
return status();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SpdyStreamStatus status() {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,10 +81,10 @@ public class DefaultSpdyRstStreamFrame extends DefaultSpdyStreamFrame
|
|||||||
buf.append(StringUtil.simpleClassName(this));
|
buf.append(StringUtil.simpleClassName(this));
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Stream-ID = ");
|
buf.append("--> Stream-ID = ");
|
||||||
buf.append(getStreamId());
|
buf.append(streamId());
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Status: ");
|
buf.append("--> Status: ");
|
||||||
buf.append(getStatus().toString());
|
buf.append(status());
|
||||||
return buf.toString();
|
return buf.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,13 @@ public class DefaultSpdySettingsFrame implements SpdySettingsFrame {
|
|||||||
private final Map<Integer, Setting> settingsMap = new TreeMap<Integer, Setting>();
|
private final Map<Integer, Setting> settingsMap = new TreeMap<Integer, Setting>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public Set<Integer> getIds() {
|
public Set<Integer> getIds() {
|
||||||
|
return ids();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<Integer> ids() {
|
||||||
return settingsMap.keySet();
|
return settingsMap.keySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,7 +144,7 @@ public class DefaultSpdySettingsFrame implements SpdySettingsFrame {
|
|||||||
for (Map.Entry<Integer, Setting> e: getSettings()) {
|
for (Map.Entry<Integer, Setting> e: getSettings()) {
|
||||||
Setting setting = e.getValue();
|
Setting setting = e.getValue();
|
||||||
buf.append("--> ");
|
buf.append("--> ");
|
||||||
buf.append(e.getKey().toString());
|
buf.append(e.getKey());
|
||||||
buf.append(':');
|
buf.append(':');
|
||||||
buf.append(setting.getValue());
|
buf.append(setting.getValue());
|
||||||
buf.append(" (persist value: ");
|
buf.append(" (persist value: ");
|
||||||
|
@ -33,7 +33,13 @@ public abstract class DefaultSpdyStreamFrame implements SpdyStreamFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public int getStreamId() {
|
public int getStreamId() {
|
||||||
|
return streamId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int streamId() {
|
||||||
return streamId;
|
return streamId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ public class DefaultSpdySynReplyFrame extends DefaultSpdyHeadersFrame
|
|||||||
buf.append(')');
|
buf.append(')');
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Stream-ID = ");
|
buf.append("--> Stream-ID = ");
|
||||||
buf.append(getStreamId());
|
buf.append(streamId());
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Headers:");
|
buf.append("--> Headers:");
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
|
@ -23,7 +23,7 @@ import io.netty.util.internal.StringUtil;
|
|||||||
public class DefaultSpdySynStreamFrame extends DefaultSpdyHeadersFrame
|
public class DefaultSpdySynStreamFrame extends DefaultSpdyHeadersFrame
|
||||||
implements SpdySynStreamFrame {
|
implements SpdySynStreamFrame {
|
||||||
|
|
||||||
private int associatedToStreamId;
|
private int associatedStreamId;
|
||||||
private byte priority;
|
private byte priority;
|
||||||
private boolean unidirectional;
|
private boolean unidirectional;
|
||||||
|
|
||||||
@ -31,13 +31,12 @@ public class DefaultSpdySynStreamFrame extends DefaultSpdyHeadersFrame
|
|||||||
* Creates a new instance.
|
* Creates a new instance.
|
||||||
*
|
*
|
||||||
* @param streamId the Stream-ID of this frame
|
* @param streamId the Stream-ID of this frame
|
||||||
* @param associatedToStreamId the Associated-To-Stream-ID of this frame
|
* @param associatedStreamId the Associated-To-Stream-ID of this frame
|
||||||
* @param priority the priority of the stream
|
* @param priority the priority of the stream
|
||||||
*/
|
*/
|
||||||
public DefaultSpdySynStreamFrame(
|
public DefaultSpdySynStreamFrame(int streamId, int associatedStreamId, byte priority) {
|
||||||
int streamId, int associatedToStreamId, byte priority) {
|
|
||||||
super(streamId);
|
super(streamId);
|
||||||
setAssociatedToStreamId(associatedToStreamId);
|
setAssociatedStreamId(associatedStreamId);
|
||||||
setPriority(priority);
|
setPriority(priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,23 +59,41 @@ public class DefaultSpdySynStreamFrame extends DefaultSpdyHeadersFrame
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public int getAssociatedToStreamId() {
|
public int getAssociatedToStreamId() {
|
||||||
return associatedToStreamId;
|
return associatedStreamId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
public int associatedStreamId() {
|
||||||
|
return associatedStreamId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Deprecated
|
||||||
public SpdySynStreamFrame setAssociatedToStreamId(int associatedToStreamId) {
|
public SpdySynStreamFrame setAssociatedToStreamId(int associatedToStreamId) {
|
||||||
if (associatedToStreamId < 0) {
|
return setAssociatedStreamId(associatedToStreamId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SpdySynStreamFrame setAssociatedStreamId(int associatedStreamId) {
|
||||||
|
if (associatedStreamId < 0) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"Associated-To-Stream-ID cannot be negative: " +
|
"Associated-To-Stream-ID cannot be negative: " +
|
||||||
associatedToStreamId);
|
associatedStreamId);
|
||||||
}
|
}
|
||||||
this.associatedToStreamId = associatedToStreamId;
|
this.associatedStreamId = associatedStreamId;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public byte getPriority() {
|
public byte getPriority() {
|
||||||
|
return priority();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte priority() {
|
||||||
return priority;
|
return priority;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,15 +129,15 @@ public class DefaultSpdySynStreamFrame extends DefaultSpdyHeadersFrame
|
|||||||
buf.append(')');
|
buf.append(')');
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Stream-ID = ");
|
buf.append("--> Stream-ID = ");
|
||||||
buf.append(getStreamId());
|
buf.append(streamId());
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
if (associatedToStreamId != 0) {
|
if (associatedStreamId != 0) {
|
||||||
buf.append("--> Associated-To-Stream-ID = ");
|
buf.append("--> Associated-To-Stream-ID = ");
|
||||||
buf.append(getAssociatedToStreamId());
|
buf.append(associatedStreamId());
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
}
|
}
|
||||||
buf.append("--> Priority = ");
|
buf.append("--> Priority = ");
|
||||||
buf.append(getPriority());
|
buf.append(priority());
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Headers:");
|
buf.append("--> Headers:");
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
|
@ -37,7 +37,13 @@ public class DefaultSpdyWindowUpdateFrame implements SpdyWindowUpdateFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public int getStreamId() {
|
public int getStreamId() {
|
||||||
|
return streamId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int streamId() {
|
||||||
return streamId;
|
return streamId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +58,13 @@ public class DefaultSpdyWindowUpdateFrame implements SpdyWindowUpdateFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public int getDeltaWindowSize() {
|
public int getDeltaWindowSize() {
|
||||||
|
return deltaWindowSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int deltaWindowSize() {
|
||||||
return deltaWindowSize;
|
return deltaWindowSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,10 +85,10 @@ public class DefaultSpdyWindowUpdateFrame implements SpdyWindowUpdateFrame {
|
|||||||
buf.append(StringUtil.simpleClassName(this));
|
buf.append(StringUtil.simpleClassName(this));
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Stream-ID = ");
|
buf.append("--> Stream-ID = ");
|
||||||
buf.append(getStreamId());
|
buf.append(streamId());
|
||||||
buf.append(StringUtil.NEWLINE);
|
buf.append(StringUtil.NEWLINE);
|
||||||
buf.append("--> Delta-Window-Size = ");
|
buf.append("--> Delta-Window-Size = ");
|
||||||
buf.append(getDeltaWindowSize());
|
buf.append(deltaWindowSize());
|
||||||
return buf.toString();
|
return buf.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ public class SpdyFrameCodec extends ByteToMessageDecoder
|
|||||||
SpdyDataFrame spdyDataFrame = (SpdyDataFrame) msg;
|
SpdyDataFrame spdyDataFrame = (SpdyDataFrame) msg;
|
||||||
frame = spdyFrameEncoder.encodeDataFrame(
|
frame = spdyFrameEncoder.encodeDataFrame(
|
||||||
ctx.alloc(),
|
ctx.alloc(),
|
||||||
spdyDataFrame.getStreamId(),
|
spdyDataFrame.streamId(),
|
||||||
spdyDataFrame.isLast(),
|
spdyDataFrame.isLast(),
|
||||||
spdyDataFrame.content()
|
spdyDataFrame.content()
|
||||||
);
|
);
|
||||||
@ -154,9 +154,9 @@ public class SpdyFrameCodec extends ByteToMessageDecoder
|
|||||||
try {
|
try {
|
||||||
frame = spdyFrameEncoder.encodeSynStreamFrame(
|
frame = spdyFrameEncoder.encodeSynStreamFrame(
|
||||||
ctx.alloc(),
|
ctx.alloc(),
|
||||||
spdySynStreamFrame.getStreamId(),
|
spdySynStreamFrame.streamId(),
|
||||||
spdySynStreamFrame.getAssociatedToStreamId(),
|
spdySynStreamFrame.associatedStreamId(),
|
||||||
spdySynStreamFrame.getPriority(),
|
spdySynStreamFrame.priority(),
|
||||||
spdySynStreamFrame.isLast(),
|
spdySynStreamFrame.isLast(),
|
||||||
spdySynStreamFrame.isUnidirectional(),
|
spdySynStreamFrame.isUnidirectional(),
|
||||||
headerBlock
|
headerBlock
|
||||||
@ -173,7 +173,7 @@ public class SpdyFrameCodec extends ByteToMessageDecoder
|
|||||||
try {
|
try {
|
||||||
frame = spdyFrameEncoder.encodeSynReplyFrame(
|
frame = spdyFrameEncoder.encodeSynReplyFrame(
|
||||||
ctx.alloc(),
|
ctx.alloc(),
|
||||||
spdySynReplyFrame.getStreamId(),
|
spdySynReplyFrame.streamId(),
|
||||||
spdySynReplyFrame.isLast(),
|
spdySynReplyFrame.isLast(),
|
||||||
headerBlock
|
headerBlock
|
||||||
);
|
);
|
||||||
@ -187,8 +187,8 @@ public class SpdyFrameCodec extends ByteToMessageDecoder
|
|||||||
SpdyRstStreamFrame spdyRstStreamFrame = (SpdyRstStreamFrame) msg;
|
SpdyRstStreamFrame spdyRstStreamFrame = (SpdyRstStreamFrame) msg;
|
||||||
frame = spdyFrameEncoder.encodeRstStreamFrame(
|
frame = spdyFrameEncoder.encodeRstStreamFrame(
|
||||||
ctx.alloc(),
|
ctx.alloc(),
|
||||||
spdyRstStreamFrame.getStreamId(),
|
spdyRstStreamFrame.streamId(),
|
||||||
spdyRstStreamFrame.getStatus().getCode()
|
spdyRstStreamFrame.status().code()
|
||||||
);
|
);
|
||||||
ctx.write(frame, promise);
|
ctx.write(frame, promise);
|
||||||
|
|
||||||
@ -206,7 +206,7 @@ public class SpdyFrameCodec extends ByteToMessageDecoder
|
|||||||
SpdyPingFrame spdyPingFrame = (SpdyPingFrame) msg;
|
SpdyPingFrame spdyPingFrame = (SpdyPingFrame) msg;
|
||||||
frame = spdyFrameEncoder.encodePingFrame(
|
frame = spdyFrameEncoder.encodePingFrame(
|
||||||
ctx.alloc(),
|
ctx.alloc(),
|
||||||
spdyPingFrame.getId()
|
spdyPingFrame.id()
|
||||||
);
|
);
|
||||||
ctx.write(frame, promise);
|
ctx.write(frame, promise);
|
||||||
|
|
||||||
@ -215,8 +215,8 @@ public class SpdyFrameCodec extends ByteToMessageDecoder
|
|||||||
SpdyGoAwayFrame spdyGoAwayFrame = (SpdyGoAwayFrame) msg;
|
SpdyGoAwayFrame spdyGoAwayFrame = (SpdyGoAwayFrame) msg;
|
||||||
frame = spdyFrameEncoder.encodeGoAwayFrame(
|
frame = spdyFrameEncoder.encodeGoAwayFrame(
|
||||||
ctx.alloc(),
|
ctx.alloc(),
|
||||||
spdyGoAwayFrame.getLastGoodStreamId(),
|
spdyGoAwayFrame.lastGoodStreamId(),
|
||||||
spdyGoAwayFrame.getStatus().getCode()
|
spdyGoAwayFrame.status().code()
|
||||||
);
|
);
|
||||||
ctx.write(frame, promise);
|
ctx.write(frame, promise);
|
||||||
|
|
||||||
@ -227,7 +227,7 @@ public class SpdyFrameCodec extends ByteToMessageDecoder
|
|||||||
try {
|
try {
|
||||||
frame = spdyFrameEncoder.encodeHeadersFrame(
|
frame = spdyFrameEncoder.encodeHeadersFrame(
|
||||||
ctx.alloc(),
|
ctx.alloc(),
|
||||||
spdyHeadersFrame.getStreamId(),
|
spdyHeadersFrame.streamId(),
|
||||||
spdyHeadersFrame.isLast(),
|
spdyHeadersFrame.isLast(),
|
||||||
headerBlock
|
headerBlock
|
||||||
);
|
);
|
||||||
@ -241,8 +241,8 @@ public class SpdyFrameCodec extends ByteToMessageDecoder
|
|||||||
SpdyWindowUpdateFrame spdyWindowUpdateFrame = (SpdyWindowUpdateFrame) msg;
|
SpdyWindowUpdateFrame spdyWindowUpdateFrame = (SpdyWindowUpdateFrame) msg;
|
||||||
frame = spdyFrameEncoder.encodeWindowUpdateFrame(
|
frame = spdyFrameEncoder.encodeWindowUpdateFrame(
|
||||||
ctx.alloc(),
|
ctx.alloc(),
|
||||||
spdyWindowUpdateFrame.getStreamId(),
|
spdyWindowUpdateFrame.streamId(),
|
||||||
spdyWindowUpdateFrame.getDeltaWindowSize()
|
spdyWindowUpdateFrame.deltaWindowSize()
|
||||||
);
|
);
|
||||||
ctx.write(frame, promise);
|
ctx.write(frame, promise);
|
||||||
} else {
|
} else {
|
||||||
|
@ -97,7 +97,7 @@ public class SpdyFrameEncoder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ByteBuf encodeSettingsFrame(ByteBufAllocator allocator, SpdySettingsFrame spdySettingsFrame) {
|
public ByteBuf encodeSettingsFrame(ByteBufAllocator allocator, SpdySettingsFrame spdySettingsFrame) {
|
||||||
Set<Integer> ids = spdySettingsFrame.getIds();
|
Set<Integer> ids = spdySettingsFrame.ids();
|
||||||
int numSettings = ids.size();
|
int numSettings = ids.size();
|
||||||
|
|
||||||
byte flags = spdySettingsFrame.clearPreviouslyPersistedSettings() ?
|
byte flags = spdySettingsFrame.clearPreviouslyPersistedSettings() ?
|
||||||
|
@ -20,10 +20,16 @@ package io.netty.handler.codec.spdy;
|
|||||||
*/
|
*/
|
||||||
public interface SpdyGoAwayFrame extends SpdyFrame {
|
public interface SpdyGoAwayFrame extends SpdyFrame {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #lastGoodStreamId()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
int getLastGoodStreamId();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Last-good-stream-ID of this frame.
|
* Returns the Last-good-stream-ID of this frame.
|
||||||
*/
|
*/
|
||||||
int getLastGoodStreamId();
|
int lastGoodStreamId();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the Last-good-stream-ID of this frame. The Last-good-stream-ID
|
* Sets the Last-good-stream-ID of this frame. The Last-good-stream-ID
|
||||||
@ -31,10 +37,16 @@ public interface SpdyGoAwayFrame extends SpdyFrame {
|
|||||||
*/
|
*/
|
||||||
SpdyGoAwayFrame setLastGoodStreamId(int lastGoodStreamId);
|
SpdyGoAwayFrame setLastGoodStreamId(int lastGoodStreamId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #status()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
SpdySessionStatus getStatus();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the status of this frame.
|
* Returns the status of this frame.
|
||||||
*/
|
*/
|
||||||
SpdySessionStatus getStatus();
|
SpdySessionStatus status();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the status of this frame.
|
* Sets the status of this frame.
|
||||||
|
@ -51,7 +51,7 @@ public class SpdyHeaderBlockRawDecoder extends SpdyHeaderBlockDecoder {
|
|||||||
throw new NullPointerException("spdyVersion");
|
throw new NullPointerException("spdyVersion");
|
||||||
}
|
}
|
||||||
this.maxHeaderSize = maxHeaderSize;
|
this.maxHeaderSize = maxHeaderSize;
|
||||||
this.state = State.READ_NUM_HEADERS;
|
state = State.READ_NUM_HEADERS;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int readLengthField(ByteBuf buffer) {
|
private static int readLengthField(ByteBuf buffer) {
|
||||||
|
@ -79,14 +79,14 @@ final class SpdyHeaderBlockZlibDecoder extends SpdyHeaderBlockRawDecoder {
|
|||||||
if (numBytes == 0 && decompressor.needsDictionary()) {
|
if (numBytes == 0 && decompressor.needsDictionary()) {
|
||||||
try {
|
try {
|
||||||
decompressor.setDictionary(SPDY_DICT);
|
decompressor.setDictionary(SPDY_DICT);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException ignored) {
|
||||||
throw INVALID_HEADER_BLOCK;
|
throw INVALID_HEADER_BLOCK;
|
||||||
}
|
}
|
||||||
numBytes = decompressor.inflate(out, off, decompressed.writableBytes());
|
numBytes = decompressor.inflate(out, off, decompressed.writableBytes());
|
||||||
}
|
}
|
||||||
if (frame != null) {
|
if (frame != null) {
|
||||||
decompressed.writerIndex(decompressed.writerIndex() + numBytes);
|
decompressed.writerIndex(decompressed.writerIndex() + numBytes);
|
||||||
super.decodeHeaderBlock(decompressed, frame);
|
decodeHeaderBlock(decompressed, frame);
|
||||||
decompressed.discardReadBytes();
|
decompressed.discardReadBytes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,11 +96,11 @@ public class SpdyHttpDecoder extends MessageToMessageDecoder<SpdyFrame> {
|
|||||||
|
|
||||||
// HTTP requests/responses are mapped one-to-one to SPDY streams.
|
// HTTP requests/responses are mapped one-to-one to SPDY streams.
|
||||||
SpdySynStreamFrame spdySynStreamFrame = (SpdySynStreamFrame) msg;
|
SpdySynStreamFrame spdySynStreamFrame = (SpdySynStreamFrame) msg;
|
||||||
int streamId = spdySynStreamFrame.getStreamId();
|
int streamId = spdySynStreamFrame.streamId();
|
||||||
|
|
||||||
if (SpdyCodecUtil.isServerId(streamId)) {
|
if (SpdyCodecUtil.isServerId(streamId)) {
|
||||||
// SYN_STREAM frames initiated by the server are pushed resources
|
// SYN_STREAM frames initiated by the server are pushed resources
|
||||||
int associatedToStreamId = spdySynStreamFrame.getAssociatedToStreamId();
|
int associatedToStreamId = spdySynStreamFrame.associatedStreamId();
|
||||||
|
|
||||||
// If a client receives a SYN_STREAM with an Associated-To-Stream-ID of 0
|
// If a client receives a SYN_STREAM with an Associated-To-Stream-ID of 0
|
||||||
// it must reply with a RST_STREAM with error code INVALID_STREAM
|
// it must reply with a RST_STREAM with error code INVALID_STREAM
|
||||||
@ -138,7 +138,7 @@ public class SpdyHttpDecoder extends MessageToMessageDecoder<SpdyFrame> {
|
|||||||
// Set the Stream-ID, Associated-To-Stream-ID, Priority, and URL as headers
|
// Set the Stream-ID, Associated-To-Stream-ID, Priority, and URL as headers
|
||||||
SpdyHttpHeaders.setStreamId(httpResponseWithEntity, streamId);
|
SpdyHttpHeaders.setStreamId(httpResponseWithEntity, streamId);
|
||||||
SpdyHttpHeaders.setAssociatedToStreamId(httpResponseWithEntity, associatedToStreamId);
|
SpdyHttpHeaders.setAssociatedToStreamId(httpResponseWithEntity, associatedToStreamId);
|
||||||
SpdyHttpHeaders.setPriority(httpResponseWithEntity, spdySynStreamFrame.getPriority());
|
SpdyHttpHeaders.setPriority(httpResponseWithEntity, spdySynStreamFrame.priority());
|
||||||
SpdyHttpHeaders.setUrl(httpResponseWithEntity, URL);
|
SpdyHttpHeaders.setUrl(httpResponseWithEntity, URL);
|
||||||
|
|
||||||
if (spdySynStreamFrame.isLast()) {
|
if (spdySynStreamFrame.isLast()) {
|
||||||
@ -196,7 +196,7 @@ public class SpdyHttpDecoder extends MessageToMessageDecoder<SpdyFrame> {
|
|||||||
} else if (msg instanceof SpdySynReplyFrame) {
|
} else if (msg instanceof SpdySynReplyFrame) {
|
||||||
|
|
||||||
SpdySynReplyFrame spdySynReplyFrame = (SpdySynReplyFrame) msg;
|
SpdySynReplyFrame spdySynReplyFrame = (SpdySynReplyFrame) msg;
|
||||||
int streamId = spdySynReplyFrame.getStreamId();
|
int streamId = spdySynReplyFrame.streamId();
|
||||||
|
|
||||||
// If a client receives a SYN_REPLY with a truncated header block,
|
// If a client receives a SYN_REPLY with a truncated header block,
|
||||||
// reply with a RST_STREAM frame with error code INTERNAL_ERROR.
|
// reply with a RST_STREAM frame with error code INTERNAL_ERROR.
|
||||||
@ -231,7 +231,7 @@ public class SpdyHttpDecoder extends MessageToMessageDecoder<SpdyFrame> {
|
|||||||
} else if (msg instanceof SpdyHeadersFrame) {
|
} else if (msg instanceof SpdyHeadersFrame) {
|
||||||
|
|
||||||
SpdyHeadersFrame spdyHeadersFrame = (SpdyHeadersFrame) msg;
|
SpdyHeadersFrame spdyHeadersFrame = (SpdyHeadersFrame) msg;
|
||||||
int streamId = spdyHeadersFrame.getStreamId();
|
int streamId = spdyHeadersFrame.streamId();
|
||||||
FullHttpMessage fullHttpMessage = getMessage(streamId);
|
FullHttpMessage fullHttpMessage = getMessage(streamId);
|
||||||
|
|
||||||
// If message is not in map discard HEADERS frame.
|
// If message is not in map discard HEADERS frame.
|
||||||
@ -255,7 +255,7 @@ public class SpdyHttpDecoder extends MessageToMessageDecoder<SpdyFrame> {
|
|||||||
} else if (msg instanceof SpdyDataFrame) {
|
} else if (msg instanceof SpdyDataFrame) {
|
||||||
|
|
||||||
SpdyDataFrame spdyDataFrame = (SpdyDataFrame) msg;
|
SpdyDataFrame spdyDataFrame = (SpdyDataFrame) msg;
|
||||||
int streamId = spdyDataFrame.getStreamId();
|
int streamId = spdyDataFrame.streamId();
|
||||||
FullHttpMessage fullHttpMessage = getMessage(streamId);
|
FullHttpMessage fullHttpMessage = getMessage(streamId);
|
||||||
|
|
||||||
// If message is not in map discard Data Frame.
|
// If message is not in map discard Data Frame.
|
||||||
@ -283,7 +283,7 @@ public class SpdyHttpDecoder extends MessageToMessageDecoder<SpdyFrame> {
|
|||||||
} else if (msg instanceof SpdyRstStreamFrame) {
|
} else if (msg instanceof SpdyRstStreamFrame) {
|
||||||
|
|
||||||
SpdyRstStreamFrame spdyRstStreamFrame = (SpdyRstStreamFrame) msg;
|
SpdyRstStreamFrame spdyRstStreamFrame = (SpdyRstStreamFrame) msg;
|
||||||
int streamId = spdyRstStreamFrame.getStreamId();
|
int streamId = spdyRstStreamFrame.streamId();
|
||||||
removeMessage(streamId);
|
removeMessage(streamId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -229,15 +229,15 @@ public class SpdyHttpEncoder extends MessageToMessageEncoder<HttpObject> {
|
|||||||
// Unfold the first line of the message into name/value pairs
|
// Unfold the first line of the message into name/value pairs
|
||||||
if (httpMessage instanceof FullHttpRequest) {
|
if (httpMessage instanceof FullHttpRequest) {
|
||||||
HttpRequest httpRequest = (HttpRequest) httpMessage;
|
HttpRequest httpRequest = (HttpRequest) httpMessage;
|
||||||
SpdyHeaders.setMethod(spdyVersion, spdySynStreamFrame, httpRequest.getMethod());
|
SpdyHeaders.setMethod(spdyVersion, spdySynStreamFrame, httpRequest.method());
|
||||||
SpdyHeaders.setUrl(spdyVersion, spdySynStreamFrame, httpRequest.getUri());
|
SpdyHeaders.setUrl(spdyVersion, spdySynStreamFrame, httpRequest.uri());
|
||||||
SpdyHeaders.setVersion(spdyVersion, spdySynStreamFrame, httpMessage.getProtocolVersion());
|
SpdyHeaders.setVersion(spdyVersion, spdySynStreamFrame, httpMessage.protocolVersion());
|
||||||
}
|
}
|
||||||
if (httpMessage instanceof HttpResponse) {
|
if (httpMessage instanceof HttpResponse) {
|
||||||
HttpResponse httpResponse = (HttpResponse) httpMessage;
|
HttpResponse httpResponse = (HttpResponse) httpMessage;
|
||||||
SpdyHeaders.setStatus(spdyVersion, spdySynStreamFrame, httpResponse.getStatus());
|
SpdyHeaders.setStatus(spdyVersion, spdySynStreamFrame, httpResponse.status());
|
||||||
SpdyHeaders.setUrl(spdyVersion, spdySynStreamFrame, URL);
|
SpdyHeaders.setUrl(spdyVersion, spdySynStreamFrame, URL);
|
||||||
SpdyHeaders.setVersion(spdyVersion, spdySynStreamFrame, httpMessage.getProtocolVersion());
|
SpdyHeaders.setVersion(spdyVersion, spdySynStreamFrame, httpMessage.protocolVersion());
|
||||||
spdySynStreamFrame.setUnidirectional(true);
|
spdySynStreamFrame.setUnidirectional(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,7 +258,7 @@ public class SpdyHttpEncoder extends MessageToMessageEncoder<HttpObject> {
|
|||||||
for (Map.Entry<String, String> entry: httpMessage.headers()) {
|
for (Map.Entry<String, String> entry: httpMessage.headers()) {
|
||||||
spdySynStreamFrame.headers().add(entry.getKey(), entry.getValue());
|
spdySynStreamFrame.headers().add(entry.getKey(), entry.getValue());
|
||||||
}
|
}
|
||||||
currentStreamId = spdySynStreamFrame.getStreamId();
|
currentStreamId = spdySynStreamFrame.streamId();
|
||||||
spdySynStreamFrame.setLast(isLast(httpMessage));
|
spdySynStreamFrame.setLast(isLast(httpMessage));
|
||||||
|
|
||||||
return spdySynStreamFrame;
|
return spdySynStreamFrame;
|
||||||
@ -280,8 +280,8 @@ public class SpdyHttpEncoder extends MessageToMessageEncoder<HttpObject> {
|
|||||||
SpdySynReplyFrame spdySynReplyFrame = new DefaultSpdySynReplyFrame(streamID);
|
SpdySynReplyFrame spdySynReplyFrame = new DefaultSpdySynReplyFrame(streamID);
|
||||||
|
|
||||||
// Unfold the first line of the response into name/value pairs
|
// Unfold the first line of the response into name/value pairs
|
||||||
SpdyHeaders.setStatus(spdyVersion, spdySynReplyFrame, httpResponse.getStatus());
|
SpdyHeaders.setStatus(spdyVersion, spdySynReplyFrame, httpResponse.status());
|
||||||
SpdyHeaders.setVersion(spdyVersion, spdySynReplyFrame, httpResponse.getProtocolVersion());
|
SpdyHeaders.setVersion(spdyVersion, spdySynReplyFrame, httpResponse.protocolVersion());
|
||||||
|
|
||||||
// Transfer the remaining HTTP headers
|
// Transfer the remaining HTTP headers
|
||||||
for (Map.Entry<String, String> entry: httpResponse.headers()) {
|
for (Map.Entry<String, String> entry: httpResponse.headers()) {
|
||||||
|
@ -59,7 +59,7 @@ public class SpdyHttpResponseStreamIdHandler extends
|
|||||||
ids.add(SpdyHttpHeaders.getStreamId((HttpMessage) msg));
|
ids.add(SpdyHttpHeaders.getStreamId((HttpMessage) msg));
|
||||||
}
|
}
|
||||||
} else if (msg instanceof SpdyRstStreamFrame) {
|
} else if (msg instanceof SpdyRstStreamFrame) {
|
||||||
ids.remove(((SpdyRstStreamFrame) msg).getStreamId());
|
ids.remove(((SpdyRstStreamFrame) msg).streamId());
|
||||||
}
|
}
|
||||||
|
|
||||||
out.add(ReferenceCountUtil.retain(msg));
|
out.add(ReferenceCountUtil.retain(msg));
|
||||||
|
@ -20,10 +20,16 @@ package io.netty.handler.codec.spdy;
|
|||||||
*/
|
*/
|
||||||
public interface SpdyPingFrame extends SpdyFrame {
|
public interface SpdyPingFrame extends SpdyFrame {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #id()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
int getId();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the ID of this frame.
|
* Returns the ID of this frame.
|
||||||
*/
|
*/
|
||||||
int getId();
|
int id();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the ID of this frame.
|
* Sets the ID of this frame.
|
||||||
|
@ -20,10 +20,16 @@ package io.netty.handler.codec.spdy;
|
|||||||
*/
|
*/
|
||||||
public interface SpdyRstStreamFrame extends SpdyStreamFrame {
|
public interface SpdyRstStreamFrame extends SpdyStreamFrame {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #status()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
SpdyStreamStatus getStatus();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the status of this frame.
|
* Returns the status of this frame.
|
||||||
*/
|
*/
|
||||||
SpdyStreamStatus getStatus();
|
SpdyStreamStatus status();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the status of this frame.
|
* Sets the status of this frame.
|
||||||
|
@ -37,7 +37,7 @@ final class SpdySession {
|
|||||||
private final AtomicInteger sendWindowSize;
|
private final AtomicInteger sendWindowSize;
|
||||||
private final AtomicInteger receiveWindowSize;
|
private final AtomicInteger receiveWindowSize;
|
||||||
|
|
||||||
public SpdySession(int sendWindowSize, int receiveWindowSize) {
|
SpdySession(int sendWindowSize, int receiveWindowSize) {
|
||||||
this.sendWindowSize = new AtomicInteger(sendWindowSize);
|
this.sendWindowSize = new AtomicInteger(sendWindowSize);
|
||||||
this.receiveWindowSize = new AtomicInteger(receiveWindowSize);
|
this.receiveWindowSize = new AtomicInteger(receiveWindowSize);
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ import io.netty.util.internal.EmptyArrays;
|
|||||||
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import static io.netty.handler.codec.spdy.SpdyCodecUtil.SPDY_SESSION_STREAM_ID;
|
import static io.netty.handler.codec.spdy.SpdyCodecUtil.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manages streams within a SPDY session.
|
* Manages streams within a SPDY session.
|
||||||
@ -121,7 +121,7 @@ public class SpdySessionHandler
|
|||||||
* a RST_STREAM frame with the getStatus PROTOCOL_ERROR.
|
* a RST_STREAM frame with the getStatus PROTOCOL_ERROR.
|
||||||
*/
|
*/
|
||||||
SpdyDataFrame spdyDataFrame = (SpdyDataFrame) msg;
|
SpdyDataFrame spdyDataFrame = (SpdyDataFrame) msg;
|
||||||
int streamId = spdyDataFrame.getStreamId();
|
int streamId = spdyDataFrame.streamId();
|
||||||
|
|
||||||
int deltaWindowSize = -1 * spdyDataFrame.content().readableBytes();
|
int deltaWindowSize = -1 * spdyDataFrame.content().readableBytes();
|
||||||
int newSessionWindowSize =
|
int newSessionWindowSize =
|
||||||
@ -230,7 +230,7 @@ public class SpdySessionHandler
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
SpdySynStreamFrame spdySynStreamFrame = (SpdySynStreamFrame) msg;
|
SpdySynStreamFrame spdySynStreamFrame = (SpdySynStreamFrame) msg;
|
||||||
int streamId = spdySynStreamFrame.getStreamId();
|
int streamId = spdySynStreamFrame.streamId();
|
||||||
|
|
||||||
// Check if we received a valid SYN_STREAM frame
|
// Check if we received a valid SYN_STREAM frame
|
||||||
if (spdySynStreamFrame.isInvalid() ||
|
if (spdySynStreamFrame.isInvalid() ||
|
||||||
@ -247,7 +247,7 @@ public class SpdySessionHandler
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Try to accept the stream
|
// Try to accept the stream
|
||||||
byte priority = spdySynStreamFrame.getPriority();
|
byte priority = spdySynStreamFrame.priority();
|
||||||
boolean remoteSideClosed = spdySynStreamFrame.isLast();
|
boolean remoteSideClosed = spdySynStreamFrame.isLast();
|
||||||
boolean localSideClosed = spdySynStreamFrame.isUnidirectional();
|
boolean localSideClosed = spdySynStreamFrame.isUnidirectional();
|
||||||
if (!acceptStream(streamId, priority, remoteSideClosed, localSideClosed)) {
|
if (!acceptStream(streamId, priority, remoteSideClosed, localSideClosed)) {
|
||||||
@ -265,7 +265,7 @@ public class SpdySessionHandler
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
SpdySynReplyFrame spdySynReplyFrame = (SpdySynReplyFrame) msg;
|
SpdySynReplyFrame spdySynReplyFrame = (SpdySynReplyFrame) msg;
|
||||||
int streamId = spdySynReplyFrame.getStreamId();
|
int streamId = spdySynReplyFrame.streamId();
|
||||||
|
|
||||||
// Check if we received a valid SYN_REPLY frame
|
// Check if we received a valid SYN_REPLY frame
|
||||||
if (spdySynReplyFrame.isInvalid() ||
|
if (spdySynReplyFrame.isInvalid() ||
|
||||||
@ -300,7 +300,7 @@ public class SpdySessionHandler
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
SpdyRstStreamFrame spdyRstStreamFrame = (SpdyRstStreamFrame) msg;
|
SpdyRstStreamFrame spdyRstStreamFrame = (SpdyRstStreamFrame) msg;
|
||||||
removeStream(spdyRstStreamFrame.getStreamId(), ctx.newSucceededFuture());
|
removeStream(spdyRstStreamFrame.streamId(), ctx.newSucceededFuture());
|
||||||
|
|
||||||
} else if (msg instanceof SpdySettingsFrame) {
|
} else if (msg instanceof SpdySettingsFrame) {
|
||||||
|
|
||||||
@ -346,7 +346,7 @@ public class SpdySessionHandler
|
|||||||
|
|
||||||
SpdyPingFrame spdyPingFrame = (SpdyPingFrame) msg;
|
SpdyPingFrame spdyPingFrame = (SpdyPingFrame) msg;
|
||||||
|
|
||||||
if (isRemoteInitiatedId(spdyPingFrame.getId())) {
|
if (isRemoteInitiatedId(spdyPingFrame.id())) {
|
||||||
ctx.writeAndFlush(spdyPingFrame);
|
ctx.writeAndFlush(spdyPingFrame);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -364,7 +364,7 @@ public class SpdySessionHandler
|
|||||||
} else if (msg instanceof SpdyHeadersFrame) {
|
} else if (msg instanceof SpdyHeadersFrame) {
|
||||||
|
|
||||||
SpdyHeadersFrame spdyHeadersFrame = (SpdyHeadersFrame) msg;
|
SpdyHeadersFrame spdyHeadersFrame = (SpdyHeadersFrame) msg;
|
||||||
int streamId = spdyHeadersFrame.getStreamId();
|
int streamId = spdyHeadersFrame.streamId();
|
||||||
|
|
||||||
// Check if we received a valid HEADERS frame
|
// Check if we received a valid HEADERS frame
|
||||||
if (spdyHeadersFrame.isInvalid()) {
|
if (spdyHeadersFrame.isInvalid()) {
|
||||||
@ -395,8 +395,8 @@ public class SpdySessionHandler
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
SpdyWindowUpdateFrame spdyWindowUpdateFrame = (SpdyWindowUpdateFrame) msg;
|
SpdyWindowUpdateFrame spdyWindowUpdateFrame = (SpdyWindowUpdateFrame) msg;
|
||||||
int streamId = spdyWindowUpdateFrame.getStreamId();
|
int streamId = spdyWindowUpdateFrame.streamId();
|
||||||
int deltaWindowSize = spdyWindowUpdateFrame.getDeltaWindowSize();
|
int deltaWindowSize = spdyWindowUpdateFrame.deltaWindowSize();
|
||||||
|
|
||||||
// Ignore frames for half-closed streams
|
// Ignore frames for half-closed streams
|
||||||
if (streamId != SPDY_SESSION_STREAM_ID && spdySession.isLocalSideClosed(streamId)) {
|
if (streamId != SPDY_SESSION_STREAM_ID && spdySession.isLocalSideClosed(streamId)) {
|
||||||
@ -463,7 +463,7 @@ public class SpdySessionHandler
|
|||||||
if (msg instanceof SpdyDataFrame) {
|
if (msg instanceof SpdyDataFrame) {
|
||||||
|
|
||||||
SpdyDataFrame spdyDataFrame = (SpdyDataFrame) msg;
|
SpdyDataFrame spdyDataFrame = (SpdyDataFrame) msg;
|
||||||
int streamId = spdyDataFrame.getStreamId();
|
int streamId = spdyDataFrame.streamId();
|
||||||
|
|
||||||
// Frames must not be sent on half-closed streams
|
// Frames must not be sent on half-closed streams
|
||||||
if (spdySession.isLocalSideClosed(streamId)) {
|
if (spdySession.isLocalSideClosed(streamId)) {
|
||||||
@ -546,14 +546,14 @@ public class SpdySessionHandler
|
|||||||
} else if (msg instanceof SpdySynStreamFrame) {
|
} else if (msg instanceof SpdySynStreamFrame) {
|
||||||
|
|
||||||
SpdySynStreamFrame spdySynStreamFrame = (SpdySynStreamFrame) msg;
|
SpdySynStreamFrame spdySynStreamFrame = (SpdySynStreamFrame) msg;
|
||||||
int streamId = spdySynStreamFrame.getStreamId();
|
int streamId = spdySynStreamFrame.streamId();
|
||||||
|
|
||||||
if (isRemoteInitiatedId(streamId)) {
|
if (isRemoteInitiatedId(streamId)) {
|
||||||
promise.setFailure(PROTOCOL_EXCEPTION);
|
promise.setFailure(PROTOCOL_EXCEPTION);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte priority = spdySynStreamFrame.getPriority();
|
byte priority = spdySynStreamFrame.priority();
|
||||||
boolean remoteSideClosed = spdySynStreamFrame.isUnidirectional();
|
boolean remoteSideClosed = spdySynStreamFrame.isUnidirectional();
|
||||||
boolean localSideClosed = spdySynStreamFrame.isLast();
|
boolean localSideClosed = spdySynStreamFrame.isLast();
|
||||||
if (!acceptStream(streamId, priority, remoteSideClosed, localSideClosed)) {
|
if (!acceptStream(streamId, priority, remoteSideClosed, localSideClosed)) {
|
||||||
@ -564,7 +564,7 @@ public class SpdySessionHandler
|
|||||||
} else if (msg instanceof SpdySynReplyFrame) {
|
} else if (msg instanceof SpdySynReplyFrame) {
|
||||||
|
|
||||||
SpdySynReplyFrame spdySynReplyFrame = (SpdySynReplyFrame) msg;
|
SpdySynReplyFrame spdySynReplyFrame = (SpdySynReplyFrame) msg;
|
||||||
int streamId = spdySynReplyFrame.getStreamId();
|
int streamId = spdySynReplyFrame.streamId();
|
||||||
|
|
||||||
// Frames must not be sent on half-closed streams
|
// Frames must not be sent on half-closed streams
|
||||||
if (!isRemoteInitiatedId(streamId) || spdySession.isLocalSideClosed(streamId)) {
|
if (!isRemoteInitiatedId(streamId) || spdySession.isLocalSideClosed(streamId)) {
|
||||||
@ -580,7 +580,7 @@ public class SpdySessionHandler
|
|||||||
} else if (msg instanceof SpdyRstStreamFrame) {
|
} else if (msg instanceof SpdyRstStreamFrame) {
|
||||||
|
|
||||||
SpdyRstStreamFrame spdyRstStreamFrame = (SpdyRstStreamFrame) msg;
|
SpdyRstStreamFrame spdyRstStreamFrame = (SpdyRstStreamFrame) msg;
|
||||||
removeStream(spdyRstStreamFrame.getStreamId(), promise);
|
removeStream(spdyRstStreamFrame.streamId(), promise);
|
||||||
|
|
||||||
} else if (msg instanceof SpdySettingsFrame) {
|
} else if (msg instanceof SpdySettingsFrame) {
|
||||||
|
|
||||||
@ -616,9 +616,9 @@ public class SpdySessionHandler
|
|||||||
} else if (msg instanceof SpdyPingFrame) {
|
} else if (msg instanceof SpdyPingFrame) {
|
||||||
|
|
||||||
SpdyPingFrame spdyPingFrame = (SpdyPingFrame) msg;
|
SpdyPingFrame spdyPingFrame = (SpdyPingFrame) msg;
|
||||||
if (isRemoteInitiatedId(spdyPingFrame.getId())) {
|
if (isRemoteInitiatedId(spdyPingFrame.id())) {
|
||||||
ctx.fireExceptionCaught(new IllegalArgumentException(
|
ctx.fireExceptionCaught(new IllegalArgumentException(
|
||||||
"invalid PING ID: " + spdyPingFrame.getId()));
|
"invalid PING ID: " + spdyPingFrame.id()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
pings.getAndIncrement();
|
pings.getAndIncrement();
|
||||||
@ -633,7 +633,7 @@ public class SpdySessionHandler
|
|||||||
} else if (msg instanceof SpdyHeadersFrame) {
|
} else if (msg instanceof SpdyHeadersFrame) {
|
||||||
|
|
||||||
SpdyHeadersFrame spdyHeadersFrame = (SpdyHeadersFrame) msg;
|
SpdyHeadersFrame spdyHeadersFrame = (SpdyHeadersFrame) msg;
|
||||||
int streamId = spdyHeadersFrame.getStreamId();
|
int streamId = spdyHeadersFrame.streamId();
|
||||||
|
|
||||||
// Frames must not be sent on half-closed streams
|
// Frames must not be sent on half-closed streams
|
||||||
if (spdySession.isLocalSideClosed(streamId)) {
|
if (spdySession.isLocalSideClosed(streamId)) {
|
||||||
@ -699,7 +699,7 @@ public class SpdySessionHandler
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
private boolean isRemoteInitiatedId(int id) {
|
private boolean isRemoteInitiatedId(int id) {
|
||||||
boolean serverId = SpdyCodecUtil.isServerId(id);
|
boolean serverId = isServerId(id);
|
||||||
return server && !serverId || !server && serverId;
|
return server && !serverId || !server && serverId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -775,7 +775,7 @@ public class SpdySessionHandler
|
|||||||
|
|
||||||
SpdyDataFrame spdyDataFrame = pendingWrite.spdyDataFrame;
|
SpdyDataFrame spdyDataFrame = pendingWrite.spdyDataFrame;
|
||||||
int dataFrameSize = spdyDataFrame.content().readableBytes();
|
int dataFrameSize = spdyDataFrame.content().readableBytes();
|
||||||
int writeStreamId = spdyDataFrame.getStreamId();
|
int writeStreamId = spdyDataFrame.streamId();
|
||||||
if (streamId == SPDY_SESSION_STREAM_ID) {
|
if (streamId == SPDY_SESSION_STREAM_ID) {
|
||||||
newWindowSize = Math.min(newWindowSize, spdySession.getSendWindowSize(writeStreamId));
|
newWindowSize = Math.min(newWindowSize, spdySession.getSendWindowSize(writeStreamId));
|
||||||
}
|
}
|
||||||
|
@ -73,23 +73,39 @@ public class SpdySessionStatus implements Comparable<SpdySessionStatus> {
|
|||||||
this.statusPhrase = statusPhrase;
|
this.statusPhrase = statusPhrase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #code()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public int getCode() {
|
||||||
|
return code();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the code of this status.
|
* Returns the code of this status.
|
||||||
*/
|
*/
|
||||||
public int getCode() {
|
public int code() {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #statusPhrase()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public String getStatusPhrase() {
|
||||||
|
return statusPhrase();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the status phrase of this status.
|
* Returns the status phrase of this status.
|
||||||
*/
|
*/
|
||||||
public String getStatusPhrase() {
|
public String statusPhrase() {
|
||||||
return statusPhrase;
|
return statusPhrase;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return getCode();
|
return code();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -98,16 +114,16 @@ public class SpdySessionStatus implements Comparable<SpdySessionStatus> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return getCode() == ((SpdySessionStatus) o).getCode();
|
return code() == ((SpdySessionStatus) o).code();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return getStatusPhrase();
|
return statusPhrase();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(SpdySessionStatus o) {
|
public int compareTo(SpdySessionStatus o) {
|
||||||
return getCode() - o.getCode();
|
return code() - o.code();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,11 +32,17 @@ public interface SpdySettingsFrame extends SpdyFrame {
|
|||||||
int SETTINGS_INITIAL_WINDOW_SIZE = 7;
|
int SETTINGS_INITIAL_WINDOW_SIZE = 7;
|
||||||
int SETTINGS_CLIENT_CERTIFICATE_VECTOR_SIZE = 8;
|
int SETTINGS_CLIENT_CERTIFICATE_VECTOR_SIZE = 8;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #ids()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
Set<Integer> getIds();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a {@code Set} of the setting IDs.
|
* Returns a {@code Set} of the setting IDs.
|
||||||
* The set's iterator will return the IDs in ascending order.
|
* The set's iterator will return the IDs in ascending order.
|
||||||
*/
|
*/
|
||||||
Set<Integer> getIds();
|
Set<Integer> ids();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns {@code true} if the setting ID has a value.
|
* Returns {@code true} if the setting ID has a value.
|
||||||
|
@ -20,10 +20,16 @@ package io.netty.handler.codec.spdy;
|
|||||||
*/
|
*/
|
||||||
public interface SpdyStreamFrame extends SpdyFrame {
|
public interface SpdyStreamFrame extends SpdyFrame {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #streamId()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
int getStreamId();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Stream-ID of this frame.
|
* Returns the Stream-ID of this frame.
|
||||||
*/
|
*/
|
||||||
int getStreamId();
|
int streamId();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the Stream-ID of this frame. The Stream-ID must be positive.
|
* Sets the Stream-ID of this frame. The Stream-ID must be positive.
|
||||||
|
@ -147,23 +147,39 @@ public class SpdyStreamStatus implements Comparable<SpdyStreamStatus> {
|
|||||||
this.statusPhrase = statusPhrase;
|
this.statusPhrase = statusPhrase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #code()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public int getCode() {
|
||||||
|
return code();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the code of this status.
|
* Returns the code of this status.
|
||||||
*/
|
*/
|
||||||
public int getCode() {
|
public int code() {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #statusPhrase()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public String getStatusPhrase() {
|
||||||
|
return statusPhrase();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the status phrase of this status.
|
* Returns the status phrase of this status.
|
||||||
*/
|
*/
|
||||||
public String getStatusPhrase() {
|
public String statusPhrase() {
|
||||||
return statusPhrase;
|
return statusPhrase;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return getCode();
|
return code();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -172,16 +188,16 @@ public class SpdyStreamStatus implements Comparable<SpdyStreamStatus> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return getCode() == ((SpdyStreamStatus) o).getCode();
|
return code() == ((SpdyStreamStatus) o).code();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return getStatusPhrase();
|
return statusPhrase();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(SpdyStreamStatus o) {
|
public int compareTo(SpdyStreamStatus o) {
|
||||||
return getCode() - o.getCode();
|
return code() - o.code();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,21 +20,39 @@ package io.netty.handler.codec.spdy;
|
|||||||
*/
|
*/
|
||||||
public interface SpdySynStreamFrame extends SpdyHeadersFrame {
|
public interface SpdySynStreamFrame extends SpdyHeadersFrame {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #associatedStreamId()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
int getAssociatedToStreamId();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Associated-To-Stream-ID of this frame.
|
* Returns the Associated-To-Stream-ID of this frame.
|
||||||
*/
|
*/
|
||||||
int getAssociatedToStreamId();
|
int associatedStreamId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #setAssociatedStreamId(int)} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
SpdySynStreamFrame setAssociatedToStreamId(int associatedToStreamId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the Associated-To-Stream-ID of this frame.
|
* Sets the Associated-To-Stream-ID of this frame.
|
||||||
* The Associated-To-Stream-ID cannot be negative.
|
* The Associated-To-Stream-ID cannot be negative.
|
||||||
*/
|
*/
|
||||||
SpdySynStreamFrame setAssociatedToStreamId(int associatedToStreamId);
|
SpdySynStreamFrame setAssociatedStreamId(int associatedStreamId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use {@link #priority()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
byte getPriority();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the priority of the stream.
|
* Returns the priority of the stream.
|
||||||
*/
|
*/
|
||||||
byte getPriority();
|
byte priority();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the priority of the stream.
|
* Sets the priority of the stream.
|
||||||
|
@ -21,7 +21,7 @@ public enum SpdyVersion {
|
|||||||
private final int version;
|
private final int version;
|
||||||
private final int minorVersion;
|
private final int minorVersion;
|
||||||
|
|
||||||
private SpdyVersion(int version, int minorVersion) {
|
SpdyVersion(int version, int minorVersion) {
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.minorVersion = minorVersion;
|
this.minorVersion = minorVersion;
|
||||||
}
|
}
|
||||||
|
@ -20,20 +20,32 @@ package io.netty.handler.codec.spdy;
|
|||||||
*/
|
*/
|
||||||
public interface SpdyWindowUpdateFrame extends SpdyFrame {
|
public interface SpdyWindowUpdateFrame extends SpdyFrame {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #streamId()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
int getStreamId();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Stream-ID of this frame.
|
* Returns the Stream-ID of this frame.
|
||||||
*/
|
*/
|
||||||
int getStreamId();
|
int streamId();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the Stream-ID of this frame. The Stream-ID cannot be negative.
|
* Sets the Stream-ID of this frame. The Stream-ID cannot be negative.
|
||||||
*/
|
*/
|
||||||
SpdyWindowUpdateFrame setStreamId(int streamID);
|
SpdyWindowUpdateFrame setStreamId(int streamID);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #deltaWindowSize()} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
int getDeltaWindowSize();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Delta-Window-Size of this frame.
|
* Returns the Delta-Window-Size of this frame.
|
||||||
*/
|
*/
|
||||||
int getDeltaWindowSize();
|
int deltaWindowSize();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the Delta-Window-Size of this frame.
|
* Sets the Delta-Window-Size of this frame.
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package io.netty.handler.codec.http;
|
package io.netty.handler.codec.http;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -23,7 +23,7 @@ import java.util.Iterator;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
|
||||||
import org.junit.Test;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
public class CookieDecoderTest {
|
public class CookieDecoderTest {
|
||||||
@Test
|
@Test
|
||||||
@ -36,27 +36,27 @@ public class CookieDecoderTest {
|
|||||||
assertEquals(1, cookies.size());
|
assertEquals(1, cookies.size());
|
||||||
Cookie cookie = cookies.iterator().next();
|
Cookie cookie = cookies.iterator().next();
|
||||||
assertNotNull(cookie);
|
assertNotNull(cookie);
|
||||||
assertEquals("myValue", cookie.getValue());
|
assertEquals("myValue", cookie.value());
|
||||||
assertNull(cookie.getComment());
|
assertNull(cookie.comment());
|
||||||
assertNull(cookie.getCommentUrl());
|
assertNull(cookie.commentUrl());
|
||||||
assertEquals(".adomainsomewhere", cookie.getDomain());
|
assertEquals(".adomainsomewhere", cookie.domain());
|
||||||
assertFalse(cookie.isDiscard());
|
assertFalse(cookie.isDiscard());
|
||||||
|
|
||||||
boolean fail = true;
|
boolean fail = true;
|
||||||
for (int i = 40; i <= 60; i ++) {
|
for (int i = 40; i <= 60; i ++) {
|
||||||
if (cookie.getMaxAge() == i) {
|
if (cookie.maxAge() == i) {
|
||||||
fail = false;
|
fail = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (fail) {
|
if (fail) {
|
||||||
fail("expected: 50, actual: " + cookie.getMaxAge());
|
fail("expected: 50, actual: " + cookie.maxAge());
|
||||||
}
|
}
|
||||||
|
|
||||||
assertEquals("/apathsomewhere", cookie.getPath());
|
assertEquals("/apathsomewhere", cookie.path());
|
||||||
assertTrue(cookie.getPorts().isEmpty());
|
assertTrue(cookie.ports().isEmpty());
|
||||||
assertTrue(cookie.isSecure());
|
assertTrue(cookie.isSecure());
|
||||||
assertEquals(0, cookie.getVersion());
|
assertEquals(0, cookie.version());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -68,16 +68,16 @@ public class CookieDecoderTest {
|
|||||||
assertEquals(1, cookies.size());
|
assertEquals(1, cookies.size());
|
||||||
Cookie cookie = cookies.iterator().next();
|
Cookie cookie = cookies.iterator().next();
|
||||||
assertNotNull(cookie);
|
assertNotNull(cookie);
|
||||||
assertEquals("myValue", cookie.getValue());
|
assertEquals("myValue", cookie.value());
|
||||||
assertNull(cookie.getComment());
|
assertNull(cookie.comment());
|
||||||
assertNull(cookie.getCommentUrl());
|
assertNull(cookie.commentUrl());
|
||||||
assertEquals(".adomainsomewhere", cookie.getDomain());
|
assertEquals(".adomainsomewhere", cookie.domain());
|
||||||
assertFalse(cookie.isDiscard());
|
assertFalse(cookie.isDiscard());
|
||||||
assertEquals(50, cookie.getMaxAge());
|
assertEquals(50, cookie.maxAge());
|
||||||
assertEquals("/apathsomewhere", cookie.getPath());
|
assertEquals("/apathsomewhere", cookie.path());
|
||||||
assertTrue(cookie.getPorts().isEmpty());
|
assertTrue(cookie.ports().isEmpty());
|
||||||
assertTrue(cookie.isSecure());
|
assertTrue(cookie.isSecure());
|
||||||
assertEquals(0, cookie.getVersion());
|
assertEquals(0, cookie.version());
|
||||||
}
|
}
|
||||||
@Test
|
@Test
|
||||||
public void testDecodingSingleCookieV1() {
|
public void testDecodingSingleCookieV1() {
|
||||||
@ -86,17 +86,17 @@ public class CookieDecoderTest {
|
|||||||
Set<Cookie> cookies = CookieDecoder.decode(cookieString);
|
Set<Cookie> cookies = CookieDecoder.decode(cookieString);
|
||||||
assertEquals(1, cookies.size());
|
assertEquals(1, cookies.size());
|
||||||
Cookie cookie = cookies.iterator().next();
|
Cookie cookie = cookies.iterator().next();
|
||||||
assertEquals("myValue", cookie.getValue());
|
assertEquals("myValue", cookie.value());
|
||||||
assertNotNull(cookie);
|
assertNotNull(cookie);
|
||||||
assertEquals("this is a comment", cookie.getComment());
|
assertEquals("this is a comment", cookie.comment());
|
||||||
assertNull(cookie.getCommentUrl());
|
assertNull(cookie.commentUrl());
|
||||||
assertEquals(".adomainsomewhere", cookie.getDomain());
|
assertEquals(".adomainsomewhere", cookie.domain());
|
||||||
assertFalse(cookie.isDiscard());
|
assertFalse(cookie.isDiscard());
|
||||||
assertEquals(50, cookie.getMaxAge());
|
assertEquals(50, cookie.maxAge());
|
||||||
assertEquals("/apathsomewhere", cookie.getPath());
|
assertEquals("/apathsomewhere", cookie.path());
|
||||||
assertTrue(cookie.getPorts().isEmpty());
|
assertTrue(cookie.ports().isEmpty());
|
||||||
assertTrue(cookie.isSecure());
|
assertTrue(cookie.isSecure());
|
||||||
assertEquals(1, cookie.getVersion());
|
assertEquals(1, cookie.version());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -108,16 +108,16 @@ public class CookieDecoderTest {
|
|||||||
assertEquals(1, cookies.size());
|
assertEquals(1, cookies.size());
|
||||||
Cookie cookie = cookies.iterator().next();
|
Cookie cookie = cookies.iterator().next();
|
||||||
assertNotNull(cookie);
|
assertNotNull(cookie);
|
||||||
assertEquals("myValue", cookie.getValue());
|
assertEquals("myValue", cookie.value());
|
||||||
assertEquals("this is a comment", cookie.getComment());
|
assertEquals("this is a comment", cookie.comment());
|
||||||
assertNull(cookie.getCommentUrl());
|
assertNull(cookie.commentUrl());
|
||||||
assertEquals(".adomainsomewhere", cookie.getDomain());
|
assertEquals(".adomainsomewhere", cookie.domain());
|
||||||
assertFalse(cookie.isDiscard());
|
assertFalse(cookie.isDiscard());
|
||||||
assertEquals(50, cookie.getMaxAge());
|
assertEquals(50, cookie.maxAge());
|
||||||
assertEquals("/apathsomewhere", cookie.getPath());
|
assertEquals("/apathsomewhere", cookie.path());
|
||||||
assertTrue(cookie.getPorts().isEmpty());
|
assertTrue(cookie.ports().isEmpty());
|
||||||
assertTrue(cookie.isSecure());
|
assertTrue(cookie.isSecure());
|
||||||
assertEquals(1, cookie.getVersion());
|
assertEquals(1, cookie.version());
|
||||||
}
|
}
|
||||||
@Test
|
@Test
|
||||||
public void testDecodingSingleCookieV2() {
|
public void testDecodingSingleCookieV2() {
|
||||||
@ -128,18 +128,18 @@ public class CookieDecoderTest {
|
|||||||
assertEquals(1, cookies.size());
|
assertEquals(1, cookies.size());
|
||||||
Cookie cookie = cookies.iterator().next();
|
Cookie cookie = cookies.iterator().next();
|
||||||
assertNotNull(cookie);
|
assertNotNull(cookie);
|
||||||
assertEquals("myValue", cookie.getValue());
|
assertEquals("myValue", cookie.value());
|
||||||
assertEquals("this is a comment", cookie.getComment());
|
assertEquals("this is a comment", cookie.comment());
|
||||||
assertEquals("http://aurl.com", cookie.getCommentUrl());
|
assertEquals("http://aurl.com", cookie.commentUrl());
|
||||||
assertEquals(".adomainsomewhere", cookie.getDomain());
|
assertEquals(".adomainsomewhere", cookie.domain());
|
||||||
assertTrue(cookie.isDiscard());
|
assertTrue(cookie.isDiscard());
|
||||||
assertEquals(50, cookie.getMaxAge());
|
assertEquals(50, cookie.maxAge());
|
||||||
assertEquals("/apathsomewhere", cookie.getPath());
|
assertEquals("/apathsomewhere", cookie.path());
|
||||||
assertEquals(2, cookie.getPorts().size());
|
assertEquals(2, cookie.ports().size());
|
||||||
assertTrue(cookie.getPorts().contains(80));
|
assertTrue(cookie.ports().contains(80));
|
||||||
assertTrue(cookie.getPorts().contains(8080));
|
assertTrue(cookie.ports().contains(8080));
|
||||||
assertTrue(cookie.isSecure());
|
assertTrue(cookie.isSecure());
|
||||||
assertEquals(2, cookie.getVersion());
|
assertEquals(2, cookie.version());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -157,42 +157,42 @@ public class CookieDecoderTest {
|
|||||||
Iterator<Cookie> it = cookies.iterator();
|
Iterator<Cookie> it = cookies.iterator();
|
||||||
Cookie cookie = it.next();
|
Cookie cookie = it.next();
|
||||||
assertNotNull(cookie);
|
assertNotNull(cookie);
|
||||||
assertEquals("myValue", cookie.getValue());
|
assertEquals("myValue", cookie.value());
|
||||||
assertEquals("this is a comment", cookie.getComment());
|
assertEquals("this is a comment", cookie.comment());
|
||||||
assertEquals("http://aurl.com", cookie.getCommentUrl());
|
assertEquals("http://aurl.com", cookie.commentUrl());
|
||||||
assertEquals(".adomainsomewhere", cookie.getDomain());
|
assertEquals(".adomainsomewhere", cookie.domain());
|
||||||
assertTrue(cookie.isDiscard());
|
assertTrue(cookie.isDiscard());
|
||||||
assertEquals(50, cookie.getMaxAge());
|
assertEquals(50, cookie.maxAge());
|
||||||
assertEquals("/apathsomewhere", cookie.getPath());
|
assertEquals("/apathsomewhere", cookie.path());
|
||||||
assertEquals(2, cookie.getPorts().size());
|
assertEquals(2, cookie.ports().size());
|
||||||
assertTrue(cookie.getPorts().contains(80));
|
assertTrue(cookie.ports().contains(80));
|
||||||
assertTrue(cookie.getPorts().contains(8080));
|
assertTrue(cookie.ports().contains(8080));
|
||||||
assertTrue(cookie.isSecure());
|
assertTrue(cookie.isSecure());
|
||||||
assertEquals(2, cookie.getVersion());
|
assertEquals(2, cookie.version());
|
||||||
cookie = it.next();
|
cookie = it.next();
|
||||||
assertNotNull(cookie);
|
assertNotNull(cookie);
|
||||||
assertEquals("myValue2", cookie.getValue());
|
assertEquals("myValue2", cookie.value());
|
||||||
assertEquals("this is another comment", cookie.getComment());
|
assertEquals("this is another comment", cookie.comment());
|
||||||
assertEquals("http://anotherurl.com", cookie.getCommentUrl());
|
assertEquals("http://anotherurl.com", cookie.commentUrl());
|
||||||
assertEquals(".anotherdomainsomewhere", cookie.getDomain());
|
assertEquals(".anotherdomainsomewhere", cookie.domain());
|
||||||
assertFalse(cookie.isDiscard());
|
assertFalse(cookie.isDiscard());
|
||||||
assertEquals(0, cookie.getMaxAge());
|
assertEquals(0, cookie.maxAge());
|
||||||
assertEquals("/anotherpathsomewhere", cookie.getPath());
|
assertEquals("/anotherpathsomewhere", cookie.path());
|
||||||
assertTrue(cookie.getPorts().isEmpty());
|
assertTrue(cookie.ports().isEmpty());
|
||||||
assertFalse(cookie.isSecure());
|
assertFalse(cookie.isSecure());
|
||||||
assertEquals(2, cookie.getVersion());
|
assertEquals(2, cookie.version());
|
||||||
cookie = it.next();
|
cookie = it.next();
|
||||||
assertNotNull(cookie);
|
assertNotNull(cookie);
|
||||||
assertEquals("myValue3", cookie.getValue());
|
assertEquals("myValue3", cookie.value());
|
||||||
assertNull(cookie.getComment());
|
assertNull(cookie.comment());
|
||||||
assertNull(cookie.getCommentUrl());
|
assertNull(cookie.commentUrl());
|
||||||
assertNull(cookie.getDomain());
|
assertNull(cookie.domain());
|
||||||
assertFalse(cookie.isDiscard());
|
assertFalse(cookie.isDiscard());
|
||||||
assertEquals(0, cookie.getMaxAge());
|
assertEquals(0, cookie.maxAge());
|
||||||
assertNull(cookie.getPath());
|
assertNull(cookie.path());
|
||||||
assertTrue(cookie.getPorts().isEmpty());
|
assertTrue(cookie.ports().isEmpty());
|
||||||
assertFalse(cookie.isSecure());
|
assertFalse(cookie.isSecure());
|
||||||
assertEquals(2, cookie.getVersion());
|
assertEquals(2, cookie.version());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -206,26 +206,26 @@ public class CookieDecoderTest {
|
|||||||
Cookie c;
|
Cookie c;
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals(1, c.getVersion());
|
assertEquals(1, c.version());
|
||||||
assertEquals("Part_Number", c.getName());
|
assertEquals("Part_Number", c.name());
|
||||||
assertEquals("Rocket_Launcher_0001", c.getValue());
|
assertEquals("Rocket_Launcher_0001", c.value());
|
||||||
assertEquals("/acme", c.getPath());
|
assertEquals("/acme", c.path());
|
||||||
assertNull(c.getComment());
|
assertNull(c.comment());
|
||||||
assertNull(c.getCommentUrl());
|
assertNull(c.commentUrl());
|
||||||
assertNull(c.getDomain());
|
assertNull(c.domain());
|
||||||
assertTrue(c.getPorts().isEmpty());
|
assertTrue(c.ports().isEmpty());
|
||||||
assertEquals(Long.MIN_VALUE, c.getMaxAge());
|
assertEquals(Long.MIN_VALUE, c.maxAge());
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals(1, c.getVersion());
|
assertEquals(1, c.version());
|
||||||
assertEquals("Part_Number", c.getName());
|
assertEquals("Part_Number", c.name());
|
||||||
assertEquals("Riding_Rocket_0023", c.getValue());
|
assertEquals("Riding_Rocket_0023", c.value());
|
||||||
assertEquals("/acme/ammo", c.getPath());
|
assertEquals("/acme/ammo", c.path());
|
||||||
assertNull(c.getComment());
|
assertNull(c.comment());
|
||||||
assertNull(c.getCommentUrl());
|
assertNull(c.commentUrl());
|
||||||
assertNull(c.getDomain());
|
assertNull(c.domain());
|
||||||
assertTrue(c.getPorts().isEmpty());
|
assertTrue(c.ports().isEmpty());
|
||||||
assertEquals(Long.MIN_VALUE, c.getMaxAge());
|
assertEquals(Long.MIN_VALUE, c.maxAge());
|
||||||
|
|
||||||
assertFalse(it.hasNext());
|
assertFalse(it.hasNext());
|
||||||
}
|
}
|
||||||
@ -242,27 +242,27 @@ public class CookieDecoderTest {
|
|||||||
|
|
||||||
assertTrue(it.hasNext());
|
assertTrue(it.hasNext());
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals(1, c.getVersion());
|
assertEquals(1, c.version());
|
||||||
assertEquals("session_id", c.getName());
|
assertEquals("session_id", c.name());
|
||||||
assertEquals("1234", c.getValue());
|
assertEquals("1234", c.value());
|
||||||
assertNull(c.getPath());
|
assertNull(c.path());
|
||||||
assertNull(c.getComment());
|
assertNull(c.comment());
|
||||||
assertNull(c.getCommentUrl());
|
assertNull(c.commentUrl());
|
||||||
assertNull(c.getDomain());
|
assertNull(c.domain());
|
||||||
assertTrue(c.getPorts().isEmpty());
|
assertTrue(c.ports().isEmpty());
|
||||||
assertEquals(Long.MIN_VALUE, c.getMaxAge());
|
assertEquals(Long.MIN_VALUE, c.maxAge());
|
||||||
|
|
||||||
assertTrue(it.hasNext());
|
assertTrue(it.hasNext());
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals(1, c.getVersion());
|
assertEquals(1, c.version());
|
||||||
assertEquals("session_id", c.getName());
|
assertEquals("session_id", c.name());
|
||||||
assertEquals("1111", c.getValue());
|
assertEquals("1111", c.value());
|
||||||
assertEquals(".cracker.edu", c.getDomain());
|
assertEquals(".cracker.edu", c.domain());
|
||||||
assertNull(c.getPath());
|
assertNull(c.path());
|
||||||
assertNull(c.getComment());
|
assertNull(c.comment());
|
||||||
assertNull(c.getCommentUrl());
|
assertNull(c.commentUrl());
|
||||||
assertTrue(c.getPorts().isEmpty());
|
assertTrue(c.ports().isEmpty());
|
||||||
assertEquals(Long.MIN_VALUE, c.getMaxAge());
|
assertEquals(Long.MIN_VALUE, c.maxAge());
|
||||||
|
|
||||||
assertFalse(it.hasNext());
|
assertFalse(it.hasNext());
|
||||||
}
|
}
|
||||||
@ -284,36 +284,36 @@ public class CookieDecoderTest {
|
|||||||
Cookie c;
|
Cookie c;
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("a", c.getName());
|
assertEquals("a", c.name());
|
||||||
assertEquals("", c.getValue());
|
assertEquals("", c.value());
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("b", c.getName());
|
assertEquals("b", c.name());
|
||||||
assertEquals("1", c.getValue());
|
assertEquals("1", c.value());
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("c", c.getName());
|
assertEquals("c", c.name());
|
||||||
assertEquals("\"1\"2\"", c.getValue());
|
assertEquals("\"1\"2\"", c.value());
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("d", c.getName());
|
assertEquals("d", c.name());
|
||||||
assertEquals("1\"2\"3", c.getValue());
|
assertEquals("1\"2\"3", c.value());
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("e", c.getName());
|
assertEquals("e", c.name());
|
||||||
assertEquals("\"\"", c.getValue());
|
assertEquals("\"\"", c.value());
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("f", c.getName());
|
assertEquals("f", c.name());
|
||||||
assertEquals("1\"\"2", c.getValue());
|
assertEquals("1\"\"2", c.value());
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("g", c.getName());
|
assertEquals("g", c.name());
|
||||||
assertEquals("\\", c.getValue());
|
assertEquals("\\", c.value());
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("h", c.getName());
|
assertEquals("h", c.name());
|
||||||
assertEquals("';,\\x", c.getValue());
|
assertEquals("';,\\x", c.value());
|
||||||
|
|
||||||
assertFalse(it.hasNext());
|
assertFalse(it.hasNext());
|
||||||
}
|
}
|
||||||
@ -332,30 +332,30 @@ public class CookieDecoderTest {
|
|||||||
Cookie c;
|
Cookie c;
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("__utma", c.getName());
|
assertEquals("__utma", c.name());
|
||||||
assertEquals("48461872.1094088325.1258140131.1258140131.1258140131.1", c.getValue());
|
assertEquals("48461872.1094088325.1258140131.1258140131.1258140131.1", c.value());
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("__utmb", c.getName());
|
assertEquals("__utmb", c.name());
|
||||||
assertEquals("48461872.13.10.1258140131", c.getValue());
|
assertEquals("48461872.13.10.1258140131", c.value());
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("__utmc", c.getName());
|
assertEquals("__utmc", c.name());
|
||||||
assertEquals("48461872", c.getValue());
|
assertEquals("48461872", c.value());
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("__utmz", c.getName());
|
assertEquals("__utmz", c.name());
|
||||||
assertEquals("48461872.1258140131.1.1.utmcsr=overstock.com|" +
|
assertEquals("48461872.1258140131.1.1.utmcsr=overstock.com|" +
|
||||||
"utmccn=(referral)|utmcmd=referral|utmcct=/Home-Garden/Furniture/Clearance,/clearance,/32/dept.html",
|
"utmccn=(referral)|utmcmd=referral|utmcct=/Home-Garden/Furniture/Clearance,/clearance,/32/dept.html",
|
||||||
c.getValue());
|
c.value());
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("ARPT", c.getName());
|
assertEquals("ARPT", c.name());
|
||||||
assertEquals("LWUKQPSWRTUN04CKKJI", c.getValue());
|
assertEquals("LWUKQPSWRTUN04CKKJI", c.value());
|
||||||
|
|
||||||
c = it.next();
|
c = it.next();
|
||||||
assertEquals("kw-2E343B92-B097-442c-BFA5-BE371E0325A2", c.getName());
|
assertEquals("kw-2E343B92-B097-442c-BFA5-BE371E0325A2", c.name());
|
||||||
assertEquals("unfinished furniture", c.getValue());
|
assertEquals("unfinished furniture", c.value());
|
||||||
|
|
||||||
assertFalse(it.hasNext());
|
assertFalse(it.hasNext());
|
||||||
}
|
}
|
||||||
@ -371,7 +371,7 @@ public class CookieDecoderTest {
|
|||||||
Set<Cookie> cookies = CookieDecoder.decode(source);
|
Set<Cookie> cookies = CookieDecoder.decode(source);
|
||||||
|
|
||||||
Cookie c = cookies.iterator().next();
|
Cookie c = cookies.iterator().next();
|
||||||
assertTrue(Math.abs(expectedMaxAge - c.getMaxAge()) < 2);
|
assertTrue(Math.abs(expectedMaxAge - c.maxAge()) < 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -382,7 +382,7 @@ public class CookieDecoderTest {
|
|||||||
Set<Cookie> cookies = CookieDecoder.decode(source);
|
Set<Cookie> cookies = CookieDecoder.decode(source);
|
||||||
|
|
||||||
Cookie c = cookies.iterator().next();
|
Cookie c = cookies.iterator().next();
|
||||||
assertEquals("timeZoneName=(GMT+04:00) Moscow, St. Petersburg, Volgograd&promocode=®ion=BE", c.getValue());
|
assertEquals("timeZoneName=(GMT+04:00) Moscow, St. Petersburg, Volgograd&promocode=®ion=BE", c.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -390,9 +390,9 @@ public class CookieDecoderTest {
|
|||||||
String src = "path=; expires=Mon, 01-Jan-1990 00:00:00 GMT; path=/; domain=.www.google.com";
|
String src = "path=; expires=Mon, 01-Jan-1990 00:00:00 GMT; path=/; domain=.www.google.com";
|
||||||
Set<Cookie> cookies = CookieDecoder.decode(src);
|
Set<Cookie> cookies = CookieDecoder.decode(src);
|
||||||
Cookie c = cookies.iterator().next();
|
Cookie c = cookies.iterator().next();
|
||||||
assertEquals("path", c.getName());
|
assertEquals("path", c.name());
|
||||||
assertEquals("", c.getValue());
|
assertEquals("", c.value());
|
||||||
assertEquals("/", c.getPath());
|
assertEquals("/", c.path());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -400,8 +400,8 @@ public class CookieDecoderTest {
|
|||||||
String src = "HTTPOnly=";
|
String src = "HTTPOnly=";
|
||||||
Set<Cookie> cookies = CookieDecoder.decode(src);
|
Set<Cookie> cookies = CookieDecoder.decode(src);
|
||||||
Cookie c = cookies.iterator().next();
|
Cookie c = cookies.iterator().next();
|
||||||
assertEquals("HTTPOnly", c.getName());
|
assertEquals("HTTPOnly", c.name());
|
||||||
assertEquals("", c.getValue());
|
assertEquals("", c.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -410,11 +410,11 @@ public class CookieDecoderTest {
|
|||||||
Set<Cookie> cookies = CookieDecoder.decode(src);
|
Set<Cookie> cookies = CookieDecoder.decode(src);
|
||||||
Iterator<Cookie> i = cookies.iterator();
|
Iterator<Cookie> i = cookies.iterator();
|
||||||
Cookie c = i.next();
|
Cookie c = i.next();
|
||||||
assertEquals("A", c.getName());
|
assertEquals("A", c.name());
|
||||||
assertEquals("v=1&lg=en-US,it-IT,it&intl=it&np=1", c.getValue());
|
assertEquals("v=1&lg=en-US,it-IT,it&intl=it&np=1", c.value());
|
||||||
c = i.next();
|
c = i.next();
|
||||||
assertEquals("T", c.getName());
|
assertEquals("T", c.name());
|
||||||
assertEquals("z=E", c.getValue());
|
assertEquals("z=E", c.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -468,7 +468,7 @@ public class CookieDecoderTest {
|
|||||||
Set<Cookie> cookies = CookieDecoder.decode("bh=\"" + longValue + "\";");
|
Set<Cookie> cookies = CookieDecoder.decode("bh=\"" + longValue + "\";");
|
||||||
assertEquals(1, cookies.size());
|
assertEquals(1, cookies.size());
|
||||||
Cookie c = cookies.iterator().next();
|
Cookie c = cookies.iterator().next();
|
||||||
assertEquals("bh", c.getName());
|
assertEquals("bh", c.name());
|
||||||
assertEquals(longValue, c.getValue());
|
assertEquals(longValue, c.value());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -99,11 +99,10 @@ public class HttpChunkedInputTest {
|
|||||||
HttpContent httpContent = (HttpContent) ch.readOutbound();
|
HttpContent httpContent = (HttpContent) ch.readOutbound();
|
||||||
if (httpContent == null) {
|
if (httpContent == null) {
|
||||||
break;
|
break;
|
||||||
} else {
|
}
|
||||||
if (lastHttpContent != null) {
|
if (lastHttpContent != null) {
|
||||||
assertTrue("Chunk must be DefaultHttpContent", lastHttpContent instanceof DefaultHttpContent);
|
assertTrue("Chunk must be DefaultHttpContent", lastHttpContent instanceof DefaultHttpContent);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
ByteBuf buffer = httpContent.content();
|
ByteBuf buffer = httpContent.content();
|
||||||
while (buffer.isReadable()) {
|
while (buffer.isReadable()) {
|
||||||
|
@ -35,7 +35,7 @@ public class HttpInvalidMessageTest {
|
|||||||
EmbeddedChannel ch = new EmbeddedChannel(new HttpRequestDecoder());
|
EmbeddedChannel ch = new EmbeddedChannel(new HttpRequestDecoder());
|
||||||
ch.writeInbound(Unpooled.copiedBuffer("GET / HTTP/1.0 with extra\r\n", CharsetUtil.UTF_8));
|
ch.writeInbound(Unpooled.copiedBuffer("GET / HTTP/1.0 with extra\r\n", CharsetUtil.UTF_8));
|
||||||
HttpRequest req = (HttpRequest) ch.readInbound();
|
HttpRequest req = (HttpRequest) ch.readInbound();
|
||||||
DecoderResult dr = req.getDecoderResult();
|
DecoderResult dr = req.decoderResult();
|
||||||
assertFalse(dr.isSuccess());
|
assertFalse(dr.isSuccess());
|
||||||
assertTrue(dr.isFailure());
|
assertTrue(dr.isFailure());
|
||||||
ensureInboundTrafficDiscarded(ch);
|
ensureInboundTrafficDiscarded(ch);
|
||||||
@ -49,11 +49,11 @@ public class HttpInvalidMessageTest {
|
|||||||
ch.writeInbound(Unpooled.copiedBuffer("Bad=Name: Bad Value\r\n", CharsetUtil.UTF_8));
|
ch.writeInbound(Unpooled.copiedBuffer("Bad=Name: Bad Value\r\n", CharsetUtil.UTF_8));
|
||||||
ch.writeInbound(Unpooled.copiedBuffer("\r\n", CharsetUtil.UTF_8));
|
ch.writeInbound(Unpooled.copiedBuffer("\r\n", CharsetUtil.UTF_8));
|
||||||
HttpRequest req = (HttpRequest) ch.readInbound();
|
HttpRequest req = (HttpRequest) ch.readInbound();
|
||||||
DecoderResult dr = req.getDecoderResult();
|
DecoderResult dr = req.decoderResult();
|
||||||
assertFalse(dr.isSuccess());
|
assertFalse(dr.isSuccess());
|
||||||
assertTrue(dr.isFailure());
|
assertTrue(dr.isFailure());
|
||||||
assertEquals("Good Value", req.headers().get("Good_Name"));
|
assertEquals("Good Value", req.headers().get("Good_Name"));
|
||||||
assertEquals("/maybe-something", req.getUri());
|
assertEquals("/maybe-something", req.uri());
|
||||||
ensureInboundTrafficDiscarded(ch);
|
ensureInboundTrafficDiscarded(ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ public class HttpInvalidMessageTest {
|
|||||||
EmbeddedChannel ch = new EmbeddedChannel(new HttpResponseDecoder());
|
EmbeddedChannel ch = new EmbeddedChannel(new HttpResponseDecoder());
|
||||||
ch.writeInbound(Unpooled.copiedBuffer("HTTP/1.0 BAD_CODE Bad Server\r\n", CharsetUtil.UTF_8));
|
ch.writeInbound(Unpooled.copiedBuffer("HTTP/1.0 BAD_CODE Bad Server\r\n", CharsetUtil.UTF_8));
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
DecoderResult dr = res.getDecoderResult();
|
DecoderResult dr = res.decoderResult();
|
||||||
assertFalse(dr.isSuccess());
|
assertFalse(dr.isSuccess());
|
||||||
assertTrue(dr.isFailure());
|
assertTrue(dr.isFailure());
|
||||||
ensureInboundTrafficDiscarded(ch);
|
ensureInboundTrafficDiscarded(ch);
|
||||||
@ -76,10 +76,10 @@ public class HttpInvalidMessageTest {
|
|||||||
ch.writeInbound(Unpooled.copiedBuffer("Bad=Name: Bad Value\r\n", CharsetUtil.UTF_8));
|
ch.writeInbound(Unpooled.copiedBuffer("Bad=Name: Bad Value\r\n", CharsetUtil.UTF_8));
|
||||||
ch.writeInbound(Unpooled.copiedBuffer("\r\n", CharsetUtil.UTF_8));
|
ch.writeInbound(Unpooled.copiedBuffer("\r\n", CharsetUtil.UTF_8));
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
DecoderResult dr = res.getDecoderResult();
|
DecoderResult dr = res.decoderResult();
|
||||||
assertFalse(dr.isSuccess());
|
assertFalse(dr.isSuccess());
|
||||||
assertTrue(dr.isFailure());
|
assertTrue(dr.isFailure());
|
||||||
assertEquals("Maybe OK", res.getStatus().reasonPhrase());
|
assertEquals("Maybe OK", res.status().reasonPhrase());
|
||||||
assertEquals("Good Value", res.headers().get("Good_Name"));
|
assertEquals("Good Value", res.headers().get("Good_Name"));
|
||||||
ensureInboundTrafficDiscarded(ch);
|
ensureInboundTrafficDiscarded(ch);
|
||||||
}
|
}
|
||||||
@ -92,10 +92,10 @@ public class HttpInvalidMessageTest {
|
|||||||
ch.writeInbound(Unpooled.copiedBuffer("BAD_LENGTH\r\n", CharsetUtil.UTF_8));
|
ch.writeInbound(Unpooled.copiedBuffer("BAD_LENGTH\r\n", CharsetUtil.UTF_8));
|
||||||
|
|
||||||
HttpRequest req = (HttpRequest) ch.readInbound();
|
HttpRequest req = (HttpRequest) ch.readInbound();
|
||||||
assertTrue(req.getDecoderResult().isSuccess());
|
assertTrue(req.decoderResult().isSuccess());
|
||||||
|
|
||||||
LastHttpContent chunk = (LastHttpContent) ch.readInbound();
|
LastHttpContent chunk = (LastHttpContent) ch.readInbound();
|
||||||
DecoderResult dr = chunk.getDecoderResult();
|
DecoderResult dr = chunk.decoderResult();
|
||||||
assertFalse(dr.isSuccess());
|
assertFalse(dr.isSuccess());
|
||||||
assertTrue(dr.isFailure());
|
assertTrue(dr.isFailure());
|
||||||
ensureInboundTrafficDiscarded(ch);
|
ensureInboundTrafficDiscarded(ch);
|
||||||
|
@ -35,8 +35,8 @@ public class HttpResponseDecoderTest {
|
|||||||
CharsetUtil.US_ASCII));
|
CharsetUtil.US_ASCII));
|
||||||
|
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.OK));
|
assertThat(res.status(), is(HttpResponseStatus.OK));
|
||||||
|
|
||||||
byte[] data = new byte[64];
|
byte[] data = new byte[64];
|
||||||
for (int i = 0; i < data.length; i++) {
|
for (int i = 0; i < data.length; i++) {
|
||||||
@ -77,8 +77,8 @@ public class HttpResponseDecoderTest {
|
|||||||
Unpooled.copiedBuffer("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n", CharsetUtil.US_ASCII));
|
Unpooled.copiedBuffer("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n", CharsetUtil.US_ASCII));
|
||||||
|
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.OK));
|
assertThat(res.status(), is(HttpResponseStatus.OK));
|
||||||
|
|
||||||
byte[] data = new byte[64];
|
byte[] data = new byte[64];
|
||||||
for (int i = 0; i < data.length; i++) {
|
for (int i = 0; i < data.length; i++) {
|
||||||
@ -126,8 +126,8 @@ public class HttpResponseDecoderTest {
|
|||||||
|
|
||||||
// Read the response headers.
|
// Read the response headers.
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.OK));
|
assertThat(res.status(), is(HttpResponseStatus.OK));
|
||||||
assertThat(ch.readInbound(), is(nullValue()));
|
assertThat(ch.readInbound(), is(nullValue()));
|
||||||
|
|
||||||
// Close the connection without sending anything.
|
// Close the connection without sending anything.
|
||||||
@ -151,8 +151,8 @@ public class HttpResponseDecoderTest {
|
|||||||
|
|
||||||
// Read the response headers.
|
// Read the response headers.
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.OK));
|
assertThat(res.status(), is(HttpResponseStatus.OK));
|
||||||
|
|
||||||
// Read the partial content.
|
// Read the partial content.
|
||||||
HttpContent content = (HttpContent) ch.readInbound();
|
HttpContent content = (HttpContent) ch.readInbound();
|
||||||
@ -182,8 +182,8 @@ public class HttpResponseDecoderTest {
|
|||||||
|
|
||||||
// Read the response headers.
|
// Read the response headers.
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.OK));
|
assertThat(res.status(), is(HttpResponseStatus.OK));
|
||||||
assertThat(res.headers().get(Names.TRANSFER_ENCODING), is("chunked"));
|
assertThat(res.headers().get(Names.TRANSFER_ENCODING), is("chunked"));
|
||||||
assertThat(ch.readInbound(), is(nullValue()));
|
assertThat(ch.readInbound(), is(nullValue()));
|
||||||
|
|
||||||
@ -203,8 +203,8 @@ public class HttpResponseDecoderTest {
|
|||||||
|
|
||||||
// Read the response headers.
|
// Read the response headers.
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.OK));
|
assertThat(res.status(), is(HttpResponseStatus.OK));
|
||||||
assertThat(res.headers().get(Names.TRANSFER_ENCODING), is("chunked"));
|
assertThat(res.headers().get(Names.TRANSFER_ENCODING), is("chunked"));
|
||||||
|
|
||||||
// Read the partial content.
|
// Read the partial content.
|
||||||
@ -228,8 +228,8 @@ public class HttpResponseDecoderTest {
|
|||||||
ch.writeInbound(Unpooled.copiedBuffer("HTTP/1.1 200 OK\r\n\r\n", CharsetUtil.US_ASCII));
|
ch.writeInbound(Unpooled.copiedBuffer("HTTP/1.1 200 OK\r\n\r\n", CharsetUtil.US_ASCII));
|
||||||
|
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.OK));
|
assertThat(res.status(), is(HttpResponseStatus.OK));
|
||||||
assertThat(ch.readInbound(), is(nullValue()));
|
assertThat(ch.readInbound(), is(nullValue()));
|
||||||
|
|
||||||
assertThat(ch.finish(), is(true));
|
assertThat(ch.finish(), is(true));
|
||||||
@ -247,8 +247,8 @@ public class HttpResponseDecoderTest {
|
|||||||
ch.writeInbound(Unpooled.copiedBuffer("HTTP/1.1 200 OK\r\n\r\n", CharsetUtil.US_ASCII));
|
ch.writeInbound(Unpooled.copiedBuffer("HTTP/1.1 200 OK\r\n\r\n", CharsetUtil.US_ASCII));
|
||||||
|
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.OK));
|
assertThat(res.status(), is(HttpResponseStatus.OK));
|
||||||
assertThat(ch.readInbound(), is(nullValue()));
|
assertThat(ch.readInbound(), is(nullValue()));
|
||||||
|
|
||||||
ch.writeInbound(Unpooled.wrappedBuffer(new byte[1024]));
|
ch.writeInbound(Unpooled.wrappedBuffer(new byte[1024]));
|
||||||
@ -279,8 +279,8 @@ public class HttpResponseDecoderTest {
|
|||||||
CharsetUtil.US_ASCII));
|
CharsetUtil.US_ASCII));
|
||||||
|
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.OK));
|
assertThat(res.status(), is(HttpResponseStatus.OK));
|
||||||
|
|
||||||
LastHttpContent lastContent = (LastHttpContent) ch.readInbound();
|
LastHttpContent lastContent = (LastHttpContent) ch.readInbound();
|
||||||
assertThat(lastContent.content().isReadable(), is(false));
|
assertThat(lastContent.content().isReadable(), is(false));
|
||||||
@ -329,8 +329,8 @@ public class HttpResponseDecoderTest {
|
|||||||
|
|
||||||
ch.writeInbound(Unpooled.wrappedBuffer(content, headerLength, content.length - headerLength));
|
ch.writeInbound(Unpooled.wrappedBuffer(content, headerLength, content.length - headerLength));
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.OK));
|
assertThat(res.status(), is(HttpResponseStatus.OK));
|
||||||
|
|
||||||
LastHttpContent lastContent = (LastHttpContent) ch.readInbound();
|
LastHttpContent lastContent = (LastHttpContent) ch.readInbound();
|
||||||
assertThat(lastContent.content().isReadable(), is(false));
|
assertThat(lastContent.content().isReadable(), is(false));
|
||||||
@ -362,8 +362,8 @@ public class HttpResponseDecoderTest {
|
|||||||
ch.writeInbound(Unpooled.wrappedBuffer(data, 5, data.length / 2));
|
ch.writeInbound(Unpooled.wrappedBuffer(data, 5, data.length / 2));
|
||||||
|
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.OK));
|
assertThat(res.status(), is(HttpResponseStatus.OK));
|
||||||
|
|
||||||
HttpContent firstContent = (HttpContent) ch.readInbound();
|
HttpContent firstContent = (HttpContent) ch.readInbound();
|
||||||
assertThat(firstContent.content().readableBytes(), is(5));
|
assertThat(firstContent.content().readableBytes(), is(5));
|
||||||
@ -410,8 +410,8 @@ public class HttpResponseDecoderTest {
|
|||||||
ch.writeInbound(Unpooled.wrappedBuffer(data, 5, data.length / 2));
|
ch.writeInbound(Unpooled.wrappedBuffer(data, 5, data.length / 2));
|
||||||
|
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.OK));
|
assertThat(res.status(), is(HttpResponseStatus.OK));
|
||||||
|
|
||||||
HttpContent firstContent = (HttpContent) ch.readInbound();
|
HttpContent firstContent = (HttpContent) ch.readInbound();
|
||||||
assertThat(firstContent.content().readableBytes(), is(5));
|
assertThat(firstContent.content().readableBytes(), is(5));
|
||||||
@ -440,8 +440,8 @@ public class HttpResponseDecoderTest {
|
|||||||
ch.writeInbound(Unpooled.wrappedBuffer(data));
|
ch.writeInbound(Unpooled.wrappedBuffer(data));
|
||||||
|
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.SWITCHING_PROTOCOLS));
|
assertThat(res.status(), is(HttpResponseStatus.SWITCHING_PROTOCOLS));
|
||||||
HttpContent content = (HttpContent) ch.readInbound();
|
HttpContent content = (HttpContent) ch.readInbound();
|
||||||
assertThat(content.content().readableBytes(), is(16));
|
assertThat(content.content().readableBytes(), is(16));
|
||||||
content.release();
|
content.release();
|
||||||
@ -467,8 +467,8 @@ public class HttpResponseDecoderTest {
|
|||||||
ch.writeInbound(Unpooled.wrappedBuffer(data, otherData));
|
ch.writeInbound(Unpooled.wrappedBuffer(data, otherData));
|
||||||
|
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_1));
|
||||||
assertThat(res.getStatus(), is(HttpResponseStatus.SWITCHING_PROTOCOLS));
|
assertThat(res.status(), is(HttpResponseStatus.SWITCHING_PROTOCOLS));
|
||||||
HttpContent content = (HttpContent) ch.readInbound();
|
HttpContent content = (HttpContent) ch.readInbound();
|
||||||
assertThat(content.content().readableBytes(), is(16));
|
assertThat(content.content().readableBytes(), is(16));
|
||||||
content.release();
|
content.release();
|
||||||
@ -495,10 +495,10 @@ public class HttpResponseDecoderTest {
|
|||||||
|
|
||||||
// Garbage input should generate the 999 Unknown response.
|
// Garbage input should generate the 999 Unknown response.
|
||||||
HttpResponse res = (HttpResponse) ch.readInbound();
|
HttpResponse res = (HttpResponse) ch.readInbound();
|
||||||
assertThat(res.getProtocolVersion(), sameInstance(HttpVersion.HTTP_1_0));
|
assertThat(res.protocolVersion(), sameInstance(HttpVersion.HTTP_1_0));
|
||||||
assertThat(res.getStatus().code(), is(999));
|
assertThat(res.status().code(), is(999));
|
||||||
assertThat(res.getDecoderResult().isFailure(), is(true));
|
assertThat(res.decoderResult().isFailure(), is(true));
|
||||||
assertThat(res.getDecoderResult().isFinished(), is(true));
|
assertThat(res.decoderResult().isFinished(), is(true));
|
||||||
assertThat(ch.readInbound(), is(nullValue()));
|
assertThat(ch.readInbound(), is(nullValue()));
|
||||||
|
|
||||||
// More garbage should not generate anything (i.e. the decoder discards anything beyond this point.)
|
// More garbage should not generate anything (i.e. the decoder discards anything beyond this point.)
|
||||||
@ -527,7 +527,7 @@ public class HttpResponseDecoderTest {
|
|||||||
|
|
||||||
// Ensure that the decoder generates the last chunk with correct decoder result.
|
// Ensure that the decoder generates the last chunk with correct decoder result.
|
||||||
LastHttpContent invalidChunk = (LastHttpContent) channel.readInbound();
|
LastHttpContent invalidChunk = (LastHttpContent) channel.readInbound();
|
||||||
assertThat(invalidChunk.getDecoderResult().isFailure(), is(true));
|
assertThat(invalidChunk.decoderResult().isFailure(), is(true));
|
||||||
invalidChunk.release();
|
invalidChunk.release();
|
||||||
|
|
||||||
// And no more messages should be produced by the decoder.
|
// And no more messages should be produced by the decoder.
|
||||||
|
@ -218,14 +218,14 @@ public class CorsHandlerTest {
|
|||||||
public void simpleRequestShortCurcuit() {
|
public void simpleRequestShortCurcuit() {
|
||||||
final CorsConfig config = CorsConfig.withOrigin("http://localhost:8080").shortCurcuit().build();
|
final CorsConfig config = CorsConfig.withOrigin("http://localhost:8080").shortCurcuit().build();
|
||||||
final HttpResponse response = simpleRequest(config, "http://localhost:7777");
|
final HttpResponse response = simpleRequest(config, "http://localhost:7777");
|
||||||
assertThat(response.getStatus(), is(FORBIDDEN));
|
assertThat(response.status(), is(FORBIDDEN));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void simpleRequestNoShortCurcuit() {
|
public void simpleRequestNoShortCurcuit() {
|
||||||
final CorsConfig config = CorsConfig.withOrigin("http://localhost:8080").build();
|
final CorsConfig config = CorsConfig.withOrigin("http://localhost:8080").build();
|
||||||
final HttpResponse response = simpleRequest(config, "http://localhost:7777");
|
final HttpResponse response = simpleRequest(config, "http://localhost:7777");
|
||||||
assertThat(response.getStatus(), is(OK));
|
assertThat(response.status(), is(OK));
|
||||||
assertThat(response.headers().get(ACCESS_CONTROL_ALLOW_ORIGIN), is(nullValue()));
|
assertThat(response.headers().get(ACCESS_CONTROL_ALLOW_ORIGIN), is(nullValue()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -233,7 +233,7 @@ public class CorsHandlerTest {
|
|||||||
public void shortCurcuitNonCorsRequest() {
|
public void shortCurcuitNonCorsRequest() {
|
||||||
final CorsConfig config = CorsConfig.withOrigin("https://localhost").shortCurcuit().build();
|
final CorsConfig config = CorsConfig.withOrigin("https://localhost").shortCurcuit().build();
|
||||||
final HttpResponse response = simpleRequest(config, null);
|
final HttpResponse response = simpleRequest(config, null);
|
||||||
assertThat(response.getStatus(), is(OK));
|
assertThat(response.status(), is(OK));
|
||||||
assertThat(response.headers().get(ACCESS_CONTROL_ALLOW_ORIGIN), is(nullValue()));
|
assertThat(response.headers().get(ACCESS_CONTROL_ALLOW_ORIGIN), is(nullValue()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,7 +269,7 @@ public class CorsHandlerTest {
|
|||||||
final EmbeddedChannel channel = new EmbeddedChannel(new CorsHandler(config));
|
final EmbeddedChannel channel = new EmbeddedChannel(new CorsHandler(config));
|
||||||
final FullHttpRequest httpRequest = createHttpRequest(OPTIONS);
|
final FullHttpRequest httpRequest = createHttpRequest(OPTIONS);
|
||||||
httpRequest.headers().set(ORIGIN, origin);
|
httpRequest.headers().set(ORIGIN, origin);
|
||||||
httpRequest.headers().set(ACCESS_CONTROL_REQUEST_METHOD, httpRequest.getMethod().toString());
|
httpRequest.headers().set(ACCESS_CONTROL_REQUEST_METHOD, httpRequest.method().toString());
|
||||||
httpRequest.headers().set(ACCESS_CONTROL_REQUEST_HEADERS, requestHeaders);
|
httpRequest.headers().set(ACCESS_CONTROL_REQUEST_HEADERS, requestHeaders);
|
||||||
channel.writeInbound(httpRequest);
|
channel.writeInbound(httpRequest);
|
||||||
return (HttpResponse) channel.readOutbound();
|
return (HttpResponse) channel.readOutbound();
|
||||||
|
@ -54,7 +54,7 @@ public class WebSocketServerProtocolHandlerTest {
|
|||||||
EmbeddedChannel ch = createChannel(new MockOutboundHandler());
|
EmbeddedChannel ch = createChannel(new MockOutboundHandler());
|
||||||
ChannelHandlerContext handshakerCtx = ch.pipeline().context(WebSocketServerProtocolHandshakeHandler.class);
|
ChannelHandlerContext handshakerCtx = ch.pipeline().context(WebSocketServerProtocolHandshakeHandler.class);
|
||||||
writeUpgradeRequest(ch);
|
writeUpgradeRequest(ch);
|
||||||
assertEquals(SWITCHING_PROTOCOLS, ReferenceCountUtil.releaseLater(responses.remove()).getStatus());
|
assertEquals(SWITCHING_PROTOCOLS, ReferenceCountUtil.releaseLater(responses.remove()).status());
|
||||||
assertNotNull(WebSocketServerProtocolHandler.getHandshaker(handshakerCtx));
|
assertNotNull(WebSocketServerProtocolHandler.getHandshaker(handshakerCtx));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,10 +63,10 @@ public class WebSocketServerProtocolHandlerTest {
|
|||||||
EmbeddedChannel ch = createChannel();
|
EmbeddedChannel ch = createChannel();
|
||||||
|
|
||||||
writeUpgradeRequest(ch);
|
writeUpgradeRequest(ch);
|
||||||
assertEquals(SWITCHING_PROTOCOLS, ReferenceCountUtil.releaseLater(responses.remove()).getStatus());
|
assertEquals(SWITCHING_PROTOCOLS, ReferenceCountUtil.releaseLater(responses.remove()).status());
|
||||||
|
|
||||||
ch.writeInbound(new DefaultFullHttpRequest(HTTP_1_1, HttpMethod.GET, "/test"));
|
ch.writeInbound(new DefaultFullHttpRequest(HTTP_1_1, HttpMethod.GET, "/test"));
|
||||||
assertEquals(FORBIDDEN, ReferenceCountUtil.releaseLater(responses.remove()).getStatus());
|
assertEquals(FORBIDDEN, ReferenceCountUtil.releaseLater(responses.remove()).status());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -83,7 +83,7 @@ public class WebSocketServerProtocolHandlerTest {
|
|||||||
ch.writeInbound(httpRequestWithEntity);
|
ch.writeInbound(httpRequestWithEntity);
|
||||||
|
|
||||||
FullHttpResponse response = ReferenceCountUtil.releaseLater(responses.remove());
|
FullHttpResponse response = ReferenceCountUtil.releaseLater(responses.remove());
|
||||||
assertEquals(BAD_REQUEST, response.getStatus());
|
assertEquals(BAD_REQUEST, response.status());
|
||||||
assertEquals("not a WebSocket handshake request: missing upgrade", getResponseMessage(response));
|
assertEquals("not a WebSocket handshake request: missing upgrade", getResponseMessage(response));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ public class WebSocketServerProtocolHandlerTest {
|
|||||||
ch.writeInbound(httpRequest);
|
ch.writeInbound(httpRequest);
|
||||||
|
|
||||||
FullHttpResponse response = ReferenceCountUtil.releaseLater(responses.remove());
|
FullHttpResponse response = ReferenceCountUtil.releaseLater(responses.remove());
|
||||||
assertEquals(BAD_REQUEST, response.getStatus());
|
assertEquals(BAD_REQUEST, response.status());
|
||||||
assertEquals("not a WebSocket request: missing key", getResponseMessage(response));
|
assertEquals("not a WebSocket request: missing key", getResponseMessage(response));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,7 +371,7 @@ public class SpdyFrameDecoderTest {
|
|||||||
encodeControlFrameHeader(buf, type, flags, length);
|
encodeControlFrameHeader(buf, type, flags, length);
|
||||||
buf.writeInt(streamId | 0x80000000); // should ignore reserved bit
|
buf.writeInt(streamId | 0x80000000); // should ignore reserved bit
|
||||||
buf.writeInt(associatedToStreamId | 0x80000000); // should ignore reserved bit
|
buf.writeInt(associatedToStreamId | 0x80000000); // should ignore reserved bit
|
||||||
buf.writeByte((priority << 5) | 0x1F); // should ignore reserved bits
|
buf.writeByte(priority << 5 | 0x1F); // should ignore reserved bits
|
||||||
buf.writeByte(0xFF); // should ignore reserved bits
|
buf.writeByte(0xFF); // should ignore reserved bits
|
||||||
|
|
||||||
delegate.readSynStreamFrame(streamId, associatedToStreamId, priority, false, false);
|
delegate.readSynStreamFrame(streamId, associatedToStreamId, priority, false, false);
|
||||||
|
@ -43,7 +43,7 @@ public class SpdySessionHandlerTest {
|
|||||||
assertNotNull(msg);
|
assertNotNull(msg);
|
||||||
assertTrue(msg instanceof SpdyDataFrame);
|
assertTrue(msg instanceof SpdyDataFrame);
|
||||||
SpdyDataFrame spdyDataFrame = (SpdyDataFrame) msg;
|
SpdyDataFrame spdyDataFrame = (SpdyDataFrame) msg;
|
||||||
assertEquals(streamId, spdyDataFrame.getStreamId());
|
assertEquals(streamId, spdyDataFrame.streamId());
|
||||||
assertEquals(last, spdyDataFrame.isLast());
|
assertEquals(last, spdyDataFrame.isLast());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,29 +57,29 @@ public class SpdySessionHandlerTest {
|
|||||||
assertNotNull(msg);
|
assertNotNull(msg);
|
||||||
assertTrue(msg instanceof SpdyRstStreamFrame);
|
assertTrue(msg instanceof SpdyRstStreamFrame);
|
||||||
SpdyRstStreamFrame spdyRstStreamFrame = (SpdyRstStreamFrame) msg;
|
SpdyRstStreamFrame spdyRstStreamFrame = (SpdyRstStreamFrame) msg;
|
||||||
assertEquals(streamId, spdyRstStreamFrame.getStreamId());
|
assertEquals(streamId, spdyRstStreamFrame.streamId());
|
||||||
assertEquals(status, spdyRstStreamFrame.getStatus());
|
assertEquals(status, spdyRstStreamFrame.status());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void assertPing(Object msg, int id) {
|
private static void assertPing(Object msg, int id) {
|
||||||
assertNotNull(msg);
|
assertNotNull(msg);
|
||||||
assertTrue(msg instanceof SpdyPingFrame);
|
assertTrue(msg instanceof SpdyPingFrame);
|
||||||
SpdyPingFrame spdyPingFrame = (SpdyPingFrame) msg;
|
SpdyPingFrame spdyPingFrame = (SpdyPingFrame) msg;
|
||||||
assertEquals(id, spdyPingFrame.getId());
|
assertEquals(id, spdyPingFrame.id());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void assertGoAway(Object msg, int lastGoodStreamId) {
|
private static void assertGoAway(Object msg, int lastGoodStreamId) {
|
||||||
assertNotNull(msg);
|
assertNotNull(msg);
|
||||||
assertTrue(msg instanceof SpdyGoAwayFrame);
|
assertTrue(msg instanceof SpdyGoAwayFrame);
|
||||||
SpdyGoAwayFrame spdyGoAwayFrame = (SpdyGoAwayFrame) msg;
|
SpdyGoAwayFrame spdyGoAwayFrame = (SpdyGoAwayFrame) msg;
|
||||||
assertEquals(lastGoodStreamId, spdyGoAwayFrame.getLastGoodStreamId());
|
assertEquals(lastGoodStreamId, spdyGoAwayFrame.lastGoodStreamId());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void assertHeaders(Object msg, int streamId, boolean last, SpdyHeaders headers) {
|
private static void assertHeaders(Object msg, int streamId, boolean last, SpdyHeaders headers) {
|
||||||
assertNotNull(msg);
|
assertNotNull(msg);
|
||||||
assertTrue(msg instanceof SpdyHeadersFrame);
|
assertTrue(msg instanceof SpdyHeadersFrame);
|
||||||
SpdyHeadersFrame spdyHeadersFrame = (SpdyHeadersFrame) msg;
|
SpdyHeadersFrame spdyHeadersFrame = (SpdyHeadersFrame) msg;
|
||||||
assertEquals(streamId, spdyHeadersFrame.getStreamId());
|
assertEquals(streamId, spdyHeadersFrame.streamId());
|
||||||
assertEquals(last, spdyHeadersFrame.isLast());
|
assertEquals(last, spdyHeadersFrame.isLast());
|
||||||
for (String name: headers.names()) {
|
for (String name: headers.names()) {
|
||||||
List<String> expectedValues = headers.getAll(name);
|
List<String> expectedValues = headers.getAll(name);
|
||||||
@ -158,7 +158,7 @@ public class SpdySessionHandlerTest {
|
|||||||
assertNull(sessionHandler.readOutbound());
|
assertNull(sessionHandler.readOutbound());
|
||||||
|
|
||||||
// Check if session handler rejects HEADERS for closed streams
|
// Check if session handler rejects HEADERS for closed streams
|
||||||
int testStreamId = spdyDataFrame.getStreamId();
|
int testStreamId = spdyDataFrame.streamId();
|
||||||
sessionHandler.writeInbound(spdyDataFrame);
|
sessionHandler.writeInbound(spdyDataFrame);
|
||||||
assertDataFrame(sessionHandler.readOutbound(), testStreamId, spdyDataFrame.isLast());
|
assertDataFrame(sessionHandler.readOutbound(), testStreamId, spdyDataFrame.isLast());
|
||||||
assertNull(sessionHandler.readOutbound());
|
assertNull(sessionHandler.readOutbound());
|
||||||
@ -223,7 +223,7 @@ public class SpdySessionHandlerTest {
|
|||||||
|
|
||||||
// Check if session handler returns identical local PINGs
|
// Check if session handler returns identical local PINGs
|
||||||
sessionHandler.writeInbound(localPingFrame);
|
sessionHandler.writeInbound(localPingFrame);
|
||||||
assertPing(sessionHandler.readOutbound(), localPingFrame.getId());
|
assertPing(sessionHandler.readOutbound(), localPingFrame.id());
|
||||||
assertNull(sessionHandler.readOutbound());
|
assertNull(sessionHandler.readOutbound());
|
||||||
|
|
||||||
// Check if session handler ignores un-initiated remote PINGs
|
// Check if session handler ignores un-initiated remote PINGs
|
||||||
@ -335,11 +335,11 @@ public class SpdySessionHandlerTest {
|
|||||||
new DefaultSpdySynStreamFrame(streamId, 0, (byte) 0);
|
new DefaultSpdySynStreamFrame(streamId, 0, (byte) 0);
|
||||||
spdySynStreamFrame.setLast(true);
|
spdySynStreamFrame.setLast(true);
|
||||||
ctx.writeAndFlush(spdySynStreamFrame);
|
ctx.writeAndFlush(spdySynStreamFrame);
|
||||||
spdySynStreamFrame.setStreamId(spdySynStreamFrame.getStreamId() + 2);
|
spdySynStreamFrame.setStreamId(spdySynStreamFrame.streamId() + 2);
|
||||||
ctx.writeAndFlush(spdySynStreamFrame);
|
ctx.writeAndFlush(spdySynStreamFrame);
|
||||||
spdySynStreamFrame.setStreamId(spdySynStreamFrame.getStreamId() + 2);
|
spdySynStreamFrame.setStreamId(spdySynStreamFrame.streamId() + 2);
|
||||||
ctx.writeAndFlush(spdySynStreamFrame);
|
ctx.writeAndFlush(spdySynStreamFrame);
|
||||||
spdySynStreamFrame.setStreamId(spdySynStreamFrame.getStreamId() + 2);
|
spdySynStreamFrame.setStreamId(spdySynStreamFrame.streamId() + 2);
|
||||||
ctx.writeAndFlush(spdySynStreamFrame);
|
ctx.writeAndFlush(spdySynStreamFrame);
|
||||||
|
|
||||||
// Limit the number of concurrent streams to 1
|
// Limit the number of concurrent streams to 1
|
||||||
@ -354,7 +354,7 @@ public class SpdySessionHandlerTest {
|
|||||||
|
|
||||||
SpdySynStreamFrame spdySynStreamFrame = (SpdySynStreamFrame) msg;
|
SpdySynStreamFrame spdySynStreamFrame = (SpdySynStreamFrame) msg;
|
||||||
if (!spdySynStreamFrame.isUnidirectional()) {
|
if (!spdySynStreamFrame.isUnidirectional()) {
|
||||||
int streamId = spdySynStreamFrame.getStreamId();
|
int streamId = spdySynStreamFrame.streamId();
|
||||||
SpdySynReplyFrame spdySynReplyFrame = new DefaultSpdySynReplyFrame(streamId);
|
SpdySynReplyFrame spdySynReplyFrame = new DefaultSpdySynReplyFrame(streamId);
|
||||||
spdySynReplyFrame.setLast(spdySynStreamFrame.isLast());
|
spdySynReplyFrame.setLast(spdySynStreamFrame.isLast());
|
||||||
for (Map.Entry<String, String> entry: spdySynStreamFrame.headers()) {
|
for (Map.Entry<String, String> entry: spdySynStreamFrame.headers()) {
|
||||||
|
@ -117,12 +117,12 @@ public class HttpStaticFileServerHandler extends SimpleChannelInboundHandler<Ful
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.getMethod() != GET) {
|
if (request.method() != GET) {
|
||||||
sendError(ctx, METHOD_NOT_ALLOWED);
|
sendError(ctx, METHOD_NOT_ALLOWED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final String uri = request.getUri();
|
final String uri = request.uri();
|
||||||
final String path = sanitizeUri(uri);
|
final String path = sanitizeUri(uri);
|
||||||
if (path == null) {
|
if (path == null) {
|
||||||
sendError(ctx, FORBIDDEN);
|
sendError(ctx, FORBIDDEN);
|
||||||
|
@ -31,8 +31,8 @@ public class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObje
|
|||||||
if (msg instanceof HttpResponse) {
|
if (msg instanceof HttpResponse) {
|
||||||
HttpResponse response = (HttpResponse) msg;
|
HttpResponse response = (HttpResponse) msg;
|
||||||
|
|
||||||
System.err.println("STATUS: " + response.getStatus());
|
System.err.println("STATUS: " + response.status());
|
||||||
System.err.println("VERSION: " + response.getProtocolVersion());
|
System.err.println("VERSION: " + response.protocolVersion());
|
||||||
System.err.println();
|
System.err.println();
|
||||||
|
|
||||||
if (!response.headers().isEmpty()) {
|
if (!response.headers().isEmpty()) {
|
||||||
|
@ -68,9 +68,9 @@ public class HttpSnoopServerHandler extends SimpleChannelInboundHandler<Object>
|
|||||||
buf.append("WELCOME TO THE WILD WILD WEB SERVER\r\n");
|
buf.append("WELCOME TO THE WILD WILD WEB SERVER\r\n");
|
||||||
buf.append("===================================\r\n");
|
buf.append("===================================\r\n");
|
||||||
|
|
||||||
buf.append("VERSION: ").append(request.getProtocolVersion()).append("\r\n");
|
buf.append("VERSION: ").append(request.protocolVersion()).append("\r\n");
|
||||||
buf.append("HOSTNAME: ").append(getHost(request, "unknown")).append("\r\n");
|
buf.append("HOSTNAME: ").append(getHost(request, "unknown")).append("\r\n");
|
||||||
buf.append("REQUEST_URI: ").append(request.getUri()).append("\r\n\r\n");
|
buf.append("REQUEST_URI: ").append(request.uri()).append("\r\n\r\n");
|
||||||
|
|
||||||
HttpHeaders headers = request.headers();
|
HttpHeaders headers = request.headers();
|
||||||
if (!headers.isEmpty()) {
|
if (!headers.isEmpty()) {
|
||||||
@ -82,7 +82,7 @@ public class HttpSnoopServerHandler extends SimpleChannelInboundHandler<Object>
|
|||||||
buf.append("\r\n");
|
buf.append("\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.getUri());
|
QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.uri());
|
||||||
Map<String, List<String>> params = queryStringDecoder.parameters();
|
Map<String, List<String>> params = queryStringDecoder.parameters();
|
||||||
if (!params.isEmpty()) {
|
if (!params.isEmpty()) {
|
||||||
for (Entry<String, List<String>> p: params.entrySet()) {
|
for (Entry<String, List<String>> p: params.entrySet()) {
|
||||||
|
@ -36,8 +36,8 @@ public class HttpUploadClientHandler extends SimpleChannelInboundHandler<HttpObj
|
|||||||
if (msg instanceof HttpResponse) {
|
if (msg instanceof HttpResponse) {
|
||||||
HttpResponse response = (HttpResponse) msg;
|
HttpResponse response = (HttpResponse) msg;
|
||||||
|
|
||||||
System.err.println("STATUS: " + response.getStatus());
|
System.err.println("STATUS: " + response.status());
|
||||||
System.err.println("VERSION: " + response.getProtocolVersion());
|
System.err.println("VERSION: " + response.protocolVersion());
|
||||||
|
|
||||||
if (!response.headers().isEmpty()) {
|
if (!response.headers().isEmpty()) {
|
||||||
for (String name : response.headers().names()) {
|
for (String name : response.headers().names()) {
|
||||||
@ -47,7 +47,7 @@ public class HttpUploadClientHandler extends SimpleChannelInboundHandler<HttpObj
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (response.getStatus().code() == 200 && HttpHeaders.isTransferEncodingChunked(response)) {
|
if (response.status().code() == 200 && HttpHeaders.isTransferEncodingChunked(response)) {
|
||||||
readingChunks = true;
|
readingChunks = true;
|
||||||
System.err.println("CHUNKED CONTENT {");
|
System.err.println("CHUNKED CONTENT {");
|
||||||
} else {
|
} else {
|
||||||
|
@ -27,6 +27,7 @@ import io.netty.handler.codec.http.DefaultFullHttpResponse;
|
|||||||
import io.netty.handler.codec.http.FullHttpResponse;
|
import io.netty.handler.codec.http.FullHttpResponse;
|
||||||
import io.netty.handler.codec.http.HttpContent;
|
import io.netty.handler.codec.http.HttpContent;
|
||||||
import io.netty.handler.codec.http.HttpHeaders;
|
import io.netty.handler.codec.http.HttpHeaders;
|
||||||
|
import io.netty.handler.codec.http.HttpMethod;
|
||||||
import io.netty.handler.codec.http.HttpObject;
|
import io.netty.handler.codec.http.HttpObject;
|
||||||
import io.netty.handler.codec.http.HttpRequest;
|
import io.netty.handler.codec.http.HttpRequest;
|
||||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||||
@ -96,7 +97,7 @@ public class HttpUploadServerHandler extends SimpleChannelInboundHandler<HttpObj
|
|||||||
public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) throws Exception {
|
public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) throws Exception {
|
||||||
if (msg instanceof HttpRequest) {
|
if (msg instanceof HttpRequest) {
|
||||||
HttpRequest request = this.request = (HttpRequest) msg;
|
HttpRequest request = this.request = (HttpRequest) msg;
|
||||||
URI uri = new URI(request.getUri());
|
URI uri = new URI(request.uri());
|
||||||
if (!uri.getPath().startsWith("/form")) {
|
if (!uri.getPath().startsWith("/form")) {
|
||||||
// Write Menu
|
// Write Menu
|
||||||
writeMenu(ctx);
|
writeMenu(ctx);
|
||||||
@ -106,9 +107,9 @@ public class HttpUploadServerHandler extends SimpleChannelInboundHandler<HttpObj
|
|||||||
responseContent.append("WELCOME TO THE WILD WILD WEB SERVER\r\n");
|
responseContent.append("WELCOME TO THE WILD WILD WEB SERVER\r\n");
|
||||||
responseContent.append("===================================\r\n");
|
responseContent.append("===================================\r\n");
|
||||||
|
|
||||||
responseContent.append("VERSION: " + request.getProtocolVersion().text() + "\r\n");
|
responseContent.append("VERSION: " + request.protocolVersion().text() + "\r\n");
|
||||||
|
|
||||||
responseContent.append("REQUEST_URI: " + request.getUri() + "\r\n\r\n");
|
responseContent.append("REQUEST_URI: " + request.uri() + "\r\n\r\n");
|
||||||
responseContent.append("\r\n\r\n");
|
responseContent.append("\r\n\r\n");
|
||||||
|
|
||||||
// new getMethod
|
// new getMethod
|
||||||
@ -130,7 +131,7 @@ public class HttpUploadServerHandler extends SimpleChannelInboundHandler<HttpObj
|
|||||||
}
|
}
|
||||||
responseContent.append("\r\n\r\n");
|
responseContent.append("\r\n\r\n");
|
||||||
|
|
||||||
QueryStringDecoder decoderQuery = new QueryStringDecoder(request.getUri());
|
QueryStringDecoder decoderQuery = new QueryStringDecoder(request.uri());
|
||||||
Map<String, List<String>> uriAttributes = decoderQuery.parameters();
|
Map<String, List<String>> uriAttributes = decoderQuery.parameters();
|
||||||
for (Entry<String, List<String>> attr: uriAttributes.entrySet()) {
|
for (Entry<String, List<String>> attr: uriAttributes.entrySet()) {
|
||||||
for (String attrVal: attr.getValue()) {
|
for (String attrVal: attr.getValue()) {
|
||||||
@ -139,7 +140,14 @@ public class HttpUploadServerHandler extends SimpleChannelInboundHandler<HttpObj
|
|||||||
}
|
}
|
||||||
responseContent.append("\r\n\r\n");
|
responseContent.append("\r\n\r\n");
|
||||||
|
|
||||||
// if GET Method: should not try to create a HttpPostRequestDecoder
|
if (request.method().equals(HttpMethod.GET)) {
|
||||||
|
// GET Method: should not try to create a HttpPostRequestDecoder
|
||||||
|
// So stop here
|
||||||
|
responseContent.append("\r\n\r\nEND OF GET CONTENT\r\n");
|
||||||
|
writeResponse(ctx.channel());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
decoder = new HttpPostRequestDecoder(factory, request);
|
decoder = new HttpPostRequestDecoder(factory, request);
|
||||||
} catch (ErrorDataDecoderException e1) {
|
} catch (ErrorDataDecoderException e1) {
|
||||||
@ -285,7 +293,7 @@ public class HttpUploadServerHandler extends SimpleChannelInboundHandler<HttpObj
|
|||||||
|
|
||||||
// Decide whether to close the connection or not.
|
// Decide whether to close the connection or not.
|
||||||
boolean close = HttpHeaders.Values.CLOSE.equalsIgnoreCase(request.headers().get(CONNECTION))
|
boolean close = HttpHeaders.Values.CLOSE.equalsIgnoreCase(request.headers().get(CONNECTION))
|
||||||
|| request.getProtocolVersion().equals(HttpVersion.HTTP_1_0)
|
|| request.protocolVersion().equals(HttpVersion.HTTP_1_0)
|
||||||
&& !HttpHeaders.Values.KEEP_ALIVE.equalsIgnoreCase(request.headers().get(CONNECTION));
|
&& !HttpHeaders.Values.KEEP_ALIVE.equalsIgnoreCase(request.headers().get(CONNECTION));
|
||||||
|
|
||||||
// Build the response object.
|
// Build the response object.
|
||||||
|
@ -91,7 +91,7 @@ public class WebSocketClientHandler extends SimpleChannelInboundHandler<Object>
|
|||||||
if (msg instanceof FullHttpResponse) {
|
if (msg instanceof FullHttpResponse) {
|
||||||
FullHttpResponse response = (FullHttpResponse) msg;
|
FullHttpResponse response = (FullHttpResponse) msg;
|
||||||
throw new IllegalStateException(
|
throw new IllegalStateException(
|
||||||
"Unexpected FullHttpResponse (getStatus=" + response.getStatus() +
|
"Unexpected FullHttpResponse (getStatus=" + response.status() +
|
||||||
", content=" + response.content().toString(CharsetUtil.UTF_8) + ')');
|
", content=" + response.content().toString(CharsetUtil.UTF_8) + ')');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,13 +70,13 @@ public class WebSocketServerHandler extends SimpleChannelInboundHandler<Object>
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Allow only GET methods.
|
// Allow only GET methods.
|
||||||
if (req.getMethod() != GET) {
|
if (req.method() != GET) {
|
||||||
sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, FORBIDDEN));
|
sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, FORBIDDEN));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the demo page and favicon.ico
|
// Send the demo page and favicon.ico
|
||||||
if ("/".equals(req.getUri())) {
|
if ("/".equals(req.uri())) {
|
||||||
ByteBuf content = WebSocketServerIndexPage.getContent(getWebSocketLocation(req));
|
ByteBuf content = WebSocketServerIndexPage.getContent(getWebSocketLocation(req));
|
||||||
FullHttpResponse res = new DefaultFullHttpResponse(HTTP_1_1, OK, content);
|
FullHttpResponse res = new DefaultFullHttpResponse(HTTP_1_1, OK, content);
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ public class WebSocketServerHandler extends SimpleChannelInboundHandler<Object>
|
|||||||
sendHttpResponse(ctx, req, res);
|
sendHttpResponse(ctx, req, res);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ("/favicon.ico".equals(req.getUri())) {
|
if ("/favicon.ico".equals(req.uri())) {
|
||||||
FullHttpResponse res = new DefaultFullHttpResponse(HTTP_1_1, NOT_FOUND);
|
FullHttpResponse res = new DefaultFullHttpResponse(HTTP_1_1, NOT_FOUND);
|
||||||
sendHttpResponse(ctx, req, res);
|
sendHttpResponse(ctx, req, res);
|
||||||
return;
|
return;
|
||||||
@ -128,8 +128,8 @@ public class WebSocketServerHandler extends SimpleChannelInboundHandler<Object>
|
|||||||
private static void sendHttpResponse(
|
private static void sendHttpResponse(
|
||||||
ChannelHandlerContext ctx, FullHttpRequest req, FullHttpResponse res) {
|
ChannelHandlerContext ctx, FullHttpRequest req, FullHttpResponse res) {
|
||||||
// Generate an error page if response getStatus code is not OK (200).
|
// Generate an error page if response getStatus code is not OK (200).
|
||||||
if (res.getStatus().code() != 200) {
|
if (res.status().code() != 200) {
|
||||||
ByteBuf buf = Unpooled.copiedBuffer(res.getStatus().toString(), CharsetUtil.UTF_8);
|
ByteBuf buf = Unpooled.copiedBuffer(res.status().toString(), CharsetUtil.UTF_8);
|
||||||
res.content().writeBytes(buf);
|
res.content().writeBytes(buf);
|
||||||
buf.release();
|
buf.release();
|
||||||
setContentLength(res, res.content().readableBytes());
|
setContentLength(res, res.content().readableBytes());
|
||||||
@ -137,7 +137,7 @@ public class WebSocketServerHandler extends SimpleChannelInboundHandler<Object>
|
|||||||
|
|
||||||
// Send the response and close the connection if necessary.
|
// Send the response and close the connection if necessary.
|
||||||
ChannelFuture f = ctx.channel().writeAndFlush(res);
|
ChannelFuture f = ctx.channel().writeAndFlush(res);
|
||||||
if (!isKeepAlive(req) || res.getStatus().code() != 200) {
|
if (!isKeepAlive(req) || res.status().code() != 200) {
|
||||||
f.addListener(ChannelFutureListener.CLOSE);
|
f.addListener(ChannelFutureListener.CLOSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,8 +42,8 @@ public class HttpResponseClientHandler extends SimpleChannelInboundHandler<HttpO
|
|||||||
if (msg instanceof HttpResponse) {
|
if (msg instanceof HttpResponse) {
|
||||||
HttpResponse response = (HttpResponse) msg;
|
HttpResponse response = (HttpResponse) msg;
|
||||||
|
|
||||||
System.out.println("STATUS: " + response.getStatus());
|
System.out.println("STATUS: " + response.status());
|
||||||
System.out.println("VERSION: " + response.getProtocolVersion());
|
System.out.println("VERSION: " + response.protocolVersion());
|
||||||
System.out.println();
|
System.out.println();
|
||||||
|
|
||||||
if (!response.headers().isEmpty()) {
|
if (!response.headers().isEmpty()) {
|
||||||
|
@ -17,10 +17,8 @@ package io.netty.testsuite.transport.socket;
|
|||||||
|
|
||||||
import io.netty.bootstrap.Bootstrap;
|
import io.netty.bootstrap.Bootstrap;
|
||||||
import io.netty.bootstrap.ServerBootstrap;
|
import io.netty.bootstrap.ServerBootstrap;
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import io.netty.buffer.Unpooled;
|
import io.netty.buffer.Unpooled;
|
||||||
import io.netty.channel.Channel;
|
import io.netty.channel.Channel;
|
||||||
import io.netty.channel.ChannelFuture;
|
|
||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
import io.netty.channel.ChannelInboundHandlerAdapter;
|
import io.netty.channel.ChannelInboundHandlerAdapter;
|
||||||
import io.netty.util.ReferenceCountUtil;
|
import io.netty.util.ReferenceCountUtil;
|
||||||
@ -32,9 +30,7 @@ import java.util.concurrent.CountDownLatch;
|
|||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.*;
|
||||||
import static org.junit.Assert.assertNotEquals;
|
|
||||||
import static org.junit.Assert.fail;
|
|
||||||
|
|
||||||
public class SocketAutoReadTest extends AbstractSocketTest {
|
public class SocketAutoReadTest extends AbstractSocketTest {
|
||||||
private static final Random random = new Random();
|
private static final Random random = new Random();
|
||||||
|
@ -80,7 +80,7 @@ public class AutobahnServerHandler extends ChannelInboundHandlerAdapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Allow only GET methods.
|
// Allow only GET methods.
|
||||||
if (req.getMethod() != GET) {
|
if (req.method() != GET) {
|
||||||
sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, FORBIDDEN));
|
sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, FORBIDDEN));
|
||||||
req.release();
|
req.release();
|
||||||
return;
|
return;
|
||||||
@ -125,9 +125,9 @@ public class AutobahnServerHandler extends ChannelInboundHandlerAdapter {
|
|||||||
|
|
||||||
private static void sendHttpResponse(
|
private static void sendHttpResponse(
|
||||||
ChannelHandlerContext ctx, FullHttpRequest req, FullHttpResponse res) {
|
ChannelHandlerContext ctx, FullHttpRequest req, FullHttpResponse res) {
|
||||||
// Generate an error page if response getStatus code is not OK (200).
|
// Generate an error page if response status code is not OK (200).
|
||||||
if (res.getStatus().code() != 200) {
|
if (res.status().code() != 200) {
|
||||||
ByteBuf buf = Unpooled.copiedBuffer(res.getStatus().toString(), CharsetUtil.UTF_8);
|
ByteBuf buf = Unpooled.copiedBuffer(res.status().toString(), CharsetUtil.UTF_8);
|
||||||
res.content().writeBytes(buf);
|
res.content().writeBytes(buf);
|
||||||
buf.release();
|
buf.release();
|
||||||
setContentLength(res, res.content().readableBytes());
|
setContentLength(res, res.content().readableBytes());
|
||||||
@ -135,7 +135,7 @@ public class AutobahnServerHandler extends ChannelInboundHandlerAdapter {
|
|||||||
|
|
||||||
// Send the response and close the connection if necessary.
|
// Send the response and close the connection if necessary.
|
||||||
ChannelFuture f = ctx.channel().writeAndFlush(res);
|
ChannelFuture f = ctx.channel().writeAndFlush(res);
|
||||||
if (!isKeepAlive(req) || res.getStatus().code() != 200) {
|
if (!isKeepAlive(req) || res.status().code() != 200) {
|
||||||
f.addListener(ChannelFutureListener.CLOSE);
|
f.addListener(ChannelFutureListener.CLOSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user