Removed custom split method as it is not effective anymore.
This commit is contained in:
parent
6bd810210d
commit
a80ea46b8e
@ -87,7 +87,7 @@ public class DefaultDnsRecordEncoder implements DnsRecordEncoder {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final String[] labels = StringUtil.split(name, '.');
|
final String[] labels = name.split("\\.");
|
||||||
for (String label : labels) {
|
for (String label : labels) {
|
||||||
final int labelLen = label.length();
|
final int labelLen = label.length();
|
||||||
if (labelLen == 0) {
|
if (labelLen == 0) {
|
||||||
|
@ -20,7 +20,6 @@ import io.netty.handler.codec.haproxy.HAProxyProxiedProtocol.AddressFamily;
|
|||||||
import io.netty.util.ByteProcessor;
|
import io.netty.util.ByteProcessor;
|
||||||
import io.netty.util.CharsetUtil;
|
import io.netty.util.CharsetUtil;
|
||||||
import io.netty.util.NetUtil;
|
import io.netty.util.NetUtil;
|
||||||
import io.netty.util.internal.StringUtil;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Message container for decoded HAProxy proxy protocol parameters
|
* Message container for decoded HAProxy proxy protocol parameters
|
||||||
@ -227,7 +226,7 @@ public final class HAProxyMessage {
|
|||||||
throw new HAProxyProtocolException("header");
|
throw new HAProxyProtocolException("header");
|
||||||
}
|
}
|
||||||
|
|
||||||
String[] parts = StringUtil.split(header, ' ');
|
String[] parts = header.split(" ");
|
||||||
int numParts = parts.length;
|
int numParts = parts.length;
|
||||||
|
|
||||||
if (numParts < 2) {
|
if (numParts < 2) {
|
||||||
|
@ -19,7 +19,6 @@ import static io.netty.handler.codec.http.CookieUtil.firstInvalidCookieNameOctet
|
|||||||
import static io.netty.handler.codec.http.CookieUtil.firstInvalidCookieValueOctet;
|
import static io.netty.handler.codec.http.CookieUtil.firstInvalidCookieValueOctet;
|
||||||
import static io.netty.handler.codec.http.CookieUtil.unwrapValue;
|
import static io.netty.handler.codec.http.CookieUtil.unwrapValue;
|
||||||
import io.netty.handler.codec.http.cookie.CookieHeaderNames;
|
import io.netty.handler.codec.http.cookie.CookieHeaderNames;
|
||||||
import io.netty.util.internal.StringUtil;
|
|
||||||
import io.netty.util.internal.logging.InternalLogger;
|
import io.netty.util.internal.logging.InternalLogger;
|
||||||
import io.netty.util.internal.logging.InternalLoggerFactory;
|
import io.netty.util.internal.logging.InternalLoggerFactory;
|
||||||
|
|
||||||
@ -65,8 +64,6 @@ public final class CookieDecoder {
|
|||||||
|
|
||||||
private static final String VERSION = "Version";
|
private static final String VERSION = "Version";
|
||||||
|
|
||||||
private static final char COMMA = ',';
|
|
||||||
|
|
||||||
private final boolean strict;
|
private final boolean strict;
|
||||||
|
|
||||||
public static Set<Cookie> decode(String header) {
|
public static Set<Cookie> decode(String header) {
|
||||||
@ -169,7 +166,7 @@ public final class CookieDecoder {
|
|||||||
} else if (VERSION.equalsIgnoreCase(name)) {
|
} else if (VERSION.equalsIgnoreCase(name)) {
|
||||||
version = Integer.parseInt(value);
|
version = Integer.parseInt(value);
|
||||||
} else if (PORT.equalsIgnoreCase(name)) {
|
} else if (PORT.equalsIgnoreCase(name)) {
|
||||||
String[] portList = StringUtil.split(value, COMMA);
|
String[] portList = value.split(",");
|
||||||
for (String s1: portList) {
|
for (String s1: portList) {
|
||||||
try {
|
try {
|
||||||
ports.add(Integer.valueOf(s1));
|
ports.add(Integer.valueOf(s1));
|
||||||
|
@ -19,7 +19,6 @@ import io.netty.channel.ChannelHandlerContext;
|
|||||||
import io.netty.channel.embedded.EmbeddedChannel;
|
import io.netty.channel.embedded.EmbeddedChannel;
|
||||||
import io.netty.handler.codec.compression.ZlibCodecFactory;
|
import io.netty.handler.codec.compression.ZlibCodecFactory;
|
||||||
import io.netty.handler.codec.compression.ZlibWrapper;
|
import io.netty.handler.codec.compression.ZlibWrapper;
|
||||||
import io.netty.util.internal.StringUtil;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compresses an {@link HttpMessage} and an {@link HttpContent} in {@code gzip} or
|
* Compresses an {@link HttpMessage} and an {@link HttpContent} in {@code gzip} or
|
||||||
@ -136,7 +135,7 @@ public class HttpContentCompressor extends HttpContentEncoder {
|
|||||||
float starQ = -1.0f;
|
float starQ = -1.0f;
|
||||||
float gzipQ = -1.0f;
|
float gzipQ = -1.0f;
|
||||||
float deflateQ = -1.0f;
|
float deflateQ = -1.0f;
|
||||||
for (String encoding: StringUtil.split(acceptEncoding, ',')) {
|
for (String encoding : acceptEncoding.split(",")) {
|
||||||
float q = 1.0f;
|
float q = 1.0f;
|
||||||
int equalsPos = encoding.indexOf('=');
|
int equalsPos = encoding.indexOf('=');
|
||||||
if (equalsPos != -1) {
|
if (equalsPos != -1) {
|
||||||
|
@ -19,7 +19,6 @@ import io.netty.buffer.ByteBuf;
|
|||||||
import io.netty.buffer.ByteBufUtil;
|
import io.netty.buffer.ByteBufUtil;
|
||||||
import io.netty.handler.codec.Headers;
|
import io.netty.handler.codec.Headers;
|
||||||
import io.netty.util.AsciiString;
|
import io.netty.util.AsciiString;
|
||||||
import io.netty.util.internal.StringUtil;
|
|
||||||
|
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
@ -1591,7 +1590,7 @@ public abstract class HttpHeaders implements Iterable<Map.Entry<String, String>>
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static boolean contains(String value, CharSequence expected, boolean ignoreCase) {
|
private static boolean contains(String value, CharSequence expected, boolean ignoreCase) {
|
||||||
String[] parts = StringUtil.split(value, ',');
|
String[] parts = value.split(",");
|
||||||
if (ignoreCase) {
|
if (ignoreCase) {
|
||||||
for (String s: parts) {
|
for (String s: parts) {
|
||||||
if (AsciiString.contentEqualsIgnoreCase(expected, s.trim())) {
|
if (AsciiString.contentEqualsIgnoreCase(expected, s.trim())) {
|
||||||
|
@ -704,7 +704,7 @@ public class HttpPostMultipartRequestDecoder implements InterfaceHttpPostRequest
|
|||||||
if (checkSecondArg) {
|
if (checkSecondArg) {
|
||||||
// read next values and store them in the map as Attribute
|
// read next values and store them in the map as Attribute
|
||||||
for (int i = 2; i < contents.length; i++) {
|
for (int i = 2; i < contents.length; i++) {
|
||||||
String[] values = StringUtil.split(contents[i], '=', 2);
|
String[] values = contents[i].split("=", 2);
|
||||||
Attribute attribute;
|
Attribute attribute;
|
||||||
try {
|
try {
|
||||||
String name = cleanString(values[0]);
|
String name = cleanString(values[0]);
|
||||||
@ -1825,7 +1825,7 @@ public class HttpPostMultipartRequestDecoder implements InterfaceHttpPostRequest
|
|||||||
if (svalue.indexOf(';') >= 0) {
|
if (svalue.indexOf(';') >= 0) {
|
||||||
values = splitMultipartHeaderValues(svalue);
|
values = splitMultipartHeaderValues(svalue);
|
||||||
} else {
|
} else {
|
||||||
values = StringUtil.split(svalue, ',');
|
values = svalue.split(",");
|
||||||
}
|
}
|
||||||
for (String value : values) {
|
for (String value : values) {
|
||||||
headers.add(value.trim());
|
headers.add(value.trim());
|
||||||
|
@ -34,7 +34,6 @@ import io.netty.handler.codec.http.HttpResponse;
|
|||||||
import io.netty.handler.codec.http.HttpResponseDecoder;
|
import io.netty.handler.codec.http.HttpResponseDecoder;
|
||||||
import io.netty.handler.codec.http.HttpScheme;
|
import io.netty.handler.codec.http.HttpScheme;
|
||||||
import io.netty.util.ReferenceCountUtil;
|
import io.netty.util.ReferenceCountUtil;
|
||||||
import io.netty.util.internal.StringUtil;
|
|
||||||
import io.netty.util.internal.ThrowableUtil;
|
import io.netty.util.internal.ThrowableUtil;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
@ -224,7 +223,7 @@ public abstract class WebSocketClientHandshaker {
|
|||||||
setActualSubprotocol(expectedSubprotocol); // null or "" - we echo what the user requested
|
setActualSubprotocol(expectedSubprotocol); // null or "" - we echo what the user requested
|
||||||
} else if (!expectedProtocol.isEmpty() && receivedProtocol != null && !receivedProtocol.isEmpty()) {
|
} else if (!expectedProtocol.isEmpty() && receivedProtocol != null && !receivedProtocol.isEmpty()) {
|
||||||
// We require a subprotocol and received one -> verify it
|
// We require a subprotocol and received one -> verify it
|
||||||
for (String protocol : StringUtil.split(expectedSubprotocol, ',')) {
|
for (String protocol : expectedProtocol.split(",")) {
|
||||||
if (protocol.trim().equals(receivedProtocol)) {
|
if (protocol.trim().equals(receivedProtocol)) {
|
||||||
protocolValid = true;
|
protocolValid = true;
|
||||||
setActualSubprotocol(receivedProtocol);
|
setActualSubprotocol(receivedProtocol);
|
||||||
|
@ -33,7 +33,6 @@ import io.netty.handler.codec.http.HttpResponseEncoder;
|
|||||||
import io.netty.handler.codec.http.HttpServerCodec;
|
import io.netty.handler.codec.http.HttpServerCodec;
|
||||||
import io.netty.util.ReferenceCountUtil;
|
import io.netty.util.ReferenceCountUtil;
|
||||||
import io.netty.util.internal.EmptyArrays;
|
import io.netty.util.internal.EmptyArrays;
|
||||||
import io.netty.util.internal.StringUtil;
|
|
||||||
import io.netty.util.internal.ThrowableUtil;
|
import io.netty.util.internal.ThrowableUtil;
|
||||||
import io.netty.util.internal.logging.InternalLogger;
|
import io.netty.util.internal.logging.InternalLogger;
|
||||||
import io.netty.util.internal.logging.InternalLoggerFactory;
|
import io.netty.util.internal.logging.InternalLoggerFactory;
|
||||||
@ -85,7 +84,7 @@ public abstract class WebSocketServerHandshaker {
|
|||||||
this.version = version;
|
this.version = version;
|
||||||
this.uri = uri;
|
this.uri = uri;
|
||||||
if (subprotocols != null) {
|
if (subprotocols != null) {
|
||||||
String[] subprotocolArray = StringUtil.split(subprotocols, ',');
|
String[] subprotocolArray = subprotocols.split(",");
|
||||||
for (int i = 0; i < subprotocolArray.length; i++) {
|
for (int i = 0; i < subprotocolArray.length; i++) {
|
||||||
subprotocolArray[i] = subprotocolArray[i].trim();
|
subprotocolArray[i] = subprotocolArray[i].trim();
|
||||||
}
|
}
|
||||||
@ -344,7 +343,7 @@ public abstract class WebSocketServerHandshaker {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
String[] requestedSubprotocolArray = StringUtil.split(requestedSubprotocols, ',');
|
String[] requestedSubprotocolArray = requestedSubprotocols.split(",");
|
||||||
for (String p: requestedSubprotocolArray) {
|
for (String p: requestedSubprotocolArray) {
|
||||||
String requestedSubprotocol = p.trim();
|
String requestedSubprotocol = p.trim();
|
||||||
|
|
||||||
|
@ -18,7 +18,6 @@ package io.netty.handler.codec.http.websocketx.extensions;
|
|||||||
import io.netty.handler.codec.http.HttpHeaderNames;
|
import io.netty.handler.codec.http.HttpHeaderNames;
|
||||||
import io.netty.handler.codec.http.HttpHeaderValues;
|
import io.netty.handler.codec.http.HttpHeaderValues;
|
||||||
import io.netty.handler.codec.http.HttpHeaders;
|
import io.netty.handler.codec.http.HttpHeaders;
|
||||||
import io.netty.util.internal.StringUtil;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -31,8 +30,8 @@ import java.util.regex.Pattern;
|
|||||||
|
|
||||||
public final class WebSocketExtensionUtil {
|
public final class WebSocketExtensionUtil {
|
||||||
|
|
||||||
private static final char EXTENSION_SEPARATOR = ',';
|
private static final String EXTENSION_SEPARATOR = ",";
|
||||||
private static final char PARAMETER_SEPARATOR = ';';
|
private static final String PARAMETER_SEPARATOR = ";";
|
||||||
private static final char PARAMETER_EQUAL = '=';
|
private static final char PARAMETER_EQUAL = '=';
|
||||||
|
|
||||||
private static final Pattern PARAMETER = Pattern.compile("^([^=]+)(=[\\\"]?([^\\\"]+)[\\\"]?)?$");
|
private static final Pattern PARAMETER = Pattern.compile("^([^=]+)(=[\\\"]?([^\\\"]+)[\\\"]?)?$");
|
||||||
@ -43,11 +42,11 @@ public final class WebSocketExtensionUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static List<WebSocketExtensionData> extractExtensions(String extensionHeader) {
|
public static List<WebSocketExtensionData> extractExtensions(String extensionHeader) {
|
||||||
String[] rawExtensions = StringUtil.split(extensionHeader, EXTENSION_SEPARATOR);
|
String[] rawExtensions = extensionHeader.split(EXTENSION_SEPARATOR);
|
||||||
if (rawExtensions.length > 0) {
|
if (rawExtensions.length > 0) {
|
||||||
List<WebSocketExtensionData> extensions = new ArrayList<WebSocketExtensionData>(rawExtensions.length);
|
List<WebSocketExtensionData> extensions = new ArrayList<WebSocketExtensionData>(rawExtensions.length);
|
||||||
for (String rawExtension : rawExtensions) {
|
for (String rawExtension : rawExtensions) {
|
||||||
String[] extensionParameters = StringUtil.split(rawExtension, PARAMETER_SEPARATOR);
|
String[] extensionParameters = rawExtension.split(PARAMETER_SEPARATOR);
|
||||||
String name = extensionParameters[0].trim();
|
String name = extensionParameters[0].trim();
|
||||||
Map<String, String> parameters;
|
Map<String, String> parameters;
|
||||||
if (extensionParameters.length > 1) {
|
if (extensionParameters.length > 1) {
|
||||||
@ -60,7 +59,7 @@ public final class WebSocketExtensionUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
parameters = Collections.<String, String>emptyMap();
|
parameters = Collections.emptyMap();
|
||||||
}
|
}
|
||||||
extensions.add(new WebSocketExtensionData(name, parameters));
|
extensions.add(new WebSocketExtensionData(name, parameters));
|
||||||
}
|
}
|
||||||
@ -74,19 +73,14 @@ public final class WebSocketExtensionUtil {
|
|||||||
Map<String, String> extensionParameters) {
|
Map<String, String> extensionParameters) {
|
||||||
|
|
||||||
StringBuilder newHeaderValue = new StringBuilder(
|
StringBuilder newHeaderValue = new StringBuilder(
|
||||||
currentHeaderValue != null ? currentHeaderValue.length() : 0 + extensionName.length() + 1);
|
currentHeaderValue != null ? currentHeaderValue.length() : extensionName.length() + 1);
|
||||||
if (currentHeaderValue != null && !currentHeaderValue.trim().isEmpty()) {
|
if (currentHeaderValue != null && !currentHeaderValue.trim().isEmpty()) {
|
||||||
newHeaderValue.append(currentHeaderValue);
|
newHeaderValue.append(currentHeaderValue);
|
||||||
newHeaderValue.append(EXTENSION_SEPARATOR);
|
newHeaderValue.append(EXTENSION_SEPARATOR);
|
||||||
}
|
}
|
||||||
newHeaderValue.append(extensionName);
|
newHeaderValue.append(extensionName);
|
||||||
boolean isFirst = true;
|
|
||||||
for (Entry<String, String> extensionParameter : extensionParameters.entrySet()) {
|
for (Entry<String, String> extensionParameter : extensionParameters.entrySet()) {
|
||||||
if (isFirst) {
|
|
||||||
newHeaderValue.append(PARAMETER_SEPARATOR);
|
newHeaderValue.append(PARAMETER_SEPARATOR);
|
||||||
} else {
|
|
||||||
isFirst = false;
|
|
||||||
}
|
|
||||||
newHeaderValue.append(extensionParameter.getKey());
|
newHeaderValue.append(extensionParameter.getKey());
|
||||||
if (extensionParameter.getValue() != null) {
|
if (extensionParameter.getValue() != null) {
|
||||||
newHeaderValue.append(PARAMETER_EQUAL);
|
newHeaderValue.append(PARAMETER_EQUAL);
|
||||||
|
@ -24,7 +24,6 @@ import io.netty.handler.codec.ReplayingDecoder;
|
|||||||
import io.netty.handler.codec.TooLongFrameException;
|
import io.netty.handler.codec.TooLongFrameException;
|
||||||
import io.netty.handler.codec.stomp.StompSubframeDecoder.State;
|
import io.netty.handler.codec.stomp.StompSubframeDecoder.State;
|
||||||
import io.netty.util.internal.AppendableCharSequence;
|
import io.netty.util.internal.AppendableCharSequence;
|
||||||
import io.netty.util.internal.StringUtil;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
@ -212,7 +211,7 @@ public class StompSubframeDecoder extends ReplayingDecoder<State> {
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
String line = readLine(buffer, maxLineLength);
|
String line = readLine(buffer, maxLineLength);
|
||||||
if (!line.isEmpty()) {
|
if (!line.isEmpty()) {
|
||||||
String[] split = StringUtil.split(line, ':');
|
String[] split = line.split(":");
|
||||||
if (split.length == 2) {
|
if (split.length == 2) {
|
||||||
headers.add(split[0], split[1]);
|
headers.add(split[0], split[1]);
|
||||||
}
|
}
|
||||||
|
@ -68,91 +68,6 @@ public final class StringUtil {
|
|||||||
// Unused.
|
// Unused.
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Splits the specified {@link String} with the specified delimiter. This operation is a simplified and optimized
|
|
||||||
* version of {@link String#split(String)}.
|
|
||||||
*/
|
|
||||||
public static String[] split(String value, char delim) {
|
|
||||||
final int end = value.length();
|
|
||||||
final List<String> res = InternalThreadLocalMap.get().arrayList();
|
|
||||||
|
|
||||||
int start = 0;
|
|
||||||
for (int i = 0; i < end; i ++) {
|
|
||||||
if (value.charAt(i) == delim) {
|
|
||||||
if (start == i) {
|
|
||||||
res.add(EMPTY_STRING);
|
|
||||||
} else {
|
|
||||||
res.add(value.substring(start, i));
|
|
||||||
}
|
|
||||||
start = i + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (start == 0) { // If no delimiter was found in the value
|
|
||||||
res.add(value);
|
|
||||||
} else {
|
|
||||||
if (start != end) {
|
|
||||||
// Add the last element if it's not empty.
|
|
||||||
res.add(value.substring(start, end));
|
|
||||||
} else {
|
|
||||||
// Truncate trailing empty elements.
|
|
||||||
for (int i = res.size() - 1; i >= 0; i --) {
|
|
||||||
if (res.get(i).isEmpty()) {
|
|
||||||
res.remove(i);
|
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.toArray(new String[res.size()]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Splits the specified {@link String} with the specified delimiter in maxParts maximum parts.
|
|
||||||
* This operation is a simplified and optimized
|
|
||||||
* version of {@link String#split(String, int)}.
|
|
||||||
*/
|
|
||||||
public static String[] split(String value, char delim, int maxParts) {
|
|
||||||
final int end = value.length();
|
|
||||||
final List<String> res = InternalThreadLocalMap.get().arrayList();
|
|
||||||
|
|
||||||
int start = 0;
|
|
||||||
int cpt = 1;
|
|
||||||
for (int i = 0; i < end && cpt < maxParts; i ++) {
|
|
||||||
if (value.charAt(i) == delim) {
|
|
||||||
if (start == i) {
|
|
||||||
res.add(EMPTY_STRING);
|
|
||||||
} else {
|
|
||||||
res.add(value.substring(start, i));
|
|
||||||
}
|
|
||||||
start = i + 1;
|
|
||||||
cpt++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (start == 0) { // If no delimiter was found in the value
|
|
||||||
res.add(value);
|
|
||||||
} else {
|
|
||||||
if (start != end) {
|
|
||||||
// Add the last element if it's not empty.
|
|
||||||
res.add(value.substring(start, end));
|
|
||||||
} else {
|
|
||||||
// Truncate trailing empty elements.
|
|
||||||
for (int i = res.size() - 1; i >= 0; i --) {
|
|
||||||
if (res.get(i).isEmpty()) {
|
|
||||||
res.remove(i);
|
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.toArray(new String[res.size()]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the item after one char delim if the delim is found (else null).
|
* Get the item after one char delim if the delim is found (else null).
|
||||||
* This operation is a simplified and optimized
|
* This operation is a simplified and optimized
|
||||||
|
@ -15,9 +15,10 @@
|
|||||||
*/
|
*/
|
||||||
package io.netty.util.internal;
|
package io.netty.util.internal;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
import static io.netty.util.internal.StringUtil.*;
|
import static io.netty.util.internal.StringUtil.*;
|
||||||
import static org.hamcrest.CoreMatchers.*;
|
import static org.hamcrest.CoreMatchers.*;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
@ -49,33 +50,48 @@ public class StringUtilTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void splitSimple() {
|
public void splitSimple() {
|
||||||
assertArrayEquals(new String[] { "foo", "bar" }, split("foo:bar", ':'));
|
assertArrayEquals(new String[] { "foo", "bar" }, "foo:bar".split(":"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void splitWithTrailingDelimiter() {
|
public void splitWithTrailingDelimiter() {
|
||||||
assertArrayEquals(new String[] { "foo", "bar" }, split("foo,bar,", ','));
|
assertArrayEquals(new String[] { "foo", "bar" }, "foo,bar,".split(","));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void splitWithTrailingDelimiters() {
|
public void splitWithTrailingDelimiters() {
|
||||||
assertArrayEquals(new String[] { "foo", "bar" }, split("foo!bar!!", '!'));
|
assertArrayEquals(new String[] { "foo", "bar" }, "foo!bar!!".split("!"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void splitWithTrailingDelimitersDot() {
|
||||||
|
assertArrayEquals(new String[] { "foo", "bar" }, "foo.bar..".split("\\."));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void splitWithTrailingDelimitersEq() {
|
||||||
|
assertArrayEquals(new String[] { "foo", "bar" }, "foo=bar==".split("="));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void splitWithTrailingDelimitersSpace() {
|
||||||
|
assertArrayEquals(new String[] { "foo", "bar" }, "foo bar ".split(" "));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void splitWithConsecutiveDelimiters() {
|
public void splitWithConsecutiveDelimiters() {
|
||||||
assertArrayEquals(new String[] { "foo", "", "bar" }, split("foo$$bar", '$'));
|
assertArrayEquals(new String[] { "foo", "", "bar" }, "foo$$bar".split("\\$"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void splitWithDelimiterAtBeginning() {
|
public void splitWithDelimiterAtBeginning() {
|
||||||
assertArrayEquals(new String[] { "", "foo", "bar" }, split("#foo#bar", '#'));
|
assertArrayEquals(new String[] { "", "foo", "bar" }, "#foo#bar".split("#"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void splitMaxPart() {
|
public void splitMaxPart() {
|
||||||
assertArrayEquals(new String[] { "foo", "bar:bar2" }, split("foo:bar:bar2", ':', 2));
|
assertArrayEquals(new String[] { "foo", "bar:bar2" }, "foo:bar:bar2".split(":", 2));
|
||||||
assertArrayEquals(new String[] { "foo", "bar", "bar2" }, split("foo:bar:bar2", ':', 3));
|
assertArrayEquals(new String[] { "foo", "bar", "bar2" }, "foo:bar:bar2".split(":", 3));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -29,13 +29,10 @@ import io.netty.handler.codec.http.FullHttpResponse;
|
|||||||
import io.netty.handler.codec.http.HttpHeaderNames;
|
import io.netty.handler.codec.http.HttpHeaderNames;
|
||||||
import io.netty.handler.codec.http.HttpMethod;
|
import io.netty.handler.codec.http.HttpMethod;
|
||||||
import io.netty.handler.codec.http.HttpObjectAggregator;
|
import io.netty.handler.codec.http.HttpObjectAggregator;
|
||||||
import io.netty.handler.codec.http.HttpRequestDecoder;
|
|
||||||
import io.netty.handler.codec.http.HttpResponseEncoder;
|
|
||||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||||
import io.netty.handler.codec.http.HttpServerCodec;
|
import io.netty.handler.codec.http.HttpServerCodec;
|
||||||
import io.netty.handler.codec.http.HttpVersion;
|
import io.netty.handler.codec.http.HttpVersion;
|
||||||
import io.netty.util.CharsetUtil;
|
import io.netty.util.CharsetUtil;
|
||||||
import io.netty.util.internal.StringUtil;
|
|
||||||
|
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.net.SocketAddress;
|
import java.net.SocketAddress;
|
||||||
@ -89,7 +86,7 @@ final class HttpProxyServer extends ProxyServer {
|
|||||||
if (username != null) {
|
if (username != null) {
|
||||||
CharSequence authz = req.headers().get(HttpHeaderNames.PROXY_AUTHORIZATION);
|
CharSequence authz = req.headers().get(HttpHeaderNames.PROXY_AUTHORIZATION);
|
||||||
if (authz != null) {
|
if (authz != null) {
|
||||||
String[] authzParts = StringUtil.split(authz.toString(), ' ', 2);
|
String[] authzParts = authz.toString().split(" ", 2);
|
||||||
ByteBuf authzBuf64 = Unpooled.copiedBuffer(authzParts[1], CharsetUtil.US_ASCII);
|
ByteBuf authzBuf64 = Unpooled.copiedBuffer(authzParts[1], CharsetUtil.US_ASCII);
|
||||||
ByteBuf authzBuf = Base64.decode(authzBuf64);
|
ByteBuf authzBuf = Base64.decode(authzBuf64);
|
||||||
|
|
||||||
|
@ -27,7 +27,6 @@ import io.netty.testsuite.util.TestUtils;
|
|||||||
import io.netty.util.NetUtil;
|
import io.netty.util.NetUtil;
|
||||||
import io.netty.util.ReferenceCountUtil;
|
import io.netty.util.ReferenceCountUtil;
|
||||||
import io.netty.util.ResourceLeakDetector;
|
import io.netty.util.ResourceLeakDetector;
|
||||||
import io.netty.util.internal.StringUtil;
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Assume;
|
import org.junit.Assume;
|
||||||
import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
@ -53,7 +52,7 @@ public class EpollReuseAddrTest {
|
|||||||
if (index > -1) {
|
if (index > -1) {
|
||||||
kernelVersion = kernelVersion.substring(0, index);
|
kernelVersion = kernelVersion.substring(0, index);
|
||||||
}
|
}
|
||||||
String[] versionParts = StringUtil.split(kernelVersion, '.');
|
String[] versionParts = kernelVersion.split("\\.");
|
||||||
if (versionParts.length <= 3) {
|
if (versionParts.length <= 3) {
|
||||||
MAJOR = Integer.parseInt(versionParts[0]);
|
MAJOR = Integer.parseInt(versionParts[0]);
|
||||||
MINOR = Integer.parseInt(versionParts[1]);
|
MINOR = Integer.parseInt(versionParts[1]);
|
||||||
|
Loading…
Reference in New Issue
Block a user